266 lines
7.2 KiB
C#
266 lines
7.2 KiB
C#
/*
|
||
********************************************************************************
|
||
*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();
|
||
}
|
||
}
|
||
}
|
||
}
|