public async Task ProcessAction(GameAction gameAction) { }
public GameAction ProcessAction(GameAction action) { Game.LastAction = DateTime.Now; var player = Game.GetPlayer(action.PlayerGuid); switch (action.ActionType) { case GameActionType.JoinGame: action.ActionResult = JoinGameAction(player, action.PlayerGuid, action.ActionData.ToString()); break; case GameActionType.LeaveGame: action.ActionResult = LeaveGameAction(player, action.PlayerGuid).ToString(); break; case GameActionType.LoadDeck: var loadDeckParam = JsonConvert.DeserializeObject <LoadDeckParam>(action.ActionData.ToString()); var loaded = LoadDeck(player, loadDeckParam); // start the game if everything is loaded var startaction = StartGame(action); if (startaction != null) { action = startaction; } break; case GameActionType.StartGame: break; case GameActionType.ShuffleList: var shuffleListParam = JsonConvert.DeserializeObject <ShuffleListParam>(action.ActionData.ToString()); action.ActionResult = ShuffleListAction(shuffleListParam); break; case GameActionType.UpdateList: var updateListParam = JsonConvert.DeserializeObject <UpdateListParam>(action.ActionData.ToString()); action.ActionResult = UpdateListAction(updateListParam); break; case GameActionType.DrawCard: case GameActionType.DiscardCard: case GameActionType.PlayCard: case GameActionType.DeckCard: case GameActionType.RemoveCard: var moveCardParam = JsonConvert.DeserializeObject <MoveCardParam>(action.ActionData.ToString()); action.ActionResult = MoveCardAction(moveCardParam); action.ActionData = moveCardParam; break; case GameActionType.ChangeCardState: var changeCardParam = JsonConvert.DeserializeObject <ChangeCardParam>(action.ActionData.ToString()); action.ActionResult = ChangeCardState(changeCardParam); break; case GameActionType.ChangePlayerStats: var changePlayerStats = JsonConvert.DeserializeObject <ChangePlayerStatsParam>(action.ActionData.ToString()); LimitResources(changePlayerStats); LimitVictoryPoints(changePlayerStats); action.ActionData = changePlayerStats; break; case GameActionType.ChangeCurtainState: var changeCurtainState = JsonConvert.DeserializeObject <ChangeCurtainStateParam>(action.ActionData.ToString()); ChangeCurtainState(changeCurtainState); action.ActionData = changeCurtainState; break; case GameActionType.FlipCoin: action.ActionResult = FlipCoin(); break; case GameActionType.DiceRoll: action.ActionResult = DiceRoll(); break; } return(action); }
public async Task PushAction(GameAction gameAction) { _gameRepository.PushAction(gameAction); }