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)); }
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); } }
//读取模式并做出一定的设置 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) ) ); }
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; } }