Exemplo n.º 1
0
        private void HandleChoiceMade(TurnAction action)
        {
            stopTurnChoosingCommand.Send();
            TurnActionExecutionResult result = TurnActionExecutionResult.Success;

            for (int c = 0; c < action.components.Count; c++)
            {
                TurnActionComponent comp = action.components[c];
                try {
                    switch (comp.type)
                    {
                    case TurnActionComponentType.MovePiece:
                        moveCommand.Send(new MoveCommand()
                        {
                            startPosition = comp.actor,
                            moveTo        = comp.target,
                        });
                        break;

                    case TurnActionComponentType.CapturePiece:
                        captureCommand.Send(new CaptureCommand()
                        {
                            space = comp.target,
                        });
                        break;

                    case TurnActionComponentType.PromotePiece:
                        promoteCommand.Send(new PromoteCommand()
                        {
                            piecePos  = comp.actor,
                            promoteTo = comp.promotionIndex,
                        });
                        break;

                    case TurnActionComponentType.Forfeit:
                        if (board.ActivePlayer == board.LocalPlayerOrder)
                        {
                            result = TurnActionExecutionResult.Forfeit;
                        }
                        break;

                    default:
                        throw new TurnActionExcecutionException("Bad component type");
                    }
                } catch (TurnActionExcecutionException ex) {
                    scripts.WriteToAuthorLog(string.Format("Turn action execution error on component {0}: {1}", c, ex.Message));
                    result = TurnActionExecutionResult.Error;
                    break;
                }
            }
            handleEndOfTurn.Send(result);
        }
Exemplo n.º 2
0
 private void DoEndOfTurn(TurnActionExecutionResult result)
 {
     lastActionResult = result;
     SetTurnState(TurnState.WaitServerEoT);
 }