---@class KLOpenStallPanel:UIKmlLuaPanelBase ---@field view KLOpenStallPanelView local KLOpenStallPanel = class(UIKmlLuaPanelBase) local this =KLOpenStallPanel function this:AsyncLoadUI() end ---创建时调用一次 function this:Init() GUI:DataListInitData(self.view.notice_data_list,function() return self:NoticeDataListItemCountFunc() end,function(realIndex) return self:NoticeDataListItemGetFunc(realIndex) end,function(realIndex, kmlcontrol) return self:NoticeDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:NoticeDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.notice_all_item = {} self.max_notive = SL:GetConfig("cfg_global",13002).value self.max_notive = tonumber(self.max_notive) local notice = SL:GetConfig("cfg_global",13001).value self.all_notice = SL:Split(notice, '#') self.notice_select = {} GUI:DataListInitData(self.view.city_data_list,function() return self:CityDataListItemCountFunc() end,function(realIndex) return self:CityDataListItemGetFunc(realIndex) end,function(realIndex, kmlcontrol) return self:CityeDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:CityDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.city_all_item = {} self.all_city = {} local allcity = SL:GetConfigTable("cfg_spot") local myLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL) for i=1,#allcity,1 do if allcity[i].level <= myLevel then table.insert(self.all_city,allcity[i]) end end self.select_city = 0 GUI:DataListInitData(self.view.time_data_list,function() return self:timeDataListItemCountFunc() end,function(realIndex) return self:timeDataListItemGetFunc(realIndex) end,function(realIndex, kmlcontrol) return self:timeeDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:timeDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.time_all_item = {} self.all_time = {} self.select_time = 0 self.pos_data = nil GUI:Text_setString(self.view.shuoming,"说明:摆摊后将在主城出现分身进行摆摊,摊位和交易行中同步出售上架道具") end ---注册UI事件和服务器消息 function this:RegistEvents() end ---界面显示时调用一次 function this:Show() end ---创建或者刷新界面数据时调用 function this:Refresh() end function this:Close() end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.btn_close, self, self.ClosePanel) GUI:AddOnClickEvent(self.view.open1, self, self.OpenNotice) GUI:AddOnClickEvent(self.view.close1, self, self.CloseNotice) GUI:AddOnClickEvent(self.view.open2, self, self.OpenCity) GUI:AddOnClickEvent(self.view.close2, self, self.CloseCity) GUI:AddOnClickEvent(self.view.open4, self, self.Opentime) GUI:AddOnClickEvent(self.view.close4, self, self.Closetime) GUI:AddOnClickEvent(self.view.add_btn, self, self.costAddBtn) GUI:AddOnClickEvent(self.view.btn_start, self, self.StartStall) GUI:AddOnClickEvent(self.view.select_view_1_btn, self, self.CloseNotice) GUI:AddOnClickEvent(self.view.select_view_2_btn, self, self.CloseCity) GUI:AddOnClickEvent(self.view.select_view_4_btn, self, self.Closetime) SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_STALL_POSITION,self.RES_STALL_POSITION,self) SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_START_STALL,self.RES_START_STALL,self) end function this:ClosePanel() GUI:UIPanel_Close("dev/outui/Stall/Panel/KLOpenStall/KLOpenStallPanel") end ----摆摊公告 function this:OpenNotice() GUI:setVisible(self.view.open1,false) GUI:setVisible(self.view.close1,true) GUI:setVisible(self.view.select_view_1,true) GUI:DataListUpdateData(self.view.notice_data_list) self:UpdateNotice() end function this:CloseNotice() GUI:setVisible(self.view.open1,true) GUI:setVisible(self.view.close1,false) GUI:setVisible(self.view.select_view_1,false) end function this:NoticeDataListItemCountFunc() return #self.all_notice end function this:NoticeDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/Stall/Item/KLStallNoticeSelectItem/KLStallNoticeSelectItem",self.view.notice_data_list,self,{},true) self.notice_all_item[realIndex+1] = item return item.view.root end function this:NoticeDataListItemInitFunc(realIndex, kmlcontrol) end function this:NoticeDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.all_notice[realIndex + 1] self.notice_all_item[realIndex+1]:RefreshItem({index=realIndex+1,value=data},self.notice_select,self) end function this:AddSelectNotict(select_index) local is_have = false for i=1,#self.notice_select,1 do if self.notice_select[i] == select_index then is_have = true break end end if is_have then return end if self.max_notive <= #self.notice_select then --SL:TipMessage({ "关键词数量已达上限",1, NoticeType.NoticeMid}) SL:TipMessage( SL:GetConfig('cfg_string', 330).text, 1, NoticeType.NoticeMid ) return end table.insert(self.notice_select,select_index) self:RefreshNotice() end function this:CancelSelectNotict(select_index) local is_have = false for i=1,#self.notice_select,1 do if self.notice_select[i] == select_index then is_have = true break end end if not is_have then return end table.removeByValue(self.notice_select,select_index) self:RefreshNotice() end function this:RefreshNotice() for i=1,#self.notice_all_item,1 do self.notice_all_item[i]:CheckShow() end self:UpdateNotice() end function this:UpdateNotice() local str = "" for i=1,#self.notice_select,1 do local ind = self.notice_select[i] str = str .. self.all_notice[ind] .. " " end GUI:Text_setString(self.view.notice_text_1,str) end ----摆摊城市 function this:OpenCity() GUI:setVisible(self.view.open2,false) GUI:setVisible(self.view.close2,true) GUI:setVisible(self.view.select_view_2,true) GUI:DataListUpdateData(self.view.city_data_list) self:UpdateCity() end function this:CloseCity() GUI:setVisible(self.view.open2,true) GUI:setVisible(self.view.close2,false) GUI:setVisible(self.view.select_view_2,false) end function this:SelectCity(id) self.select_city = id self:UpdateCity() self:CloseCity() self:Checktime() self:Updatetime() local _id = self.all_city[self.select_city].id SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_STALL_POSITION, { id = _id }) end function this:UpdateCity() if not self.select_city or self.select_city == 0 then GUI:Text_setString(self.view.notice_text_2,"") return end local map_id = self.all_city[self.select_city].map local mapname = SL:GetConfig("cfg_map_info",map_id,"id").mapname GUI:Text_setString(self.view.notice_text_2,mapname) end function this:CityDataListItemCountFunc() return #self.all_city end function this:CityDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/Stall/Item/KLStallCitySelectItem/KLStallCitySelectItem",self.view.city_data_list,self,{},true) self.city_all_item[realIndex+1] = item return item.view.root end function this:CityeDataListItemInitFunc(realIndex, kmlcontrol) end function this:CityDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.all_city[realIndex + 1] self.city_all_item[realIndex+1]:RefreshItem({index=realIndex+1,message=data},self.select_city,self) end ----摆摊时间 function this:Opentime() GUI:setVisible(self.view.open4,false) GUI:setVisible(self.view.close4,true) GUI:setVisible(self.view.select_view_4,true) self:Updatetime() GUI:DataListUpdateData(self.view.time_data_list) end function this:Closetime() GUI:setVisible(self.view.open4,true) GUI:setVisible(self.view.close4,false) GUI:setVisible(self.view.select_view_4,false) end function this:SelectTime(id) self.select_time = id --self:Checktime() self:Updatetime() self:Closetime() end function this:Updatetime() if not self.select_city or self.select_city == 0 then GUI:Text_setString(self.view.notice_text_3,"") return end if not self.select_time or self.select_time == 0 then GUI:Text_setString(self.view.notice_text_3,"") return end local time = self.all_time[self.select_time].time GUI:Text_setString(self.view.notice_text_4,time.."小时") self:UpdateCost() end function this:Checktime() if self.select_city or self.select_city == 0 then local tab = self.all_city[self.select_city] self.all_time = {} for i=1,#tab.cost,1 do local one_tab = tab.cost[i] table.insert(self.all_time,{id=i,time = one_tab[1],cfg_id = one_tab[2],num=one_tab[3]}) end self.select_time = 1 else self.all_time = {} self.select_time = 0 end end function this:timeDataListItemCountFunc() return #self.all_time end function this:timeDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/Stall/Item/KLStalltimeSelectItem/KLStalltimeSelectItem",self.view.time_data_list,self,{},true) self.time_all_item[realIndex+1] = item return item.view.root end function this:timeeDataListItemInitFunc(realIndex, kmlcontrol) end function this:timeDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.all_time[realIndex + 1] self.time_all_item[realIndex+1]:RefreshItem({index=realIndex+1,message=data},self.select_time,self) end function this:RES_STALL_POSITION(id,message) if not message then return end if not self.select_city or self.select_city == 0 then GUI:Text_setString(self.view.notice_text_2,"") return end local map_id = self.all_city[self.select_city].map local maxSpot = self.all_city[self.select_city].maxSpot local mapname = SL:GetConfig("cfg_map_info",map_id,"id").mapname local str = mapname..": "..message.pointx .. "," .. message.pointy GUI:Text_setString(self.view.notice_text_3,str) local shengyu = maxSpot - message.count local shengyu_str = "(空余摊位".. shengyu .."/" .. maxSpot ..")" if shengyu <= 0 then shengyu_str = "" .. shengyu_str .. "" end self.pos_data = message GUI:Text_setString(self.view.last_num,shengyu_str) end function this:UpdateCost() local cfg_id = self.all_time[self.select_time].cfg_id local name = SL:GetConfig("cfg_item",cfg_id,"id").name GUI:Text_setString(self.view.notice_text_5,name) local needCount = self.all_time[self.select_time].num local haveCount = SL:GetBagItemCount(cfg_id) if haveCount < needCount then GUI:Text_setString(self.view.cost_num, string.format('%d/%d', haveCount, needCount)) else GUI:Text_setString(self.view.cost_num, string.format('%d/%d', haveCount, needCount)) end GUI:Item_setItemId(self.view.cost_item, cfg_id) end function this:costAddBtn() if not self.select_city or self.select_city == 0 then return end if not self.select_time or self.select_time == 0 then return end local cfg_id = self.all_time[self.select_time].cfg_id SL:CommonItemGetPath(nil, cfg_id) end function this:StartStall() if not self.notice_select or #self.notice_select < 1 then SL:TipMessage("请选择摆摊公告",1, NoticeType.NoticeMid) return end if not self.select_city or self.select_city == 0 then SL:TipMessage("请选择摆摊城市",1, NoticeType.NoticeMid) return end if not self.pos_data then SL:TipMessage("请选择摆摊位置",1, NoticeType.NoticeMid) return end if not self.select_time or self.select_time == 0 then SL:TipMessage("请选择摆时长",1, NoticeType.NoticeMid) return end local _id = self.all_city[self.select_city].id local notice = _id .. "#" for i=1,#self.notice_select,1 do local ind = self.notice_select[i] notice = notice .. self.all_notice[ind] if i < #self.notice_select then notice = notice .. " " end end local maxSpot = self.all_city[self.select_city].maxSpot if self.pos_data.count >= maxSpot then SL:TipMessage("摊位数量不足",1, NoticeType.NoticeMid) return end -- local map_id = self.all_city[self.select_city].map -- local serverType = SL:GetConfig("cfg_map_info",map_id,"id").serverType -- if serverType == 2 then -- if not self:CrossServerStall() then -- return -- end -- end SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_START_STALL, { id = _id,title=notice, cost=self.select_time,pointX=self.pos_data.pointx,pointY=self.pos_data.pointy}) end function this:RES_START_STALL(id,message) if message then self:ClosePanel() else end end function this:CrossServerStall() local mapid = SL:GetConfig("cfg_activity_rule",20001).mapid[1] local tab = SL:GetConfig("cfg_map_info",mapid) local message = "" self.level_lock = false self.strength_lock = false self.append_lock = false self.open_level = 0 if tab.condition and #tab.condition > 0 then local condition = tab.condition local level = condition[1] local strength_level = condition[2] local append_level = condition[3] local player_level = SL:GetMetaValue("LEVEL") local all_strength_level = EquipFunc.GetAllStrengthLevel() local all_append_level = EquipFunc.GetAllAppendLevel() if player_level < level then message = message .. "等级" .. level .. "级" self.level_lock = true self.open_level = level end if all_strength_level < strength_level then if not string.isNullOrEmpty(message) then message = message .. "," end message = message .. "强化总等级" .. strength_level self.strength_lock = true end if all_append_level < append_level then if not string.isNullOrEmpty(message) then message = message .. "," end message = message .. "追加总等级" .. append_level self.append_lock = true end if not string.isNullOrEmpty(message) then message = message .. "可进入" end end if self.level_lock then SL:TipMessage( self.open_level.."级开启,无法进入", 1, NoticeType.NoticeMid ) return end if self.strength_lock then SL:TipMessage( SL:GetConfig('cfg_string',257).text,1, NoticeType.NoticeMid )--"全身强化等级不足,无法进入", return end if self.append_lock then SL:TipMessage(SL:GetConfig('cfg_string',257).text, 1, NoticeType.NoticeMid )--"全身追加等级不足,无法进入", return end -- if not self:IsHavePrivilege() then -- SL:TipMessage({ SL:GetConfig('cfg_string',258).text, 1, NoticeType.NoticeLeftBottom })--"月卡时间不足,无法使用地图传送功能", -- return -- end return true end function this:IsHavePrivilege() if InfoManager.monthCardInfo.IsGetMonthCard or InfoManager.monthCardInfo.IsGetDailyCard then --有月卡或是日卡 return true end return false end return this