add RelationalClasses

add attachevent
This commit is contained in:
cclecle
2023-05-25 20:17:39 +01:00
parent 1abe3efd36
commit 5cfdc59e4f
2 changed files with 58 additions and 14 deletions

View File

@@ -1,4 +1,4 @@
class ICCME_EventBase extends Object
class ICCME_EventBase extends RelationalClasses
abstract;
// time the event was created (relative to game start)
@@ -7,8 +7,48 @@ var float createdTime;
// Tell the engine this event must be treated in the current Tick() context and not the next one
var bool bUrgent;
var array<ICCME_EventListenerBase> _ar_AttachedEventListener;
var bool _bBroadcast;
// print Event relevent informations in the main UT log file
function doLog()
{
log("===== Event:"@Self.Class@"["$createdTime$"]"@"=====");
}
static function attach(ICCME_EventListenerBase EventListener)
{
local int i;
local bool bAlreadyRegistered;
if(EventListener.bMonitor) return;
for(i=0;i<default._ar_AttachedEventListener.Length;i++)
{
if(default._ar_AttachedEventListener[i] == EventListener)
{
bAlreadyRegistered=True;
break;
}
}
if(!bAlreadyRegistered)
{
default._ar_AttachedEventListener.Length = default._ar_AttachedEventListener.Length + 1;
default._ar_AttachedEventListener[default._ar_AttachedEventListener.Length-1] = EventListener;
}
for(i=0;i<default.Tchilds.length;i++)
{
class<ICCME_EventBase>(default.Tchilds[i]).static.attach(EventListener);
}
}
function RunAttached()
{
local int i;
for(i=0;i<default._ar_AttachedEventListener.Length;i++)
{
default._ar_AttachedEventListener[i].ProcessEvent(Self);
}
}