void OnDifficultChanged(EM_STAGE_DIFFICULTTYPE difficultType) { ChapterinfoTemplate chapterT = StageModule.GetChapterinfoTemplateById(mCurChapterId); if (chapterT == null) { Debug.LogError("章节数据错误id=" + mCurChapterId); return; } ObjectSelf.GetInstance().CurChapterLevel = (int)difficultType; UpdateHardBtnImgs(difficultType); //---------------关卡------------ //选中当前章节最后一个可以挑战的关卡; mCurLevelId = StageModule.GetLastStageIdInTheChapter(chapterT, difficultType); //---------------章节------------ UpdateChapter(chapterT); //-------------关卡详细描述------- UpdateLevelInfo(); //--------------所有关卡--------- UpdateLevels(chapterT); }
//protected override void OnClickWorldMap() //{ // UI_HomeControler.Inst.AddUI(UI_WordMap.UI_ResPath); // UI_HomeControler.Inst.ReMoveUI(UI_SelectLevelMgr.UI_ResPath); // UI_WorldMapManage._instance.WorldMapShow(); //} /// <summary> /// 判断当前章节,某个难度的关卡是否通关; /// </summary> /// <param name="chapterId"></param> /// <param name="type"></param> /// <returns></returns> bool CheckPrevStageIsPass(int chapterId, EM_STAGE_DIFFICULTTYPE type, out int prevStageId) { ChapterinfoTemplate chapterT = StageModule.GetChapterinfoTemplateById(chapterId); prevStageId = -1; if (chapterT != null) { int stageId = StageModule.GetFirstStageIdInTheChapter(chapterT, type); StageTemplate st = StageModule.GetStageTemplateById(stageId); prevStageId = st.m_premissionid; ///前置关卡为-1时,表示不需要前置关卡,直接开启; if (prevStageId == -1) { return(true); } int star = -1; if (ObjectSelf.GetInstance().BattleStageData.IsCopyScenePass(prevStageId, out star)) { if (star > 0) { return(true); } } } return(false); }
void OnChapterChanged(int curChapterId) { ChapterinfoTemplate chapterT = StageModule.GetChapterinfoTemplateById(curChapterId); if (chapterT == null) { Debug.LogError("章节数据错误id=" + curChapterId); return; } ObjectSelf.GetInstance().SetCurChapterID(mCurChapterId); //---------------关卡难度--------- mDifficutType = EM_STAGE_DIFFICULTTYPE.NORMAL; UpdateHardBtnImgs(mDifficutType); UpdateDifficults(chapterT); //---------------章节------------ UpdateChapter(chapterT); //---------------关卡------------ //选中当前章节最后一个可以挑战的关卡; mCurLevelId = StageModule.GetLastStageIdInTheChapter(chapterT, mDifficutType); //----------- 关卡详细描述--------- UpdateLevelInfo(); //--------------所有关卡---------- UpdateLevels(chapterT); }
/// <summary> /// 获得当前开放的最后的关卡id; /// </summary> /// <returns></returns> public static int GetPlayerLastLevelID(EM_STAGE_DIFFICULTTYPE difficultType) { //Dictionary<int, BattleStage> stages = ObjectSelf.GetInstance().BattleStageData.GetBattleDatas(); //BattleStage bs = stages[GetPlayerLastChapterID()]; return(GetLastStageIdInTheChapter(GetPlayerLastChapterID(), difficultType)); }
void UpdateHardBtnImgs(EM_STAGE_DIFFICULTTYPE selectDifType) { bool tmp = false; for (int i = 1; i <= 3; i++) { tmp = i == (int)selectDifType; m_HardImgs[i - 1].gameObject.SetActive(tmp); m_HardTxts1[i - 1].gameObject.SetActive(!tmp); } }
public static int GetLastStageIdInTheChapter(int chapterId, EM_STAGE_DIFFICULTTYPE difficultType) { ChapterinfoTemplate chapterT = GetChapterinfoTemplateById(chapterId); if (chapterT == null) { return(-1); } return(GetLastStageIdInTheChapter(chapterT, difficultType)); }
/// <summary> /// 获得当前章节中指定难度第一个关卡; /// </summary> /// <param name="chapterT"></param> /// <param name="difficultType"></param> /// <returns></returns> public static int GetFirstStageIdInTheChapter(ChapterinfoTemplate chapterT, EM_STAGE_DIFFICULTTYPE difficultType) { if (chapterT == null) { throw new Exception("Null Refrence Exception"); } int[] stageIds = chapterT.getStageID(); if (stageIds == null || stageIds.Length <= 0) { return(-1); } int temp = -1; for (int i = 0, j = stageIds.Length; i < j; i++) { temp = stageIds[i]; StageTemplate stageT = GetStageTemplateById(temp); if (stageT == null) { continue; } //只选主线; EM_STAGE_STAGETYPE stageType = GetStageStageType(stageT); if (stageType != EM_STAGE_STAGETYPE.MAIN) { continue; } EM_STAGE_DIFFICULTTYPE type = GetStageDifficultType(stageT); if (type == difficultType) { return(temp); } } return(-1); }
void DisplayNormal() { mDifficutType = EM_STAGE_DIFFICULTTYPE.NORMAL; mCurLevelId = StageModule.GetPlayerLastLevelID(mDifficutType); if (mCurLevelId == -1) { mCurLevelId = 1310101000; } //最后一个章节; mCurChapterId = StageModule.GetPlayerLastChapterID(); if (mCurChapterId <= 0) { mCurChapterId = 1; } ObjectSelf.GetInstance().CurStageID = mCurLevelId; InitLevelId = mCurLevelId; InitChapterId = mCurChapterId; }
/// <summary> /// 获得玩家当前章节可以进入的最后(按id排序)一个关卡信息; /// </summary> /// <param name="chapterId"></param> /// <returns></returns> public static int GetLastStageIdInTheChapter(ChapterinfoTemplate chapterT, EM_STAGE_DIFFICULTTYPE difficultType) { List <StageData> bs = ObjectSelf.GetInstance().BattleStageData.GetStageDataListByChapterId(chapterT.getId()); if (bs == null || bs.Count <= 0) { return(-1); } int lastStageId = -1; int temp = -1; for (int i = 0; i < bs.Count; i++) { temp = bs[i].m_StageID; StageTemplate stageT = GetStageTemplateById(temp); if (stageT == null) { continue; } //只选主线; EM_STAGE_STAGETYPE stageType = GetStageStageType(stageT); if (stageType != EM_STAGE_STAGETYPE.MAIN) { continue; } EM_STAGE_DIFFICULTTYPE type = GetStageDifficultType(stageT); if (type == difficultType) { lastStageId = temp; } } return(lastStageId); }
/// <summary> /// 根据难度+关卡类型 = 表格中的关卡类型; /// </summary> /// <param name="difficultType"></param> /// <param name="stageType"></param> /// <returns></returns> public static EM_STAGE_TYPE GetStageType(EM_STAGE_DIFFICULTTYPE difficultType, EM_STAGE_STAGETYPE stageType) { switch (stageType) { case EM_STAGE_STAGETYPE.MAIN: { switch (difficultType) { case EM_STAGE_DIFFICULTTYPE.NONE: break; case EM_STAGE_DIFFICULTTYPE.NORMAL: return(EM_STAGE_TYPE.MAIN_QUEST1); case EM_STAGE_DIFFICULTTYPE.HARD: return(EM_STAGE_TYPE.MAIN_QUEST2); case EM_STAGE_DIFFICULTTYPE.HARDEST: return(EM_STAGE_TYPE.MAIN_QUEST3); default: break; } } break; case EM_STAGE_STAGETYPE.SIDE: return(EM_STAGE_TYPE.SIDE_QUEST); case EM_STAGE_STAGETYPE.SPECIAL: return(EM_STAGE_TYPE.SPEC_QUEST); default: break; } return(EM_STAGE_TYPE.NONE); }
public override void InitUIView() { base.InitUIView(); ObjectSelf.GetInstance().SetIsPrompt(false); //ChapterinfoTemplate ct = DataTemplate.GetInstance().GetChapterTemplateByStageID(1310381000); ///// /////当前所打关卡没有解锁新关卡时,从战斗结算界面回到关卡选择界面时,选中的关卡仍为之前所打的那关, /////当前关卡打完后有新关卡解锁,返回关卡选择界面就跳到下一关(困难难度一样如此),若同时解锁了两个 /////关卡(主线和支线),返回关卡选择界面选中主线关 ///// if (NeedSpecialStage) { InitLevelId = ObjectSelf.GetInstance().BattleStageData.GetSpecialStageData().m_StageID; } else { List <int> newStages = ObjectSelf.GetInstance().BattleStageData.GetNewStageList(); if (newStages != null && newStages.Count > 0) { DisplayNormal(); } else { if (ObjectSelf.GetInstance().CurStageID > 0 && StageModule.IsStageLevelById(ObjectSelf.GetInstance().CurStageID)) { InitLevelId = ObjectSelf.GetInstance().CurStageID; } else { DisplayNormal(); } } } if (InitLevelId <= 0) { if (InitChapterId <= 0) { DisplayNormal(); } else { ChapterinfoTemplate chapterT = StageModule.GetChapterinfoTemplateById(InitChapterId); if (chapterT == null) { DisplayNormal(); } else { mDifficutType = EM_STAGE_DIFFICULTTYPE.NORMAL; mCurChapterId = InitChapterId; mCurLevelId = StageModule.GetLastStageIdInTheChapter(chapterT, mDifficutType); } } } else { StageTemplate stageT = StageModule.GetStageTemplateById(InitLevelId); if (stageT == null) { DisplayNormal(); } else { mDifficutType = StageModule.GetStageDifficultType(stageT); mCurLevelId = InitLevelId; int chapterId = DataTemplate.GetInstance().GetChapterIdByStageT(stageT); if (chapterId == -1) { Debug.LogError("关卡stageid找不到对应的章节id,stageid=" + InitLevelId); } else { mCurChapterId = chapterId; } } } OnNewMapOpenShow(); Sprite inst = UIResourceMgr.LoadSprite(common.defaultPath + "Ui_guanqiabeijing"); Dictionary <int, BattleStage> .KeyCollection keycoll = TotalCharpter.Keys; foreach (int chapterid in keycoll) { if (chapterid != 1001) { ChapterinfoTemplate info = StageModule.GetChapterinfoTemplateById(chapterid); if (info != null) { //var info = (ChapterinfoTemplate)DataTemplate.GetInstance().m_ChapterTable.getTableData(chapterid); //var info = (ChapterinfoTemplate)table[chapterid]; Sprite pic = UIResourceMgr.LoadSprite(common.defaultPath + info.getBackgroundPicture()); GameObject item = new GameObject("background"); if (pic != null) { item.AddComponent <Image>().sprite = Instantiate(pic, Vector3.zero, Quaternion.identity) as Sprite; } else { item.AddComponent <Image>().sprite = Instantiate(inst, Vector3.zero, Quaternion.identity) as Sprite; } item.transform.SetParent(mBgTrans, false); } } } Init(); // 新手引导 100302 if (GuideManager.GetInstance().isGuideUser&& GuideManager.GetInstance().IsContentGuideID(100302) == false) { GuideManager.GetInstance().ShowGuideWithIndex(100302); } }
public void Show(StageTemplate stageT) { if (stageT == null) { Debug.LogError("关卡数据为null"); return; } mStageT = stageT; //-----------------星级----------------; StageData sd = ObjectSelf.GetInstance().BattleStageData.GetStageDataByStageId(stageT.m_stageid); int starNum = 0; if (sd != null) { starNum = sd.m_StageStar; } for (int i = 0; i < 3; i++) { StarImgs[i].gameObject.SetActive(i < starNum); } int stageNum = StageModule.GetStageNumInChapter(stageT); int chapterId = StageModule.GetChapterinfoIdByStageId(stageT.GetID()); m_ChapterNameTxt.text = string.Format(GameUtils.getString("chapter_title"), GameUtils.ConverIntToString(chapterId)); m_StageNameTxt.text = string.Format(GameUtils.getString("guanqia_mingzi"), stageNum, GameUtils.getString(stageT.m_stagename)); m_StageDescTxt.text = GameUtils.getString(stageT.m_stageinfo); m_ResourceCount1.text = stageT.m_playerexp.ToString(); m_ResourceCount2.text = stageT.m_goldreward.ToString(); if (stageT.m_expcrystal == -1) { ResouceObj3.SetActive(false); } else { ResouceObj3.SetActive(true); m_ResourceCount3.text = stageT.m_expcrystal.ToString(); } EM_STAGE_DIFFICULTTYPE difficultType = StageModule.GetStageDifficultType(stageT); string difficultStr = ""; switch (difficultType) { case EM_STAGE_DIFFICULTTYPE.NONE: break; case EM_STAGE_DIFFICULTTYPE.NORMAL: difficultStr = GameUtils.getString("chapter_difficult_type1"); break; case EM_STAGE_DIFFICULTTYPE.HARD: difficultStr = GameUtils.getString("chapter_difficult_type2"); break; case EM_STAGE_DIFFICULTTYPE.HARDEST: difficultStr = GameUtils.getString("chapter_difficult_type2"); break; default: break; } //-------------------关卡挑战次数-------------------- //无限制; if (stageT.m_limittime < 0) { SetRapidObjActive(false); } else { SetRapidObjActive(true); int remineTimes = Mathf.Max(0, stageT.m_limittime - sd.m_FightSum); TEXT_COLOR tc = TEXT_COLOR.WHITE; if (remineTimes > 0) { tc = TEXT_COLOR.WHITE; m_ResetBtn.gameObject.SetActive(false); } else { m_ResetBtn.gameObject.SetActive(true); tc = TEXT_COLOR.RED; } m_RemindTimeTxt.text = GameUtils.getString("fight_fightprepare_content3") + GameUtils.StringWithColor(remineTimes.ToString(), tc) + "/" + stageT.m_limittime; } m_DifficultTxt.text = difficultStr; //行动力不足颜色标红; if (isEnoughPow(mStageT)) { m_ConsumeCountTxt.text = stageT.m_cost.ToString(); } else { m_ConsumeCountTxt.text = GameUtils.StringWithColor(stageT.m_cost.ToString(), TEXT_COLOR.RED); } switch (stageT.m_winCondition) { case 1: m_SucessConditionTxt.text = "◆" + GameUtils.getString("System_setting_content28"); break; case 2: m_SucessConditionTxt.text = "◆" + string.Format(GameUtils.getString("System_setting_content29"), StageModule.GetBossName(stageT)); break; } //--------------------敌方英雄信息------------------; for (int i = 0; i < mEnermyList.Count; i++) { if (mEnermyList[i] != null) { mEnermyList[i].Destroy(); } } mEnermyList.Clear(); List <MonsterTemplate> _BossTemp = new List <MonsterTemplate>(); List <MonsterTemplate> _MonsterTemp = new List <MonsterTemplate>(); for (int i = 0, j = stageT.m_displayMonster.Length; i < j; i++) { MonsterTemplate _monster = (MonsterTemplate)DataTemplate.GetInstance().m_MonsterTable.getTableData(stageT.m_displayMonster[i]); if (_monster.getMonstertype() == 2) { _BossTemp.Add(_monster); } else { _MonsterTemp.Add(_monster); } } for (int i = 0; i < _BossTemp.Count; ++i) { UniversalItemCell cell = UniversalItemCell.GenerateItem(EnermyListTrans); cell.InitByID(_BossTemp[i].getId()); cell.SetSize(UniversalItemCell.UniversalItemSize.Type_114); cell.SetCount("BOSS"); cell.AddClickListener(OnClickUniversalHeroHandler); mEnermyList.Add(cell); } for (int i = 0; i < _MonsterTemp.Count; i++) { UniversalItemCell cell = UniversalItemCell.GenerateItem(EnermyListTrans); cell.InitByID(_MonsterTemp[i].getId()); cell.SetSize(UniversalItemCell.UniversalItemSize.Type_114); cell.AddClickListener(OnClickUniversalHeroHandler); //cell.SetCount("BOSS"); mEnermyList.Add(cell); } //--------------------关卡掉落展示------------------; for (int i = 0; i < mItemsList.Count; i++) { if (mItemsList[i] != null) { mItemsList[i].Destroy(); } } mItemsList.Clear(); string displaydrop = stageT.m_displaydrop; if (displaydrop == "-1" || string.IsNullOrEmpty(displaydrop)) { } else { string[] displaydropList = displaydrop.Split('#'); if (displaydropList.Length == 0) { return; } for (int i = 0; i < displaydropList.Length; i++) { UniversalItemCell cell = UniversalItemCell.GenerateItem(ItemListTrans); cell.SetSize(UniversalItemCell.UniversalItemSize.Type_114); cell.AddClickListener(OnClickUniversalItemHandler); string[] itemList = displaydropList[i].Split('-'); switch (int.Parse(itemList[0])) { case 1: int itemid = int.Parse(itemList[1]); if (int.Parse(itemList[2]) == 0) { //几率掉落; cell.InitByID(itemid); cell.SetText(null, GameUtils.getString("fight_stageselect_content3"), null); } else { //一定掉落; int count = System.Convert.ToInt32(itemList[3]); cell.InitByID(itemid, count); } break; case 2: if (int.Parse(itemList[2]) == 0) { cell.InitBySprite(UIResourceMgr.LoadSprite(common.defaultPath + itemList[1])); cell.SetText(null, GameUtils.getString("fight_stageselect_content3"), null); } else { int count = System.Convert.ToInt32(itemList[3]); cell.InitBySprite(UIResourceMgr.LoadSprite(common.defaultPath + itemList[1]), count); } break; default: break; } mItemsList.Add(cell); } } }
public static bool GetCurTotalStarsCount(int chapterId, EM_STAGE_DIFFICULTTYPE difficultLevel, out int cur, out int total) { ChapterinfoTemplate chapterT = GetChapterinfoTemplateById(chapterId); return(GetCurTotalStarsCount(chapterT, difficultLevel, out cur, out total)); }
/// <summary> /// 获取当前对应章节所获得的当前和所有星星个数; /// </summary> /// <param name="chapterT"></param> /// <param name="difficultLevel"></param> /// <returns></returns> public static bool GetCurTotalStarsCount(ChapterinfoTemplate chapterT, EM_STAGE_DIFFICULTTYPE difficultLevel, out int cur, out int total) { total = cur = -1; if (chapterT == null) { return(false); } int chapterId = chapterT.getId(); int tmpStarCount = 0; List <StageData> data = ObjectSelf.GetInstance().BattleStageData.GetStageDataListByChapterId(chapterId); if (data != null && data.Count > 0) { total = cur = 0; for (int i = 0; i < chapterT.getStageID().Length; i++) { StageTemplate stageT = GetStageTemplateById(chapterT.getStageID()[i]); if (difficultLevel == EM_STAGE_DIFFICULTTYPE.NORMAL) { if (stageT.m_stagetype == 4 || stageT.m_stagetype == 1) { total += 3; if (ObjectSelf.GetInstance().BattleStageData.IsCopyScenePass(chapterId, stageT.m_stageid, out tmpStarCount)) { cur += tmpStarCount; } } } if (difficultLevel == EM_STAGE_DIFFICULTTYPE.HARD) //if (difficultLevel == 2) { if (stageT.m_stagetype == 2) { total += 3; if (ObjectSelf.GetInstance().BattleStageData.IsCopyScenePass(chapterId, stageT.m_stageid, out tmpStarCount)) { cur += tmpStarCount; } } } if (difficultLevel == EM_STAGE_DIFFICULTTYPE.HARDEST) //if (difficultLevel == 3) { if (stageT.m_stagetype == 3) { total += 3; if (ObjectSelf.GetInstance().BattleStageData.IsCopyScenePass(chapterId, stageT.m_stageid, out tmpStarCount)) { cur += tmpStarCount; } } } } return(true); } return(false); }