Main/Assets/Code/Center/GameCenterScript.cs
2025-01-25 04:38:09 +08:00

220 lines
6.4 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using Thousandto.Code.Logic;
using Thousandto.Core.Asset;
using Thousandto.Core.Base;
using UnityEngine;
using UnityEngine.Gonbest.MagicCube;
namespace Thousandto.Code.Center
{
/// <summary>
/// 游戏中心脚本
/// </summary>
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<AnimationClip>(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<GameExtentScript>() == null)
{
gameObject.AddComponent<GameExtentScript>();
} */
}
//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
}
}