using System; using System.Collections.Generic; using UnityEngine; namespace BF { /// /// 口头约束 各个manager的Create函数只提供给BFMain使用 /// public class BFMain : MonoSingleton { List managerList; // 客户端c#代码版本号,每次发布新包后加1,lua层存在一套代码兼容多版本c#代码 public const int CLIENT_VERSION = 2; // 是否是单机版 public static bool IsStandAlone = false; public static bool IsShenhe = false; public static bool IsWhite = false; public static bool IsGotServerTime = false; public const string FILE_HEAD = "for_file_head"; public const string FILE_HEAD_BASE64 = "Zm9yX2ZpbGVfaGVhZ"; public static long ServerTime = 0; public static long DifferenceTime = 0; protected override void Init() { base.Init(); Screen.sleepTimeout = SleepTimeout.NeverSleep; #if !UNITY_EDITOR BestHTTP.HTTPManager.Logger.Level = BestHTTP.Logger.Loglevels.None; // 避免真机上BestHTTP的异常导致的崩溃 #endif InitMgrs(); StartGame(); } void InitMgrs() { managerList = new List(); } public void StartGame() { #if UNITY_EDITOR var sceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; if (Application.isPlaying && sceneName.CompareTo("enter_scene") == 0) { GameLaunchMgr.LaunchGame(); } #else GameLaunchMgr.LaunchGame(); #endif } void Update() { var count = managerList.Count; for (int i = 0; i < count; i++) { managerList[i].Update(); } } void LateUpdate() { var count = managerList.Count; for (int i = 0; i < count; i++) { managerList[i].LateUpdate(); } } void OnDestroy() { var count = managerList.Count; for (int i = 0; i < count; i++) { managerList[i].Destroy(); } managerList.Clear(); } void OnApplicationPause(bool pause) { if (luaMgr != null) { luaMgr.OnApplicationPause(pause); } } void OnApplicationFocus(bool focus) { if (luaMgr != null) { luaMgr.OnApplicationFocus(focus); } } void OnApplicationQuit() { if (luaMgr != null) { luaMgr.OnApplicationQuit(); } Destroy(); } public void Destroy() { Destroy(gameObject); } GameLaunchManager gameLaunchMgr; public GameLaunchManager GameLaunchMgr { get { if (gameLaunchMgr == null) { gameLaunchMgr = GameLaunchManager.Create(); gameLaunchMgr.Init(); managerList.Add(gameLaunchMgr); } return gameLaunchMgr; } } LuaManager luaMgr; public LuaManager LuaMgr { get { if (luaMgr == null) { luaMgr = LuaManager.Create(); luaMgr.SetMono(this); luaMgr.Init(); managerList.Add(luaMgr); } return luaMgr; } } LoomManager loomMgr; public LoomManager LoomMgr { get { if (loomMgr == null) { loomMgr = LoomManager.Create(); loomMgr.SetMono(this); loomMgr.Init(); managerList.Add(loomMgr); } return loomMgr; } } PoolManager poolMgr; public PoolManager PoolMgr { get { if (poolMgr == null) { poolMgr = PoolManager.Create(); managerList.Add(poolMgr); } return poolMgr; } } BFTouchManager touchMgr; public BFTouchManager TouchMgr { get { if (touchMgr == null) { touchMgr = BFTouchManager.Create(); managerList.Add(touchMgr); } return touchMgr; } } RenderManager renderMgr; public RenderManager RenderMgr { get { if (renderMgr == null) { renderMgr = RenderManager.Create(); renderMgr.SetMono(this); managerList.Add(renderMgr); } return renderMgr; } } ResourceManager resMgr; public ResourceManager ResMgr { get { if (resMgr == null) { resMgr = ResourceManager.Create(); resMgr.Init(); managerList.Add(resMgr); } return resMgr; } } NetManager netMgr; public NetManager NetMgr { get { if (netMgr == null) { netMgr = NetManager.Create(); managerList.Add(netMgr); } return netMgr; } } BFWebRequestManager webRequestMgr; public BFWebRequestManager WebRequestMgr { get { if (webRequestMgr == null) { webRequestMgr = BFWebRequestManager.Create(); managerList.Add(webRequestMgr); } return webRequestMgr; } } OneShotManager oneShotManager; public OneShotManager OneShotManager { get { if (oneShotManager == null) { oneShotManager = OneShotManager.Create(); oneShotManager.Init(); managerList.Add(oneShotManager); } return oneShotManager; } } SoundManager soundManager; public SoundManager SoundManager { get { if (soundManager == null) { soundManager = SoundManager.Create(); soundManager.Init(); managerList.Add(soundManager); } return soundManager; } } TaskManager taskMgr; public TaskManager TaskMgr { get { if (taskMgr == null) { taskMgr = TaskManager.Create(); taskMgr.Init(); taskMgr.SetMono(this); managerList.Add(taskMgr); } return taskMgr; } } BIReport biReport; public BIReport BIReport { get { if (biReport == null) { biReport = BIReport.Create(); biReport.Init(); managerList.Add(biReport); } return biReport; } } SDKManager sdkMgr; public SDKManager SDKMgr { get { if (sdkMgr == null) { sdkMgr = SDKManager.Create(); sdkMgr.Init(); managerList.Add(sdkMgr); } return sdkMgr; } } public static void SetServerTime(long serverTime) { ServerTime = serverTime; DifferenceTime = Convert.ToInt64(Time.realtimeSinceStartup); } public static string ForFree(string str) { var bytes = System.Text.Encoding.UTF8.GetBytes(str); var bytesCount = bytes.Length; var index = 0; var key = BF.Utils.GetFreeChar(); var keyLength = key.Length; var headLength = FILE_HEAD.Length; var newbytes = new byte[bytes.Length + headLength]; for (int i = 0; i < headLength; i++) { var headByte = (byte)FILE_HEAD[i]; newbytes[i] = headByte; } for (int i = 0; i < bytesCount; i++) { newbytes[i + headLength] = (byte)(bytes[i] ^ (key[index % keyLength])); index++; } return System.Convert.ToBase64String(newbytes); } } }