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

96 lines
2.1 KiB
Plaintext

FunctionDamageNum = class("FunctionDamageNum")
autoImport("StaticHurtNum");
autoImport("DynamicHurtNum");
function FunctionDamageNum.Me()
if nil == FunctionDamageNum.me then
FunctionDamageNum.me = FunctionDamageNum.new()
end
return FunctionDamageNum.me
end
function FunctionDamageNum:ctor()
self.sNumArrayMap = {
[ HurtNumColorType.Combo ] = {},
};
local dNumArrayMap = {}
for k,v in pairs(HurtNumColorType) do
dNumArrayMap[v] = {}
end
self.dNumArrayMap = dNumArrayMap
end
function FunctionDamageNum:GetStaticHurtLabelWorker()
local colorType = HurtNumColorType.Combo;
local comboArray = self.sNumArrayMap[colorType];
if( #comboArray >= HurtNumLimit[colorType] )then
local numCell = table.remove(comboArray, 1);
if(numCell.Hide)then
numCell:Hide();
end
end
local hurtHum = StaticHurtNum.CreateAsTable(colorType);
hurtHum:RegisterWeakObserver(self);
table.insert(comboArray, hurtHum);
return hurtHum;
end
local hurtNumArgs = {};
function FunctionDamageNum:ShowDynamicHurtNum(pos, text, type, hurtNumColorType, critType)
TableUtility.ArrayClear(hurtNumArgs);
hurtNumArgs[1] = pos;
hurtNumArgs[2] = text;
hurtNumArgs[3] = type;
hurtNumArgs[4] = hurtNumColorType;
hurtNumArgs[5] = critType or HurtNum_CritType.None;
local hurtHum = DynamicHurtNum.CreateAsTable(hurtNumArgs);
hurtHum:RegisterWeakObserver(self);
if(hurtNumColorType)then
local arrayMap = self.dNumArrayMap[hurtNumColorType];
if(#arrayMap >= HurtNumLimit[ hurtNumColorType ])then
local numCell = arrayMap[1];
numCell:Destroy();
end
table.insert(arrayMap, hurtHum);
end
return hurtHum;
end
function FunctionDamageNum:ObserverDestroyed(obj)
if(not obj)then
return;
end
local colorType = obj.colorType;
local arrayMap = colorType and self.sNumArrayMap[colorType]
if(arrayMap)then
for i=1,#arrayMap do
if(arrayMap[i] == obj)then
table.remove(arrayMap, i);
return;
end
end
end
local arrayMap = colorType and self.dNumArrayMap[colorType]
if(arrayMap)then
for i=1,#arrayMap do
if(arrayMap[i] == obj)then
table.remove(arrayMap, i);
return;
end
end
end
end