示例#1
0
        public override void Execute()
        {
            MoveObjectRequest moveObjectRequest = request as MoveObjectRequest;
            var room = gameService.FindGameByID(moveObjectRequest.GameID);

            bool?IsMoved = gameService.MoveObject(moveObjectRequest.GameID, moveObjectRequest.UserID, moveObjectRequest.Direction);

            if (room.Status != StatusGame.FINISHED)
            {
                response = new MoveObjectResponse(IsMoved);
                SendMessage(moveObjectRequest.UserID);

                Guid curUser = gameService.CurUser(moveObjectRequest.GameID);
                SendMessage(curUser, new YourStep()); // Шлём другому пользователю, что может ходить
            }
            else
            {
                // TODO: Можно сделать два разных пакета для победителя и проигравшего
                foreach (var us in room.GetUsersID)
                {
                    response = new GameFinished(moveObjectRequest.UserID, room.FindMazeByID(room.FindUserByID(us).MazeID).GetMazeStruct());
                    SendMessage(us, response);
                }
            }
        }
示例#2
0
 public ActMoveObject(MoveObjectRequest gameRequest, IGameService game, Sender sender) : base(gameRequest, game, sender)
 {
 }
示例#3
0
        // Передвинуть объект
        public void MoveObject(MoveDirection direction)
        {
            MoveObjectRequest moveObject = new MoveObjectRequest(curUser, curGame, direction);

            client.Send(AbstractMessage.ToBytes(moveObject));
        }