local GuildMine_Controller = {} local private = {} private.curSelectKingdomId = 0 -- 设置当前进入布阵时的国别,跨天时进行判断 local EventSystem = require('Event/EventSystem') function GuildMine_Controller.OnStartup() EventSystem.Regist(EventID.FunctionUnlockUpdate, private.CheckIfFuncUnlock) -- GMS end function private.CheckIfFuncUnlock(funcId, isUnlock) if funcId == MDL.Unlock.FunctionType.GuildMine and not isUnlock then EventSystem.Dispatch(EventID.UI_GuildMine_CloseView) end end function GuildMine_Controller.OpenGuildMineMainView() if CTL.Activities.IsActivityInOpeningTime(LuaConst.ActivityType.GuildMine) then if MDL.Guild.IsHasGuild() then UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineMain) MDL.GuildMine.GetMineInterfaceInfoRequest(MDL.GuildMine.InterfaceType.Refresh) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_OfficialPrivilege_JoinGuild) -- 请加入一个势力 end else CTL.Tips.AddTipsMsg(Const_IDS.IDS_RebelStrike_NotAtActivityTime) -- 不在活动时段内 end end -- 购买抢夺次数 function GuildMine_Controller.OpenTimeUpView() local activityID = LuaConst.ActivityType.GuildMine local MinePlunderCostDataCount = DataSheetManager.MinePlunderCost:GetDataCount() if MinePlunderCostDataCount - MDL.GuildMine.GetMinePurchaseNum() > 0 then UIManager.OpenView(Const_UI_Lua.UIEnum.UIItemBuyPanel, { type = activityID }) else local desc = MDL.OfficialPosition.GetPurchaseTimesDesc(activityID) if desc then CTL.Tips.AddTipsMsg(desc) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_HeroBiography_NoPayTime) end end end --region -------------------- 布阵相关 ------------------------------ function GuildMine_Controller.SetCurSelectKingdom() private.curSelectKingdomId = MDL.GuildMine.GetMineCurKingdomId() end function GuildMine_Controller.IsKindDomChanged() return private.curSelectKingdomId ~= MDL.GuildMine.GetMineCurKingdomId() end function GuildMine_Controller.IsTeamSlotUnlock(teamID) local slotUnlockList = DataSheetManager.ConstData:GetDataByID("MineLineup").IntListValue local unlockLv = slotUnlockList[teamID] local isUnlock = MDL.HeroSelect.GetTeamLevel() >= unlockLv return isUnlock end -- 是否已经布阵 function GuildMine_Controller.IsFormationFinished(kingdom) local lineUpHeroList = MDL.GuildMine.GetLineUpInfo(kingdom) if not lineUpHeroList then return false end for teamID = 1, 3 do local isUnlock = GuildMine_Controller.IsTeamSlotUnlock(teamID) if isUnlock then local pos1, pos2 = CTL.FreeLineUp.GetLineUpPosNumByTeamID(teamID) if lineUpHeroList[pos1] and lineUpHeroList[pos1].heroId > 0 then return true end end end return false end function GuildMine_Controller.OpenSelectOfficerMessageBox() UTL.MessageBox.ShowOKCancelBox( nil, UIUtils.GetLocalizedTxt(Const_IDS["IDS_NationClimbTower_GoToSave"]), function() UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineSelectOfficer, { freeLineupFuncType = MDL.FreeLineUp.FuncType.GuildMine, activityType = LuaConst.ActivityType.GuildMine }, "DemonGod/UIDemonGodSelectOfficer" ) end ) end --endregion ---@public 打开结算界面 function GuildMine_Controller.ShowGuildMineSummary(msg) CTL.HomeMain.CloseOpenView() local finishMineInfo = MDL.GuildMine.BattleData if finishMineInfo.fightType == MDL.GuildMine.GuidMineOpType.Assist then UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineSummaryHelp, {isWin = msg.isWin, Time = msg.passTime, finishMineInfo = finishMineInfo}) else UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineSummaryPlunder, {isWin = msg.isWin, Time = msg.passTime, finishMineInfo = finishMineInfo}) end end -- 战斗返回打开到对应矿场界面 function GuildMine_Controller.OpenGuildMineView() -- 是否有势力(可能战斗时被势力踢了) if MDL.Guild.IsHasGuild() then UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineMain) MDL.GuildMine.GetMineInterfaceInfoRequest(MDL.GuildMine.InterfaceType.Open) local battleType = MDL.GuildMine.BattleData.fightType if battleType == MDL.GuildMine.GuidMineOpType.FightBack then UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineDailyRecord) elseif battleType == MDL.GuildMine.GuidMineOpType.Assist then UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineHelpPopUp) end end end return GuildMine_Controller