library DamageDisplay requires DamageEngine
globals
constant integer DAMAGE_TEXT_RED = 0xff
constant integer DAMAGE_TEXT_GREEN = 0xcc
constant integer DAMAGE_TEXT_BLUE = 0x00
constant integer DAMAGE_TEXT_SIZE = 10
constant integer DAMAGE_TEXT_Z_OFFSET = 100.0
constant integer DAMAGE_TEXT_FADE = 1.00
constant integer DAMAGE_TEXT_LIFE = 2.00
endglobals
function CreateTT takes string text, integer r, integer g, integer b, real size, unit u, real z, real fade, real life returns nothing
local texttag tt = CreateTextTagUnitBJ(text, u, z, size, r * 100 / 255.0, g * 100 / 255.0, b * 100 / 255.0, 0)
call SetTextTagPos(tt, GetUnitX(u) - StringLength(text) * 5, GetUnitY(u), z)
call SetTextTagVisibility(tt, true)
call SetTextTagFadepoint(tt, fade)
call SetTextTagLifespan(tt, life)
call SetTextTagVelocity(tt, 0.0, 0.05)
call SetTextTagPermanent(tt, false)
set tt = null
endfunction
struct DisplayListener extends DamageListener
static constant integer PRIORITY = 10
static method create takes nothing returns DisplayListener
return DisplayListener.allocate(.PRIORITY)
endmethod
method onFinalDamage takes EventDamage eventDamage returns nothing
call CreateTT(I2S(R2I(eventDamage.damage)), DAMAGE_TEXT_RED, DAMAGE_TEXT_GREEN, DAMAGE_TEXT_BLUE, DAMAGE_TEXT_SIZE, eventDamage.target.u, DAMAGE_TEXT_Z_OFFSET, DAMAGE_TEXT_FADE, DAMAGE_TEXT_LIFE)
endmethod
private static method onInit takes nothing returns nothing
call DamageEngine.registerDamageListener(DisplayListener.create())
endmethod
endstruct
endlibrary