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

271 lines
10 KiB
Plaintext

DeathPopView = class("DeathPopView", ContainerView)
-- autoImport("CountDownView")
DeathPopView.ViewType = UIViewType.ReviveLayer
DeathPopView.TextureBg = "persona_bg_npc"
function DeathPopView:Init()
self:initData()
self:initView()
self:addEventListener()
self:AddViewEvts()
end
function DeathPopView:initData( )
-- body
self.isPvpMap = SceneProxy.Instance:IsPvPScene()
self.totalTime = GameConfig.DeathPopViewShowTime.showTime
self.leftTime = self.totalTime
self.costItem = GameConfig.UserRelive.deathcost2[1].id
self.reliveCostCount = GameConfig.UserRelive.deathcost2[1].num
self.isDaoChangMap = DojoProxy.Instance:IsSelfInDojo()
self.currentMap = SceneProxy.Instance.currentScene
self.mapMng = Game.MapManager
end
function DeathPopView:initView( )
-- body
-- self.goldCount = self:FindChild("GoldCount"):GetComponent(UILabel)
self.goldIcon = self:FindGO("gold"):GetComponent(UISprite)
self.title = self:FindGO("deathTitle"):GetComponent(UILabel)
self.title.text = ZhString.DeathPopView_Title
local ReliveInSituLabel = self:FindComponent("ReliveInSituLabel",UILabel)
ReliveInSituLabel.text = ZhString.DeathPopView_ReliveInSitu
self.ReliveInRelivePointLabel = self:FindComponent("ReliveInRelivePointLabel",UILabel)
self.ReliveInRelivePointLabel.text = ZhString.DeathPopView_ReliveInRelivePoint
self.ReliveInSavePointLabel = self:FindComponent("ReliveInSavePointLabel",UILabel)
self.ReliveInSavePointLabel.text = ZhString.DeathPopView_ReliveInSavePoint
local ReliveInRelivePointBtn = self:FindGO("ReliveInRelivePointBtn")
self.timeCt = self:FindGO("timeCt")
self.timeThumnail = self:FindGO("timeThumnail")
self.timeSlider = self:FindComponent("timeSlider",UISlider)
-- local moneytype = GameConfig.UserRelive.deathcost1.moneytype
-- local money = GameConfig.UserRelive.deathcost1.money
-- local param = GameConfig.UserRelive.param
-- local deathCount = 0
-- if(self.isPvpMap)then
-- deathCount = MyselfProxy.Instance:getVarValueByType(Var_pb.EVARTYPE_PVP_DEAD_COUNT)
-- else
-- deathCount = MyselfProxy.Instance:getVarValueByType(Var_pb.EVARTYPE_RELIVE)
-- end
-- if deathCount == nil then
-- deathCount =0
-- end
-- if deathCount >= 9 then
-- deathCount = 9
-- end
-- if self.goldCount ~= nil then
-- self.reliveGoldCount = param*(deathCount+1)*money
-- self.goldCount.text = self.reliveCostCount
self.itemData = Table_Item[self.costItem]
if(self.itemData)then
IconManager:SetItemIcon(self.itemData.Icon,self.goldIcon)
end
-- end
local totalCount =BagProxy.Instance:GetItemNumByStaticID(self.costItem)
self.ReliveInRelivePointBtnBox = self:FindComponent("ReliveInRelivePointBtn",BoxCollider)
self.ReliveInRelivePointBtnSp = self:FindComponent("ReliveInRelivePointBtn",UISprite)
local ReliveInRelivePointBtnCt = self:FindGO("ReliveInRelivePointBtnCt")
self.ReliveInSavePointBtn = self:FindGO("ReliveInSavePointBtn")
local ReliveInSavePointBtnCt = self:FindGO("ReliveInSavePointBtnCt")
local ReliveInSavePointBg = self:FindComponent("ReliveInSavePointBtn",UISprite)
self.ReliveInSituBtnCt = self:FindGO("ReliveInSituBtnCt")
local DeathHint = self:FindComponent("DeathHint",UILabel)
local userData = Game.Myself.data.userdata
local defeat = userData:GetBytes(UDEnum.KILLERNAME)
local base = userData:Get(UDEnum.DROPBASEEXP)
if(self.isPvpMap)then
DeathHint.text = string.format(ZhString.DeathPopView_TitleHintPvP,defeat)
else
DeathHint.text = string.format(ZhString.DeathPopView_TitleHint,defeat,base)
end
if(self.isPvpMap)then
self:Hide(self.ReliveInSituBtnCt)
elseif(self.isDaoChangMap)then
self:Hide(ReliveInRelivePointBtnCt)
self:Hide(self.timeCt)
if(totalCount < self.reliveCostCount)then
self:Hide(self.ReliveInSituBtnCt)
end
-- local btnText = self:FindGO("BtnText",self:FindGO("immediatelyBtn")):GetComponent(UILabel)
-- btnText.text = ZhString.DeathPopView_ImmRelive
-- btnText.transform.localPosition = Vector3.zero
-- btnText = self:FindChild("backToRevivePointBtn"):GetComponentInChildren(UILabel)
-- btnText.text = ZhString.DeathPopView_ReturnRelive
-- self:FindGO("Cost"):SetActive(false)
elseif(not self.isPvpMap)then
-- TimeTickManager.Me():CreateTick(0,10,self.updateCdTime,self)
self:Hide(ReliveInRelivePointBtnCt)
ReliveInSavePointBg.spriteName = "com_btn_3s"
self.ReliveInSavePointLabel.effectColor = Color(41/255,105/255,0,1)
self.timeCt.transform:SetParent(self.ReliveInSavePointBtn.transform,false)
if(totalCount < self.reliveCostCount)then
self:Hide(self.ReliveInSituBtnCt)
end
-- local btnText = self:FindGO("BtnText",self:FindGO("immediatelyBtn")):GetComponent(UILabel)
-- btnText.text = ZhString.DeathPopView_ImmRelive
-- btnText.transform.localPosition = Vector3.zero
-- btnText = self:FindChild("backToRevivePointBtn"):GetComponentInChildren(UILabel)
-- btnText.text = ZhString.DeathPopView_ReturnRelive
-- self:FindGO("Cost"):SetActive(false)
end
if(Game.MapManager:IsGvgMode_Droiyan() or Game.MapManager:IsPVPMode_TeamPws())then
self:Hide(ReliveInSavePointBtnCt) --ReliveInSavePointBtnCt:SetActive(false)
end
local BoundCt = self:FindGO("BoundCt")
local grid = BoundCt:GetComponent(UITable)
grid:Reposition()
local btnCt = self:FindGO("btnCt"):GetComponent(UISprite)
local bound = NGUIMath.CalculateRelativeWidgetBounds(BoundCt.transform,false)
local tmp = bound.size.y+54.0
bound = NGUIMath.CalculateRelativeWidgetBounds(DeathHint.transform,false)
tmp = tmp+bound.size.y
btnCt.height = tmp
-- printRed("size:","btnCt",bound.size.y,tmp,btnCt.height)
-- self.CountDownView = self:AddSubView("CountDownView",CountDownView)
if(self.currentMap:IsInDungeonMap())then
self.ReliveInSavePointLabel.text = ZhString.DeathPopView_ReliveAndLeave
end
self.bgTexture = self:FindComponent("Texture",UITexture)
PictureManager.Instance:SetUI(DeathPopView.TextureBg, self.bgTexture);
self:HandleReliveCd()
end
function DeathPopView:AddViewEvts()
self:AddListenEvt(MyselfEvent.ReliveStatus,self.HandleReliveStatus)
end
function DeathPopView:HandleReliveStatus(note)
self:CloseSelf()
end
function DeathPopView:addEventListener( )
-- body
self:AddButtonEvent("ReliveInSituBtn",function ( obj )
-- body
ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_MONEY)
-- FunctionFollowCaptain.Me():Shutdown()
end)
self:AddButtonEvent("ReliveInRelivePointBtn",function ( obj )
-- body
-- if(self.isPvpMap)then
-- ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RAND)
-- else
ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RETURN)
-- end
end)
self:AddButtonEvent("ReliveInSavePointBtn",function ( obj )
-- body
-- if(self.currentMap:IsInDungeonMap())then
-- ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RETURN)
-- else
-- ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RETURNSAVE)
-- end
-- FunctionFollowCaptain.Me():Shutdown()
-- self:CloseSelf()
if(self.isPvpMap)then
ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RETURNSAVE)
else
ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RETURN)
end
end)
self:AddListenEvt(ServiceEvent.UserEventDieTimeCountEventCmd,self.HandleReliveCd)
end
function DeathPopView:HandleReliveCd(data)
if(self.mapMng:IsPVPMode_GVGDetailed() or self.mapMng:IsGvgMode_Droiyan())then
self.ReliveInSavePointLabel.text = ZhString.DeathPopView_ReliveInSavePoint
local time = MyselfProxy.Instance.reliveStamp
time = time and time or 0
if(time > 0)then
self.ReliveInRelivePointBtnBox.enabled = false
self.ReliveInRelivePointBtnSp.spriteName = "com_btn_3s"
local currentTime = ServerTime.CurServerTime()
currentTime = currentTime / 1000
self.totalTime = math.floor(time - currentTime)
self.title.text = string.format(ZhString.DeathPopView_TitleReliveHintGVG,MyselfProxy.Instance.reliveName)
self.ReliveInRelivePointLabel.effectColor = Color(41/255,105/255,0,1)
if(self.totalTime >0)then
self.Show(self.timeCt)
-- self.timeCt.transform:SetParent(self.ReliveInSavePointBtn.transform,false)
TimeTickManager.Me():ClearTick(self)
TimeTickManager.Me():CreateTick(0,1000,self.updateCdTime,self)
end
else
self.ReliveInRelivePointBtnBox.enabled = false
self.ReliveInRelivePointLabel.effectColor = Color(158/255,158/255,158/255,1)
self.ReliveInRelivePointBtnSp.spriteName = "com_btn_13"
end
end
end
function DeathPopView:OnEnter()
DeathPopView.super.OnEnter(self)
self:sendNotification( MainViewEvent.ActiveShortCutBord, false);
end
function DeathPopView:OnExit()
self:sendNotification( MainViewEvent.ActiveShortCutBord, true);
self.super.OnExit(self)
TimeTickManager.Me():ClearTick(self)
PictureManager.Instance:UnLoadUI(DeathPopView.TextureBg,self.bgTexture);
MyselfProxy.Instance:ClearReliveCd()
end
function DeathPopView:updateCdTime( )
-- body
local currentTime = ServerTime.CurServerTime()
currentTime = currentTime / 1000
local time = MyselfProxy.Instance.reliveStamp
local leftTime = time - currentTime
leftTime = math.floor(leftTime)
local delta = 1 - leftTime/self.totalTime
if(leftTime <= 0)then
-- TimeTickManager.Me():ClearTick(self)
-- self:CloseSelf()
leftTime = 0
local isDead = Game.Myself:IsDead()
if(isDead)then
-- if(self.currentMap:IsInDungeonMap())then
-- ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RETURN)
-- elseif(self.isPvpMap)then
-- ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RAND)
-- else
-- ServiceNUserProxy.Instance:CallRelive(SceneUser2_pb.ERELIVETYPE_RETURNSAVE)
-- end
else
self:CloseSelf()
return
end
-- FunctionFollowCaptain.Me():Shutdown()
end
-- if(self.leftTime <= GameConfig.DeathPopViewShowTime.leftTimeRedLimit)then
-- self.existClock.color = Color(254,6/254.0,6/255.0,1)
-- else
-- -- self.existClock.color = Color(0,0,0,1)
-- end
self.ReliveInRelivePointLabel.text = string.format(ZhString.DeathPopView_ReliveHintDesGVG,leftTime)
self.timeSlider.value = delta
self.timeThumnail.transform.eulerAngles = Vector3(0,0,90-delta*360)
-- self.existClock.text ,_ = math.modf(self.leftTime).."s"
end