Exemplo n.º 1
0
        private void SendMove(MoveState state, Point3d position, int targetId = 0)
        {
            m_lastMoveTS = DateTime.Now;
            SSpriteMove message = new SSpriteMove();

            message.ID       = entityId;
            message.pos      = Entity.Point3dToV3(position);
            message.state    = state;
            message.targetId = targetId;
            Broadcast(message);
        }
Exemplo n.º 2
0
        private void OnRecvSpriteMove(IChannel channel, Message message)
        {
            SSpriteMove   msg    = message as SSpriteMove;
            NetworkEntity sprite = networkEntities[msg.ID];
            NetworkEntity target = null;

            if (msg.targetId != 0)
            {
                target = networkEntities[msg.targetId];
            }
            ISpriteBehavior behavior = (ISpriteBehavior)(sprite.behavior);
            Vector3         position = new Vector3(msg.pos.x, msg.pos.y, msg.pos.z);

            switch (msg.state)
            {
            case MoveState.BEGIN:
            {
                if (msg.targetId != 0)
                {
                    behavior.BeginChase(position, (ICreatureBehavior)target.behavior);
                }
                else
                {
                    behavior.BeginBack(position);
                }
                break;
            }

            case MoveState.STEP:
            {
                behavior.MoveStep(position);
                break;
            }

            case MoveState.END:
            {
                if (msg.targetId != 0)
                {
                    behavior.EndChase(position);
                }
                else
                {
                    behavior.EndBack(position);
                }
                break;
            }

            default:
                break;
            }
        }