public override void Close(bool ignoreCloseAnimation = false) { if (_levelUpVFX) { _levelUpVFX = null; } base.Close(ignoreCloseAnimation); }
public void Show(int beforeLevel, int afterLevel, bool ignoreShowAnimation = false) { var gameInstance = Game.Game.instance; _model = gameInstance.Stage.selectedPlayer.Model; var characterSheet = gameInstance.TableSheets.CharacterSheet; var characterId = _model.CharacterId; var costumeStatSheet = gameInstance.TableSheets.CostumeStatSheet; if (!characterSheet.TryGetValue(characterId, out var row)) { throw new System.Exception($"CharacterId{characterId} is invaild."); } _model.Level = beforeLevel; var previousCP = CPHelper.GetCP(_model, costumeStatSheet); cpTextTweener.startValue = previousCP; _model.Level = afterLevel; var currentCP = CPHelper.GetCP(_model, costumeStatSheet); cpTextTweener.endValue = currentCP; levelText.text = afterLevel.ToString(); increasedCpText.text = (currentCP - previousCP).ToString(); var beforeStat = row.ToStats(beforeLevel); var afterStat = row.ToStats(afterLevel); using (var enumerator = ((IEnumerable <StatType>)Enum.GetValues(typeof(StatType))).GetEnumerator()) { // StatType.None 스킵 enumerator.MoveNext(); foreach (var view in statViews) { if (!enumerator.MoveNext()) { view.gameObject.SetActive(false); continue; } var type = enumerator.Current; view.Show(type, beforeStat.GetStat(type, true), afterStat.GetStat(type, true)); view.gameObject.SetActive(true); } } base.Show(ignoreShowAnimation); var position = ActionCamera.instance.transform.position; _levelUpVFX = VFXController.instance.CreateAndChaseCam <LevelUpVFX>(position, new Vector3(0f, 0.7f)); _levelUpVFX.Play(); _levelUpVFX.OnFinished = () => Close(); var stage = Game.Game.instance.Stage; stage.ReleaseWhiteList.Add(_levelUpVFX.gameObject); base.Show(ignoreShowAnimation); }