Files
tianrunCRM/Assets/CoolapeFrame/Scripts/main/CLMainBase.cs
2020-07-04 14:41:25 +08:00

266 lines
7.2 KiB
C#
Raw 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.

/*
********************************************************************************
*Copyright(C),coolae.net
*Author: chenbin
*Version: 2.0
*Date: 2017-01-09
*Description: 程序入口的基类
*Others:
*History:
*********************************************************************************
*/
using UnityEngine;
using System.Collections;
using System.IO;
using XLua;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace Coolape
{
public class CLMainBase : CLBehaviourWithUpdate4Lua
{
public static CLMainBase self;
//第一个页面可以理解为显示公司LOGO的页面
public string firstPanel = "";
public CLMainBase()
{
self = this;
}
// Use this for initialization
public override void Start()
{
DateEx.init();
// 显示公司logo页面
CLPanelBase panel = CLPanelManager.getPanel(firstPanel);
try
{
CLPanelManager.showPanel(panel);
// SoundEx.playSound ("Coolape", 1);
// 初始化
StartCoroutine(gameInit());
}
catch (System.Exception e)
{
Debug.LogError(e);
}
}
public IEnumerator gameInit()
{
yield return new WaitForSeconds(1);
init();
}
public virtual void setLanguage(string language)
{
string languageFile = PStr.b(
CLPathCfg.self.localizationPath,
language, ".txt").e();
byte[] buff = null;
#if UNITY_EDITOR
if (CLCfgBase.self.isEditMode)
{
languageFile = PStr.b().a(CLPathCfg.persistentDataPath).a("/").a(languageFile).e();
languageFile = languageFile.Replace("/upgradeRes/", "/upgradeRes4Dev/");
buff = File.ReadAllBytes(languageFile);
}
else
{
#if UNITY_WEBGL
languageFile = languageFile.Replace(".txt", "");
#endif
buff = FileEx.readNewAllBytes(languageFile);
}
#else
#if UNITY_WEBGL
languageFile = languageFile.Replace(".txt", "");
#endif
buff = FileEx.readNewAllBytes(languageFile);
#endif
Localization.Load(language, buff);
}
public virtual void init()
{
//防止锁屏
Screen.sleepTimeout = SleepTimeout.NeverSleep;
//设置帧率
#if !UNITY_WEBGL
Application.targetFrameRate = 30;
#endif
//设置初始语言,Resource目录下的语言文件只需要包括刚开始加载页面需要的文字即可
//等更处理完成后,将会再次设置一次语言
Localization.language = "Chinese"; //TODO: 根据保存的语文来设置
// set fps, only none channel can show fps
// if (CLCfgBase.Channel == CLCfgBase.ChlType.NONE
// || CLCfgBase.Channel == CLCfgBase.ChlType.IOSDEMO) {
// SCfg.self.fps.enabled = true;
// } else {
// SCfg.self.fps.enabled = false;
// }
//初始化streamingAssetsPackge,把包里的资源释放出来
#if UNITY_WEBGL
if(CLCfgBase.self.isEditMode)
{
onGetStreamingAssets();
}
else
{
preLoadRes4Webgl((Callback)onGetStreamingAssets);
}
#else
CLVerManager.self.initStreamingAssetsPackge ((Callback)onGetStreamingAssets);
#endif
}
public virtual void preLoadRes4Webgl(object callback)
{
CLPreLoadRes4Webgl.init(null, callback, true, null);
}
// 当完成把数据从包里释放出来
public virtual void onGetStreamingAssets(params object[] para)
{
//先加载一次atlas以便可以显示ui
CLUIInit.self.init();
//再次加载语言
setLanguage(Localization.language);
//设置lua
setLua();
}
public virtual void reStart()
{
CancelInvoke();
StopAllCoroutines();
Invoke("doRestart", 0.5f); // 必须得用个invoke否则unity会因为lua.desotry而闪退
}
public virtual void doRestart()
{
CLPanelManager.destoryAllPanel();
FileEx.cleanCache();
CLUtlLua.cleanFileBytesCacheMap();
//CLUtlLua.isFinishAddLoader = false;
CLUIInit.self.clean();
//重新把配置清空
CLMaterialPool.materialTexRefCfg = null;
if (mainLua != null)
{
destoryLua();
// mainLua.Dispose ();
// mainLua = null;
resetMainLua();
}
else
{
resetMainLua();
}
luaTable = null;
lua = null;
Start();
}
public override void OnDestroy()
{
base.OnDestroy();
// if (mainLua != null) {
// mainLua.Dispose ();
// mainLua = null;
// }
}
public override void OnApplicationQuit()
{
base.OnApplicationQuit();
#if UNITY_EDITOR
string atlasPath = PStr.b().a("Assets/").a(CLPathCfg.self.basePath).a("/upgradeRes4Dev/priority/atlas/atlasAllReal.prefab").e();
CLUIInit.self.emptAtlas.replacement = (UIAtlas)(AssetDatabase.LoadAssetAtPath(atlasPath, typeof(UIAtlas)));
#endif
}
public override void setLua()
{
//set lua
if (lua == null || CLVerManager.self.haveUpgrade)
{
CLPanelManager.destoryAllPanel();
if (lua == null)
{
lua = mainLua;
base.setLua();
}
}
}
LuaFunction lfexitGmaeConfirm = null;
public override void initGetLuaFunc()
{
base.initGetLuaFunc();
lfexitGmaeConfirm = getLuaFunction("exitGmaeConfirm");
}
// Update is called once per frame
public override void Update()
{
base.Update();
if (Input.GetKeyUp(KeyCode.Escape))
{
//点了返回键
if (lfexitGmaeConfirm != null)
{
call(lfexitGmaeConfirm);
}
}
// proc net offline
if (isOffLine)
{
//断线通知
isOffLine = false;
doOffline();
}
}
bool isOffLine = false;
//off line
public void onOffline()
{
isOffLine = true;
}
public virtual void doOffline()
{
if (lua == null)
{
return;
}
LuaFunction f = getLuaFunction("onOffline");
if (f != null)
{
call(f);
}
}
public void gc()
{
if(lua != null)
{
lua.GC();
}
}
}
}