LuaMain.lua 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. -- print("luaMain")
  2. if jit then
  3. jit.off();jit.flush()
  4. end
  5. RO_XPCALL = function (func, msgh, ...)
  6. if jit then
  7. return xpcall(func, msgh, ...)
  8. else
  9. local args = {...}
  10. local localfunc = function() return func(unpack(args, 1, table.maxn(args))) end
  11. return xpcall(localfunc, msgh)
  12. end
  13. end
  14. local LuaMgr = LuaMgr.Instance
  15. LuaMgr:AddLuaSearchPath("Lua/Core")
  16. LuaMgr:AddLuaSearchPath("Lua/Pb")
  17. LuaMgr:AddLuaSearchPath("Lua/Enum")
  18. LuaMgr:AddLuaSearchPath("Lua/Config")
  19. LuaMgr:AddLuaSearchPath("Lua/UI")
  20. LuaMgr:AddLuaSearchPath("Lua/FSMState")
  21. LuaMgr:AddLuaSearchPath("Lua/Logic")
  22. LuaMgr:AddLuaSearchPath("Lua/Managers")
  23. LuaMgr:AddLuaSearchPath("Lua/Util")
  24. LuaMgr:AddLuaSearchPath("ToLua/Lua")
  25. LuaMgr:AddLuaSearchPath("ToLua/Lua/cjson")
  26. LuaMgr:AddLuaSearchPath("Lua/Entities")
  27. LuaMgr:AddLuaSearchPath("Lua/System")
  28. LuaMgr:AddLuaSearchPath("Lua/RedPoint")
  29. require("class")
  30. require("LuaExtension")
  31. Log = function(obj, ...)
  32. local info = debug.getinfo(2, "Sln")
  33. DebugHelper.Log(obj, info.source, ...)
  34. end
  35. LogError = function(str)
  36. local info = debug.getinfo(2, "Sln")
  37. DebugHelper.LogError(info.source.." "..str)
  38. end
  39. LogWarning = function(str)
  40. local info = debug.getinfo(2, "Sln")
  41. DebugHelper.LogWarning(info.source.." "..str)
  42. end
  43. LogHRWarning = function(str)
  44. local info = debug.getinfo(2, "Sln")
  45. DebugHelper.LogWarning("[hr] "..info.source.." "..info.currentline.." "..str)
  46. end
  47. LogHRWarningStack = function (str)
  48. local s = ""
  49. for i = 2, 8 do
  50. local info = debug.getinfo(i, "nlS")
  51. if info then
  52. s = s .. string.format("%s:%d: in %s\n", info.source, info.currentline, info.name or "")
  53. end
  54. end
  55. DebugHelper.LogWarning(string.format("[hr] %s\n%s", tostring(str), s))
  56. end
  57. local percent = 0
  58. InternalRequire = function(name, endStep)
  59. if percent then
  60. percent = percent + 1
  61. LuaMgr:StartMainPrecent(percent / 190)
  62. -- local temp =(percent / 190 * 80) + 10
  63. -- LogError("pr = "..temp.." Name = " ..name)
  64. end
  65. local data = require(name)
  66. if data and type(data) == 'function' then
  67. data = data()
  68. package.loaded[name] = nil
  69. end
  70. return data
  71. end
  72. FloatToPrice =function (price)
  73. if ((math.floor(price) + 0.005) > price) then
  74. return tostring(price)
  75. else
  76. return string.format("%.2f",price)
  77. end
  78. end
  79. IsNewLuadll = false
  80. UseOpenPay = false
  81. UseDbPay = true
  82. IsCheckServerState = true --检查
  83. ServerState = 0
  84. IShServer = function () --是否审核
  85. return ServerState == 1
  86. end
  87. local LuaMain = class("LuaMain")
  88. LuaMain.CheckServerStateWWW = nil
  89. _GameMain = LuaMain
  90. -- 这里是异步初始化, 初始化的耗时操作可放这里面
  91. function LuaMain:Init()
  92. Constant = InternalRequire("Constant")
  93. PlatformPack = InternalRequire("PlatformPack")
  94. Inspect = InternalRequire("inspect")
  95. Enum = InternalRequire("Enum")
  96. Enum.UIPageName = InternalRequire("UIPageName")
  97. UIEventNames = InternalRequire("UIEventNames")
  98. ProtoMsgId = InternalRequire("ProtoMsgId")
  99. ProtoConfirmMsgId = InternalRequire("ProtoConfirmMsgId")
  100. Bit = InternalRequire "bit"
  101. JSON = InternalRequire('json')
  102. InternalRequire("CommonUtil")
  103. ProtocalDataNormal = InternalRequire("ProtocalDataNormal")
  104. ManagerContainer = InternalRequire("ManagerContainer")
  105. ManagerContainer:Init()
  106. LogWarning(tostring(percent))
  107. percent = nil
  108. collectgarbage("collect")
  109. end
  110. local updateHandle = nil
  111. function LuaMain:Start()
  112. collectgarbage("setpause",100)
  113. collectgarbage("setstepmul",5000)
  114. LogHRWarning("lua init "..collectgarbage("count"))
  115. ManagerContainer = require("ManagerContainer")
  116. ManagerContainer:InitMgr()
  117. ManagerContainer.FSMMgr:RegisterStates()
  118. ManagerContainer.DataMgr:RegisterAllDataEvents()
  119. if not updateHandle then
  120. updateHandle = UpdateBeat:CreateListener(self.Update, self)
  121. end
  122. UpdateBeat:AddListener(updateHandle)
  123. LuaMgr:StartMainComplete()
  124. end
  125. function LuaMain:Update()
  126. if ManagerContainer ~= nil then
  127. ManagerContainer:Update()
  128. end
  129. if UnityEngine.Input.GetKeyUp(UnityEngine.KeyCode.Escape) then
  130. if SDKMgr.Instance:CheckHasModul(SDKModulType.EXIT_VIEW) then
  131. SDKMgr.Instance:OpenModul(SDKModulType.EXIT_VIEW)
  132. end
  133. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISimpleWeb, "https://www.baidu.com", nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2)
  134. end
  135. if IsCheckServerState then
  136. self:CheckServerStateUpdate()
  137. end
  138. end
  139. function LuaMain:EnterLogin(relogin)
  140. if ManagerContainer.FSMMgr then
  141. if not ManagerContainer.FSMMgr.currentState
  142. or ManagerContainer.FSMMgr.currentState.stateId ~= Enum.StateEnum.LoginState.stateId
  143. then
  144. ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoginState.stateId, relogin)
  145. else
  146. ManagerContainer.FSMMgr:GetCurrentState():Enter(relogin)
  147. end
  148. end
  149. end
  150. function LuaMain:Destroy()
  151. if updateHandle ~= nil then
  152. UpdateBeat:RemoveListener(updateHandle)
  153. updateHandle = nil
  154. end
  155. if ManagerContainer then
  156. ManagerContainer:Destroy()
  157. end
  158. ManagerContainer = nil
  159. collectgarbage("collect")
  160. LogHRWarning("lua destroy "..collectgarbage("count"))
  161. end
  162. function LuaMain:CheckServerState(platform)
  163. if IsCheckServerState then
  164. local url = PlatformPack.SERVERLIST_URL .. "/serverstate?platform=" ..platform
  165. LogError("url = ".. url)
  166. self.CheckServerStateWWW = UnityEngine.WWW(url)
  167. end
  168. end
  169. function LuaMain:CheckServerStateUpdate()
  170. if self.CheckServerStateWWW ~= nil and self.CheckServerStateWWW.isDone then
  171. if self.CheckServerStateWWW.error and self.CheckServerStateWWW.error ~= '' then
  172. LogError("获取 Server State 失败!!!!")
  173. else
  174. local text = self.CheckServerStateWWW.text
  175. ServerState = tonumber(text)
  176. -- if IShServer() then
  177. -- Constant.OpenPay = false
  178. -- end
  179. LogError("ServerState = ".. ServerState)
  180. end
  181. self.CheckServerStateWWW:Dispose()
  182. self.CheckServerStateWWW = nil
  183. IsCheckServerState = false
  184. end
  185. end
  186. return LuaMain