------------------------------------------------ --作者: 杨全福 --日期: 2020-04-21 --文件: UIGetAuctionItemTIps.lua --模块: UIGetAuctionItemTIps --描述: 快捷上架界面 ------------------------------------------------ local UIGetAuctionItemTIps = { CloseBtn = nil, BackTex = nil, WorldBtn = nil, GuildBtn = nil, ItemScroll = nil, ItemRes = nil, ItemGrid = nil, NotItemGo = nil, SelectPanel = 0, ItemList = nil, CanAuctionCount = nil, SelfRemainCount = 0, UpdateList = false, --上架魔魂需求的vip等级 DevilEquipSellNeedVipLevel = 0, } -- 继承Form函数 function UIGetAuctionItemTIps:OnRegisterEvents() self:RegisterEvent(UIEventDefine.UIGetAuctionItemTIps_OPEN, self.OnOpen) self:RegisterEvent(UIEventDefine.UIGetAuctionItemTIps_CLOSE, self.OnClose) self:RegisterEvent(LogicLuaEventDefine.EID_EVENT_AUCTION_UP_SUCC, self.OnUpSucc) end local L_AuctionItem = nil function UIGetAuctionItemTIps:OnFirstShow() local _trans = self.Trans self.CloseBtn = UIUtils.FindBtn(_trans, "CloseBtn") UIUtils.AddBtnEvent(self.CloseBtn, self.OnCloseBtnClick, self) self.BackTex = UIUtils.FindTex(_trans, "BackTex") self.WorldBtn = UIUtils.FindBtn(_trans, "WorldSell") UIUtils.AddBtnEvent(self.WorldBtn, self.OnWorldBtnClick, self) self.GuildBtn = UIUtils.FindBtn(_trans, "GuildSell") UIUtils.AddBtnEvent(self.GuildBtn, self.OnGuildBtnClick, self) self.ItemScroll = UIUtils.FindScrollView(_trans, "ItemScroll") self.ItemRes = UIUtils.FindGo(_trans, "ItemScroll/Grid/Item") self.ItemGrid = UIUtils.FindGrid(_trans, "ItemScroll/Grid") self.NotItemGo = UIUtils.FindGo(_trans, "NotItemGo") self.CanAuctionCount = UIUtils.FindLabel(_trans, "CanSJCount/Value") self.CSForm:AddNormalAnimation(0.3) self.ItemList = List:New() local _parentTrans = self.ItemGrid.transform for i = 0, _parentTrans.childCount - 1 do local _item = L_AuctionItem:New(_parentTrans:GetChild(i), self) self.ItemList:Add(_item) end local _gCfg = DataConfig.DataGlobal[GlobalName.DevilSoul_Trade_VIP_Limit] if _gCfg ~= nil then local _levels = Utils.SplitNumber(_gCfg.Params, '_') self.DevilEquipSellNeedVipLevel = tonumber(_levels[1]) end end function UIGetAuctionItemTIps:OnShowAfter() self.UpdateList = true self.CSForm:LoadTexture(self.BackTex, AssetUtils.GetImageAssetPath(ImageTypeCode.UI, "tex_n_d_2")) end function UIGetAuctionItemTIps:OnHideAfter() end function UIGetAuctionItemTIps:OnOpen(obj, sender) self.CSForm:Show(sender) end function UIGetAuctionItemTIps:OnClose(obj, sender) self.CSForm:Hide() end function UIGetAuctionItemTIps:OnUpSucc(obj, sender) self.UpdateList = true end function UIGetAuctionItemTIps:Update(dt) if self.UpdateList then self:RefreshPage() self.UpdateList = false end end --更新数量 function UIGetAuctionItemTIps:UpdateSelectCount() local _curSelectCount = 0 for i = 1, #self.ItemList do if self.ItemList[i].IsSelect and self.ItemList[i].ItemDBID > 0 then _curSelectCount = _curSelectCount + 1 end end UIUtils.SetTextByEnum(self.CanAuctionCount, "ShowNum", self.SelfRemainCount - _curSelectCount) end --是否可以继续选择 function UIGetAuctionItemTIps:CanSelect() local _curSelectCount = 0 for i = 1, #self.ItemList do if self.ItemList[i].IsSelect and self.ItemList[i].ItemDBID > 0 then _curSelectCount = _curSelectCount + 1 end end if _curSelectCount >= self.SelfRemainCount then return false end return true end --刷新界面 function UIGetAuctionItemTIps:RefreshPage() self.SelfRemainCount = GameCenter.AuctionHouseSystem.MaxAuctionCount - GameCenter.AuctionHouseSystem.SelfAuctionCount local _bagTableList = GameCenter.AuctionHouseSystem:GetCanSellItems(true) local _uiCount = #self.ItemList for i = 1, _uiCount do self.ItemList[i]:SelInto(nil) end local _itemCount = #_bagTableList if _itemCount <= 0 then self.ItemScroll.gameObject:SetActive(false) self.NotItemGo:SetActive(true) else self.ItemScroll.gameObject:SetActive(true) self.NotItemGo:SetActive(false) for i = 1, _itemCount do local _uiItem = nil if i <= #self.ItemList then _uiItem = self.ItemList[i] else _uiItem = L_AuctionItem:New(UnityUtils.Clone(self.ItemRes).transform, self) self.ItemList:Add(_uiItem) end _uiItem:SelInto(_bagTableList[i]) end self.ItemGrid:Reposition() self.ItemScroll.repositionWaitFrameCount = 2 end self:UpdateSelectCount() end --点击界面上关闭按钮 function UIGetAuctionItemTIps:OnCloseBtnClick() self:OnClose() end --世界上架按钮点击 function UIGetAuctionItemTIps:OnWorldBtnClick() self:UpAuction(0) end --帮会上架按钮点击 function UIGetAuctionItemTIps:OnGuildBtnClick() self:UpAuction(1) end --上架选择的物品 function UIGetAuctionItemTIps:UpAuction(type) --判断是否可以公会上架 if type == 1 and not GameCenter.GuildSystem:HasJoinedGuild() then Utils.ShowPromptByEnum("PutawayGuildTips") return end local _isAuction = false for i = 1, #self.ItemList do local _item = self.ItemList[i] if _item.ItemDBID > 0 and _item.IsSelect then _isAuction = true GameCenter.Network.Send("MSG_Auction.ReqAuctionInfoPut", {itemUid = _item.ItemDBID, num = _item.ItemCount, type = type}) end end if not _isAuction then Utils.ShowPromptByEnum("PleaseSelectGoods") else Utils.ShowPromptByEnum("BatchPutawaySucceed") end end L_AuctionItem = { RootGo = nil, Btn = nil, SelectGo = nil, CurPrice = nil, CurIcon = nil, MaxPrice = nil, MaxIcon = nil, UIItem = nil, Name = nil, IsSelect = false, ItemDBID = 0, ItemCount = 0, ItemInstType = 0, } function L_AuctionItem:New(trans, parent) local _m = Utils.DeepCopy(self) _m.Parent = parent _m.RootGo = trans.gameObject _m.Btn = UIUtils.FindBtn(trans) UIUtils.AddBtnEvent(_m.Btn, _m.OnBtnClick, _m) _m.SelectGo = UIUtils.FindGo(trans, "Select") _m.CurPrice = UIUtils.FindLabel(trans, "CurPrice/NumLabel") _m.MaxPrice = UIUtils.FindLabel(trans, "MaxPrice/NumLabel") _m.UIItem = UILuaItem:New(UIUtils.FindTrans(trans, "UIItem")) _m.Name = UIUtils.FindLabel(trans, "NameLabel") _m.CurIcon = UIUtils.RequireUIIconBase(UIUtils.FindTrans(trans, "CurPrice/Icon")) _m.MaxIcon = UIUtils.RequireUIIconBase(UIUtils.FindTrans(trans, "MaxPrice/Icon")) return _m end function L_AuctionItem:SelInto(itemInfo) if itemInfo == nil then self.RootGo:SetActive(false) self.ItemDBID = 0 self.IsSelect = false else self.RootGo:SetActive(true) self:SetSelect(false) self.ItemDBID = itemInfo.DBID self.ItemCount = itemInfo.Count self.ItemInstType = itemInfo.Type self.UIItem:InitWithItemData(itemInfo) UIUtils.SetTextFormat(self.Name, "[{0}]{1}", Utils.GetQualityStrColor(itemInfo.Quality), itemInfo.Name) local _addPirce = 0 local _minPrice = 0 local _maxPrice = 0 local _equipCfg = DataConfig.DataEquip[itemInfo.CfgID] local _itemCfg = DataConfig.DataItem[itemInfo.CfgID] local _useCion = nil if _equipCfg ~= nil then _addPirce = _equipCfg.AuctionSinglePrice _minPrice = _equipCfg.AuctionMinPrice _maxPrice = _equipCfg.AuctionMaxPrice _useCion = DataConfig.DataItem[_equipCfg.AuctionUseCoin] elseif _itemCfg ~= nil then _addPirce = _itemCfg.AuctionSinglePrice _minPrice = _itemCfg.AuctionMinPrice _maxPrice = _itemCfg.AuctionMaxPrice _useCion = DataConfig.DataItem[_itemCfg.AuctionUseCoin] end self.CurIcon:UpdateIcon(_useCion.Icon) self.MaxIcon:UpdateIcon(_useCion.Icon) local _count = itemInfo.Count if _count <= 0 then _count = 1 end if _addPirce <= 0 then UIUtils.SetTextByEnum(self.CurPrice, "NULL") else UIUtils.SetTextByNumber(self.CurPrice, _count * _minPrice) end if _maxPrice <= 0 then UIUtils.SetTextByEnum(self.MaxPrice, "NULL") else UIUtils.SetTextByNumber(self.MaxPrice, _count * _maxPrice) end end end function L_AuctionItem:SetSelect(select) self.IsSelect = select self.SelectGo:SetActive(select) end function L_AuctionItem:OnBtnClick() if not self.IsSelect and not self.Parent:CanSelect() then Utils.ShowPromptByEnum("ShelfFull") return end if not self.IsSelect then --魔魂装备,判断玩家vip等级是否足够 if self.ItemInstType == ItemType.DevilSoulChip and self.Parent.DevilEquipSellNeedVipLevel > 0 then local _vipLevel = GameCenter.VipSystem:GetVipLevel() if _vipLevel < self.Parent.DevilEquipSellNeedVipLevel then Utils.ShowPromptByEnum("Devil_Trade_VIP_Limit_Push_Title", self.Parent.DevilEquipSellNeedVipLevel) return end if not GameCenter.VipSystem:BaoZhuIsOpen() then Utils.ShowPromptByEnum("C_AUCTION_MHSELL_BAOZHU") return end end end self:SetSelect(not self.IsSelect) self.Parent:UpdateSelectCount() end return UIGetAuctionItemTIps