using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameLogic : MonoBehaviour { [SerializeField] Transform mCtnStage; private Film mFilm; private int[] mSoundOrder; private string mEndingStr; private int mCurIndex; private PanelGame mUIGame; private void Start() { mUIGame = UIManager.Instance.OpenUI(); mUIGame.Init(true); mFilm = Instantiate(ResourceManager.Instance.LoadRes(Const.Path.GetFilm(PlayerData.Instance.CurrentLevelID))); mFilm.transform.SetParent(mCtnStage); mFilm.transform.localPosition = Vector3.zero; mFilm.transform.localScale = Vector3.one; mUIGame.DelPlay = PlayFilm; } private void PlayFilm(int[] pSoundOrder) { mSoundOrder = pSoundOrder; mEndingStr = ""; for (int i = 0; i < mSoundOrder.Length; i++) { mEndingStr += (mSoundOrder[i] + 1).ToString(); if (i < mSoundOrder.Length - 1) { mEndingStr += "_"; } } mFilm.PlayScene(mEndingStr); mCurIndex = -1; PlaySound(); } private void PlaySound() { mCurIndex++; if (mCurIndex < mSoundOrder.Length) { mUIGame.RiseSlot(mCurIndex); AudioManager.Instance.PlaySound(ResourceManager.Instance.LoadRes(Const.Path.GetSound(PlayerData.Instance.CurrentLevelID, mSoundOrder[mCurIndex]))); TimerManager.Instance.Schedule(PlaySound, 1.5f); } else { //end LevelData tLvData = GameConfig.Instance.GetLevelData(PlayerData.Instance.CurrentLevelID); int tEndingID = tLvData.GetMatchingEndingID(mEndingStr.Replace("_","")); UIManager.Instance.CloseUI(); PanelResult tUIResult = UIManager.Instance.OpenUI(); bool tHasComplete = PlayerData.Instance.EndingCountOfLevel(PlayerData.Instance.CurrentLevelID) == tLvData.Endings.Count; if (tEndingID >= 0) { bool tHasNew = PlayerData.Instance.AddEnding(PlayerData.Instance.CurrentLevelID, tEndingID); EndingData tEdData = tLvData.Endings[tEndingID]; if (tEdData.IsGoodEnding) { PlayerData.Instance.UnlockNewLevel(); AudioManager.Instance.PlaySound(AudioType.Win); } else { AudioManager.Instance.PlaySound(AudioType.Lose); } tUIResult.Init(PlayerData.Instance.CurrentLevelID, tEdData.EndingName, tEdData.IsGoodEnding, PlayerData.Instance.IsNextLevelPassed(), tHasNew, tHasComplete); } else { AudioManager.Instance.PlaySound(AudioType.Lose); tUIResult.Init(PlayerData.Instance.CurrentLevelID, "", false, PlayerData.Instance.IsNextLevelPassed(), false, true); } tUIResult.DelAgain = PlayAgain; } } private void PlayAgain() { UIManager.Instance.CloseUI(); mUIGame = UIManager.Instance.OpenUI(); mUIGame.Init(); mFilm.PlayScene("0"); } }