// 스테이지 클리어 체크 void updateStageClear() { if (m_nMaxStage < m_nNowStage) { return; } GameObject kGameObject; Character kMonster; bool bAllMonsterDie = true; foreach (KeyValuePair<int, GameObject> kvp in m_tmCharacter) { kGameObject = kvp.Value; kMonster = (Character)kGameObject.GetComponent("Character"); if (!kMonster.IsDie()) bAllMonsterDie = false; // 최초 죽음 처리 if (kMonster.IsDie() && !kMonster.IsRemoveState()) { // 보상 처리 m_kPlayer.AddExp(kMonster.GetMonsterExp()); m_kPlayer.AddMoney(kMonster.GetMonsterPay()); writeCharData(CCharData.EType.eExp, m_kPlayer.GetExp()); writeCharData(CCharData.EType.eMoney, m_kPlayer.GetMoney()); kMonster.RemoveState(); m_kPlayer.ClearMeetEnemy(); m_kPlayer.ClearTarCharIndex(); } } // 보스전일때 예외 처리 if (bAllMonsterDie && EStageDetail.Boss == m_eNowStateDetail) { StStateInfo kStageInfo; if (kStageDB.m_tmStage.TryGetValue(m_nNowStage, out kStageInfo)) { if (0 == kStageInfo.m_anCharCode[(int)m_eNowStateDetail] && ((Time.fixedTime - m_fBossStageStartTime) < kStageInfo.m_fTermTime) ) { bAllMonsterDie = false; } } } if (bAllMonsterDie) { // 스테이지 클리어 if (EStageDetail.Boss == m_eNowStateDetail) { m_nNowStage++; m_eNowStateDetail = EStageDetail.First; } else m_eNowStateDetail++; if (m_nNowStage <= m_nMaxStage) setStage(m_nNowStage); else { // 게임 클리어 } } }
void initilize() { m_eNowStateDetail = EStageDetail.First; m_nNowStage = 1; nNowCharIndex = nPlayerCharIndex + 1; setStage(m_nNowStage); m_kPlayer.Initilize(); m_kPlayer.SetPosition(m_vPlayerStartPos); kReStartButton.SetActive(false); }