/// <summary> 테이블 데이터 셋팅 </summary> void SetDataTable(List <DataChapter> dataList, uint addStageId) { Dictionary <uint, NetData.ClearSingleStageData> clearStageDic = NetData.instance.GetUserInfo().ClearSingleStageDic; bool curStage = false; int chapCount = addStageId >= 10000 ? 6 : (int)SystemDefine.MaxChapter; int stageCount = addStageId >= 10000 ? 3 : (int)SystemDefine.MaxChapter; //일반 스테이지 for (int i = 0; i < /*SystemDefine.MaxChapter*/ chapCount; i++) { int chapterNumber = i + 1; int totalClearGrade = 0; List <DataStage> stageList = new List <DataStage>(); for (int j = 0; j < /*SystemDefine.MaxStage*/ stageCount; j++) { DataStage data = new DataStage(); byte[] clearGrade = new byte[3]; short state = 0;//1;//클리어한 지역. uint stageId = addStageId + (uint)((chapterNumber * 100) + (j + 1)); int clearCount = 0; NetData.ClearSingleStageData clearStageData = null; if (!clearStageDic.TryGetValue(stageId, out clearStageData)) { //추후에 살려놔야함 지금은 모든걸 오픈 if (!curStage) { curStage = true; state = 0; } else//활성화 되지 않은 지역. { state = -1; } } else { state = 1; clearGrade[0] = clearStageData.Clear_0; clearGrade[1] = clearStageData.Clear_1; clearGrade[2] = clearStageData.Clear_2; totalClearGrade += clearStageData.Clear_0 + clearStageData.Clear_1 + clearStageData.Clear_2; clearCount = clearStageData.DailyClearCount; } if (data.InitStageData(stageId, clearGrade, state, clearCount)) { stageList.Add(data); } else//어려움일 경우 이럴수 있다 아니라면 문제가있는것. { break; } } if (stageList.Count <= 0) { break; } NetData.StageStarRewardData rewardData = new NetData.StageStarRewardData(); DataChapter dataChap = new DataChapter(chapterNumber, stageList[0]._StageLowData.type == 2, rewardData, stageList);//totalClearGrade, dataList.Add(dataChap); } }
/// <summary> 난이도에 따라 변경될 챕터들 </summary> void SetChapter(int chapterNum, bool leveldifficulty) { bool isPrevEnable = true; bool isNextEnable = true; List <DataChapter> chapterList = null; Transform ChapterRoot; if (leveldifficulty) //true일경우 Hard Chapter로. { ChapterRoot = HardChapterParent; chapterList = HardChapterList; } else //false일경우 Normal Chapter로. { chapterList = ChapterList; ChapterRoot = ChapterParent; } //챕터 개수가 넘어가거나 모자를 경우의 예외처리. if (chapterList.Count <= chapterNum) { chapterNum = (int)chapterList.Count; isNextEnable = false; } else if (chapterNum <= 1) { chapterNum = 1; isPrevEnable = false; } ////4챕터까지만.. (판호용) //if (chapterNum >= 4) // isNextEnable = false; //현제 보려는 챕터를 찾는다. for (int i = 0; i < chapterList.Count; i++) { if (chapterList[i].number != chapterNum) { continue; } else if (chapterList[i].stageList[0].State == -1)//진행 불가능한 스테이지 { uiMgr.AddPopup(141, 761, 117); return; } CurChapter = chapterList[i]; break; } //처음이거나 마지막 챕터일 경우 버튼을 꺼놓는다 Btns[(uint)BUTTON_TYPE.PREV].gameObject.SetActive(isPrevEnable); Btns[(uint)BUTTON_TYPE.NEXT].gameObject.SetActive(isNextEnable); ChapterObject chap = null, changeChap = null; if (1 <= ChapterRoot.childCount)//이미 있는 챕터가 있다면 만들지 않는다. { string chapObj = leveldifficulty ? "HardChapter_0" : "Chapter_0"; string path = string.Format("UI/UIObject/{0}{1}", chapObj, chapterNum); //string path = string.Format("UI/UIObject/Chapter_0{0}", chapterNum); GameObject obj = ResourceMgr.Load(path) as GameObject; changeChap = obj.GetComponent <ChapterObject>(); chap = ChapterRoot.GetChild(0).GetComponent <ChapterObject>(); } else//처음 시작했을 경우 실행됨. { GameObject go = UIHelper.CreateUIChapter(chapterNum, ChapterRoot, leveldifficulty); chap = go.GetComponent <ChapterObject>(); } if (chap != null) //없으면 오류 { if (changeChap != null) //없을 수 있음 { chap.ChangeLocalData(changeChap); } chap.SetChapter(CurChapter.stageList, OnClickStage, chapterNum.ToString()); chap.gameObject.SetActive(true); } //별보상 셋팅 SetGradeInfo(); //진행중인 값 및 스테이지 셋팅 CurChapterNum = chapterNum; BtnNormal.gameObject.SetActive(leveldifficulty); BtnHard.gameObject.SetActive(!leveldifficulty); bool activeHardMode = true; if (!leveldifficulty && CurChapter.stageList[9].State != 1) { activeHardMode = false; } BtnHard.transform.FindChild("On").gameObject.SetActive(activeHardMode); BtnHard.transform.FindChild("Off").gameObject.SetActive(!activeHardMode); /* * if (BtnHard.transform.FindChild("On").gameObject.activeSelf) * { * //이펙트 껏다키면 안나오므로 다시생성해줌 * if(BtnHard.gameObject.activeSelf && BtnHard.transform.FindChild("On/eff").childCount>0) * { * DestroyImmediate(BtnHard.transform.FindChild("On/eff").GetChild(0).gameObject); * UIHelper.CreateEffectInGame(BtnHard.transform.FindChild("On/eff"), "Fx_UI_HardMode_01"); * } * } */ ChapterParent.gameObject.SetActive(!leveldifficulty); HardChapterParent.gameObject.SetActive(leveldifficulty); IsLevelHard = leveldifficulty; //챕터의 이름 셋팅 ChapterNameLabel.text = string.Format("{0}", CurChapter.name); HardChapterNameLabel.text = string.Format("{0}", CurChapter.name); NameRoot.transform.FindChild("normal").gameObject.SetActive(!leveldifficulty); NameRoot.transform.FindChild("Hard").gameObject.SetActive(leveldifficulty); /* * //현재 퀘스트에 던전입장이 걸려있는가? * Quest.QuestInfo quest = QuestManager.instance.GetCurrentQuest(); * if (quest != null && quest.type == 1) * { * * } */ if (leveldifficulty && SceneManager.instance.CurTutorial == TutorialType.CHAPTER_HARD) { TutorialSupport tuto = StagePopup.GetStartTuto(); TutorialSupport stageTuto = chap.StageObjs[0].GetComponent <TutorialSupport>(); stageTuto.NextTuto = tuto; stageTuto.OnTutoSupportStart(); tuto.TutoType = TutorialType.CHAPTER_HARD; tuto.SortId = 4; } }