BTME_Mutator:
Code: Select all
simulated function PreBeginPlay()
{
...
if (bMutatorInit) return;
bMutatorInit = True;
Spawn(Class'BTME_SpawnNotify');
...
}Code: Select all
class BTME_SpawnNotify extends SpawnNotify;
simulated event Actor SpawnNotification(actor Actor)
{
local BTME_HUDMutator tempHUD;
if (Actor!=None && Actor.IsA('HUD') && (HUD(Actor).HUDMutator == None || !HUD(Actor).HUDMutator.IsA('BTME_HUDMutator')))
{
tempHUD = Spawn(class'BTME_HUDMutator', Actor);
if (tempHUD != None)
{
tempHUD.PlayerOwner = PlayerPawn(Actor.Owner);
if (HUD(Actor).HUDMutator == None)
{
HUD(Actor).HUDMutator = tempHUD;
}
else
{
tempHUD.NextHUDMutator = HUD(Actor).HUDMutator;
HUD(Actor).HUDMutator = tempHUD;
}
}
}
return Actor;
}
Code: Select all
class BTME_HUDMutator extends Mutator;
var PlayerPawn PlayerOwner;
var HUD MyHUD;
var bool bNewMessage;
var BTME_MessageEvent MessageEvent;
simulated function PostRender(Canvas C)
{
PlayerOwner = C.Viewport.Actor;
if ( PlayerOwner != None ) MyHUD = PlayerOwner.myHUD;
if ( NextHUDMutator != None ) NextHUDMutator.PostRender(C);
if(bNewMessage)
{
MessageEvent.DrawMessage(C);
}
}Code: Select all
class BTME_MessageEvent extends Trigger;
function Trigger(Actor Other, Pawn EventInstigator)
{
local int Index;
foreach AllActors(Class'BTME_HUDMutator',HUDMutator)
{
//if(HUDMutator.PlayerOwner==EventInstigator)
//{
HUDMutator.bNewMessage = true;
HUDMutator.MessageEvent = Self;
//}
Pawn(Other).ClientMessage(HUDMutator.PlayerOwner.PlayerReplicationInfo.PlayerName);
}
}
function UnTrigger(Actor Other, Pawn EventInstigator)
{
foreach AllActors(Class'BTME_HUDMutator',HUDMutator)
{
if(HUDMutator.PlayerOwner==EventInstigator)
{
HUDMutator.bNewMessage = false;
HUDMutator.MessageEvent = None;
}
}
}
simulated function DrawMessage(Canvas C)
{
local int Index;
... draw stuff on the canvas
}