PGRData/Script/matrix/xui/xuiplanet/fight/XUiPlanetRunningEntity.lua
2024-09-01 22:49:41 +02:00

151 lines
No EOL
4.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.

local XUiPlanetUtil = require("XUi/XUiPlanet/Explore/View/XUiPlanetUtil")
local MAX_ACTION_POINT = 100
---@class XUiPlanetRunningEntity
local XUiPlanetRunningEntity = XClass(nil, "XUiPlanetRunningEntity")
function XUiPlanetRunningEntity:Ctor(ui)
self.GameObject = ui.gameObject
self.Transform = ui.transform
XTool.InitUiObject(self)
self.Mover = self.Transform.parent.parent.transform
self.Position = self:GetPositionOriginal()
self.PositionAttacker = false
self._TargetActionPoint = 0
self._CurrentActionPoint = 0
self.EffectBoom = self.EffectBoom or XUiHelper.TryGetComponent(self.Transform, "EffectBoom", "RectTransform")
self.EffectTrail = self.EffectTrail or XUiHelper.TryGetComponent(self.Transform, "EffectTrail", "RectTransform")
self._ComponentCanvas = XUiHelper.TryGetComponent(self.Transform, "", "Canvas")
if self._ComponentCanvas then
self._OrderInLayerNormal = self._ComponentCanvas.sortingOrder
-- 因为特效的层级设置了24最多6个角色都有canvas这里写40在攻击时提高层级
self._OrderInLayerOnAttack = self._OrderInLayerNormal + 40
end
self:Init()
end
function XUiPlanetRunningEntity:Init()
self.ProgressHp.fillAmount = 0
self.ProgressAction.fillAmount = 0
self:HideHurt()
self:HideCritical()
self:HideEffectBeAttack()
self:HideEffectMove()
end
function XUiPlanetRunningEntity:SetTargetActionPoint(value)
self._CurrentActionPoint = self._TargetActionPoint
self._TargetActionPoint = value
end
function XUiPlanetRunningEntity:SetMaxTargetActionPoint()
self:SetTargetActionPoint(MAX_ACTION_POINT)
end
-- 行动条
function XUiPlanetRunningEntity:UpdateProgressAction(progress)
local actionPoint = self._TargetActionPoint - self._CurrentActionPoint
actionPoint = actionPoint * progress
local fillAmount = self._CurrentActionPoint + actionPoint
self.ProgressAction.fillAmount = fillAmount / MAX_ACTION_POINT
end
function XUiPlanetRunningEntity:ResetProgressAction()
self._CurrentActionPoint = 0
self._TargetActionPoint = 0
--self.ProgressAction.fillAmount = 0
end
function XUiPlanetRunningEntity:SetHp(entity)
if not entity then
XLog.Error("[XUiPlanetRunningEntity] set hp failed, no target")
return
end
local hp = entity.Attribute.Life
local hpMax = math.max(1, entity.Attribute.MaxLife)
self.ProgressHp.fillAmount = hp / hpMax
XUiPlanetUtil.SetHp(self.ProgressHp, hp / hpMax)
self.TextHp.text = string.format("%d/%d", math.floor(hp), math.floor(hpMax))
if hp <= 0 then
self.ProgressAction.fillAmount = 0
end
end
function XUiPlanetRunningEntity:SetPosition(position)
self.Mover.localPosition = position
end
function XUiPlanetRunningEntity:GetPositionOriginal()
return self.Mover.localPosition
end
function XUiPlanetRunningEntity:ResetPosition()
self:SetPosition(self.Position)
end
function XUiPlanetRunningEntity:SetPositionAttacker(position)
self.PositionAttacker = position
end
function XUiPlanetRunningEntity:SetHurt(value)
local text = string.format("-%d", math.abs(math.floor(value)))
self.ComboCountText:TextToSprite(text, 0)
end
function XUiPlanetRunningEntity:HideHurt()
self.ComboCountText:TextToSprite("", 0)
end
function XUiPlanetRunningEntity:SetIcon(icon)
self.ImgIcon:SetRawImage(icon)
end
function XUiPlanetRunningEntity:ShowCritical()
self.PanelIconBaoji.gameObject:SetActiveEx(true)
end
function XUiPlanetRunningEntity:HideCritical()
self.PanelIconBaoji.gameObject:SetActiveEx(false)
end
function XUiPlanetRunningEntity:ShowSeckill()
self.PanelIcoMiaosha.gameObject:SetActiveEx(true)
end
function XUiPlanetRunningEntity:HideSeckill()
self.PanelIcoMiaosha.gameObject:SetActiveEx(false)
end
function XUiPlanetRunningEntity:ShowEffectBeAttack()
self.EffectBoom.gameObject:SetActiveEx(true)
end
function XUiPlanetRunningEntity:HideEffectBeAttack()
self.EffectBoom.gameObject:SetActiveEx(false)
end
function XUiPlanetRunningEntity:ShowEffectMove()
self.EffectTrail.gameObject:SetActiveEx(true)
end
function XUiPlanetRunningEntity:HideEffectMove()
self.EffectTrail.gameObject:SetActiveEx(false)
end
function XUiPlanetRunningEntity:SetOrderInLayerAttack()
if self._ComponentCanvas then
self._ComponentCanvas.sortingOrder = self._OrderInLayerOnAttack
end
end
function XUiPlanetRunningEntity:SetOrderInLayerNormal()
if self._ComponentCanvas then
self._ComponentCanvas.sortingOrder = self._OrderInLayerNormal
end
end
return XUiPlanetRunningEntity