Example #1
0
        /// <summary>
        ///
        /// </summary>
        public void OnChatSubmit()
        {
            var chatMessage = this.InputField.text;

            this.InputField.text = string.Empty;

            if (m_customEmotes.ContainsKey(chatMessage.ToLower()))
            {
                AddMessage("You", "Start to " + chatMessage.Substring(1));
                m_localAnimationController.PerformEmote(m_customEmotes[chatMessage.ToLower()]);
            }
            else
            {
                AddMessage("You", chatMessage);
            }

            var chatSendPacket = new Realms.Client.Packet.PlayerChatSendPacket(chatMessage);

            m_localClient.QueuePacket(chatSendPacket);
        }
        // Update is called once per frame
        void FixedUpdate()
        {
            if (m_mobToAttack != null)
            {
                // We are walking to an attack and we have stopped.
                var mobLocation = m_mobToAttack.transform.position;
                var myLocation  = this.transform.position;

                if (m_playerWalkingToAttack)
                {
                    var distance = (mobLocation - myLocation).magnitude;
                    if (distance <= 2.0f)
                    {
                        m_playerWalkingToAttack = false;
                        m_playerAttacking       = true;
                        m_attackStartTime       = Time.time - 1.0f;
                    }
                    else
                    {
                        var dir    = (mobLocation - myLocation).normalized;
                        var target = mobLocation - dir;
                        navAgent.SetDestination(target);
                        SendMovementPacket(target);
                    }
                }
                else if (m_playerAttacking)
                {
                    var dir      = (mobLocation - myLocation).normalized;
                    var lookAt   = new Vector3(dir.x, 0.0f, dir.z);
                    var rotation = Quaternion.LookRotation(lookAt);
                    this.transform.rotation = rotation;

                    var distance = (mobLocation - myLocation).magnitude;
                    if (distance <= 2.0f)
                    {
                        if (Time.time - m_attackStartTime >= 1.0f)
                        {
                            var attackPacket = new Client.Packet.PlayerAttackPacket(m_mobToAttack.ID, UnityEngine.Random.Range(0, 3));
                            m_localClient.QueuePacket(attackPacket);
                            m_attackStartTime = Time.time;
                        }
                    }
                    else
                    {
                        var target = mobLocation - dir;
                        navAgent.SetDestination(target);
                        SendMovementPacket(target);
                    }
                }
            }

            if (m_didPlayerClick)
            {
                m_didPlayerClick = false;

                var        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                Physics.Raycast(ray, out hit);

                if (hit.collider != null)
                {
                    var mob = hit.collider.GetComponent <Common.Mob>();
                    if (mob != null)
                    {
                        // Found a mob, walk to it and attack
                        var mobLocation = mob.transform.position;
                        var myLocation  = this.transform.position;
                        var dir         = (mobLocation - myLocation).normalized;

                        var target = mobLocation - dir;
                        navAgent.SetDestination(target);
                        SendMovementPacket(target);
                        m_playerWalkingToAttack = true;
                        m_mobToAttack           = mob;
                    }
                    else
                    {
                        navAgent.SetDestination(hit.point);
                        SendMovementPacket(hit.point);
                        m_playerWalkingToAttack = false;
                        m_playerAttacking       = false;
                        m_mobToAttack           = null;
                    }
                }
            }
        }