chicken_dy/Assets/Scripts/Game/GameLogic.cs

119 lines
4.2 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;
TKGSDKManager.Instance.NotifyGameStart(PlayerData.Instance.CurrentLevel);
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.StartGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
}
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>();
bool tIsWin = true;
PanelResult tUIResult = UIManager.Instance.OpenUI<PanelResult>();
tUIResult.ReviewShowed = !TKGSDKManager.Instance.NotifyGameEnd(PlayerData.Instance.CurrentLevel, tIsWin);
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(AudioClipType.Win);
tIsWin = true;
}
else
{
AudioManager.Instance.PlaySound(AudioClipType.Lose);
tIsWin = false;
}
tUIResult.Init(PlayerData.Instance.CurrentLevelID, tEdData.EndingName, tEdData.IsGoodEnding, PlayerData.Instance.IsNextLevelPassed(), tHasNew, tHasComplete);
}
else
{
AudioManager.Instance.PlaySound(AudioClipType.Lose);
tUIResult.Init(PlayerData.Instance.CurrentLevelID, "", false, PlayerData.Instance.IsNextLevelPassed(), false, true);
tIsWin = false;
}
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.FinishGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
TKGSDKManager.Instance.LogEvent(tIsWin ? Const.AdsEvent.GameWin : Const.AdsEvent.GameLose, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
tUIResult.DelAgain = PlayAgain;
}
}
private void PlayAgain()
{
UIManager.Instance.CloseUI<PanelResult>();
mUIGame = UIManager.Instance.OpenUI<PanelGame>();
mUIGame.Init();
mFilm.PlayScene("0");
}
}