using UnityEngine;
using UnityEngine.UI;
using System;
namespace WildAttack
{
///
/// 游戏入口
///
public class GameEnter : MonoBehaviour
{
UserGameAnalyse1 userGameAnalyse1;
///
/// 协程数
///
private int coroutineNum = 7;
private bool bCanUpdate = false;
//初始化游戏时候类型
[SerializeField]
private GameTypeEnum initGameType = GameTypeEnum.SinglePlayer;
void Awake()
{
if (initGameType == GameTypeEnum.LocalTwoPlayer) {
//开始游戏设置成双点模式
InfraredDemo._ins?.SetSinglePoint(false, ScreenPointTypeEnum.FullScreen);
}
SingletonManager.Clear();
userGameAnalyse1 = UserGameAnalyse1.CreateWhenGameStartAndReturn(14);
// 数据类init
ModuleInit();
}
void Start()
{
}
void OnDestroy()
{
SingletonManager.Clear();
}
///
/// 对象池init
///
private void ObjectPoolInit()
{
EnemyPool.GetInstance().Init();
BalloonPool.GetInstance().Init();
}
///
/// 数据类init
///
void ModuleInit()
{
StartCoroutine(GameModule.GetInstance().LoadCSV("global.csv", () => { CoroutineSubNum(); }));
StartCoroutine(MonsterModule.GetInstance().LoadCSV("monster.csv", () => { CoroutineSubNum(); }));
StartCoroutine(WeaponModule.GetInstance().LoadCSV("weapon.csv", () => { CoroutineSubNum(); }));
StartCoroutine(StagePropertyModule.GetInstance().LoadCSV("stageProperty.csv", () => { CoroutineSubNum(); }));
StartCoroutine(WayPointModule.GetInstance().LoadCSV("wayPoint.csv", () => { CoroutineSubNum(); }));
StartCoroutine(ProcessModule.GetInstance().LoadCSV("process.csv", () => { CoroutineSubNum(); }));
StartCoroutine(StringModule.GetInstance().LoadCSV("strings.csv", () => { CoroutineSubNum(); }));
}
///
/// 协程全部运行完 执行其他类的update
///
void Update()
{
if (coroutineNum == 0 && bCanUpdate)
{
GameMananger.GetInstance().Update();
ProcessManager.GetInstance().Update();
}
}
///
/// 判断协程进度
///
public void CoroutineSubNum()
{
coroutineNum--;
if (coroutineNum == 0)
{
ObjectPoolInit();
//提前初始化GameType,其他不处理
GameMananger.GetInstance().InitGameType(initGameType);
//初始化绑定位置函数
FindAnyObjectByType().onInit();
UIManager.GetInstance().Init(userGameAnalyse1,() =>
{
FlotagePool.GetInstance().Init();
EnemyManager.GetInstance().Init();
ProcessManager.GetInstance().Init();
});
GameMananger.GetInstance().Init(userGameAnalyse1);
bCanUpdate = true;
}
}
}
}