示例#1
0
 public async Task ProcessAction(GameAction gameAction)
 {
 }
示例#2
0
        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);
        }
示例#3
0
 public async Task PushAction(GameAction gameAction)
 {
     _gameRepository.PushAction(gameAction);
 }