using System;
using Thousandto.Code.Logic;
using Thousandto.Core.Asset;
using Thousandto.Core.Base;
using UnityEngine;
using UnityEngine.Gonbest.MagicCube;
namespace Thousandto.Code.Center
{
///
/// 游戏中心脚本
///
public class GameCenterScript : MonoBehaviour
{
private static bool _isCreated = false;
private static float _pauseTime = 0;
#if UNITY_EDITOR
public bool ReloadAllLua = false;
#endif
private void Awake()
{
Debug.Log("GameCenterScript Awake");
Application.quitting -= DoApplicationQuit;
Application.quitting += DoApplicationQuit;
}
private void Start()
{
Debug.Log("GameCenterScript Start");
ScreenSystem.SetDesignContentScale();
}
//laucher端调用,设置游戏的启动参数
public void GameStart(string lang, bool isStream, int buildType)
{
Debug.Log("GameStart lang:" + (lang == null ? "null" : lang));
if (!string.IsNullOrEmpty(lang))
{
LanguageSystem.SetPackageLang(lang);
}
if (PathUtils.IsStreaming())
{
AnimationClipManager.UseAsynLoadAnimClip = true;
AnimationClipManager.SyncLoadAnimHandler = null;
}
#if UNITY_EDITOR && !FUNCELL_LAUNCHER
else
{
AnimationClipManager.SyncLoadAnimHandler = x => {
var ani = UnityEditor.AssetDatabase.LoadAssetAtPath(x);
//Debug.LogError("AnimationClipManager.SyncLoadAnimHandler::" + x + "::" + (ani == null ? "NULL" : ani.ToString()));
return ani;
};
}
#endif
if (!_isCreated)
{
name = "[MainEntry]";
DontDestroyOnLoad(gameObject);
_isCreated = true;
GameCenter.CreateSystem();
GameCenter.Initialize();
}
else
{
Destroy(gameObject);
}
/*
if (gameObject.GetComponent() == null)
{
gameObject.AddComponent();
} */
}
//Launcher端调用,直接进入登录状态
public void ChangeToLogin()
{
if (_isCreated)
{
if (GameCenter.GameStateSystem != null)
GameCenter.GameStateSystem.ChangeState((int)GameStateId.Login);
}
}
private int test = 0;
void Update()
{
//Thousandto.Plugins.Common.Networker.TestMessage = TestMessage;
if (_isCreated)
{
try
{
GameCenter.Update(Time.deltaTime);
//if (Input.GetKeyDown(KeyCode.Alpha0))
//{
// GameCenter.PushFixEvent(Global.LogicEventDefine.EID_EVENT_HIDE_CURRENT_FORM);
//}
}
catch (Exception ex)
{
Debug.LogException(ex);
}
}
}
void FixedUpdate()
{
if (_isCreated && !GameCenter.ClientGMSystem.PauseGameCenterUpdate)
{
GameCenter.FixedUpdate(Time.deltaTime);
}
}
void LateUpdate()
{
if (_isCreated && !GameCenter.ClientGMSystem.PauseGameCenterLateUpdate)
{
GameCenter.LateUpdate(Time.deltaTime);
}
}
void OnApplicationPause(bool paused)
{
if (_isCreated)
{
if (!paused)
{
ScreenSystem.SetDesignContentScale();
if (GameCenter.GameStateSystem != null)
{
var curState = GameCenter.GameStateSystem.GetCurState();
if (curState != null)
{
if (curState is LoginState)
{
//Debug.Log("恢复播放背景音1");
//后台没播放音乐,才播放游戏背景音乐
//if (FuncellSDK.Instance.IsMusicPlaying() == false)
AudioPlayer.PlayMusic(LoginState.GetLoginMusicName());
}
else
{
//Debug.Log("恢复播放背景音2");
//后台没播放音乐,才播放游戏背景音乐
//if (FuncellSDK.Instance.IsMusicPlaying() == false)
GameCenter.GameSceneSystem.PlayBGMusic();
var deltaTimeWhilePauseResume = Time.realtimeSinceStartup - _pauseTime;
if (deltaTimeWhilePauseResume >= 2 * 60)
{
GameCenter.Networker.Disconnect();
GameCenter.ReconnectSystem.Reconnect();
}
}
}
}
}
else
{
//Debug.Log("暂停停止背景音!");
GameCenter.GameSceneSystem.StopBGMusic(true);
_pauseTime = Time.realtimeSinceStartup;
}
}
}
private void OnApplicationFocus(bool focus)
{
if (_isCreated)
{
GameCenter.IsFocused = focus;
GameCenter.PushFixEvent(Global.LogicEventDefine.EID_EVENT_APPFOCUS);
}
}
void DoApplicationQuit()
{
if (_isCreated)
{
GameCenter.Uninitialize();
GameCenter.ApplicationQuit();
}
}
void OnDestroy()
{
}
#if UNITY_EDITOR
//在编辑器状态下,当被选择后的一些图形
void OnDrawGizmos()
{
if (Application.isPlaying)
{
Core.Asset.DynamicBoneSystem.SharedInstance.OnGizmos();
}
}
#endif
}
}