| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541 |
- local LuaGameMgr = class("LuaGameMgr", function()
- return GameMgr.Instance
- end)
- function LuaGameMgr:ctor()
- self:SetOnSceneLoadedLuaFunc(self.OnSceneLoadedInLua)
- self:SetLuaPlayStoryFunc(self.PlayStory)
- self:SdkInitFunc(self.SdkInitResult)
- self:SdkLoginFunc(self.SdkLoginResult)
- self:SdkLogoutFunc(self.SdkLogoutResult)
- self:SdkPayFunc(self.SdkPayResult)
- self:SdkQuestionFunc(self.UrlQuestionRewardResult)
- self:SdkCanEnterServerJudgeFunc(self.SdkCanEnterServerJudgeResult)
- self.newbieActors = nil
- self.IsCreateRole = false
- self.loadingPageOk = false
- self.IsActivationCodeMode = false
- self.showNiewbieLoading = false
- self.registerEvents = false
- self.isPreloadedFellow = false
- self.sdkInited = Enum.ParamState.None
- self.sdkLogined = Enum.ParamState.None
- self.token = ''
- self.openId = ''
- self.platform = ''
- self.channelName = ''
- self.serverData = {}
- self.canEnterServerState = Enum.ParamState.None
- end
- function LuaGameMgr:SendBattleRecordReq(recordType,params)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_PLAYER_BATTLE_RECORD_REQ, {record_type = recordType, param_list = params})
- end
- function LuaGameMgr:OnSceneLoadedInLua(sceneType,mode)
- if sceneType == SceneType.CreateRoleScene then
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.CreateRoleState.stateId)
- elseif sceneType == SceneType.NormalBattleScene then
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.BattleState.stateId)
- elseif sceneType == SceneType.GuildLobbyScene then
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.GuildLobbyState.stateId)
- elseif sceneType == SceneType.TowerBattleScene then
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.DojoState.stateId, mode)
- elseif sceneType == SceneType.BossBattleScene then
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.BossBattleState.stateId,mode)
- elseif sceneType == SceneType.TimeBattleScene then
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.TimeBattleState.stateId,mode)
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loading_Close)
- end
- function LuaGameMgr:Destroy()
- if tolua.getpeer(self) ~= nil then
- tolua.setpeer(self, nil)
- end
- end
- function LuaGameMgr:SdkInitResult(success,platformName)
- self.platform = platformName
- self.sdkInited = (success and Enum.ParamState.Success or Enum.ParamState.Fail)
- end
- function LuaGameMgr:SdkLoginResult(success,openId,token,isSwitchAccount)
- local lastSdkLogined = self.sdkLogined
- self.sdkLogined = (success and Enum.ParamState.Success or Enum.ParamState.Fail)
- self.token = token or ''
- self.openId = openId or ''
- if success then
- if isSwitchAccount then
- if lastSdkLogined == Enum.ParamState.Success then
- if ManagerContainer.DataMgr.UserData:IsInitedOver() then
- ManagerContainer.DataMgr.UserData:SDKExitGame()
- end
- self:ClearServerData()
- self:ReLogin()
- end
- end
- end
- end
- function LuaGameMgr:SdkLogoutResult()
- if ManagerContainer.DataMgr.UserData:IsInitedOver() then
- ManagerContainer.DataMgr.UserData:SDKExitGame()
- end
- local lastSdkLogined = self.sdkLogined
- self.sdkLogined = Enum.ParamState.Fail
- self.token = ''
- self.openId = ''
- if lastSdkLogined == Enum.ParamState.Success then
- self:ClearServerData()
- self:ReLogin()
- end
- end
- function LuaGameMgr:SdkPayResult(success)
- ManagerContainer.PayMgr:SdkPayResult(success)
- end
- function LuaGameMgr:InitServerData(id, name, ip, ports, state)
- self.serverData.id = id
- self.serverData.name = name
- self.serverData.ip = ip
- self.serverData.ports = ports
- self.serverData.state = state
- self.serverData.portidx = nil
- end
- function LuaGameMgr:SetServerID(id)
- --LogError('============id===='..id);
- UnityEngine.PlayerPrefs.SetInt("ServerID",id)
- end
- function LuaGameMgr:GetServerID()
- return UnityEngine.PlayerPrefs.GetInt("ServerID") or -1
- end
- -- 困難模式DifficultMode
- function LuaGameMgr:SetDifficultMode(mode)
- --LogError('============id===='..id);
- UnityEngine.PlayerPrefs.SetInt("DifficultMode",mode)
- end
- -- <= 0 普通 ;> 0 困難
- function LuaGameMgr:GetDifficultMode()
- return UnityEngine.PlayerPrefs.GetInt("DifficultMode") or -1
- end
- function LuaGameMgr:ClearServerData()
- self.serverData = {}
- end
- function LuaGameMgr:ComposeCommonServerInfo(url)
- local openId = self.openId
- if openId and openId ~= '' then
- url = url .. '&openid=' .. tostring(openId)
- end
- local platform = self.platform
- if platform and platform ~= '' then
- url = url .. '&platform=' .. tostring(platform)
- end
- local subplatform = self.channelName
- if subplatform and subplatform ~= '' then
- url = url .. '&sub_platform=' .. tostring(subplatform)
- end
- local resVer = self.ResVersion
- if resVer and resVer ~= '' then
- url = url .. '&resver=' .. tostring(resVer)
- end
- url = url .. '×amp=' .. tostring(os.time())
- return url
- end
- --进入创建角色场景
- function LuaGameMgr:EnterCreateRole(activedCode)
- self.IsCreateRole = true
- self.IsActivationCodeMode = activedCode
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_ENTER_CREATE_ROLE)
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.CreateRoleScene)
- end
- --进入战斗
- function LuaGameMgr:EnterBattle(first)
- if ManagerContainer.FSMMgr:IsBattleState() then
- --ManagerContainer.LuaUIMgr:HideAllPagesExceptId(Enum.UIPageName.UIBattle)
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattle)
- return;
- end
- if first == false then
- local nloadingId = 3
- if self.showNiewbieLoading then
- nloadingId = 2
- self.showNiewbieLoading = false
- end
- self:OpenLoading(Enum.UIPageName.UILoading,{loadingId = nloadingId})
- end
- --ManagerContainer.LuaActorAttributeMgr:SyncServerActorDataToLocal()
- --清空断线后 返回巡游 残留的远征BUFF
- ManagerContainer.LuaActorDataMgr:ResetData()
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.NormalBattleScene,first)
- end
- --进入公会大厅
- function LuaGameMgr:EnterGuildLobby()
- if ManagerContainer.FSMMgr:IsGuildLobbyState() then
- return
- end
- self:OpenLoading(Enum.UIPageName.UILoading)
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.GuildLobbyScene)
- end
- --进入道场
- function LuaGameMgr:EnterDojo(sceneName, ourActors, enemyActors,OurMarks, IsPresspoint,nPresspoint,battleEndConds)
- if ManagerContainer.FSMMgr:IsDojoState() then
- return;
- end
- local param = {}
- param["mode"] = BattleSubMode.Arena
- param["sceneName"] = sceneName
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["battleEndConds"] = battleEndConds
- param["OurBattleMarks"] = OurMarks
- param["IsPresspoint"] = IsPresspoint
- param["nPresspoint"] = nPresspoint
- -- self:OpenLoading(Enum.UIPageName.UILoading)
- self:OpenLoading(Enum.UIPageName.UIDojoMatch, param)
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TowerBattleScene, param)
- end
- function LuaGameMgr:EnterHundredDojo(sceneName, ourActors, enemyActors, maxFightingTime,OurMarks,IsPresspoint,nPresspoint, battleEndConds)
- if ManagerContainer.FSMMgr:IsDojoState() then
- return;
- end
- local param = {}
- param["mode"] = BattleSubMode.HundredDojo
- param["sceneName"] = sceneName
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["maxFightingTime"] = maxFightingTime
- param["OurBattleMarks"] = OurMarks
- param["IsPresspoint"] = IsPresspoint
- param["nPresspoint"] = nPresspoint
- param["battleEndConds"] = battleEndConds
- self:OpenLoading(Enum.UIPageName.UIDojoMatch, param)
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TowerBattleScene, param)
- end
- --工会战
- function LuaGameMgr:EnterGvGBattle(sceneName, ourActors, enemyActors, maxFightingTime, battleEndConds,OurMarksDatas,EnemyMarksDatas,IsPresspoint,nPresspoint)
- if ManagerContainer.FSMMgr:IsDojoState() then
- return;
- end
- local param = {}
- param["mode"] = BattleSubMode.GvG
- param["sceneName"] = sceneName
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["maxFightingTime"] = maxFightingTime
- param["battleEndConds"] = battleEndConds
- param["OurBattleMarks"] = OurMarksDatas
- param["EnemyBattleMarks"] = EnemyMarksDatas
- param["IsPresspoint"] = IsPresspoint
- param["nPresspoint"] = nPresspoint
- self:OpenLoading(Enum.UIPageName.UIDojoMatch, param)
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TowerBattleScene, param)
- end
- function LuaGameMgr:EnterVoyageBattle(sceneName, ourActors, enemyActors, maxFightingTime, ourMarks,IsPresspoint,nPresspoint, battleEndConds)
- if ManagerContainer.FSMMgr:IsDojoState() then
- return;
- end
- local param = {}
- param["mode"] = BattleSubMode.Voyage
- param["sceneName"] = sceneName
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["maxFightingTime"] = maxFightingTime
- param["battleEndConds"] = battleEndConds
- param["OurBattleMarks"] = ourMarks
- param["IsPresspoint"] = IsPresspoint
- param["nPresspoint"] = nPresspoint
- self:OpenLoading(Enum.UIPageName.UIDojoMatch, param)
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TowerBattleScene, param)
- end
- -- 进入资源副本战斗
- function LuaGameMgr:EnterResourceBattle(sceneName,bgmMusic,maxFightingTime,ourActors,enemyActors,battleEndConds)
- if ManagerContainer.FSMMgr:IsTimeBattleState() then
- return
- end
- self:OpenLoading(Enum.UIPageName.UILoading)
- local param = {}
- param["mode"] = BattleSubMode.Resource
- param["sceneName"] = sceneName
- param["bgmMusic"] = bgmMusic
- param["maxFightingTime"] = maxFightingTime
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["battleEndConds"] = battleEndConds
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TimeBattleScene, param)
- end
- -- 进入公会狩猎boss战斗
- function LuaGameMgr:EnterGuildHuntBattle(sceneName, bgmMusic, maxFightingTime, ourActors, enemyActors, battleEndConds)
- if ManagerContainer.FSMMgr:IsTimeBattleState() then
- return
- end
- self:OpenLoading(Enum.UIPageName.UILoading)
- local param = {}
- param["mode"] = BattleSubMode.Guild
- param["sceneName"] = sceneName
- param["bgmMusic"] = bgmMusic
- param["maxFightingTime"] = maxFightingTime
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["battleEndConds"] = battleEndConds
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TimeBattleScene, param)
- end
- -- 进入公会魔王boss战斗
- function LuaGameMgr:EnterGuildHuntExBattle(sceneName, bgmMusic, maxFightingTime, ourActors, enemyActors, battleEndConds)
- if ManagerContainer.FSMMgr:IsTimeBattleState() then
- return
- end
- self:OpenLoading(Enum.UIPageName.UILoading)
- local param = {}
- param["mode"] = BattleSubMode.GuildEx
- param["sceneName"] = sceneName
- param["bgmMusic"] = bgmMusic
- param["maxFightingTime"] = maxFightingTime
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["battleEndConds"] = battleEndConds
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TimeBattleScene, param)
- end
- -- 进入爬塔战斗
- function LuaGameMgr:EnterClimbingTowerBattle(sceneName,bgmMusic,maxFightingTime,ourActors,enemyActors,battleEndConds,recordStr,battleFactors,replayername)
- if ManagerContainer.FSMMgr:IsTimeBattleState() then
- return
- end
- self:OpenLoading(Enum.UIPageName.UILoading)
- local param = {}
- param["mode"] = BattleSubMode.ClimbingTower
- param["sceneName"] = sceneName
- param["bgmMusic"] = bgmMusic
- param["maxFightingTime"] = maxFightingTime
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["battleEndConds"] = battleEndConds
- param["battleRecordStr"] = recordStr
- param["battleFactors"] = battleFactors
- if param["battleRecordStr"] ~= nil then
- param["replayername"] = replayername
- end
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TimeBattleScene, param)
- end
- --PVP 爬塔
- function LuaGameMgr:EnterClimbingTowerBattlePvP(sceneName, bgmMusic,maxFightingTime,ourActors, enemyActors,OurMarks, IsPresspoint,nPresspoint,battleEndConds)
- if ManagerContainer.FSMMgr:IsDojoState() then
- return;
- end
- self:OpenLoading(Enum.UIPageName.UILoading)
- local param = {}
- param["mode"] = BattleSubMode.PvPClimbinglower
- param["sceneName"] = sceneName
- param["bgmMusic"] = bgmMusic
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["maxFightingTime"] = maxFightingTime
- param["OurBattleMarks"] = OurMarks
- param["IsPresspoint"] = IsPresspoint
- param["nPresspoint"] = nPresspoint
- param["battleEndConds"] = battleEndConds
- --self:OpenLoading(Enum.UIPageName.UIDojoMatch, param)
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TowerBattleScene, param)
- end
- -- 进入远征之门战斗
- function LuaGameMgr:EnterExpeditionBattle(sceneName,bgmMusic,maxFightingTime,ourActors,enemyActors,nloadingId,serverActorData,battleEndConds,RestoreSp)
- if ManagerContainer.FSMMgr:IsTimeBattleState() then
- return
- end
- self:OpenLoading(Enum.UIPageName.UILoading,{loadingId = nloadingId})
- local param = {}
- param["mode"] = BattleSubMode.Expedition
- param["sceneName"] = sceneName
- param["bgmMusic"] = bgmMusic
- param["maxFightingTime"] = maxFightingTime
- param["ourActors"] = ourActors
- param["enemyActors"] = enemyActors
- param["battleEndConds"] = battleEndConds
- param["serverActorData"] = serverActorData
- param['RestoreSp'] = RestoreSp
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.TimeBattleScene, param)
- end
- --- 进入世界boss
- ---@param actorDatas Array<ActorData> 进入挑战的其它玩家信息
- ---@param summonId boss等配置Id
- ---@param summonScene 战斗场景配置Id
- function LuaGameMgr:EnterWorldBoss(actorDatas, summonId, summonScene,battleEndConds)
- if ManagerContainer.FSMMgr:IsBossBattleState() then
- return
- end
- self:OpenLoading(Enum.UIPageName.UILoading)
- local param ={}
- param["actors"] = actorDatas
- param["bossId"] = summonId
- param["sceneId"] = summonScene
- param["bossMode"] = BattleSubMode.WorldBoss
- param["battleEndConds"] = battleEndConds
- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.BossBattleScene, param)
- end
- function LuaGameMgr:EnterNewbie()
- if ManagerContainer.FSMMgr:IsBossBattleState() then
- return
- end
- if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UILanuch) == false then
- self:OpenLoading(Enum.UIPageName.UILoading,{loadingId = 1})
- end
- -- local param ={}
- -- param["sceneId"] = 2
- -- param["bossMode"] = BattleSubMode.NewbieBoss
- -- ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.LoadingState.stateId, SceneType.BossBattleScene, param)
- -- self:ShowNewbieLoading()
- self:EnterBattle(true)
- end
- --- 播放剧情动画
- function LuaGameMgr:PlayStory(storyType, storyId)
- if storyType == Enum.StoryType.Dlg then
- if storyId <= 0 then
- storyId = self:GetCurStoryId()
- end
- if storyId then
- ManagerContainer.UIStoryMgr:StartStoryByStoryId(storyId)
- return
- end
- elseif storyType == Enum.StoryType.EnterNewMap then
- if storyId <= 0 then
- storyId = self:GetCurStoryId()
- end
- if storyId then
- if ManagerContainer.StoryMgr:StartStoryChapterById(storyId) then
- return
- end
- end
- end
- self:StopStory(storyType)
- end
- function LuaGameMgr:GetCurStoryId()
- local luaBattleMgr = ManagerContainer.LuaBattleMgr
- if not luaBattleMgr then return nil end
- local id = luaBattleMgr:GetCurLevelUniqueId()
- if not id then return nil end
- local cfgMgr = ManagerContainer.CfgMgr
- if not cfgMgr then return nil end
- local levelCfgData = cfgMgr:GetLevelDataById(id)
- if not levelCfgData then return nil end
- return levelCfgData.DlgContentId
- end
- function LuaGameMgr:StopStory(storyType)
- LuaBattleBridge.CurStoryOver(storyType)
- end
- function LuaGameMgr:SetCreateRoleStatus(status)
- self.IsCreateRole = status
- end
- function LuaGameMgr:OpenLoading(pageId,param)
- self.loadingPageOk = false
- ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_Loaded_Page_OK, self, self.OnLoadingPageOk)
- ManagerContainer.LuaUIMgr:Open(pageId,param)
- end
- function LuaGameMgr:OnLoadingPageOk()
- self.loadingPageOk = true
- ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_Loaded_Page_OK, self, self.OnLoadingPageOk)
- end
- function LuaGameMgr:LoadCommonUIAssets()
- ManagerContainer.ResMgr:LoadAssetGameObjects(Constants.EffectPath, ELoadType.OTHER, function()
- end, unpack(Constant.Quality_FX))
- ManagerContainer.ResMgr:InitCommonMats()
- end
- function LuaGameMgr:ShowNewbieLoading()
- self.showNiewbieLoading = true
- end
- function LuaGameMgr:LuaSaveGameSpeed(speed)
- self:SaveGameSpeed(speed)
- local uid = ManagerContainer.DataMgr.UserData:GetUserId()
- UnityEngine.PlayerPrefs.SetString(tostring(uid).."_GameSpeed",tostring(speed))
- end
- function LuaGameMgr:LoadGameSpeed()
- local uid = ManagerContainer.DataMgr.UserData:GetUserId()
- local speedStr = UnityEngine.PlayerPrefs.GetString(tostring(uid).."_GameSpeed")
- if speedStr ~= nil and speedStr ~= "" then
- self:SaveGameSpeed(tonumber(speedStr))
- else
- self:SaveGameSpeed(1)
- end
- end
- function LuaGameMgr:PreloadFellowsModel()
- if self.isPreloadedFellow == true then
- return
- end
- local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
- local fellows = System.Array.CreateInstance(Enum.TypeInfo.ActorData,#partnerDatas)
- local idx = 0
- for _,v in pairs(partnerDatas) do
- if v ~= nil and not v.isBattle then
- local fellowActor = ActorData.CreateFellowActor(v.configId)
- fellows[idx] = fellowActor
- idx = idx + 1
- end
- end
-
- self:PreloadAllFellows(fellows)
- self.isPreloadedFellow = true
- end
- function LuaGameMgr:UrlQuestionRewardResult(success)
- if success then
- ManagerContainer.DataMgr.UserData:SendQuestionReward()
- end
- end
- function LuaGameMgr:SdkCanEnterServerJudgeResult(value)
- self.canEnterServerState = (value == '1' and Enum.ParamState.Success or Enum.ParamState.Fail)
- end
- return LuaGameMgr
|