182 lines
6.2 KiB
C#
182 lines
6.2 KiB
C#
|
|
using System.Collections;
|
||
|
|
using UnityEngine;
|
||
|
|
using UnityEngine.Events;
|
||
|
|
|
||
|
|
public class GameManager : MonoBehaviour
|
||
|
|
{
|
||
|
|
#region Statics
|
||
|
|
private static GameManager sInstance = null;
|
||
|
|
public static GameManager Instance
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
if (IsApplicationQuitting)
|
||
|
|
return null;
|
||
|
|
else if (object.ReferenceEquals(sInstance, null))
|
||
|
|
{
|
||
|
|
sInstance = new GameObject("_GameManager").AddComponent<GameManager>();
|
||
|
|
DontDestroyOnLoad(sInstance.gameObject);
|
||
|
|
}
|
||
|
|
|
||
|
|
return sInstance;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public static bool IsApplicationQuitting = false;
|
||
|
|
#endregion
|
||
|
|
|
||
|
|
#region Managers
|
||
|
|
private ResourceManager _resource = null;
|
||
|
|
private DBManager _database = null;
|
||
|
|
private UIManager _ui = null;
|
||
|
|
private SceneTransitionManager _scene = null;
|
||
|
|
private SoundManager _sound = null;
|
||
|
|
private EventManager _event = null;
|
||
|
|
private TimeManager _time = null;
|
||
|
|
private BGDataBaseManager _bgdatabase = null;
|
||
|
|
private NetworkManager _network = null;
|
||
|
|
private AddressableManager _addressable = null;
|
||
|
|
private AccountManager _account = null;
|
||
|
|
private TimerManager _timer = null;
|
||
|
|
private ADSManager _ads = null;
|
||
|
|
private IAPManager _iap = null;
|
||
|
|
//private FlamingoManager _flamingo = null;
|
||
|
|
//============================================================
|
||
|
|
|
||
|
|
public static ResourceManager Resource { get => Instance._resource; }
|
||
|
|
public static DBManager DB { get => Instance._database; }
|
||
|
|
public static UIManager UI { get => Instance._ui; }
|
||
|
|
public static SceneTransitionManager Scene { get => Instance._scene; }
|
||
|
|
public static SoundManager Sound { get => Instance._sound; }
|
||
|
|
public static EventManager Event { get => Instance._event; }
|
||
|
|
public static TimeManager Time { get => Instance._time; }
|
||
|
|
public static BGDataBaseManager BGDatabase { get => Instance._bgdatabase; }
|
||
|
|
public static NetworkManager Network { get => Instance._network; }
|
||
|
|
public static AddressableManager Addressable { get => Instance._addressable; }
|
||
|
|
public static AccountManager Account { get => Instance._account; }
|
||
|
|
public static TimerManager Timer { get => Instance._timer; }
|
||
|
|
public static ADSManager ADS { get => Instance._ads; }
|
||
|
|
public static IAPManager IAP { get => Instance._iap; }
|
||
|
|
//public static FlamingoManager Flamingo { get => Instance._flamingo; }
|
||
|
|
#endregion
|
||
|
|
|
||
|
|
private ParticleSystem _touchParticle;
|
||
|
|
|
||
|
|
public static UnityAction OnCompleteCreatemanager;
|
||
|
|
|
||
|
|
private void Awake()
|
||
|
|
{
|
||
|
|
this.CreateManagers();
|
||
|
|
Application.targetFrameRate = 60;
|
||
|
|
Input.multiTouchEnabled = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void Update()
|
||
|
|
{
|
||
|
|
#if UNITY_EDITOR
|
||
|
|
if (Input.GetMouseButtonDown(0))
|
||
|
|
{
|
||
|
|
if (_touchParticle == null)
|
||
|
|
{
|
||
|
|
_touchParticle = Instantiate(Resources.Load<GameObject>("Prefabs/TouchParticle"), this.transform).GetComponent<ParticleSystem>();
|
||
|
|
}
|
||
|
|
|
||
|
|
Vector3 pos;
|
||
|
|
pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
|
||
|
|
|
||
|
|
pos.z = 0f;
|
||
|
|
_touchParticle.transform.position = pos;
|
||
|
|
_touchParticle.Play();
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#if !UNITY_EDITOR && UNITY_ANDROID
|
||
|
|
if (Input.touchCount > 0)
|
||
|
|
{
|
||
|
|
var touch = Input.GetTouch(0);
|
||
|
|
if (touch.phase == TouchPhase.Began)
|
||
|
|
{
|
||
|
|
if (_touchParticle == null)
|
||
|
|
{
|
||
|
|
_touchParticle = Instantiate(Resources.Load<GameObject>("Prefabs/TouchParticle"), this.transform).GetComponent<ParticleSystem>();
|
||
|
|
}
|
||
|
|
|
||
|
|
Vector3 pos;
|
||
|
|
pos = Camera.main.ScreenToWorldPoint(touch.position);
|
||
|
|
|
||
|
|
pos.z = 0f;
|
||
|
|
_touchParticle.transform.position = pos;
|
||
|
|
_touchParticle.Play();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
private void OnDestroy()
|
||
|
|
{
|
||
|
|
IsApplicationQuitting = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void CreateManagers()
|
||
|
|
{
|
||
|
|
StartCoroutine(coroCreatemanagers());
|
||
|
|
}
|
||
|
|
|
||
|
|
private IEnumerator coroCreatemanagers()
|
||
|
|
{
|
||
|
|
_network = new GameObject("_Network").AddComponent<NetworkManager>();
|
||
|
|
_network.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_bgdatabase = new GameObject("_BGDatabase").AddComponent<BGDataBaseManager>();
|
||
|
|
_bgdatabase.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
yield return _bgdatabase.InitDataBase();
|
||
|
|
|
||
|
|
_addressable = new GameObject("_Addressable").AddComponent<AddressableManager>();
|
||
|
|
_addressable.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_account = new GameObject("_Account").AddComponent<AccountManager>();
|
||
|
|
_account.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_ads = new GameObject("_ADS").AddComponent<ADSManager>();
|
||
|
|
_ads.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_database = new GameObject("_DBManager").AddComponent<DBManager>();
|
||
|
|
_database.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
//_flamingo = new GameObject("_Flamingo").AddComponent<FlamingoManager>();
|
||
|
|
//_flamingo.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
while (_database.CompleteDataLoad == false)
|
||
|
|
yield return null;
|
||
|
|
|
||
|
|
_iap = new GameObject("_IAP").AddComponent<IAPManager>();
|
||
|
|
_iap.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_resource = new GameObject("_ResourceManager").AddComponent<ResourceManager>();
|
||
|
|
_resource.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_ui = new GameObject("_UIManager").AddComponent<UIManager>();
|
||
|
|
_ui.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_scene = new GameObject("_SceneManager").AddComponent<SceneTransitionManager>();
|
||
|
|
_scene.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_sound = new GameObject("_SoundManager").AddComponent<SoundManager>();
|
||
|
|
_sound.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_event = new GameObject("_EvenetManager").AddComponent<EventManager>();
|
||
|
|
_event.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_time = new GameObject("_Time").AddComponent<TimeManager>();
|
||
|
|
_time.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
_timer = new GameObject("_Timer").AddComponent<TimerManager>();
|
||
|
|
_timer.transform.SetParent(this.transform);
|
||
|
|
|
||
|
|
yield return new WaitUntil(() => _database.CompleteDataLoad);
|
||
|
|
|
||
|
|
OnCompleteCreatemanager?.Invoke();
|
||
|
|
}
|
||
|
|
}
|