| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024 |
- local ModuleGameEnv = class("ModuleGameEnv")
- local SubMod = class( "SubMod" )
- local Module = class( "Module" )
- local cjson = require("cjson")
- local DefaultVersionChannel = "1"
- function ModuleGameEnv:ctor(module)
- self.module = module
- self.loginData = nil
- self.serverData = nil
- self.customData = nil
- self.refer = nil
- self.selectedServer = nil
- self.lastservers = {}
- self.selfip = nil
- self.isWhitelist = false
- end
- function ModuleGameEnv:Cleanup()
- self.loginData = nil
- self.serverData = nil
- self.customData = nil
- self.refer = nil
- self.selectedServer = nil
- self.lastservers = {}
- self.roleinfo = nil
- end
- function ModuleGameEnv:SetLoginData(data)
- self.loginData = data
- end
- function ModuleGameEnv:GetLoginData()
- return self.loginData
- end
- function ModuleGameEnv:SetServerData(data)
- self.serverData = data
- end
- function ModuleGameEnv:GetServerData()
- return self.serverData
- end
- function ModuleGameEnv:SetCustomData(data)
- self.customData = data
- end
- function ModuleGameEnv:GetCustomData()
- return self.customData
- end
- function ModuleGameEnv:SetCustomUrl(url)
- self.customURL = url
- end
- function ModuleGameEnv:GetCustomUrl()
- return self.customURL
- end
- function ModuleGameEnv:SetCustomIsLoaded(b)
- self.isCustomURLLoaded = b
- end
- function ModuleGameEnv:GetCustomIsLoaded()
- return self.isCustomURLLoaded
- end
- function ModuleGameEnv:IsNewServerlist()
- return self.isNewServerlist
- end
- function ModuleGameEnv:SetIsNewServerlist(b)
- self.isNewServerlist = b
- end
- function ModuleGameEnv:GetCustomDataByKey(key)
- return self.customData and self.customData[key]
- end
- function ModuleGameEnv:SetCustomDataByKey(key, value)
- if self.customData then
- self.customData[key] = value
- end
- end
- function ModuleGameEnv:SetSelfip(ip)
- self.selfip = ip
- if not self.serverData then
- return nil
- end
- local whitelist = self.serverData.whitelist
- local uidWhiteList = self.serverData.uidWhiteList
- if not whitelist and not uidWhiteList then
- return nil
- end
- for _, v in pairs(whitelist or {}) do
- if v == self.selfip then
- self.isWhitelist = true
- break
- end
- end
-
- if not self.isWhitelist then
- local uid = self:GetLoginUid()
- uid = uid and tostring(uid) or nil
- for k,v in pairs(uidWhiteList or {}) do
- if uid and uid == tostring(v) then
- self.isWhitelist = true
- break
- end
- end
- end
- end
- function ModuleGameEnv:IsWhitelist()
- -- 盒子传入白名单
- if cc.Application:getInstance():getTargetPlatform() == cc.PLATFORM_OS_WINDOWS then
- if global.L_GameEnvManager:GetLauncherWhitelist() then
- return true
- end
- end
- return self.isWhitelist
- end
- function ModuleGameEnv:GetSrvlist(all)
- if not self.serverData then
- return {}
- end
- if all then
- return self.serverData.srvlist
- end
- local isWhitelist = self:IsWhitelist()
- local items = {}
- for _, v in ipairs(self.serverData.srvlist) do
- if not (v.state == 5 and (not isWhitelist)) then
- table.insert(items, v)
- end
- end
- return items
- end
- function ModuleGameEnv:GetResVersion()
- if not self.serverData or not self.serverData.resVer then
- return "?v=1.1.1"
- end
- return self.serverData.resVer
- end
- function ModuleGameEnv:GetResDownloadUrl()
- if not self.serverData or not self.serverData.resURL then
- return global.L_GameEnvManager:GetRootDomain()
- end
- return self.serverData.resURL
- end
- function ModuleGameEnv:GetResDownloadUrl2()
- if not self.serverData or not self.serverData.resURL2 then
- return global.L_GameEnvManager:GetRootDomain2()
- end
- return self.serverData.resURL2
- end
- function ModuleGameEnv:GetSceneDownloadUrl()
- if not self.serverData or not self.serverData.sceneURL then
- return self:GetResDownloadUrl()
- end
- return self.serverData.sceneURL
- end
- function ModuleGameEnv:GetSceneDownloadVer()
- if not self.serverData or not self.serverData.sceneResVer then
- return self:GetResVersion()
- end
- return self.serverData.sceneResVer
- end
- function ModuleGameEnv:GetGMResURL()
- if not self.serverData or not self.serverData.gmResURL then
- return nil
- end
- return self.serverData.gmResURL
- end
- function ModuleGameEnv:GetGMResURL2()
- if not self.serverData or not self.serverData.gmResURL2 then
- return nil
- end
- return self.serverData.gmResURL2
- end
- function ModuleGameEnv:GetGMResVer()
- if not self.serverData or not self.serverData.gmResVer then
- return nil
- end
- return self.serverData.gmResVer
- end
- function ModuleGameEnv:GetGMWebResUrl()
- if not self.serverData or not self.serverData.gmWebResURL then
- return nil
- end
- return self.serverData.gmWebResURL
- end
- function ModuleGameEnv:GetGMWebResVer()
- if not self.serverData or not self.serverData.gmWebResVer then
- return nil
- end
- return self.serverData.gmWebResVer
- end
- function ModuleGameEnv:GetGMInitResURL()
- if not self.serverData or not self.serverData.gmInitResURL then
- return nil
- end
- return self.serverData.gmInitResURL
- end
- function ModuleGameEnv:GetGMInitResURL2()
- if not self.serverData or not self.serverData.gmInitResURL2 then
- return nil
- end
- return self.serverData.gmInitResURL2
- end
- function ModuleGameEnv:GetGMInitResVer()
- if not self.serverData or not self.serverData.gmInitResVer then
- return nil
- end
- return self.serverData.gmInitResVer
- end
- function ModuleGameEnv:SetRefer(refer)
- self.refer = refer
- end
- function ModuleGameEnv:GetRefer()
- return self.refer
- end
- function ModuleGameEnv:GetServerByID(srvid)
- local srvlist = self:GetSrvlist()
- for k, v in pairs(srvlist) do
- if tostring(v.serverId) == tostring(srvid) then
- return v
- end
- end
- return nil
- end
- function ModuleGameEnv:SetSelectedServer(server)
- self.selectedServer = server
- end
- function ModuleGameEnv:GetSelectedServer()
- return self.selectedServer
- end
- function ModuleGameEnv:GetSelectedServerUrlSuffix()
- if not self.selectedServer or not self.selectedServer.urlSuffix then
- return DefaultVersionChannel
- end
- return self.selectedServer.urlSuffix
- end
- function ModuleGameEnv:GetLastservers()
- return self.lastservers
- end
- -- 先行服资源版本 修改下载资源地址
- function ModuleGameEnv:GetSelectedServerGmurlsuffix()
- if not self.selectedServer or not self.selectedServer.gmurlsuffix then
- return
- end
- return self.selectedServer.gmurlsuffix
- end
- function ModuleGameEnv:ReadLastServers()
- if not self.serverData then
- return nil
- end
- --只针对美杜莎云游戏,根据安卓层传过来的区服id进行显示
- local lastServerID = global.L_NativeBridgeManager:getLastServerID()
- if lastServerID then
- self.selectedServer = self:GetServerByID(lastServerID)
- end
- -- 盒子传入的
- local launcherSrvid = global.L_GameEnvManager:GetLauncherSrvID()
- if not self.selectedServer and launcherSrvid then
- self.selectedServer = self:GetServerByID(launcherSrvid)
- end
-
- -- 上次选择
- if not self.selectedServer then
- local userData = UserData:new(self.module:GetID() .. "_data")
- local jsonStr = userData:getStringForKey("lastservers", "")
- if jsonStr and string.len(jsonStr) > 0 then
- local jsonData = cjson.decode(jsonStr) or {}
- local lastsrvid = jsonData[1]
- if not self.selectedServer and lastsrvid and lastsrvid ~= "" then
- self.selectedServer = self:GetServerByID(lastsrvid)
- end
- if jsonData and jsonData[3] then
- jsonData[3] = nil
- end
- self.lastservers = jsonData
- else
- self.lastservers = {}
- end
- end
- if not self.lastservers or #self.lastservers == 0 then
- local items = self:GetHasRoleSrvItems(true)
- if items and items[1] then
- self.lastservers[1] = items[1].serverId
- if not self.selectedServer and self.lastservers[1] and self.lastservers[1] ~= "" then
- self.selectedServer = self:GetServerByID(self.lastservers[1])
- end
- end
- if items and items[2] then
- self.lastservers[2] = items[2].serverId
- end
- end
- -- 推荐服
- if not self.selectedServer and self.refer then
- self.selectedServer = self:GetServerByID(self.refer)
- end
- -- 最后一个服务器
- if not self.selectedServer then
- local srvlist = self:GetSrvlist()
- self.selectedServer = srvlist[#srvlist]
- end
- end
- function ModuleGameEnv:SaveLastServers()
- if not self.serverData then
- return nil
- end
- -- 已选择存储到本地
- local lastserversN = {}
- table.insert(lastserversN, self.selectedServer.serverId)
- for i, v in ipairs(self.lastservers) do
- if v ~= self.selectedServer.serverId and #lastserversN < 2 then
- table.insert(lastserversN, v)
- end
- end
- local userData = UserData:new(self.module:GetID() .. "_data")
- local jsonStr = cjson.encode(lastserversN)
- userData:setStringForKey("lastservers", jsonStr)
- userData:writeMapDataToFile()
- end
- function ModuleGameEnv:RequestRoleInfo(func)
- if nil == self.module:GetOperID() then
- return false
- end
- local uid = self:GetLoginUid()
- if uid == nil then
- return
- end
- local downUrl = ""
- local RoleRecordDoamin = self:GetCustomDataByKey("RoleRecordDoamin")
- if RoleRecordDoamin and string.len(RoleRecordDoamin) > 0 then
- downUrl = RoleRecordDoamin
- end
-
- if downUrl and string.len(downUrl) > 0 then
- downUrl = string.format("%s/user_server/game_%s/user_%s.txt?time=%s", downUrl, self.module:GetOperID(), uid, os.time())
- -- http数据请求回调
- local function callback(success, response)
- if not success then
- if func then
- func()
- end
- release_print("request roleinfo error: step 1, http callback! failed")
- return false
- end
- local jsonData = cjson.decode(response)
-
- -- json decode error
- if not jsonData then
- if func then
- func()
- end
- release_print("request roleinfo error: step 2, http callback! json decode error")
- return false
- end
- dump(jsonData)
- if func then
- func(jsonData)
- end
- end
- HTTPRequest(downUrl, callback)
- end
- return true
- end
- function ModuleGameEnv:UploadRoleInfo()
- if nil == self.module:GetOperID() then
- return false
- end
- local uid = self:GetLoginUid()
- local token = self:GetLoginToken()
- if nil == uid then
- return false
- end
- if nil == token then
- return false
- end
- if not self.roleinfo then
- return nil
- end
- if type(self.roleinfo) ~= "table" then
- return nil
- end
- if uid then
- local jsonStr = cjson.encode(self.roleinfo)
- local upLoadUrl = ""
- local RoleRecordUpLoadDoamin = self:GetCustomDataByKey("RoleRecordUpLoadDoamin")
- if RoleRecordUpLoadDoamin and string.len(RoleRecordUpLoadDoamin) > 0 then
- upLoadUrl = RoleRecordUpLoadDoamin
- end
- if upLoadUrl and string.len(upLoadUrl) > 0 then
- upLoadUrl = string.format("%s/api/user/upload_play_history",upLoadUrl)
- local HTTPRequestPostFile = function(url, callback, data)
- local httpRequest = cc.XMLHttpRequest:new()
- httpRequest.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON
- httpRequest.timeout = 100000 -- 10 s
- httpRequest:open("POST", url)
- if callback then
- local function HttpResponseCB()
- local code = httpRequest.status
- local success = code >= 200 and code < 300
- local response = httpRequest.response
- callback(success,code,response)
- releasePrint("Http Request Code:" .. tostring(code))
- end
- httpRequest:setRequestHeader("Content-type", "multipart/form-data, boundary=upload_ymyzt")
- httpRequest:setRequestHeader("x-token", token or "")
- httpRequest:registerScriptHandler(HttpResponseCB)
- end
- httpRequest:send(data)
- end
- local filename = string.format("user_%s.txt", uid)
- local body = "--upload_ymyzt\r\n"..
- "content-disposition: form-data; name=\"game_id\"\r\n"..
- "\r\n" ..
- self.module:GetOperID().."\r\n"..
- "--upload_ymyzt\r\n"..
- 'content-disposition: form-data; name="file"; filename="'..filename..'"\r\n' ..
- "Content-Type: text/plain\r\n" ..
- "\r\n" ..
- jsonStr.."\r\n" ..
- "--upload_ymyzt--\r\n"
-
- HTTPRequestPostFile(upLoadUrl,function(success,code,response)
- dump({success,code,response},"HTTPRequestPostFile___")
-
- end,body)
- end
-
- end
-
- return true
- end
- function ModuleGameEnv:GetRoleInfoByServerID(serverID)
- if not self.roleinfo then
- return 0
- end
- serverID = tostring(serverID)
- if not self.roleinfo[serverID] then
- return 0
- end
- if type(self.roleinfo[serverID]) ~= "table" then
- return 0
- end
- return tonumber(self.roleinfo[serverID].count) or 0
- end
- function ModuleGameEnv:GetRoleinfo()
- return self.roleinfo
- end
- function ModuleGameEnv:SetRoleinfo(roleInfo)
- self.roleinfo = roleInfo
- end
- function ModuleGameEnv:SetRoleCountByServerID(serverID, count)
- if not self.roleinfo then
- self.roleinfo = {}
- end
- serverID = tostring(serverID)
- self.roleinfo[serverID] = {count = count , time = os.time()}
- self:savelocalRoleinfo()
- self:UploadRoleInfo()
- end
- function ModuleGameEnv:GetHasRoleSrvItems(largerSort)
- local srvlist = self:GetSrvlist()
- if not srvlist then
- return nil
- end
- local srvById = {}
- for i, v in ipairs(srvlist) do
- srvById[tostring(v.serverId)] = v
- end
- local items = {}
- local roleCount
- local srvId
- local roleinfo = self:GetRoleinfo()
- if not roleinfo then
- return nil
- end
- local roleInfoVec = {}
- for srvId, v in pairs(roleinfo) do
- if type(v) ~= "table" then
- v = {}
- end
- table.insert(roleInfoVec,{serverID = srvId , count = v.count or 0, time = v.time or 0})
- end
- table.sort(roleInfoVec, function (a ,b)
- if largerSort then
- return a.time > b.time
- else
- return a.time < b.time
- end
- end)
- for i, v in ipairs(roleInfoVec) do
- roleCount = tonumber(v.count) or 0
- srvId = tostring(v.serverID) or ""
- if roleCount > 0 and srvById[srvId] then
- table.insert(items, srvById[srvId] )
- end
- end
- return items
- end
- -- function ModuleGameEnv:checkLocalRoleinfo()
- -- if nil == global.L_GameEnvManager:GetChannelID() then
- -- return false
- -- end
- -- if nil == self.module:GetOperID() then
- -- return false
- -- end
- -- local uid = self:GetLoginUid()
- -- if nil == uid then
- -- return false
- -- end
- -- if nil == global.L_ModuleManager:GetLauncherModuleID() then
- -- return false
- -- end
- -- -- 本地数据超时,不再使用
- -- local launcherModID = global.L_ModuleManager:GetLauncherModuleID()
- -- local userData = UserData:new(launcherModID .. "_data")
- -- local srvlistTimeout = tonumber(self:GetCustomDataByKey("srvlistTimeout"))
- -- local lastUnixtime = userData:getIntegerForKey("last_unixtime", 0)
- -- local currUnixtime = os.time()
- -- if nil == lastUnixtime or 0 == lastUnixtime or (srvlistTimeout and currUnixtime - lastUnixtime > srvlistTimeout) then
- -- -- 重置本地上次拉取时间戳
- -- userData:setIntegerForKey("last_unixtime", currUnixtime)
- -- userData:writeMapDataToFile()
- -- return false
- -- end
- -- -- 本地读取
- -- self:readLocalRoleinfo()
- -- -- 本地有数据
- -- if self.roleinfo then
- -- global.L_ModuleChooseManager:OnServerRoleInfoResp()
- -- return true
- -- end
- -- return false
- -- end
- function ModuleGameEnv:savelocalRoleinfo()
- if not self.roleinfo then
- return nil
- end
- if type(self.roleinfo) ~= "table" then
- return nil
- end
- if nil == self.module:GetOperID() then
- return false
- end
- local uid = self:GetLoginUid()
- if not uid then
- return false
- end
- uid = tostring(uid)
- if uid and string.len(uid) > 0 then
- local fileUtil = cc.FileUtils:getInstance()
- local filename = self.module:GetID() .. "_roleinfoNew" .. uid
- local localStoragePath = fileUtil:getWritablePath() .. filename
-
- local jsonStr = cjson.encode(self.roleinfo)
- fileUtil:writeStringToFile(jsonStr, localStoragePath)
- end
- end
- function ModuleGameEnv:readLocalRoleinfo()
- self.roleinfo = nil
- local uid = self:GetLoginUid()
- if not uid then
- return nil
- end
- uid = tostring(uid)
- if nil == self.module:GetOperID() then
- return nil
- end
- if uid and string.len(uid) > 0 then
- local fileUtil = cc.FileUtils:getInstance()
- local filename = self.module:GetID() .. "_roleinfoNew" .. uid
- local localStoragePath = fileUtil:getWritablePath() .. filename
- if fileUtil:isFileExist(localStoragePath) then
- local jsonStr = fileUtil:getDataFromFileEx(localStoragePath)
- if jsonStr and jsonStr ~= "" then
- self.roleinfo = cjson.decode(jsonStr)
- end
- end
- end
- end
- function ModuleGameEnv:GetLoginUid()
- local uid = global.L_NativeBridgeManager:GetUsername()
- if nil == uid then
- --盒子uid
- local boxuid = global.L_GameEnvManager:GetEnvDataByKey("uid")
- local boxtoken = nil
-
- if boxtoken == nil or boxtoken == "" then
- boxtoken = global.L_GameEnvManager:GetEnvDataByKey("new_boxtoken")
- end
- if boxtoken == nil or boxtoken == "" then
- boxtoken = global.L_GameEnvManager:GetEnvDataByKey("token")
- end
- if boxuid and boxtoken then
- uid = boxuid
- end
- if not uid then
- --pc 联运
- local PCPlatform = global.L_GameEnvManager:GetEnvDataByKey("PCPlatform")
- local user_id = global.L_GameEnvManager:GetEnvDataByKey("user_id")
- local token = global.L_GameEnvManager:GetEnvDataByKey("token")
- if PCPlatform and user_id and token then
- uid = user_id
- end
- end
- end
-
- return uid
- end
- function ModuleGameEnv:GetLoginToken()
- local token = global.L_NativeBridgeManager:GetPassword()
- if nil == token then
- local boxuid = global.L_GameEnvManager:GetEnvDataByKey("uid")
- local boxtoken = nil
- if boxtoken == nil or boxtoken == "" then
- boxtoken = global.L_GameEnvManager:GetEnvDataByKey("new_boxtoken")
- end
- if boxtoken == nil or boxtoken == "" then
- boxtoken = global.L_GameEnvManager:GetEnvDataByKey("token")
- end
- if boxuid and boxtoken then
- token = boxtoken
- end
- if not token then
- --pc 联运
- local PCPlatform = global.L_GameEnvManager:GetEnvDataByKey("PCPlatform")
- local user_id = global.L_GameEnvManager:GetEnvDataByKey("user_id")
- local PCtoken = global.L_GameEnvManager:GetEnvDataByKey("token")
- if PCPlatform and user_id and PCtoken then
- token = PCtoken
- end
- end
- end
- return token
- end
- -------------------------------------------------------------
- -- sub module
- function SubMod:ctor(info, id, name, operid, Sign, xk, platformId)
- self.info = info
- self.id = id or ""
- self.name = name or ""
- self.operid = operid or ""
- self.Sign = Sign or false
- self.xk = decodeXK(xk)
- self.gameEnv = ModuleGameEnv.new(self)
- self.originVer = ""
- self.cacheVer = ""
- self.remoteVer = ""
- self.platformId = platformId
- end
- function SubMod:GetSubModInfo()
- return self.info
- end
- function SubMod:GetID()
- return self.id
- end
- function SubMod:GetName()
- return self.name
- end
- function SubMod:GetOperID()
- return self.operid
- end
- function SubMod:GetGameEnv()
- return self.gameEnv
- end
- function SubMod:GetIsSign()
- return self.Sign and self.Sign == 1
- end
- function SubMod:GetXK()
- return self.xk
- end
- function SubMod:GetPlatformID()
- return self.platformId
- end
- function SubMod:SetRemoteVersion(remoteVer)
- self.remoteVer = remoteVer
- end
- function SubMod:GetRemoteVersion()
- return self.remoteVer
- end
- -------------------------------------------------------------
- -- module
- function Module:ctor( id, name, version, suffix, info, subMod, Sign, refer)
- self.id = id or ""
- self.name = name or ""
- self.version = version or global.VersionName.default
- self.suffix = suffix
- self.modInfo = info
- self.refer = refer
- self.originVer = ""
- self.cacheVer = ""
- self.remoteVer = ""
- --
- self.currentSubMod = nil
- self.subMods = {}
- if subMod then
- for i, v in ipairs(subMod) do
- self.subMods[i] = SubMod.new(v, v.id, v.name, v.operid, Sign, v.xk, v.platformId)
- end
- end
- end
- function Module:GetID()
- return self.id
- end
- function Module:GetName()
- return self.name
- end
- function Module:GetModInfo()
- return self.modInfo
- end
- function Module:GetRefer()
- return self.refer
- end
- function Module:SetVersion( version )
- self.version = version
- end
- function Module:GetVersion()
- return self.version
- end
- function Module:IsStab()
- return self.version == global.VersionName.stab
- end
- function Module:IsBeta()
- return self.version == global.VersionName.beta
- end
- function Module:IsAlpha()
- return self.version == global.VersionName.alpha
- end
- function Module:GetSuffix()
- return self.suffix
- end
- function Module:GetReferSubModID()
- return self.modInfo.refer
- end
- function Module:GetSubMods()
- return self.subMods
- end
- function Module:GetSubModByID(id)
- for _, subMod in pairs(self.subMods) do
- if subMod:GetID() == id then
- return subMod
- end
- end
- return nil
- end
- function Module:RegisterSubMod(subModID)
- local subMod = self:GetSubModByID(subModID)
- if not subMod then
- releasePrint("can't find subMod, by RegisterSubMod", subModID)
- return false
- end
- -- set current submod
- self.currentSubMod = subMod
- return true
- end
- function Module:GetCurrentSubMod()
- return self.currentSubMod
- end
- function Module:GetOperID()
- return self.currentSubMod:GetOperID()
- end
- function Module:GetGameEnv()
- return self.currentSubMod:GetGameEnv()
- end
- -- 模块可写根路径(writable_path/mod_xxxx/)
- function Module:GetRootWritablePath()
- return string.format( "%s%s/", cc.FileUtils:getInstance():getWritablePath(), getNewFoldername(tostring(self.id)) )
- end
- -- 模块 当前版本 访问路径(mod_xxxx/beta/suffix/ mod_xxxx/beta/)
- function Module:GetPath()
- local basePath = string.format( "%s/%s/", getNewFoldername(tostring(self.id)), getNewFoldername(tostring(self.version)) )
- local newPath = self.suffix and string.format( "%s/%s/", basePath, tostring(self.suffix) ) or basePath
- return newPath
- end
- -- 模块 stab 访问路径(mod_launcher/stab/suffix/)
- function Module:GetStabPath()
- local basePath = string.format( "%s/%s/", getNewFoldername(tostring(self.id)), getNewFoldername(global.VersionName.stab) )
- local newPath = self.suffix and string.format( "%s/%s/", basePath, tostring(self.suffix) ) or basePath
- return newPath
- end
- -- 模块 beta 访问路径(mod_xxxx/beta/suffix/ mod_xxxx/beta/)
- function Module:GetBetaPath()
- local basePath = string.format( "%s/%s/", getNewFoldername(tostring(self.id)), getNewFoldername(global.VersionName.beta) )
- local newPath = self.suffix and string.format( "%s/%s/", basePath, tostring(self.suffix) ) or basePath
- return newPath
- end
- -- 模块 stab 访问路径(mod_xxxx/subMod/)
- function Module:GetSubModPath()
- local subMod = self:GetCurrentSubMod()
- if not subMod then
- releasePrint("can't find subMod")
- return self:GetStabPath()
- end
- return string.format( "%s/%s/", getNewFoldername(tostring(self.id)), getNewFoldername(subMod:GetID()) )
- end
- -- 模块 当前版本 远端访问路径(remote_path/mod_launcher/channel/beta/suffix/)
- function Module:GetRemotePath( channel )
- if not channel or channel == "" then
- channel = DefaultVersionChannel
- end
- if self.suffix then
- return string.format( "%s/%s/%s/%s/", tostring(self.id), channel, tostring(self.version), tostring(self.suffix) )
- else
- return string.format( "%s/%s/%s/", tostring(self.id), channel, tostring(self.version) )
- end
- end
- -- 模块 stab 远端访问路径(remote_path/mod_launcher/channel/stab/suffix/)
- function Module:GetRemoteStabPath( channel )
- if not channel or channel == "" then
- channel = DefaultVersionChannel
- end
- if self.suffix then
- return string.format( "%s/%s/%s/%s/", tostring(self.id), channel, global.VersionName.stab, tostring(self.suffix) )
- else
- return string.format( "%s/%s/%s/", tostring(self.id), channel, global.VersionName.stab )
- end
- end
- function Module:GetVersionFileName()
- return string.format( "%s_%s", tostring(self.id), "version.manifest" )
- end
- function Module:GetManifestFileName()
- return string.format( "%s_%s", tostring(self.id), "project.manifest" )
- end
- function Module:GetOriginVersion()
- if "" ~= self.originVer then
- return self.originVer
- end
- local OriginVersionPath = string.format( "%s%s", self:GetPath(), self:GetVersionFileName())
- if global.FileUtilCtl:isFileExist( OriginVersionPath ) then
- local strBuffer = global.FileUtilCtl:getDataFromFileEx( OriginVersionPath )
- local jsonData = cjson.decode(strBuffer)
- if jsonData then
- self.originVer = jsonData.version
- end
- end
- if "" == self.originVer then
- self.originVer = "0.0.0"
- end
- return self.originVer
- end
- function Module:GetCacheVersion()
- if "" ~= self.cacheVer then
- return self.cacheVer
- end
- local cacheVersionFile = self:GetManifestFileName()
- local writePath = global.FileUtilCtl:getWritablePath()
- local modulePath = self:GetPath()
- local cacheVersionPath = string.format( "%s%s%s", writePath, tostring( modulePath ), cacheVersionFile )
- if global.FileUtilCtl:isFileExist( cacheVersionPath ) then
- local strBuffer = global.FileUtilCtl:getDataFromFileEx( cacheVersionPath )
- local jsonData = cjson.decode(strBuffer)
- if jsonData then
- self.cacheVer = jsonData.version
- end
- end
- if "" == self.cacheVer then
- self.cacheVer = "0.0.0"
- end
- return self.cacheVer
- end
- function Module:SetRemoteVersion( ver )
- self.remoteVer = ver
- end
- function Module:GetRemoteVersion()
- return self.remoteVer
- end
- function Module:GetAllVersionForDisplay()
- return string.format("%s/%s/%s", tostring(self:GetOriginVersion()), tostring(self:GetCacheVersion()), tostring(self:GetRemoteVersion()))
- end
- return Module
|