public override void Show() { base.Show(); // 객체 캐싱 gameAccumulator = GameManager.Instance.GetCurrentSceneManager <InGameSceneManager>().GameAccumulator; spawnManager = GameManager.Instance.GetCurrentSceneManager <InGameSceneManager>().SpawnManager; player = GameManager.Instance.GetCurrentSceneManager <InGameSceneManager>().Player; // 스테이지 보너스 골드 계산 gameAccumulator.Gold += (ItemDropManager.GOLD_GET_MIN_VALUE * (spawnManager.Wave.stageCount - 1)) + player.KillCount; // 획득 골드 저장 //GameManager.Instance.Gold += gameAccumulator.Gold; GameManager gm = GameManager.Instance; // 획득 골드 저장 gm.DataBase.SaveData.gold += gameAccumulator.Gold; // 수류탄, tnt 초기화 SaveData saveData = gm.DataBase.SaveData; saveData.grenadeCount = 0; saveData.tntCount = 0; // 랭킹 데이터 저장 saveData.rankDatas.Add(new RankData( spawnManager.Wave.stageCount - 1, gameAccumulator.Gold, player.KillCount )); // 랭킹 데이터 내림차순 정렬 saveData.RankDataSort(); // 데이터가 10개를 초과한 경우 가장 마지막 데이터 제거 if (saveData.rankDatas.Count > 10) { saveData.rankDatas.RemoveAt(saveData.rankDatas.Count - 1); } // 구입 버프 초기화 saveData.buffDatas.Clear(); // 저장 gm.DataBase.Save(); // 적용 버프 초기화 gm.BuffManager.ResetBuff(); }
/// <summary> /// 아이템 획득 처리 /// </summary> /// <param name="acquireType">획득할 아이템 타입</param> /// <param name="gainer">아이템 획득자</param> public void TakeItem(AcquireType acquireType, Player gainer) { int value = 0; // 아이템 타입에 따라 획득량 증가 switch (acquireType) { case AcquireType.BULLET_ITEM: // 주무기가 없는 경우 리턴 if (gainer.MainGun == null) { return; } // 불렛 타입에 따른 총알 수 증가량 변경 switch (gainer.MainGun.BulletType) { case Gun.BulletStyle.RIFLE: value = RIFLE_GET_VALUE; break; case Gun.BulletStyle.SNIPE: value = SNIPE_GET_VALUE; break; case Gun.BulletStyle.SHOTGUN: value = SHOTGUN_GET_VALUE; break; case Gun.BulletStyle.STRAY: value = STRAY_GET_VALUE; break; } gainer.MainGun.ReloadableBulletCount += value; break; // 힐 아이템 case AcquireType.HEAL_ITEM: value = HEAL_PACK_VALUE; gainer.OnTakeHeal(value); break; // 수류탄 case AcquireType.GRENADE_ITEM: value = THROW_ITEM_GET_VALUE; gainer.GrenadeCount += value; break; // TnT case AcquireType.TNT_ITEM: value = TNT_ITEM_GET_VALUE; gainer.TntCount += value; break; // 골드 case AcquireType.GOLD_ITEM: int ran = Random.Range(GOLD_GET_MIN_VALUE, GOLD_GET_MAX_VALUE + 1); value = ran; GameAccumulator ga = GameManager.Instance.GetCurrentSceneManager <InGameSceneManager>().GameAccumulator; ga.Gold += value; break; } // 획득 UI 노출 GameManager.Instance.GetCurrentSceneManager <InGameSceneManager>().AcquireUIManager.ActivatedInfoUI(value, gainer, acquireType); }
/// <summary> /// 경험치바 업데이트 /// </summary> public void UpdateExpBar() { GameAccumulator ga = GameManager.Instance.GetCurrentSceneManager <InGameSceneManager>().GameAccumulator; expBar.fillAmount = (float)ga.Exp / (float)ga.MaxExp; }