114 lines
3.9 KiB
C#
114 lines
3.9 KiB
C#
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<PanelGame>();
|
|
mUIGame.Init(true);
|
|
|
|
mFilm = Instantiate(ResourceManager.Instance.LoadRes<Film>(Const.Path.GetFilm(PlayerData.Instance.CurrentLevelID)));
|
|
mFilm.transform.SetParent(mCtnStage);
|
|
mFilm.transform.localPosition = Vector3.zero;
|
|
mFilm.transform.localScale = Vector3.one;
|
|
|
|
mUIGame.DelPlay = PlayFilm;
|
|
|
|
ToukaStageCommonEvent.Instance.StageStartEvent(PlayerData.Instance.CurrentLevel);
|
|
}
|
|
|
|
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<AudioClip>(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<PanelGame>();
|
|
|
|
ToukaStageCommonEvent.Instance.StageTimeEvent(PlayerData.Instance.CurrentLevel);
|
|
|
|
PanelResult tUIResult = UIManager.Instance.OpenUI<PanelResult>();
|
|
bool tHasComplete = PlayerData.Instance.EndingCountOfLevel(PlayerData.Instance.CurrentLevelID) == tLvData.Endings.Count;
|
|
if (tEndingID >= 0)
|
|
{
|
|
bool tHasNew = PlayerData.Instance.AddEnding(PlayerData.Instance.CurrentLevelID, tEndingID);
|
|
tHasComplete = PlayerData.Instance.EndingCountOfLevel(PlayerData.Instance.CurrentLevelID) == tLvData.Endings.Count;
|
|
|
|
EndingData tEdData = tLvData.Endings[tEndingID];
|
|
if (tEdData.IsGoodEnding)
|
|
{
|
|
PlayerData.Instance.UnlockNewLevel();
|
|
AudioManager.Instance.PlaySound(AudioType.Win);
|
|
|
|
ToukaStageCommonEvent.Instance.StageSuccessEvent(PlayerData.Instance.CurrentLevel);
|
|
}
|
|
else
|
|
{
|
|
AudioManager.Instance.PlaySound(AudioType.Lose);
|
|
|
|
ToukaStageCommonEvent.Instance.StageFailureEvent(PlayerData.Instance.CurrentLevel);
|
|
}
|
|
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);
|
|
|
|
ToukaStageCommonEvent.Instance.StageFailureEvent(PlayerData.Instance.CurrentLevel);
|
|
}
|
|
|
|
tUIResult.DelAgain = PlayAgain;
|
|
}
|
|
}
|
|
|
|
private void PlayAgain()
|
|
{
|
|
UIManager.Instance.CloseUI<PanelResult>();
|
|
|
|
mUIGame = UIManager.Instance.OpenUI<PanelGame>();
|
|
mUIGame.Init();
|
|
|
|
mFilm.PlayScene("0");
|
|
}
|
|
} |