private void Update() { if (!ELSingleton <PopUpManager> .Instance.IsActiveAndEnabled() && UnityEngine.Input.GetKeyDown(KeyCode.Escape)) { BackButton(); } if (delay <= 0f) { switch (state) { case State.LoadNormal: case State.ReloadNormal: LoadLevel(LevelType.Normal); if (!isMusicPlaying) { ELSingleton <MusicManager> .Instance.PlayGameNormal(); isMusicPlaying = true; } background.Reset(LevelType.Normal, pack.index); if (state == State.LoadNormal) { if (IsHowToPlayPopUp) { IsHowToPlayPopUp = false; ELSingleton <HowToPlayPopUp> .Instance.ShowPopUp(0.5f); ELSingleton <ApplicationSettings> .Instance.Save(); SetState(State.Idle); } else { SetState(State.ShowLoadNormal); } } else { SetState(State.ShowReloadNormal); } ELSingleton <AnalyticsManager> .Instance.LevelStart((level.number + 1).ToString()); ELSingleton <NotificationsManager> .Instance.RegisterNotifications(pack.index, level.index); break; case State.ShowLoadNormal: board.Enable(2.5f); board.ShowFill(2f); board.ShowWords(2.1f); board.ShowIcon(2.2f); board.wordText.Show(2.3f); if (!isLevelCompleted && background.HasLadyBug()) { ladybug.Show(); } else { ladybug.Reset(); } levelText.Show(2.5f); categoryText.Show(0.2f); backButton.Enable(2.5f); backButton.Show(2.5f); shopButton.Enable(2.5f); shopButton.Show(2.5f); if (!level.isCompleted) { extraWordsButton.Enable(2.5f); extraWordsButton.Show(2.5f); perfectMeter.Show(2.5f); } hintBar.Set(level); if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.GoodStart, level.number)) { goodStartButton.Enable(2.5f); goodStartButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.StartAndFinish, level.number)) { startAndFinishButton.Enable(2.5f); startAndFinishButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.Expose, level.number)) { exposeButton.Enable(2.5f); exposeButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.Tip, level.number)) { tipButton.Enable(2.5f); tipButton.Show(2.5f); } SetState(State.Play, 2.5f); break; case State.ShowReloadNormal: board.Enable(2.5f); board.ShowFill(2f); board.ShowWords(2.1f); board.ShowIcon(2.2f); board.wordText.Show(2.3f); levelText.Show(2.5f); categoryText.Show(0.2f); backButton.Enable(); shopButton.Enable(2.5f); if (!level.isCompleted) { extraWordsButton.Enable(2.5f); perfectMeter.Show(2.5f); } hintBar.Set(level, 2.2f); if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.GoodStart, level.number)) { goodStartButton.Enable(2.5f); goodStartButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.StartAndFinish, level.number)) { startAndFinishButton.Enable(2.5f); startAndFinishButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.Expose, level.number)) { exposeButton.Enable(2.5f); exposeButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.Tip, level.number)) { tipButton.Enable(2.5f); tipButton.Show(2.5f); } SetState(State.Play, 2.5f); break; case State.LoadBonusRound: LoadLevel(LevelType.BonusRound); if (!isMusicPlaying) { ELSingleton <MusicManager> .Instance.PlayGameSpecial(); isMusicPlaying = true; } background.Reset(LevelType.BonusRound, -1); ladybug.Reset(); levelText.Hide(); categoryText.Hide(); extraWordsButton.Disable(); extraWordsButton.Hide(); extraWordsButton.FullParticleStop(); perfectMeter.Hide(); goodStartButton.Disable(); goodStartButton.Hide(); startAndFinishButton.Disable(); startAndFinishButton.Hide(); exposeButton.Disable(); exposeButton.Hide(); tipButton.Disable(); tipButton.Hide(); tipText.Hide(); specialWelcome.Show(LevelType.BonusRound, 0.5f); SetState(State.Idle); ELSingleton <AnalyticsManager> .Instance.LevelStart("bonus_round"); break; case State.ShowBonusRound: board.Enable(1f); board.ShowFill(0.5f); board.ShowWords(0.6f); board.ShowIcon(0.7f); board.wordText.Show(0.8f); levelText.Show(1f); backButton.Enable(1f); backButton.Show(1f); shopButton.Enable(1f); shopButton.Show(1f); timeMeter.Show(1f); SetState(State.Play, 1f); break; case State.LoadDailyPuzzle: LoadLevel(LevelType.DailyPuzzle); if (!isMusicPlaying) { ELSingleton <MusicManager> .Instance.PlayGameSpecial(); isMusicPlaying = true; } background.Reset(LevelType.DailyPuzzle, -2); ladybug.Reset(); specialWelcome.Show(LevelType.DailyPuzzle, 0.5f); SetState(State.Idle); ELSingleton <AnalyticsManager> .Instance.LevelStart("daily_puzzle"); break; case State.ShowDailyPuzzle: board.Enable(2.5f); board.ShowFill(2f); board.ShowWords(2.1f); board.ShowIcon(2.2f); board.wordText.Show(2.3f); levelText.Show(2.5f); categoryText.Show(0.2f); backButton.Enable(2.5f); backButton.Show(2.5f); shopButton.Enable(2.5f); shopButton.Show(2.5f); if (!level.isCompleted) { extraWordsButton.Enable(2.5f); extraWordsButton.Show(2.5f); perfectMeter.Show(2.5f); } hintBar.Set(level); if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.GoodStart, level.number)) { goodStartButton.Enable(2.5f); goodStartButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.StartAndFinish, level.number)) { startAndFinishButton.Enable(2.5f); startAndFinishButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.Expose, level.number)) { exposeButton.Enable(2.5f); exposeButton.Show(2.5f); } if (ELSingleton <HintManager> .Instance.IsHintAvailable(LevelHint.Tip, level.number)) { tipButton.Enable(2.5f); tipButton.Show(2.5f); } SetState(State.Play, 2.5f); break; case State.Play: if (categoryText.IsShowEnded && Time.timeScale > 1f) { Time.timeScale = 1f; } if (!ELSingleton <PopUpManager> .Instance.IsActiveAndEnabled()) { Tutorial tutorial = ELSingleton <TutorialManager> .Instance.CheckTrigger(level.type, level.number, level.stats.isPerfect&& level.stats.valid > 0, board.wordText.IsDictionary, board.Result == Board.WordCheckResult.ExtraWord); if (tutorial != null) { ELSingleton <TutorialWindow> .Instance.Show(tutorial, (tutorial.type == TutorialType.GoodStart)?(hintBar.transform.localPosition + goodStartButton.PositionTarget) : ((tutorial.type == TutorialType.StartAndFinish) ? (hintBar.transform.localPosition + startAndFinishButton.PositionTarget) : ((tutorial.type == TutorialType.Expose) ? (hintBar.transform.localPosition + exposeButton.PositionTarget) : ((tutorial.type == TutorialType.Tip) ? (hintBar.transform.localPosition + tipButton.PositionTarget) : ((tutorial.type == TutorialType.Perfect) ? perfectMeter.transform.localPosition : ((tutorial.type == TutorialType.Dictionary) ? (board.transform.localPosition + board.wordText.transform.localPosition * board.transform.localScale.x) : ((tutorial.type == TutorialType.Shop) ? shopButton.transform.localPosition : ((tutorial.type == TutorialType.ExtraWord) ? extraWordsButton.transform.localPosition : Vector3.zero)))))))); } } if (level.type == LevelType.Normal && board.IsComplete()) { board.Disable(); backButton.Disable(); shopButton.Disable(); extraWordsButton.Disable(); goodStartButton.Disable(); startAndFinishButton.Disable(); exposeButton.Disable(); tipButton.Disable(); tipText.Hide(); if (!isLevelCompleted) { if (isLastLevelInPack) { ELSingleton <CoinsManager> .Instance.AddCoins(ELSingleton <XmlSettings> .Instance.coinsConfig.pack); } isPerfect = level.stats.isPerfect; if (level.stats.isPerfect) { ELSingleton <CoinsManager> .Instance.AddCoins(ELSingleton <XmlSettings> .Instance.coinsConfig.perfect); } } LevelStats levelStats = new LevelStats(level.stats); ELSingleton <LevelSuccessPopUp> .Instance.ShowPopUp(level.type, level.stats, isLastLevelInPack, isLevelCompleted, levelStats, board.HasCoins()? 1.5f : 0.5f); ELSingleton <LevelsSettings> .Instance.levelSet.CompleteLevel(aIsCompleteLevel : true); ELSingleton <AnalyticsManager> .Instance.LevelComplete((level.number + 1).ToString(), new Dictionary <string, object> { { "extra_words", levelStats.pointsExtra } }); SetState(State.Idle); } else if (level.type == LevelType.BonusRound && timeMeter.TimeCurrent <= 0f) { board.Disable(); board.HideWords(); board.wordText.Hide(0.3f); board.HideFill(0.5f); board.HideIcon(0.5f); shopButton.Disable(); extraWordsButton.Disable(); goodStartButton.Disable(); startAndFinishButton.Disable(); exposeButton.Disable(); tipButton.Disable(); tipText.Hide(); LevelStats levelStats2 = new LevelStats(level.stats); ELSingleton <LevelSuccessPopUp> .Instance.ShowPopUp(level.type, level.stats, aIsLastLevelInPack : false, aIsLevelCompleted : false, levelStats2, 0.5f); ELSingleton <AnalyticsManager> .Instance.LevelComplete("bonus_round", new Dictionary <string, object> { { "extra_words", levelStats2.pointsExtra } }); SetState(State.Idle); } else if (level.type == LevelType.DailyPuzzle && board.IsComplete()) { board.Disable(); board.HideWords(); board.wordText.Hide(0.3f); board.HideFill(0.5f); board.HideIcon(0.5f); shopButton.Disable(); extraWordsButton.Disable(); goodStartButton.Disable(); startAndFinishButton.Disable(); exposeButton.Disable(); tipButton.Disable(); tipText.Hide(); LevelStats levelStats3 = new LevelStats(level.stats); ELSingleton <LevelSuccessPopUp> .Instance.ShowPopUp(level.type, level.stats, aIsLastLevelInPack : false, aIsLevelCompleted : false, levelStats3, 0.5f); ELSingleton <AnalyticsManager> .Instance.LevelComplete("daily_puzzle", new Dictionary <string, object> { { "extra_words", levelStats3.pointsExtra } }); SetState(State.Idle); } else if (board.IsWordValid) { if (level.type == LevelType.Normal || level.type == LevelType.DailyPuzzle) { switch (board.CheckWordNormal(level.isCompleted)) { case Board.WordCheckResult.Valid: StatsAddValid(); if (!isLevelCompleted) { StatsAddPointsNormal(1); ELSingleton <PointsManager> .Instance.AddPoints(1); } ELSingleton <AudioManager> .Instance.PlaySfx(soundWordValid); break; case Board.WordCheckResult.Invalid: if (board.wordText.Text.Length >= 3) { StatsSetPerfect(aIsPerfect: false); } ELSingleton <AudioManager> .Instance.PlaySfx(soundWordInvalid); break; case Board.WordCheckResult.Repeat: ELSingleton <AudioManager> .Instance.PlaySfx(soundWordRepeat); break; case Board.WordCheckResult.ExtraWord: if (!ELSingleton <ExtraWordsManager> .Instance.IsFull) { coinPod.ReleaseExtraWord(board.wordText.transform.position, extraWordsButton.coinTarget.transform.position, 2.5f); ELSingleton <ExtraWordsManager> .Instance.AddWords(1); } if (!isLevelCompleted) { StatsAddPointsExtra(1); ELSingleton <PointsManager> .Instance.AddPoints(1); } ELSingleton <AudioManager> .Instance.PlaySfx(soundWordExtra); break; } } else if (level.type == LevelType.BonusRound) { switch (board.CheckWordSpecial()) { case Board.WordCheckResult.Valid: StatsAddValid(); StatsAddPointsNormal(1); ELSingleton <PointsManager> .Instance.AddPoints(1); if (level.stats.valid % 4 == 0 && specialLevelRound > 0) { specialLevelRound--; board.SetSpecialLevelRound(specialLevelRound, aIsScaleForce: false); ELSingleton <AudioManager> .Instance.PlaySfx(soundSpecialLevelRound); } ELSingleton <AudioManager> .Instance.PlaySfx(soundWordValid); break; case Board.WordCheckResult.Invalid: ELSingleton <AudioManager> .Instance.PlaySfx(soundWordInvalid); break; } } board.IsWordValid = false; } if (level.type == LevelType.Normal || level.type == LevelType.DailyPuzzle) { perfectMeter.Setup(); } if (level.type == LevelType.BonusRound) { timeMeter.Setup(); } break; case State.ResetNormal: board.Reset(); perfectMeter.Reset(); if (isLastLevelInPack && !isLevelCompleted) { isMusicPlaying = false; SetState(State.LoadBonusRound); } else { SetState(State.ReloadNormal); } break; case State.HideBonusRound: board.wordText.Hide(0.3f); board.HideFill(0.5f); board.HideIcon(0.5f); categoryText.Hide(0.5f); backButton.Enable(); timeMeter.Hide(0.5f); SetState(State.ResetBonusRound, 1f); break; case State.ResetBonusRound: board.Reset(); specialWelcome.Reset(); SetState(State.LoadBonusRound); break; case State.HideDailyPuzzle: board.wordText.Hide(0.3f); board.HideFill(0.5f); board.HideIcon(0.5f); categoryText.Hide(0.5f); backButton.Enable(); extraWordsButton.Hide(0.5f); goodStartButton.Hide(0.5f); startAndFinishButton.Hide(0.5f); exposeButton.Hide(0.5f); tipButton.Hide(0.5f); tipText.Hide(); perfectMeter.Hide(0.5f); SetState(State.ResetDailyPuzzle, 1f); break; case State.ResetDailyPuzzle: board.Reset(); perfectMeter.Reset(); specialWelcome.Reset(); SetState(State.LoadDailyPuzzle); break; } } delay -= Time.deltaTime; }