private GameDataDto PrepareGameDataForPlayerDissemination(IPlayerInfo player) { // This data can be given to all players. var gd = new GameDataDto { GameGuid = GameData.GameGuid, EnactedFascistPolicyCount = GameData.EnactedFascistPolicyCount, EnactedLiberalPolicyCount = GameData.EnactedLiberalPolicyCount, ElectionTracker = GameData.ElectionTracker }; var canDiscloseFascists = player.Role == PlayerRole.Fascist || (player.Role == PlayerRole.Hitler && GameData.Players.Count <= 6); var canDiscloseHitler = player.Role != PlayerRole.Liberal; var playersEnumerable = GameData.Players.Select(p => { var rtn = new PlayerData() { Identifier = p.Identifier, IsAlive = p.IsAlive, IsChancellor = p.IsChancellor, IsPresident = p.IsPresident, Name = p.Name }; if (p.Role == PlayerRole.Hitler && canDiscloseHitler) { rtn.Role = PlayerRole.Hitler; } else if (p.Role == PlayerRole.Fascist && canDiscloseFascists) { rtn.Role = PlayerRole.Fascist; } else if (p.HasSameIdentifierAs(player)) { rtn.Role = PlayerRole.Liberal; } return(rtn); }); foreach (var p in playersEnumerable) { gd.Players.Add(new PlayerDto { Identifier = p.Identifier, IsAlive = p.IsAlive, IsChancellor = p.IsChancellor, IsPresident = p.IsPresident, Name = p.Name, Role = p.Role }); } return(gd); }
public async Task UpdateGameData(Guid player, GameDataDto gameData) { _logger.LogDebug($"Transmit {nameof(IHubClient.UpdateGameData)} to player {player}"); await GetUser(player).UpdateGameData(gameData); }
public Task UpdateGameData(GameDataDto gameData) { // Intentionally blank, but a good AI would do something with this information. return(Task.CompletedTask); }