コード例 #1
0
        private void OnPressed(int entityId, int pieceReferenceId)
        {
            PieceEV          piece      = FindAssociatedPiece(pieceReferenceId);
            TowerAnswerState nextAction = DecideNextAction(piece);

            PerformNextAction(nextAction, piece);
        }
コード例 #2
0
        private TowerAnswerState DecideNextAction(PieceEV piece)
        {
            TowerAnswerState returnValue = TowerAnswerState.DECIDE_CLICK_HIGHLIGHT_CAPTURE;
            TowerModalEV     modal       = towerModalService.FindModalEV(entitiesDB);

            if (!piece.Tier.TopOfTower)
            {
                returnValue = TowerAnswerState.DESIGNATE_IMMOBILE_CAPTURE;
            }
            // It's possible to click non-topOfTower piece while immobile capture designated, hence the override
            if (modal.ImmobileCaptureState.ImmobileCaptureDesignated)
            {
                returnValue = TowerAnswerState.INITIATE_IMMOBILE_CAPTURE;
            }

            return(returnValue);
        }
コード例 #3
0
        private void PerformNextAction(TowerAnswerState nextAction, PieceEV piece)
        {
            switch (nextAction)
            {
            case TowerAnswerState.DECIDE_CLICK_HIGHLIGHT_CAPTURE:
                NextActionClickHighlightCapture(piece);
                break;

            case TowerAnswerState.DESIGNATE_IMMOBILE_CAPTURE:
                NextActionDesignateImmobileCapture();
                break;

            case TowerAnswerState.INITIATE_IMMOBILE_CAPTURE:
                NextActionInitiateImmobileCapture(piece);
                break;

            default:
                throw new InvalidOperationException("Invalid or unsupported TowerAnswer state");
            }
        }