123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- ---@class KLUIMapBranchPanel:UIKmlLuaPanelBase
- ---@field view KLUIMapBranchPanelView
- ---@field mapBranchItemList KLMapBranchItem[]
- ---@field cfgLineInfo table<number,{mapInfoId:number,mapMoveId:number}>
- local KLUIMapBranchPanel = class(UIKmlLuaPanelBase)
- local this =KLUIMapBranchPanel
- ---创建时调用一次
- function this:Init()
-
- end
- E_MapType = {
- Normal = enum(0),
- Gold = enum(1),
- }
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- ---@type cfg_map_line_column
- self.mapLineInfo = SL:GetConfig("cfg_map_line", SL:GetMetaValue(EMetaVarGetKey.MAP_ID))
- self.mapLine = SL:GetMetaValue(EMetaVarGetKey.MAP_LINE)
- ---@type cfg_mapMove_column
- self.mapMoveId = SL:GetConfigMultiKeys("cfg_mapMove", SL:GetMetaValue(EMetaVarGetKey.MAP_ID), "mapID").id
- self.cfgLineInfo = self:GetLineInfo()
- self.serverLineInfo = {}
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MAP_INFO,self.cfgLineInfo[E_MapType.Normal].mapInfoId)
- if self:IsHasGoldLine() then
- GUI:setVisible(self.view.gold_toggle,true)
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MAP_INFO,self.cfgLineInfo[E_MapType.Gold].mapInfoId)
- else
- GUI:setVisible(self.view.gold_toggle,false)
- end
-
- if self:CurrentIsInGoldMap() then
- self.select_type = E_MapType.Gold
- GUI:Toggle_setIsOn(self.view.gold_toggle,true)
- else
- self.select_type = E_MapType.Normal
- GUI:Toggle_setIsOn(self.view.normal_toggle,true)
- end
- self.mapBranchItemList = {}
- GUI:ToggleGroup_AllowSwitChoff(self.view.switch_branch_togglegroup,true)
-
- end
- function this:RefreshLineState(currentLine,allLine,isGlod)
- local currentLineStr = "当前线路:%d"
- if isGlod and not self:CurrentIsInGoldMap() then
- GUI:Text_setString(self.view.currentLine_txt,string.format("当前线路:%d",0))
- elseif not isGlod and self:CurrentIsInGoldMap() then
- GUI:Text_setString(self.view.currentLine_txt,string.format(currentLineStr,0))
- else
- GUI:Text_setString(self.view.currentLine_txt,string.format(currentLineStr,currentLine))
- end
- local allLineLineStr = "线路总数:%d"
- GUI:Text_setString(self.view.allLine_txt,string.format(allLineLineStr,allLine))
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.closeBtn, self, self.CloseSelf)
- GUI:AddOnClickEvent(self.view.redName_btn, self, self.OpenRedNameTips)
- GUI:SetToggleOnValueChange(self.view.gold_toggle,self,self.ToggleGoldOnValueChange)
- GUI:SetToggleOnValueChange(self.view.normal_toggle,self,self.ToggleNormalOnValueChange)
- --SL:RegisterLuaNetMsg(MessageDef.ResThisMapLineInfoMessage, self.ResThisMapLineInfoMessage, self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_MAP_INFO , self.RES_MAP_INFO , self)
- end
- ---@param message OutMapProtos.LineInfo[]
- function this:RES_MAP_INFO(_, message)
- if message then
- self:ChangeDataStruct(message)
- local line = SL:GetConfig("cfg_map_info", message["1"].mapCfgId)
- local goldmap = line.goldmap
- if self.select_type ~= goldmap then
- return
- end
- if goldmap == E_MapType.Gold then
- if self.serverLineInfo[E_MapType.Gold] then
- self:RefreshLineInfo(self.serverLineInfo[E_MapType.Gold],true)
- end
- else
- self:RefreshLineInfo(self.serverLineInfo[E_MapType.Normal])
- end
- end
- end
- ---@param message MapProtos.MapLinesInfo
- --function this:ResThisMapLineInfoMessage(_, message)
- -- if message then
- -- self.mapLinesInfo = message
- -- self:RefreshLineInfo(message)
- -- end
- --end
- ---@param message OutMapProtos.LineInfo[]
- function this:ChangeDataStruct(message)
- local data = {}
- local line = SL:GetConfig("cfg_map_info", message["1"].mapCfgId)
- local isGold = line.goldmap == 1
- for i, v in pairs(message) do
- if isGold then
- if not self.serverLineInfo[E_MapType.Gold] then
- self.serverLineInfo[E_MapType.Gold] = {}
- end
- self.serverLineInfo[E_MapType.Gold][tonumber(v.line)] = v
- else
- if not self.serverLineInfo[E_MapType.Normal] then
- self.serverLineInfo[E_MapType.Normal] = {}
- end
- self.serverLineInfo[E_MapType.Normal][tonumber(v.line)] = v
- end
- end
- return data
- end
- ---@param message OutMapProtos.LineInfo[]
- function this:RefreshLineInfo(message,isGlod)
- if message then
- self:RefreshLineState(SL:GetMetaValue(EMetaVarGetKey.MAP_LINE),#message,isGlod)
- for i, v in ipairs(self.mapBranchItemList) do
- v:HideItemUI()
- end
- --table.sort(message, function(a,b)
- -- return a.line < b.line
- --end)
- local maxCount = self.mapLineInfo.lineState[#self.mapLineInfo.lineState]
- if not isGlod then
- self.select_type = E_MapType.Normal
- for i, v in ipairs(message) do
- if not self.mapBranchItemList[i] then
- self.mapBranchItemList[i] = GUI:UIPanel_Open("dev/ui/Map/Item/KLMapBranch/KLMapBranchItem",self.view.branch_layout,self,nil,true)
- end
- self.mapBranchItemList[i]:RefreshUI(self.cfgLineInfo[E_MapType.Normal][i], v.playerCount, maxCount,false,self.mapLineInfo.pkline)
- self.mapBranchItemList[i]:SetOnValueChange(self.ToggleChangeEvent, self)
- end
- else
- self.select_type = E_MapType.Gold
- for i, v in ipairs(message) do
- i = tonumber(i)
- if not self.mapBranchItemList[i] then
- self.mapBranchItemList[i] = GUI:UIPanel_Open("dev/ui/Map/Item/KLMapBranch/KLMapBranchItem",self.view.branch_layout,self,nil,true)
- end
- self.mapBranchItemList[i]:RefreshUI(self.cfgLineInfo[E_MapType.Gold][i], v.playerCount, maxCount,true,self.mapLineInfo.pkline)
- self.mapBranchItemList[i]:SetOnValueChange(self.ToggleChangeEvent, self)
- end
- end
- end
- end
- function this:ToggleNormalOnValueChange(_,_,value)
- if value[1] then
- self:RefreshLineInfo(self.serverLineInfo[E_MapType.Normal])
- end
- end
- function this:ToggleGoldOnValueChange(_,_,value)
- if value[1] then
- self:RefreshLineInfo(self.serverLineInfo[E_MapType.Gold],true)
- end
- end
- function this:ToggleChangeEvent(_, eventData)
- self.mapLine = eventData.data
- end
- function this:CloseSelf()
- GUI:UIPanel_Close("dev/ui/Map/Panel/KLUIMapBranch/KLUIMapBranchPanel")
- SL.ShowMainPanel()
- end
- function this:SwitchBranchClick(isGoldMap)
- SL:showTransferAnimation()
- SL:ScheduleOnce(0.8, function()
- if isGoldMap then
- SL:MapTransfer(nil,self.mapLine,self.cfgLineInfo[E_MapType.Gold].mapMoveId)
- else
- SL:MapTransfer(nil,self.mapLine,self.cfgLineInfo[E_MapType.Normal].mapMoveId)
- end
- end)
- self:CloseSelf()
- end
- function this:OpenRedNameTips()
- local helpCfg=SL:GetConfig("cfg_rule_text",4)
- if helpCfg then
- SL:CommonStrTipsMessage({title =helpCfg.menutxt,str=helpCfg.location})
- end
- end
- function this:GetLineInfo()
- local lineInfo = {}
- ---@type cfg_mapMove_column
- local mapMoveCfg = SL:GetConfigMultiKeys("cfg_mapMove", SL:GetMetaValue(EMetaVarGetKey.MAP_ID), "mapID")
- if mapMoveCfg.goldgroup == 0 then
- lineInfo[E_MapType.Normal] = SL:GetConfig("cfg_map_line",mapMoveCfg.mapID).mapLine
- lineInfo[E_MapType.Normal].mapMoveId = mapMoveCfg.id
- lineInfo[E_MapType.Normal].mapInfoId = mapMoveCfg.mapID
- else
- ---@type cfg_mapMove_column[]
- local cfgs = SL:FindConfigs("cfg_mapMove","goldgroup",mapMoveCfg.goldgroup)
- for i, v in pairs(cfgs) do
- ---@type cfg_map_info_column
- local info = SL:GetConfig("cfg_map_info",v.mapID)
- if info.goldmap == 0 then
- lineInfo[E_MapType.Normal] = SL:GetConfig("cfg_map_line",v.mapID).mapLine
- lineInfo[E_MapType.Normal].mapMoveId = v.id
- lineInfo[E_MapType.Normal].mapInfoId = v.mapID
- else
- lineInfo[E_MapType.Gold] = SL:GetConfig("cfg_map_line",v.mapID).mapLine
- lineInfo[E_MapType.Gold].mapMoveId = v.id
- lineInfo[E_MapType.Gold].mapInfoId = v.mapID
- end
- end
- end
- return lineInfo
- end
- function this:IsHasGoldLine()
- if self.cfgLineInfo[E_MapType.Gold] then
- return true
- end
- return false
- end
- function this:CurrentIsInGoldMap()
- ---@type cfg_map_info_column
- local infoCfg = SL:GetConfig("cfg_map_info",tonumber(SL:GetMetaValue(EMetaVarGetKey.MAP_ID)))
- return infoCfg.goldmap == 1
- end
- function this:Close()
- self.serverLineInfo = nil
- end
- return this
|