private void OnPressed(int entityId, int pieceReferenceId) { PieceEV piece = FindAssociatedPiece(pieceReferenceId); TowerAnswerState nextAction = DecideNextAction(piece); PerformNextAction(nextAction, piece); }
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); }
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"); } }