예제 #1
0
 public void LoadingAllStageInfoToChange(QuestStageCircuitItem questStageCircuitItem, string thisViewPlayerCode, UnityAction turnStageCallBack)
 {
     for (int n = 0; n < questStageCircuitItem.questOneTurnStageList.Count; n++)
     {
         //是当前回合
         bool            isCurrent       = false;
         GM_OneStageSite gM_OneStageSite = questStageCircuitItem.questOneTurnStageList[n];
         if (gM_OneStageSite.code == questStageCircuitItem.oneTurnStage.code)
         {
             isCurrent = true;
         }
         //是否拥有主动权
         bool isInitiative = false;
         if (questStageCircuitItem.turnHavePlayerCode == thisViewPlayerCode)
         {
             if (gM_OneStageSite.operatingPlayer == "Myself")
             {
                 isInitiative = true;
             }
             else
             {
                 isInitiative = false;
             }
         }
         else
         {
             if (gM_OneStageSite.operatingPlayer == "Myself")
             {
                 isInitiative = false;
             }
             else
             {
                 isInitiative = true;
             }
         }
         foreach (TurnSysOneStageView turnSysOneStageView in turnSysOneStageViewList)
         {
             if (turnSysOneStageView.gM_OneStageSite.code == gM_OneStageSite.code)
             {
                 turnSysOneStageView.LoadingOneStageInfo(gM_OneStageSite, isInitiative, isCurrent);
             }
         }
     }
     StartCoroutine(ShowOverAction(turnStageCallBack));
 }
예제 #2
0
    public void LoadingOneStageInfo(GM_OneStageSite gM_OneStageSite, bool isInitiative, bool isCurrent)
    {
        this.gM_OneStageSite = gM_OneStageSite;
        TextMeshProUGUI turnSysOneStageText = UtilityHelper.FindChild <TextMeshProUGUI>(this.transform, "TurnSysOneStageText");

        turnSysOneStageText.text = gM_OneStageSite.name;
        if (isInitiative)
        {
            turnSysOneStageText.color = Color.green;
        }
        else
        {
            turnSysOneStageText.color = Color.red;
        }
        if (isCurrent)
        {
            this.transform.localScale = new Vector3(1, 1, 1);
        }
        else
        {
            this.transform.localScale = new Vector3(0.7f, 0.7f, 1);
        }
    }
예제 #3
0
        //读取模式并做出一定的设置
        public void GameInterfacePreparationByGameModel(GameModelProxy gameModelProxy,
                                                        PlayerGroupProxy playerGroupProxy,
                                                        QuestStageCircuitProxy questStageCircuitProxy,
                                                        EffectInfoProxy effectInfoProxy,
                                                        GameContainerProxy gameContainerProxy,
                                                        string gameModelName)
        {
            gameModelProxy.setGameModelNow(gameModelName);

            HexGridProxy hexGridProxy = Facade.RetrieveProxy(HexGridProxy.NAME) as HexGridProxy;

            hexGridProxy.InitializeTheProxy(gameModelProxy.hexModelInfoNow);

            int number = 0;

            foreach (PlayerItem playerItem in playerGroupProxy.playerGroup.playerItems.Values)
            {
                GM_PlayerSite playerSiteOne = gameModelProxy.gameModelNow.playerSiteList[number];
                playerItem.LoadingGameModelPlayerSet(playerSiteOne);
                gameContainerProxy.CreateNecessaryContainer(playerItem, gameModelProxy.gameModelNow.gameContainerTypeList);
                number++;
            }
            //初始化流程信息
            //将流程需要的监听放入到监听效果集合中
            for (int n = 0; n < gameModelProxy.gameModelNow.turnStage.Length; n++)
            {
                GM_OneStageSite oneStageSite = gameModelProxy.stageSiteMap[gameModelProxy.gameModelNow.turnStage[n]];
                questStageCircuitProxy.circuitItem.questOneTurnStageList.Add(oneStageSite);
                foreach (string effectCode in oneStageSite.effectNeedExeList)
                {
                    //创建空的实体信息,在执行的时候会用到
                    EffectInfo oneEffectInfo = effectInfoProxy.GetDepthCloneEffectByName(effectCode);
                    CardEntry  cardEntry     = new CardEntry();
                    PlayerItem player        = new PlayerItem("NONE");
                    oneEffectInfo.cardEntry = cardEntry;
                    oneEffectInfo.player    = player;

                    if (oneEffectInfo.impactType == "GameModelRule")
                    {
                        questStageCircuitProxy.circuitItem.putOneEffectInfoInActiveMap(oneEffectInfo, effectInfoProxy.effectSysItem.impactTimeTriggerMap);
                    }
                }
            }

            //通知渲染战场
            SendNotification(HexSystemEvent.HEX_VIEW_SYS, null, HexSystemEvent.HEX_VIEW_SYS_SHOW_START);
            //渲染费用栏
            SendNotification(
                UIViewSystemEvent.UI_VIEW_CURRENT,
                null,
                StringUtil.GetNTByNotificationTypeAndUIViewName(
                    UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW,
                    UIViewConfig.getNameStrByUIViewName(UIViewName.ManaInfoView)
                    )
                );
            //渲染科技栏
            SendNotification(
                UIViewSystemEvent.UI_VIEW_CURRENT,
                null,
                StringUtil.GetNTByNotificationTypeAndUIViewName(
                    UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW,
                    UIViewConfig.getNameStrByUIViewName(UIViewName.TraitCombinationView)
                    )
                );
            //渲染船只栏
            SendNotification(
                UIViewSystemEvent.UI_VIEW_CURRENT,
                null,
                StringUtil.GetNTByNotificationTypeAndUIViewName(
                    UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW,
                    UIViewConfig.getNameStrByUIViewName(UIViewName.ShipComponentView)
                    )
                );
            //打开回合控制栏
            SendNotification(
                UIViewSystemEvent.UI_VIEW_CURRENT,
                questStageCircuitProxy.circuitItem.questOneTurnStageList,
                StringUtil.GetNTByNotificationTypeAndUIViewName(
                    UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW,
                    UIViewConfig.getNameStrByUIViewName(UIViewName.TurnSysProgressBarView)
                    )
                );
        }
예제 #4
0
        public override void Execute(INotification notification)
        {
            QuestStageCircuitProxy questStageCircuitProxy =
                Facade.RetrieveProxy(QuestStageCircuitProxy.NAME) as QuestStageCircuitProxy;
            EffectInfoProxy effectInfoProxy =
                Facade.RetrieveProxy(EffectInfoProxy.NAME) as EffectInfoProxy;
            OperateSystemProxy operateSystemProxy =
                Facade.RetrieveProxy(OperateSystemProxy.NAME) as OperateSystemProxy;
            //获取当前回合玩家
            PlayerGroupProxy playerGroupProxy =
                Facade.RetrieveProxy(PlayerGroupProxy.NAME) as PlayerGroupProxy;



            PlayerItem turnHavePlayerItem = playerGroupProxy.getPlayerByPlayerCode(questStageCircuitProxy.GetNowHaveTurnPlayerCode());

            switch (notification.Type)
            {
            //开始一个回合
            case UIViewSystemEvent.UI_QUEST_TURN_STAGE_START_OF_TRUN:
                questStageCircuitProxy.circuitItem.turnNum++;
                UtilityLog.Log("玩家【" + turnHavePlayerItem.playerCode + "】第【" + questStageCircuitProxy.circuitItem.turnNum + "】回合开始", LogUtType.Stage);
                questStageCircuitProxy.circuitItem.oneTurnStage = questStageCircuitProxy.circuitItem.questOneTurnStageList[0];
                //开始一个阶段
                SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_START_OF_STAGE);
                break;

            //从指定阶段开始回合
            case UIViewSystemEvent.UI_QUEST_TURN_STAGE_ASSIGN_START_OF_TRUN:
                GM_OneStageSite oneStageSite = questStageCircuitProxy.circuitItem.getOneStageSiteByStageCode("ActivePhase");
                if (oneStageSite != null)
                {
                    questStageCircuitProxy.circuitItem.oneTurnStage = oneStageSite;
                    questStageCircuitProxy.circuitItem.turnNum++;
                    UtilityLog.Log("一个回合从指定阶段开始", LogUtType.Stage);
                }
                else
                {
                    UtilityLog.LogError("找不到指定阶段的配置信息");
                }

                //开始一个阶段
                SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_START_OF_STAGE);
                break;

            //结束一个回合
            case UIViewSystemEvent.UI_QUEST_TURN_STAGE_END_OF_TRUN:
                UtilityLog.Log("玩家【" + turnHavePlayerItem.playerCode + "】第【" + questStageCircuitProxy.circuitItem.turnNum + "】回合结束", LogUtType.Stage);
                questStageCircuitProxy.IntoNextTurn();
                SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_START_OF_TRUN);
                break;

            //开始一个阶段
            case UIViewSystemEvent.UI_QUEST_TURN_STAGE_START_OF_STAGE:
                questStageCircuitProxy.circuitItem.autoNextStage = true;
                if (questStageCircuitProxy.circuitItem.oneTurnStage.operatingPlayer == "Myself")
                {
                    questStageCircuitProxy.SetNowHaveStagePlayerCode(questStageCircuitProxy.GetNowHaveTurnPlayerCode());
                }
                else if (questStageCircuitProxy.circuitItem.oneTurnStage.operatingPlayer == "Enemy")
                {
                    questStageCircuitProxy.SetNowHaveStagePlayerCode(playerGroupProxy.getEnemytPlayerByPlayerCode(questStageCircuitProxy.GetNowHaveTurnPlayerCode()).playerCode);
                }
                questStageCircuitProxy.circuitItem.questTurnStageState = QuestTurnStageState.StartOfState;
                UtilityLog.Log("第【" + questStageCircuitProxy.circuitItem.turnNum + "】回合" + "开始一个阶段【" + questStageCircuitProxy.circuitItem.oneTurnStage.name + "】", LogUtType.Stage);
                SendNotification(UIViewSystemEvent.UI_TURN_STAGE_SYS, questStageCircuitProxy.circuitItem, UIViewSystemEvent.UI_TURN_STAGE_SYS_STAGE_CHANGE);
                effectInfoProxy.effectSysItem.showEffectNum++;
                questStageCircuitProxy.circuitItem.oneStageStartAction(turnHavePlayerItem);
                if (questStageCircuitProxy.circuitItem.autoNextStage)
                {
                    SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_NEED_CHECK_END_STAGE_STATE);
                }
                break;

            //执行一个阶段
            case UIViewSystemEvent.UI_QUEST_TURN_STAGE_EXECUTION_OF_STAGE:
                PlayerItem stageHavePlayerItemForExe = playerGroupProxy.getPlayerByPlayerCode(questStageCircuitProxy.GetNowHaveStagePlayerCode());
                stageHavePlayerItemForExe.ttPlayerHandCanUseJudge();
                questStageCircuitProxy.circuitItem.autoNextStage       = true;
                questStageCircuitProxy.circuitItem.questTurnStageState = QuestTurnStageState.ExecutionOfState;
                UtilityLog.Log("第【" + questStageCircuitProxy.circuitItem.turnNum + "】回合" + "执行一个阶段【" + questStageCircuitProxy.circuitItem.oneTurnStage.name + "】", LogUtType.Stage);
                questStageCircuitProxy.circuitItem.oneStageExecutionAction(turnHavePlayerItem);
                if (questStageCircuitProxy.circuitItem.oneTurnStage.automatic == "N")
                {
                    questStageCircuitProxy.circuitItem.autoNextStage = false;
                    //判断当前玩家的种类
                    //AI玩家
                    if (stageHavePlayerItemForExe.playerType == PlayerType.AIPlayer)
                    {
                        //切入到AI逻辑操作
                        SendNotification(LogicalSysEvent.LOGICAL_SYS, null, LogicalSysEvent.LOGICAL_SYS_ACTIVE_PHASE_ACTION);
                    }
                    //人类玩家
                    else if (stageHavePlayerItemForExe.playerType == PlayerType.HumanPlayer)
                    {
                        //显示结束阶段按钮
                        SendNotification(UIViewSystemEvent.UI_NEXT_TURN_SHOW_SYS, null, StringUtil.GetNTByNotificationTypeAndPlayerCode(UIViewSystemEvent.UI_NEXT_TURN_SHOW_SYS_SHOW, stageHavePlayerItemForExe.playerCode));
                    }
                    //直接返回
                    return;
                }
                if (questStageCircuitProxy.circuitItem.autoNextStage)
                {
                    SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_NEED_CHECK_END_STAGE_STATE);
                }
                break;

            //结束一个阶段
            case UIViewSystemEvent.UI_QUEST_TURN_STAGE_END_OF_STAGE:
                questStageCircuitProxy.circuitItem.questTurnStageState = QuestTurnStageState.EndOfState;
                UtilityLog.Log("第【" + questStageCircuitProxy.circuitItem.turnNum + "】回合" + "结束一个阶段【" + questStageCircuitProxy.circuitItem.oneTurnStage.name + "】", LogUtType.Stage);
                questStageCircuitProxy.circuitItem.oneStageEndAction(turnHavePlayerItem);
                int nowStageIndex = questStageCircuitProxy.circuitItem.questOneTurnStageList.IndexOf(questStageCircuitProxy.circuitItem.oneTurnStage);
                if (nowStageIndex < questStageCircuitProxy.circuitItem.questOneTurnStageList.Count - 1)
                {
                    questStageCircuitProxy.circuitItem.oneTurnStage = questStageCircuitProxy.circuitItem.questOneTurnStageList[nowStageIndex + 1];
                    SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_START_OF_STAGE);
                }
                else
                {
                    questStageCircuitProxy.circuitItem.oneTurnEndAction(turnHavePlayerItem);
                    SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_END_OF_TRUN);
                }
                break;

            //检查当前阶段是否可以结束
            case UIViewSystemEvent.UI_QUEST_TURN_STAGE_NEED_CHECK_END_STAGE_STATE:
                PlayerItem stageHavePlayerItemForCheckEnd = playerGroupProxy.getPlayerByPlayerCode(questStageCircuitProxy.GetNowHaveStagePlayerCode());
                UtilityLog.Log("第【" + questStageCircuitProxy.circuitItem.turnNum + "】回合" + "检查【" + questStageCircuitProxy.circuitItem.oneTurnStage.name + "】&&状态【" + questStageCircuitProxy.circuitItem.questTurnStageState.ToString() + "】是否可以进入下一个状态", LogUtType.Stage);
                bool nextStageState = true;
                if (questStageCircuitProxy.circuitItem.questTurnStageState == QuestTurnStageState.ExecutionOfState)
                {
                    if (questStageCircuitProxy.circuitItem.oneTurnStage.automatic == "N")
                    {
                        nextStageState = false;
                        //判断当前玩家的种类
                        //AI玩家
                        if (stageHavePlayerItemForCheckEnd.playerType == PlayerType.AIPlayer)
                        {
                            //切入到AI逻辑操作
                            SendNotification(LogicalSysEvent.LOGICAL_SYS, null, LogicalSysEvent.LOGICAL_SYS_ACTIVE_PHASE_ACTION);
                        }
                        //人类玩家
                        else if (stageHavePlayerItemForCheckEnd.playerType == PlayerType.HumanPlayer)
                        {
                            //人类玩家自行操作
                        }
                    }
                }
                if (nextStageState)
                {
                    //检查操作控制器和效果控制器是否都处于初始状态
                    if (operateSystemProxy.operateSystemItem.operateModeType == OperateSystemItem.OperateType.Close)
                    {
                        if (effectInfoProxy.effectSysItem.effectSysItemStage == EffectSysItemStage.UnStart)
                        {
                            //检查效果是否都展示完毕
                            if (effectInfoProxy.effectSysItem.showEffectNum == 0)
                            {
                                if (questStageCircuitProxy.circuitItem.questTurnStageState == QuestTurnStageState.StartOfState)
                                {
                                    SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_EXECUTION_OF_STAGE);
                                }
                                else if (questStageCircuitProxy.circuitItem.questTurnStageState == QuestTurnStageState.ExecutionOfState)
                                {
                                    SendNotification(UIViewSystemEvent.UI_QUEST_TURN_STAGE, null, UIViewSystemEvent.UI_QUEST_TURN_STAGE_END_OF_STAGE);
                                }
                            }
                        }
                    }
                }


                break;
            }
        }