public void Step(ref ImmobileCaptureStepState token, int condition)
        {
            ModalEV modal = modalService.FindModalEV(entitiesDB);

            SetModalOptions(modal);
            UpdateModalView(modal);
        }
Beispiel #2
0
        public void Step(ref TierExchangeStepState token, int condition)
        {
            ModalEV modal = modalService.FindModalEV(entitiesDB);

            SetModalOptions(modal, ref token);
            modalService.DisplayModal(modal);
        }
Beispiel #3
0
        private void SetModalOptions(ModalEV modal, List <PieceEV> piecesAtLocation)
        {
            ModalType modalType = CalcModalType(piecesAtLocation);

            SetModalType(modal, modalType);
            SetTierOptions(modal, modalType, piecesAtLocation);
        }
Beispiel #4
0
        public void Step(ref ForcedRecoveryStepState token, int condition)
        {
            ModalEV modal = modalService.FindModalEV(entitiesDB);

            SetModalData(token, modal);
            modalService.DisplayModal(modal);
        }
Beispiel #5
0
        public void Step(ref ClickImmobileCaptureStepState token, int condition)
        {
            ModalEV modal = modalService.FindModalEV(entitiesDB);

            SetModalOptions(modal, ref token);
            modalService.DisplayModal(modal);
        }
 private void SetModalVictoriousPlayer(ModalEV modal, PlayerColor victoriousPlayer)
 {
     entitiesDB.ExecuteOnEntity(
         modal.ID,
         (ref ModalEV modalToChange) =>
     {
         modalToChange.VictoriousPlayer.PlayerColor = victoriousPlayer;
     });
 }
 // TODO Move all usages to ModalService
 private void SetModalType(ModalEV modal, ModalType modalType)
 {
     entitiesDB.ExecuteOnEntity(
         modal.ID,
         (ref ModalEV modalToChange) =>
     {
         modalToChange.Type.Type = modalType;
     });
 }
        public void Step(ref CheckmateModalStepState token, int condition)
        {
            ModalEV     modal            = modalService.FindModalEV(entitiesDB);
            TurnEV      currentTurn      = turnService.GetCurrentTurnEV(entitiesDB);
            PlayerColor victoriousPlayer = TurnService.CalcOtherTurnPlayer(currentTurn.TurnPlayer.PlayerColor);

            SetModalOptions(modal, victoriousPlayer);
            modalService.DisplayModal(modal);
        }
Beispiel #9
0
        public void Step(ref ClickPieceStepState token, int condition)
        {
            ModalEV        modal            = modalService.FindModalEV(entitiesDB);
            List <PieceEV> piecesAtLocation = pieceFindService.FindPiecesByLocation(
                token.ClickedPiece.Location.Location, entitiesDB);

            SetModalOptions(modal, piecesAtLocation);
            modalService.DisplayModal(modal);
        }
Beispiel #10
0
 private void SetModalData(ForcedRecoveryStepState token, ModalEV modal)
 {
     entitiesDB.ExecuteOnEntity(
         modal.ID,
         (ref ModalEV modalToChange) =>
     {
         modalToChange.Type.Type             = ModalType.CONFIRM;
         modalToChange.Confirm.PieceMoved    = token.PieceMoved;
         modalToChange.Confirm.PieceCaptured = token.PieceCaptured;
     });
 }
Beispiel #11
0
        private void SetModalOptions(ModalEV modal, ref TierExchangeStepState token)
        {
            int tileReferenceId = token.ReferenceTile.ID.entityID;

            entitiesDB.ExecuteOnEntity(
                modal.ID,
                (ref ModalEV modalToChange) =>
            {
                modal.Type.Type = ModalType.TIER_1_3_EXCHANGE_CLICK;
                modal.CaptureOrStack.TileReferenceId = tileReferenceId;
            });
        }
        private void SetModalOptions(ModalEV modal, ref SubstitutionStepState token)
        {
            int tileReferenceId = token.TileReferenceEV.ID.entityID;

            entitiesDB.ExecuteOnEntity(
                modal.ID,
                (ref ModalEV modalToChange) =>
            {
                modal.Type.Type = ModalType.SUBSTITUTION_CLICK;
                modal.CaptureOrStack.TileReferenceId = tileReferenceId;
            });
        }
        private void SetModalOptions(ModalEV modal, ref CapturePieceStepState token)
        {
            int tileReferenceId = token.DestinationTile.ID.entityID;

            entitiesDB.ExecuteOnEntity(
                modal.ID,
                (ref ModalEV modalToChange) =>
            {
                modal.Type.Type = ModalType.CAPTURE_STACK;
                modal.CaptureOrStack.TileReferenceId = tileReferenceId;
            });
        }
Beispiel #14
0
        private void SetModalOptions(ModalEV modal, ref ClickImmobileCaptureStepState token)
        {
            int tileReferenceId = token.TileReferenceEV.ID.entityID;

            entitiesDB.ExecuteOnEntity(
                modal.ID,
                (ref ModalEV modalToChange) =>
            {
                modal.Type.Type = ModalType.CLICK_IMMOBILE_CAPTURE;
                modal.CaptureOrStack.TileReferenceId = tileReferenceId;
            });
        }
Beispiel #15
0
        private void SetTierOptions(ModalEV modal, ModalType modalType, List <PieceEV> piecesAtLocation)
        {
            TurnEV      currentTurn    = turnService.GetCurrentTurnEV(entitiesDB);
            PieceEV     pieceTier1     = piecesAtLocation[0];
            PieceEV     pieceTier2     = piecesAtLocation[1];
            PieceEV?    pieceTier3     = modalType == ModalType.TOWER_3RD_TIER ? (PieceEV?)piecesAtLocation[2] : null;
            PlayerColor topPlayerColor = pieceTier3.HasValue ?
                                         pieceTier3.Value.PlayerOwner.PlayerColor : pieceTier2.PlayerOwner.PlayerColor;
            bool immobileCapturePossible =
                (pieceTier2.PlayerOwner.PlayerColor != pieceTier1.PlayerOwner.PlayerColor &&
                 immobileCaptureService.CanImmobileCapture(currentTurn.TurnPlayer.PlayerColor, pieceTier1) &&
                 immobileCaptureService.CanImmobileCapture(currentTurn.TurnPlayer.PlayerColor, pieceTier2)) ||
                (pieceTier3.HasValue && pieceTier2.PlayerOwner.PlayerColor != pieceTier3.Value.PlayerOwner.PlayerColor &&
                 immobileCaptureService.CanImmobileCapture(currentTurn.TurnPlayer.PlayerColor, pieceTier2) &&
                 immobileCaptureService.CanImmobileCapture(currentTurn.TurnPlayer.PlayerColor, pieceTier3.Value));
            bool noCheckViolationsExist = immobileCaptureService.NoCheckViolationsExist(piecesAtLocation, immobileCapturePossible, entitiesDB);

            entitiesDB.ExecuteOnEntity(
                modal.ID,
                (ref ModalEV modalToChange) =>
            {
                modalToChange.ImmobileCaptureState.ImmobileCaptureDesignated = false;

                modalToChange.Tier1.Enabled = pieceTier1.Tier.TopOfTower ||
                                              (immobileCapturePossible && noCheckViolationsExist &&
                                               pieceTier1.PlayerOwner.PlayerColor != pieceTier2.PlayerOwner.PlayerColor &&
                                               pieceTier1.PlayerOwner.PlayerColor != topPlayerColor);
                modalToChange.Tier1.Name = CalcButtonText(pieceTier1);
                modalToChange.Tier1.ReferencedPieceId = pieceTier1.ID.entityID;

                modalToChange.Tier2.Enabled = pieceTier2.Tier.TopOfTower ||
                                              (immobileCapturePossible && noCheckViolationsExist &&
                                               (pieceTier2.PlayerOwner.PlayerColor != pieceTier1.PlayerOwner.PlayerColor ||
                                                (!pieceTier3.HasValue || pieceTier2.PlayerOwner.PlayerColor != pieceTier3.Value.PlayerOwner.PlayerColor)) &&
                                               pieceTier2.PlayerOwner.PlayerColor != topPlayerColor);
                modalToChange.Tier2.Name = CalcButtonText(pieceTier2);
                modalToChange.Tier2.ReferencedPieceId = pieceTier2.ID.entityID;

                if (pieceTier3.HasValue)
                {
                    modalToChange.Tier3.Enabled           = pieceTier3.Value.Tier.TopOfTower;
                    modalToChange.Tier3.Name              = CalcButtonText(pieceTier3.Value);
                    modalToChange.Tier3.ReferencedPieceId = pieceTier3.Value.ID.entityID;
                }
                else
                {
                    modalToChange.Tier3.Enabled = false;
                }
            });
        }
        private void SetModalOptions(ModalEV modal, ref DropPrepStepState token)
        {
            int       tileReferenceId      = token.DestinationTile.ID.entityID;
            int       handPieceReferenceId = token.HandPiece.ID.entityID;
            PieceType front = token.HandPiece.HandPiece.PieceType;
            PieceType back  = token.HandPiece.HandPiece.Back;

            entitiesDB.ExecuteOnEntity(
                modal.ID,
                (ref ModalEV modalToChange) =>
            {
                modal.Type.Type = ModalType.FRONT_BACK;
                modal.DropFrontBackModal.TileReferenceId      = tileReferenceId;
                modal.DropFrontBackModal.HandPieceReferenceId = handPieceReferenceId;
                modal.DropFrontBackModal.Front = front;
                modal.DropFrontBackModal.Back  = back;
            });
        }
        private void SetModalOptions(ModalEV modal)
        {
            PieceEV        pieceTier1       = pieceFindService.FindPieceEVById(modal.Tier1.ReferencedPieceId, entitiesDB).Value;
            List <PieceEV> piecesAtLocation = pieceFindService.FindPiecesByLocation(pieceTier1.Location.Location, entitiesDB);

            PieceEV     topPiece      = pieceFindService.FindTopPieceByLocation(pieceTier1.Location.Location, entitiesDB).Value;
            PlayerColor colorToEnable = topPiece.PlayerOwner.PlayerColor;

            PieceEV pieceTier2 = piecesAtLocation[1];
            PieceEV?pieceTier3 = piecesAtLocation.Count > 2 ? (PieceEV?)piecesAtLocation[2] : null;

            // TODO I think this logic is unnecessary, but I'm too scared to remove it now (all handled in TowerModalEngine).  Later refactor.
            bool noTier1CheckViolationsExist = immobileCaptureService.NoTier1CheckViolationsExist(piecesAtLocation, entitiesDB);
            bool noTier3BetrayalTwoFileMoveViolationsExist = immobileCaptureService.NoTier3BetrayalTwoFileMoveViolationsExist(piecesAtLocation, entitiesDB);

            entitiesDB.ExecuteOnEntity(
                modal.ID,
                (ref ModalEV modalToChange) =>
            {
                modalToChange.ImmobileCaptureState.ImmobileCaptureDesignated = true;

                modalToChange.Tier1.Enabled = noTier1CheckViolationsExist &&
                                              pieceTier1.PlayerOwner.PlayerColor == colorToEnable &&
                                              pieceTier1.PlayerOwner.PlayerColor != pieceTier2.PlayerOwner.PlayerColor;

                modalToChange.Tier2.Enabled = pieceTier2.PlayerOwner.PlayerColor == colorToEnable &&
                                              (pieceTier2.PlayerOwner.PlayerColor != pieceTier1.PlayerOwner.PlayerColor ||
                                               (pieceTier3.HasValue && pieceTier2.PlayerOwner.PlayerColor != pieceTier3.Value.PlayerOwner.PlayerColor));

                if (pieceTier3.HasValue)
                {
                    modalToChange.Tier3.Enabled = noTier3BetrayalTwoFileMoveViolationsExist &&
                                                  pieceTier3.Value.PlayerOwner.PlayerColor == colorToEnable &&
                                                  pieceTier3.Value.PlayerOwner.PlayerColor != pieceTier2.PlayerOwner.PlayerColor;
                }
                else
                {
                    modalToChange.Tier3.Enabled = false;
                }
            });
        }
 private void SetModalOptions(ModalEV modal, PlayerColor victoriousPlayer)
 {
     SetModalType(modal, ModalType.CHECKMATE);
     SetModalVictoriousPlayer(modal, victoriousPlayer);
 }
 public void DisplayModal(ModalEV modal)
 {
     modal.Visibility.IsVisible.value = true;
 }
 private void UpdateModalView(ModalEV modal)
 {
     modal.Visibility.IsVisible.value = true;
 }