public async Task <IActionResult> Round(string id) { var game = GetGame(id); var choices = await _choiceProvider.GetAll(); var player = game.GetUnchocenPlayer(); while (player != Player.None) { var playerId = game.GetPlayerId(player); var playerInstance = await _playerProvider.GetPlayer(playerId); var viewablePlayerInstance = playerInstance as IViewablePlayer; if (viewablePlayerInstance != null) { var view = await viewablePlayerInstance.View(game.GameState, choices, PlayerHelper.CreateRedirectUrl(this.Url, game.GameState, player), player); return(view); } var choice = await playerInstance.GetChoice(player, game.GameState, choices); game.SetChoice(player, choice); _gameStateStorage.Save(game.GameState); player = game.GetUnchocenPlayer(); } var winner = game.CalculateRoundWinner(choices); _gameStateStorage.Save(game.GameState); var round = game.GetCurrentRound(); var model = new RoundEndViewModel() { Choices = choices, GameState = game.GameState, Round = round, RoundNo = game.GameState.Rounds.Count, Winner = winner }; return(View("RoundEnd", model)); }
public void SendMessage(Message msg, short recipient) { if (_pprovider != null) { Player p = null; lock (_pprovider.PlayerLock) { p = _pprovider.GetPlayer(recipient); p.SendMessage(msg); InfoLog.WriteInfo("Message type: " + msg.Type + " has been send to user " + p.Id, EPrefix.ServerSendMessageInfo); } } else { InfoLog.WriteInfo("Message sent unsuccessful.", EPrefix.ServerSendMessageInfo); } }
public static bool PlayerExists(this IPlayerProvider playerProvider, string name) { return(playerProvider.GetPlayer(name) != null); }
public Player GetPlayer(int id) { return(_playerProvider.GetPlayer(id)); }