Esempio n. 1
0
        [SyncVar] public bool isWalking;                                // bools for synchronizing animations

        #endregion

        #region //======            MONOBEHAVIOURS           ======\\

        public override void Start()
        {
            base.Start();

            // UI
            nameText.text = Name.ToString();

            if (!isLocalPlayer)
            {
                onStartIfNotLocal.Invoke();
                return;
            }

            localPlayer = this;

            // camera
            m_Camera = Camera.main;
            m_Camera.GetComponentInParent <CameraController>().SetTarget(transform);

            // scripts
            positionSynchronization = GetComponent <PositionSynchronization>();
            weaponController        = GetComponent <WeaponController>();

            // indicator
            indicator         = Instantiate(indicatorPrefab, Vector3.zero, Quaternion.identity).transform;
            indicatorAnimator = indicator.GetComponent <Animator>();

            onStartIfLocal.Invoke();
            StartCoroutine(CheckTarget());

            // show inventory
            InventorySystem.Instance.Reset();
            foreach (var key in inventoryData.Keys)
            {
                InventorySystem.Instance.OnInventoryUpdate(key, inventoryData[key]);
            }

            foreach (var key in equipmentData.Keys)
            {
                EquipmentSystem.OnEquipmentUpdate(SyncIDictionary <EquipmentSlot, ItemData> .Operation.OP_ADD, key, equipmentData[key]);
            }

            inventoryData.Callback += OnInventoryUpdate;
            equipmentData.Callback += EquipmentSystem.OnEquipmentUpdate;

            UIStatsPanel.SetNameText(Name);
            EquipmentSystem.SetPlayer(this);

            InventorySystem.LoadToolbar();
        }
Esempio n. 2
0
        private void Update()
        {
            if (isLocalPlayer)
            {
                HandleInput();

                if (target != null)
                {
                    if (localCooldown <= 0 && Vector3.Distance(target.transform.position, transform.position) <= usedWeapon.attackRange)
                    {
                        Attack(target);
                    }

                    MessageSystem.SetEntityInfoData(target);
                }
                else
                {
                    HandleMouseHover();
                }

                // ATTACKING
                if (localCooldown > 0)
                {
                    localCooldown -= Time.deltaTime;
                }

                // ANIMATION
                bool nIsSprinting = isRunning && Input.GetKey(KeyCode.LeftShift);
                bool nIsWalking   = isRunning && Input.GetKey(KeyCode.LeftControl);
                if (nIsSprinting != isSprinting || nIsWalking != isWalking)
                {
                    CmdSetInput(nIsSprinting, nIsWalking);
                }

                // MOVEMENT
                if (movementClickCooldown > 0)
                {
                    movementClickCooldown -= Time.deltaTime;
                }

                UIStatsPanel.SetHealthbarValue(Health, maxHealth);
            }

            agent.speed = Speed;
        }