2025-06-04 05:02:57 +08:00

250 lines
6.7 KiB
Plaintext

autoImport("MainViewButtonCell")
autoImport("MainViewAuctionCell")
MainViewAuctionPage = class("MainViewAuctionPage",SubView)
local SHOWTYPE = {
More = 1, --拍賣按鈕在更多按鈕里顯示
Public = 2, --拍賣按鈕在主界面顯示
}
local weakDialog = {}
function MainViewAuctionPage:OnExit()
self:ClearTimeTick()
MainViewAuctionPage.super.OnExit(self)
end
function MainViewAuctionPage:Init()
self:AddViewEvt()
self:InitShow()
end
function MainViewAuctionPage:AddViewEvt()
self:AddListenEvt(ServiceEvent.AuctionCCmdNtfAuctionStateCCmd, self.UpdateAuction)
self:AddListenEvt(ServiceEvent.AuctionCCmdNtfCurAuctionInfoCCmd, self.HandleWeakDialog)
self:AddListenEvt(ServiceEvent.AuctionCCmdAuctionDialogCCmd, self.HandleAuctionDialog)
self:AddListenEvt(ServiceEvent.AuctionCCmdNtfOverTakePriceCCmd, self.HandleOverTakePrice)
end
function MainViewAuctionPage:InitShow()
local menuPage = self.container.menuPage
self.moreCtl = UIGridListCtrl.new(menuPage.moreGrid, MainViewButtonCell, "MainViewButtonCell")
self.moreCtl:AddEventListener(MouseEvent.MouseClick, self.ClickButton, self)
self.topRightFuncGrid = self:FindGO("TopRightFunc2"):GetComponent(UIGrid)
self.activityCtl = UIGridListCtrl.new(self.topRightFuncGrid, MainViewAuctionCell, "MainViewAuctionCell")
self.activityCtl:AddEventListener(MouseEvent.MouseClick, self.ClickButton, self)
self.countdownData = {}
self.countdownData.type = MainViewButtonType.Auction
self.countdownData.Name = ZhString.Auction_CountdownName
self.countdownData.Icon = "135"
self.mianViewCountdownData = {}
self.mianViewCountdownData.type = MainViewButtonType.Auction
self.mianViewCountdownData.Name = ZhString.Auction_MainViewCountdownName
self.moreDatas = {}
self.activityDatas = {}
self:UpdateAuction()
end
function MainViewAuctionPage:InitMoreDatas(isAdd)
TableUtility.ArrayClear(self.moreDatas)
if isAdd then
TableUtility.ArrayPushBack(self.moreDatas, self.countdownData)
end
self.moreCtl:ResetDatas(self.moreDatas)
local _RedTipProxy = RedTipProxy.Instance
local redTipId = SceneTip_pb.EREDSYS_AUCTION_RECORD
local cells = self.moreCtl:GetCells()
for i=1,#cells do
_RedTipProxy:RegisterUI(redTipId, cells[i].sprite, 3, {-5,-5})
end
_RedTipProxy:RegisterUI(redTipId, self.container.menuPage.moreBtn, 42)
self.container.menuPage:ResetMenuButtonPosition()
end
function MainViewAuctionPage:InitActivityDatas(isAdd)
TableUtility.ArrayClear(self.activityDatas)
if isAdd then
TableUtility.ArrayPushBack(self.activityDatas, self.mianViewCountdownData)
end
self.activityCtl:ResetDatas(self.activityDatas)
self.topRightFuncGrid.repositionNow = true
end
function MainViewAuctionPage:UpdateAuction()
local curState = AuctionProxy.Instance:GetCurrentState()
if curState == AuctionState.Close then
self:Clear()
return
elseif curState == AuctionState.SignUp or curState == AuctionState.SignUpVerify then
self.countdownData.Name = ZhString.Auction_CountdownName
self.mianViewCountdownData.Name = ZhString.Auction_MainViewCountdownName
elseif curState == AuctionState.Auction then
self:AuctionProgress()
return
elseif curState == AuctionState.AuctionEnd then
self:AuctionEnd()
return
end
local totalSec, hour, min, sec = AuctionProxy.Instance:GetAuctionFormatTime()
if totalSec == nil then
--數據異常
self:Clear()
return
else
if totalSec >= 0 then
if self.timeTick == nil then
self.timeTick = TimeTickManager.Me():CreateTick(0, 1000, self.UpdateCountdown, self)
end
end
end
end
function MainViewAuctionPage:UpdateCountdown()
if GameConfig.Auction == nil or GameConfig.Auction.PublicTime == nil then
helplog("GameConfig.Auction.PublicTime is nil")
return
end
local showType
local totalSec, hour, min, sec = AuctionProxy.Instance:GetAuctionFormatTime()
if totalSec > GameConfig.Auction.PublicTime then
showType = SHOWTYPE.More
else
showType = SHOWTYPE.Public
end
if showType ~= self.auctionShowType then
if showType == SHOWTYPE.More then
self:IsShowPublic(false)
elseif showType == SHOWTYPE.Public then
self:IsShowPublic(true)
self:SetNormalWeakDialog(93)
end
end
if totalSec then
local moreCells = self.moreCtl:GetCells()
for i=1,#moreCells do
moreCells[i]:UpdateAuction(totalSec, hour, min, sec)
end
local activityCells = self.activityCtl:GetCells()
for i=1,#activityCells do
activityCells[i]:UpdateAuction(totalSec, min, sec)
end
end
if totalSec < 0 then
self:ClearTimeTick()
end
end
function MainViewAuctionPage:AuctionProgress()
self:ClearTimeTick()
self.countdownData.Name = ZhString.Auction_ProgressName
self.mianViewCountdownData.Name = ZhString.Auction_MainViewProgressName
self:IsShowPublic(true)
end
function MainViewAuctionPage:AuctionEnd()
self:ClearTimeTick()
self.countdownData.Name = ZhString.Auction_EndName
self.mianViewCountdownData.Name = ZhString.Auction_MainViewEndName
self:IsShowPublic(false)
end
function MainViewAuctionPage:IsShowPublic(isShow)
self:InitMoreDatas(true)
self:InitActivityDatas(isShow)
if isShow then
self.auctionShowType = SHOWTYPE.Public
else
self.auctionShowType = SHOWTYPE.More
end
end
function MainViewAuctionPage:Clear()
self:InitMoreDatas(false)
self:InitActivityDatas(false)
self:ClearTimeTick()
end
function MainViewAuctionPage:ClearTimeTick()
if self.timeTick then
TimeTickManager.Me():ClearTick(self)
self.timeTick = nil
end
end
function MainViewAuctionPage:ClickButton(cellctl)
FunctionSecurity.Me():TryDoRealNameCentify( self._clickButton,cellctl.data );
end
function MainViewAuctionPage._clickButton(data)
if data then
if data.type == MainViewButtonType.Auction then
ServiceAuctionCCmdProxy.Instance:CallReqAuctionInfoCCmd()
end
end
end
function MainViewAuctionPage:SetNormalWeakDialog(dialogId)
self:sendNotification(MyselfEvent.AddWeakDialog, DialogUtil.GetDialogData(dialogId))
end
function MainViewAuctionPage:HandleWeakDialog(note)
local data = note.body
if data then
local dialog = DialogUtil.GetDialogData(92)
if dialog then
local itemData = Table_Item[data.itemid]
if itemData then
TableUtility.TableClear(weakDialog)
weakDialog.Speaker = dialog.Speaker
weakDialog.Text = string.format(dialog.Text, itemData.NameZh)
self:sendNotification(MyselfEvent.AddWeakDialog, weakDialog)
end
end
end
end
function MainViewAuctionPage:HandleAuctionDialog(note)
local data = note.body
if data then
local dialog = DialogUtil.GetDialogData(data.msg_id)
if dialog then
TableUtility.TableClear(weakDialog)
weakDialog.Speaker = dialog.Speaker
weakDialog.Text = string.format(dialog.Text, unpack(data.params))
self:sendNotification(MyselfEvent.AddWeakDialog, weakDialog)
end
end
end
function MainViewAuctionPage:HandleOverTakePrice(note)
local data = note.body
if data then
self:SetNormalWeakDialog(95)
end
end