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); } } }
public ActMoveObject(MoveObjectRequest gameRequest, IGameService game, Sender sender) : base(gameRequest, game, sender) { }
// Передвинуть объект public void MoveObject(MoveDirection direction) { MoveObjectRequest moveObject = new MoveObjectRequest(curUser, curGame, direction); client.Send(AbstractMessage.ToBytes(moveObject)); }