Files
Main/Assets/GameAssets/Resources/Lua/UI/Forms/UIGetAuctionItemTIps/UIGetAuctionItemTIps.lua
2025-01-25 04:38:09 +08:00

301 lines
9.5 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

------------------------------------------------
--作者: 杨全福
--日期: 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