library Transparency requires Table
globals
private constant real FPS = 0.062500
endglobals
struct Transparency extends array
private unit target
private real temp
private integer delta
private thistype next
private thistype prev
private static integer count
private static timer period
private static HandleTable tab
static method GetUnitAlpha takes unit u returns integer
if tab.exists(u) then
return tab[u]
else
return 255
endif
endmethod
private static method cond takes nothing returns boolean
local unit u = GetTriggerUnit()
if tab.exists(u) then
call tab.flush(u)
endif
set u = null
return false
endmethod
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp <= 0 then
call this.destroy()
else
set i = GetUnitAlpha(this.target)-this.delta
call SetUnitVertexColor(this.target, 255, 255, 255, i)
set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
static method fadeOut takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur - FPS
set this.delta = - R2I(255/dur/FPS)+1
set i = GetUnitAlpha(targ)-this.delta
call SetUnitVertexColor(targ, 255, 255, 255, i)
set tab[targ] = i
endmethod
static method fadeIn takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur - FPS
set this.delta = R2I(255/dur/FPS)+1
set i = GetUnitAlpha(targ)-this.delta
call SetUnitVertexColor(targ, 255, 255, 255, i)
set tab[targ] = i
endmethod
private method destroy takes nothing returns nothing
if this.next != 0 then
set this.next.prev = this.prev
endif
set this.prev.next = this.next
set this.prev = thistype(0).prev
set thistype(0).prev = this
if thistype(0).next == 0 then
call PauseTimer(period)
endif
set this.target = null
endmethod
private static method onInit takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(t, Condition(function thistype.cond))
set tab = HandleTable.create()
set count = 0
set period = CreateTimer()
set t = null
endmethod
endstruct
endlibrary
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp <= 0 then
call SetUnitVertexColor(this.target, 255, 255, 255, 255)
call this.destroy()
else
set i = GetUnitAlpha(this.target)-this.delta
call BJDebugMsg(R2S(GetUnitAlpha(this.target)))
call BJDebugMsg(R2S(this.delta))
call SetUnitVertexColor(this.target, 255, 255, 255, i)
set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
library Transparency requires Table
globals
private constant real FPS = 0.062500
endglobals
struct Transparency extends array
private unit target
private real temp
private integer delta
private thistype next
private thistype prev
private static integer count
private static timer period
private static HandleTable tab
static method GetUnitAlpha takes unit u returns integer
if tab.exists(u) then
return tab[u]
else
return 255
endif
endmethod
private static method cond takes nothing returns boolean
local unit u = GetTriggerUnit()
if tab.exists(u) then
call tab.flush(u)
endif
set u = null
return false
endmethod
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp <= 0 then
if this.delta < 0 then
call SetUnitVertexColor(this.target, 255, 255, 255, 255)
else
call SetUnitVertexColor(this.target, 255, 255, 255, 0)
endif
call this.destroy()
else
set i = GetUnitAlpha(this.target)-this.delta
call SetUnitVertexColor(this.target, 255, 255, 255, i)
set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
static method fadeOut takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur - FPS
set this.delta = - R2I(255/(dur/FPS))
set i = GetUnitAlpha(targ)-this.delta
call SetUnitVertexColor(targ, 255, 255, 255, i)
set tab[targ] = i
endmethod
static method fadeIn takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur - FPS
set this.delta = R2I(255/(dur/FPS))
set i = GetUnitAlpha(targ)-this.delta
call SetUnitVertexColor(targ, 255, 255, 255, i)
set tab[targ] = i
endmethod
private method destroy takes nothing returns nothing
if this.next != 0 then
set this.next.prev = this.prev
endif
set this.prev.next = this.next
set this.prev = thistype(0).prev
set thistype(0).prev = this
if thistype(0).next == 0 then
call PauseTimer(period)
endif
set this.target = null
endmethod
private static method onInit takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(t, Condition(function thistype.cond))
set tab = HandleTable.create()
set count = 0
set period = CreateTimer()
set t = null
endmethod
endstruct
endlibrary
call SetUnitVertexColorBJ( udg_SS_Caster2[x], 100, 100, 100, 0 )
call SetUnitVertexColor(udg_SS_Caster2[x], 255, 255, 255, 255)
because the 'spell' is the slashing GUI spell by jakezinc..- WHY USING BJ XD ?
- Why using udg in JNGP where globals blocks are cool ?
library Transparency requires Table
globals
private constant real FPS = 0.062500
endglobals
struct Transparency extends array
private unit target
private real temp
private integer alpha
private integer delta
private thistype next
private thistype prev
private static integer count
private static timer period
private static HandleTable tab
static method GetUnitAlpha takes unit u returns integer
if tab.exists(u) then
return tab[u]
else
return 255
endif
endmethod
private static method cond takes nothing returns boolean
local unit u = GetTriggerUnit()
if tab.exists(u) then
call tab.flush(u)
endif
set u = null
return false
endmethod
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp <= 0 then
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"Alpha is "+I2S(this.alpha))
call this.destroy()
else
//set i = GetUnitAlpha(this.target)+this.delta
set this.alpha=this.alpha+this.delta
call SetUnitVertexColor(this.target, 255, 255, 255, this.alpha)
//set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
static method fadeOut takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur
set this.alpha = 255
set this.delta = R2I(255/(dur/FPS))*-1
//set i = GetUnitAlpha(targ)+this.delta
call SetUnitVertexColor(targ, 255, 255, 255, 255+this.delta)
set tab[targ] = i
endmethod
static method fadeIn takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur
set this.alpha = 0
set this.delta = R2I(255/(dur/FPS))
//set i = GetUnitAlpha(targ)+this.delta
call SetUnitVertexColor(targ, 255, 255, 255, 0+this.delta)
set tab[targ] = i
endmethod
private method destroy takes nothing returns nothing
if this.next != 0 then
set this.next.prev = this.prev
endif
set this.prev.next = this.next
set this.prev = thistype(0).prev
set thistype(0).prev = this
if thistype(0).next == 0 then
call PauseTimer(period)
endif
set this.target = null
endmethod
private static method onInit takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(t, Condition(function thistype.cond))
set tab = HandleTable.create()
set count = 0
set period = CreateTimer()
set t = null
endmethod
endstruct
endlibrary
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp <= 0 then
if this.delta < 0 then
call SetUnitVertexColor(this.target, 255, 255, 255, 255)
else
call SetUnitVertexColor(this.target, 255, 255, 255, 0)
endif
call this.destroy()
else
set i = GetUnitAlpha(this.target)-this.delta
call BJDebugMsg(R2S(GetUnitAlpha(this.target)))
call BJDebugMsg(R2S(this.delta))
call SetUnitVertexColor(this.target, 255, 255, 255, i)
set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
library Transparency requires Table
globals
private constant real FPS = 0.062500
endglobals
struct Transparency extends array
private unit target
private real temp
private real alpha
private real delta
private thistype next
private thistype prev
private static integer count
private static timer period
private static HandleTable tab
static method GetUnitAlpha takes unit u returns integer
if tab.exists(u) then
return tab[u]
else
return 255
endif
endmethod
private static method cond takes nothing returns boolean
local unit u = GetTriggerUnit()
if tab.exists(u) then
call tab.flush(u)
endif
set u = null
return false
endmethod
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp < 0 then
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"Alpha is "+R2S(this.alpha))
call this.destroy()
else
//set i = GetUnitAlpha(this.target)+this.delta
set this.alpha=this.alpha+this.delta
call SetUnitVertexColor(this.target, 255, 255, 255, R2I(this.alpha))
//set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
static method fadeOut takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur
set this.alpha = 255
set this.delta = (255/(dur/FPS))*-1
//set i = GetUnitAlpha(targ)+this.delta
call SetUnitVertexColor(targ, 255, 255, 255, 255+R2I(this.delta))
set tab[targ] = i
endmethod
static method fadeIn takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur
set this.alpha = 0
set this.delta = 255/(dur/FPS)
//set i = GetUnitAlpha(targ)+this.delta
call SetUnitVertexColor(targ, 255, 255, 255, 0+R2I(this.delta))
set tab[targ] = i
endmethod
private method destroy takes nothing returns nothing
if this.next != 0 then
set this.next.prev = this.prev
endif
set this.prev.next = this.next
set this.prev = thistype(0).prev
set thistype(0).prev = this
if thistype(0).next == 0 then
call PauseTimer(period)
endif
set this.target = null
endmethod
private static method onInit takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(t, Condition(function thistype.cond))
set tab = HandleTable.create()
set count = 0
set period = CreateTimer()
set t = null
endmethod
endstruct
endlibrary
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp <= 0 then
if this.delta < 0 then
call SetUnitVertexColor(this.target, 255, 255, 255, 255)
else
call SetUnitVertexColor(this.target, 255, 255, 255, 0)
endif
@set tab[this.target] = 255@ // this should've been done
call this.destroy()
else
set i = GetUnitAlpha(this.target)-this.delta
call SetUnitVertexColor(this.target, 255, 255, 255, i)
set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp < 0 then
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"Alpha is "+R2S(this.alpha))
call this.destroy()
else
//set i = GetUnitAlpha(this.target)+this.delta
set this.alpha=this.alpha+this.delta
call SetUnitVertexColor(this.target, 255, 255, 255, R2I(this.alpha))
//set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
library Transparency requires Table
globals
private constant real FPS = 0.062500
endglobals
struct Transparency extends array
private unit target
private real temp
private integer delta
private thistype next
private thistype prev
private static integer count
private static timer period
private static HandleTable tab
static method GetUnitAlpha takes unit u returns integer
if tab.exists(u) then
return tab[u]
else
return 255
endif
endmethod
private static method cond takes nothing returns boolean
local unit u = GetTriggerUnit()
if tab.exists(u) then
call tab.flush(u)
endif
set u = null
return false
endmethod
private static method periodic takes nothing returns nothing
local thistype this = thistype(0).next
local integer i
loop
exitwhen this == 0
set this.temp = this.temp - FPS
if this.temp <= 0 then
if this.delta < 0 then
call SetUnitVertexColor(this.target, 255, 255, 255, 255)
else
call SetUnitVertexColor(this.target, 255, 255, 255, 0)
endif
call this.destroy()
else
set i = GetUnitAlpha(this.target)-this.delta
call SetUnitVertexColor(this.target, 255, 255, 255, i)
set tab[this.target] = i
endif
set this = this.next
endloop
endmethod
static method fadeOut takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur - FPS
set this.delta = - R2I(255/(dur/FPS))
set tab[this.target] = 0
set i = GetUnitAlpha(targ)-this.delta
call SetUnitVertexColor(targ, 255, 255, 255, i)
set tab[targ] = i
endmethod
static method fadeIn takes unit targ, real dur returns nothing
local thistype this
local integer i
if thistype(0).prev == 0 then
set count = count + 1
set this = count
else
set this = thistype(0).prev
set thistype(0).prev = thistype(0).prev.prev
endif
if thistype(0).next == 0 then
call TimerStart(period, FPS, true, function thistype.periodic)
else
set thistype(0).next.prev = this
endif
set this.next = thistype(0).next
set thistype(0).next = this
set this.prev = thistype(0).prev
set this.target = targ
set this.temp = dur - FPS
set this.delta = R2I(255/(dur/FPS))
set tab[this.target] = 255
set i = GetUnitAlpha(targ)-this.delta
call SetUnitVertexColor(targ, 255, 255, 255, i)
set tab[targ] = i
endmethod
private method destroy takes nothing returns nothing
if this.next != 0 then
set this.next.prev = this.prev
endif
set this.prev.next = this.next
set this.prev = thistype(0).prev
set thistype(0).prev = this
if thistype(0).next == 0 then
call PauseTimer(period)
endif
set this.target = null
endmethod
private static method onInit takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(t, Condition(function thistype.cond))
set tab = HandleTable.create()
set count = 0
set period = CreateTimer()
set t = null
endmethod
endstruct
endlibrary
this.temp <= 0
condition right?