|
@@ -13,9 +13,9 @@ namespace MafiaTelegramBot.Controllers
|
|
|
|
|
|
public static async Task<ResultCode> CreateNewGame(User owner, string roomName, bool extended, string secretPhrase = null)
|
|
public static async Task<ResultCode> CreateNewGame(User owner, string roomName, bool extended, string secretPhrase = null)
|
|
{
|
|
{
|
|
- var gameExists = await Task.Run(() => OpenedGames.ContainsKey(roomName));
|
|
|
|
return await Task.Run(async () =>
|
|
return await Task.Run(async () =>
|
|
{
|
|
{
|
|
|
|
+ var gameExists = await Task.Run(() => OpenedGames.ContainsKey(roomName));
|
|
if (gameExists) return ResultCode.GameAlreadyExists;
|
|
if (gameExists) return ResultCode.GameAlreadyExists;
|
|
if (!await owner.SetRoomKey(secretPhrase ?? roomName)) return ResultCode.UserAlreadyInGame;
|
|
if (!await owner.SetRoomKey(secretPhrase ?? roomName)) return ResultCode.UserAlreadyInGame;
|
|
var room = secretPhrase == null
|
|
var room = secretPhrase == null
|
|
@@ -23,6 +23,7 @@ namespace MafiaTelegramBot.Controllers
|
|
: new PrivateGameRoom {Creator = owner, RoomName = roomName, IsExtended = extended};
|
|
: new PrivateGameRoom {Creator = owner, RoomName = roomName, IsExtended = extended};
|
|
OpenedGames.Add(secretPhrase ?? roomName, room);
|
|
OpenedGames.Add(secretPhrase ?? roomName, room);
|
|
room.Players.Add(owner.Id, owner);
|
|
room.Players.Add(owner.Id, owner);
|
|
|
|
+ RoomEncrypter.CreateShortName(roomName);
|
|
return ResultCode.CodeOk;
|
|
return ResultCode.CodeOk;
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -56,7 +57,10 @@ namespace MafiaTelegramBot.Controllers
|
|
var roomKey = player.GetRoomKey();
|
|
var roomKey = player.GetRoomKey();
|
|
if (!await player.RemoveGame()) return ResultCode.UserNotInGame;
|
|
if (!await player.RemoveGame()) return ResultCode.UserNotInGame;
|
|
OpenedGames[roomKey].Players.Remove(player.Id);
|
|
OpenedGames[roomKey].Players.Remove(player.Id);
|
|
- if (OpenedGames[roomKey].Players.Count == 0) OpenedGames.Remove(roomKey);
|
|
|
|
|
|
+ if (OpenedGames[roomKey].Players.Count != 0) return ResultCode.CodeOk;
|
|
|
|
+ RoomEncrypter.RemoveShortName(OpenedGames[roomKey].RoomName);
|
|
|
|
+ if(OpenedGames[roomKey].IsPrivate) RoomEncrypter.Remove(OpenedGames[roomKey].RoomName);
|
|
|
|
+ OpenedGames.Remove(roomKey);
|
|
return ResultCode.CodeOk;
|
|
return ResultCode.CodeOk;
|
|
});
|
|
});
|
|
}
|
|
}
|