Files
Main/Assets/GameAssets/Resources/Lua/UI/Forms/UIGetAuctionItemTIps/UIGetAuctionItemTIps.lua

301 lines
9.5 KiB
Lua
Raw Normal View History

2025-01-25 04:38:09 +08:00
------------------------------------------------
--作者: 杨全福
--日期: 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