2025-06-04 05:12:01 +08:00

280 lines
8.9 KiB
Plaintext

MainViewFightPage = class("MainViewFightPage",SubView)
local tempVector3 = LuaVector3.zero
MainViewFightPage.TickType ={
DesertWolfPvpCountDown = 1,
GorgeousMetalPvpCount = 2,
}
MainViewFightPage.DouCointItemId = 150
function MainViewFightPage:Init()
self:AddViewEvts()
self:initView()
self:initData()
self:resetData()
end
function MainViewFightPage:resetData( )
self.my_teamscore = nil
self.enemy_teamscore = nil
self.remain_hp = nil
self.player_num = nil
self.score = nil
self.type = nil
self.starttime = nil
self.tickMg:ClearTick(self)
end
function MainViewFightPage:initData( )
-- body
local pvpCg = GameConfig.PVPConfig and GameConfig.PVPConfig[1] or nil
self.yoyoPvpToalNumPl = pvpCg and pvpCg.PeopleLimit or 999
pvpCg = GameConfig.PVPConfig and GameConfig.PVPConfig[2] or nil
self.DesertWolfPvpTotalScore = pvpCg and pvpCg.MaxScore or 999
self.DesertWolfPvpTotalTime = pvpCg and pvpCg.Time or 999
pvpCg = GameConfig.PVPConfig and GameConfig.PVPConfig[3] or nil
self.GorgeousMetalPvpTotalTime = pvpCg and pvpCg.Time or 999
self.tickMg = TimeTickManager.Me()
end
function MainViewFightPage:Show( tarObj )
MainViewFightPage.super.Show(self,tarObj)
if(not tarObj)then
self:SetData()
end
end
function MainViewFightPage:Hide( tarObj )
MainViewFightPage.super.Hide(self,tarObj)
if(not tarObj)then
self:resetData()
end
end
function MainViewFightPage:SetData( )
-- body
local fightInfo = PvpProxy.Instance:GetFightStatInfo()
if(fightInfo)then
local type = fightInfo.pvp_type
self:changeUIByPvpType(type)
if(type == PvpProxy.Type.Yoyo)then
self:SetYoyoData(fightInfo)
elseif(type == PvpProxy.Type.DesertWolf)then
self:SetDesertWolfData(fightInfo)
elseif(type == PvpProxy.Type.GorgeousMetal)then
self:SetGorgeousMetalData(fightInfo)
end
NGUITools.UpdateWidgetCollider (self.bg.gameObject)
self:resizeContent()
end
end
function MainViewFightPage:initView( )
-- body
self.gameObject = self:FindGO("FightInfoBord")
self.name = self:FindComponent("Title",UILabel)
self.countDownLabel = self:FindComponent("CountDownLabel",UILabel)
self.scoreLabel = self:FindComponent("score",UILabel)
self.coinCount = SpriteLabel.CreateAsTable()
self.coinCountLable = self:FindComponent("coinCount",UIRichLabel)
self.coinCount:Init(self.coinCountLable,nil,20,20)
self.bg = self:FindComponent("bg",UISprite)
self.content = self:FindGO("content")
self.bgSizeX = self.bg.width
end
function MainViewFightPage:AddViewEvts()
self:AddListenEvt(ServiceEvent.MatchCCmdNtfFightStatCCmd, self.HandleMatchCCmdNtfFightStatCCmd)
self:AddListenEvt(MyselfEvent.MyDataChange, self.ItemUpdate)
-- local eventManager = EventManager.Me()
-- eventManager:AddEventListener(MyselfEvent.SceneGoToUserCmdHanded, self.SceneGoToUserCmd, self)
end
function MainViewFightPage:ItemUpdate( note )
local userdata = Game.Myself and Game.Myself.data.userdata;
local num = 0
if(userdata)then
num = userdata:Get(UDEnum.PVPCOIN) or 0
end
local str = "{itemicon=%s}%s:%s"
self.coinCount:Reset()
-- local
local itemData = Table_Item[MainViewFightPage.DouCointItemId]
str = string.format(str,MainViewFightPage.DouCointItemId,itemData.NameZh,num)
self.coinCount:SetText(str,true)
end
function MainViewFightPage:HandleMatchCCmdNtfFightStatCCmd( note )
-- body
self:SetData()
end
function MainViewFightPage:changeUIByPvpType( type )
-- body
if(type ~= self.pvpType)then
self.pvpType = type
local x,y,z = LuaGameObject.GetLocalPosition(self.scoreLabel.transform)
if(type == PvpProxy.Type.Yoyo)then
self:Hide(self.countDownLabel)
self.name.text = ZhString.MainViewFightPage_YoyoPvpName
tempVector3:Set(x,-52,z)
self.scoreLabel.transform.localPosition = tempVector3
-- x,y,z = LuaGameObject.GetLocalPosition(self.coinCountLable.transform)
-- tempVector3:Set(x,-52 - self.scoreLabel.height - 5,z)
-- self.coinCountLable.transform.localPosition = tempVector3
elseif(type == PvpProxy.Type.DesertWolf)then
self:Show(self.countDownLabel)
tempVector3:Set(x,-82,z)
self.scoreLabel.transform.localPosition = tempVector3
self.name.text = ZhString.MainViewFightPage_DesertWolfPvpName
elseif(type == PvpProxy.Type.GorgeousMetal)then
self:Show(self.countDownLabel)
tempVector3:Set(x,-82,z)
self.scoreLabel.transform.localPosition = tempVector3
self.name.text = ZhString.MainViewFightPage_GorgeousMetalPvpName
-- x,y,z = LuaGameObject.GetLocalPosition(self.coinCountLable.transform)
-- tempVector3:Set(x,-82 - self.scoreLabel.height - 5,z)
-- self.coinCountLable.transform.localPosition = tempVector3
else
helplog("error unknow pvp type!!!",type)
end
end
end
function MainViewFightPage:SetYoyoData( fightInfo )
-- body
if(fightInfo.player_num ~= self.player_num or fightInfo.score ~= self.score)then
self.player_num = fightInfo.player_num
self.score = fightInfo.score
local score = self.score
if(score > 999)then
score = "999+"
end
-- helplog(ZhString.MainViewFightPage_YoyoPvpScore,
-- fightInfo.player_num,
-- self.yoyoPvpToalNumPl,
-- fightInfo.score)
self.scoreLabel.text = string.format(ZhString.MainViewFightPage_YoyoPvpScore,
fightInfo.player_num,
self.yoyoPvpToalNumPl,
score)
end
self:setScoreLabelX()
end
function MainViewFightPage:setScoreLabelX( )
-- body
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.scoreLabel.transform,true)
local width = bd.size.x
local x,y1,z = LuaGameObject.GetLocalPosition(self.scoreLabel.transform)
tempVector3:Set((self.bgSizeX - width)/2,y1,z)
self.scoreLabel.transform.localPosition = tempVector3
x,y,z = LuaGameObject.GetLocalPosition(self.coinCountLable.transform)
tempVector3:Set(x,y1 - self.scoreLabel.height - 5,z)
self.coinCountLable.transform.localPosition = tempVector3
end
function MainViewFightPage:resizeContent( )
-- body
local bd = NGUIMath.CalculateRelativeWidgetBounds(self.content.transform,true)
local height = bd.size.y
self.bg.height = height +20
end
function MainViewFightPage:SetDesertWolfData( fightInfo )
-- body
if(fightInfo.my_teamscore ~= self.my_teamscore or fightInfo.enemy_teamscore ~= self.enemy_teamscore)then
self.my_teamscore = fightInfo.my_teamscore
self.enemy_teamscore = fightInfo.enemy_teamscore
local my_teamscoreStr = self.my_teamscore
if(my_teamscoreStr > 999)then
my_teamscoreStr = "999+"
end
local enemy_teamscoreStr = self.enemy_teamscore
if(enemy_teamscoreStr > 999)then
enemy_teamscoreStr = "999+"
end
-- helplog(ZhString.MainViewFightPage_DesertWolfPvpScore,
-- fightInfo.my_teamscore,
-- self.DesertWolfPvpTotalScore,
-- fightInfo.enemy_teamscore,
-- self.DesertWolfPvpTotalScore)
self.scoreLabel.text = string.format(ZhString.MainViewFightPage_DesertWolfPvpScore,
my_teamscoreStr,
self.DesertWolfPvpTotalScore,
enemy_teamscoreStr,
self.DesertWolfPvpTotalScore)
end
self:setScoreLabelX()
if(fightInfo.starttime ~= self.starttime)then
self.starttime = fightInfo.starttime
self.tickMg:ClearTick(self)
self.tickMg:CreateTick(0,500,self.updateDesertWolfTime,self,MainViewFightPage.TickType.DesertWolfPvpCountDown)
end
end
function MainViewFightPage:SetGorgeousMetalData( fightInfo )
-- body
if(fightInfo.remain_hp ~= self.remain_hp)then
self.remain_hp = fightInfo.remain_hp
self.scoreLabel.text = string.format(ZhString.MainViewFightPage_GorgeousMetalPvpScore,
fightInfo.remain_hp)
end
self:setScoreLabelX()
if(fightInfo.starttime ~= self.starttime)then
self.starttime = fightInfo.starttime
self.tickMg:ClearTick(self)
self.tickMg:CreateTick(0,500,self.updateGorgeousMetalTime,self,MainViewFightPage.TickType.GorgeousMetalPvpCount)
end
end
function MainViewFightPage:updatePvpTime( totalTime,type )
local pastTime = ServerTime.CurServerTime()/1000 - self.starttime;
local leftTime = totalTime - pastTime
if(leftTime < 0)then
leftTime = 0
self.tickMg:ClearTick(self,type)
end
leftTime = math.floor(leftTime)
local m = math.floor(leftTime / 60)
local mStr = m
if(m < 10 and m > 0) then
mStr = "0"..m
elseif(m == 0)then
mStr = "00"
end
local sd = leftTime - m*60
local sdStr = sd
if(sd < 10 and sd > 0) then
sdStr = "0"..sd
elseif(sd == 0)then
sdStr = "00"
end
leftTime = string.format("%s:%s",mStr,sdStr)
self.countDownLabel.text = leftTime
end
function MainViewFightPage:updateGorgeousMetalTime( )
self:updatePvpTime(self.GorgeousMetalPvpTotalTime,MainViewFightPage.TickType.GorgeousMetalPvpCount)
end
function MainViewFightPage:updateDesertWolfTime( )
self:updatePvpTime(self.DesertWolfPvpTotalTime,MainViewFightPage.TickType.DesertWolfPvpCountDown)
end