//=============================================================================
// Display a note on screen.
//=============================================================================
class KFSPNoteMessage extends UseTrigger;

var() localized string NoteText;
var() material NoteTexture;
var() Font NoteTextFont;
var() color NoteTextColor;
var() bool bEnabled,bTextCentered;
var() float NoteTexSize;
var() FloatBox TextCoords;
var bool bHasTriggered;

function UsedBy( Pawn user )
{
	if( bEnabled && PlayerController(user.Controller)!=None )
	{
		PlayerController(user.Controller).ReceiveLocalizedMessage(Class'KFNoteMsg',,,,Self);
		if( !bHasTriggered )
		{
			bHasTriggered = True;
			TriggerEvent(Event,Self,User);
		}
	}
}

function Touch( Actor Other )
{
	if ( bEnabled && Pawn(Other)!=None )
	{
	    // Send a string message to the toucher.
	    if( Message != "" )
		    Pawn(Other).ClientMessage( Message );
	}
}
function Untouch( Actor Other )
{
	if ( bEnabled && Pawn(Other)!=None && PlayerController(Pawn(Other).Controller)!=None )
		PlayerController(Pawn(Other).Controller).ReceiveLocalizedMessage(Class'KFNoteMsg',1);
}
function Trigger( actor Other, pawn EventInstigator )
{
	local Pawn P;

	bEnabled = !bEnabled;
	ForEach TouchingActors(Class'Pawn',P)
	{
		if( bEnabled )
			Touch(P);
		else Untouch(P);
	}
}
simulated function RenderNote( Canvas C )
{
	local float XS,YS,ClX;
	local int i;
	local string S;

	C.Style = ERenderStyle.STY_Alpha;
	if( NoteTexture!=None )
	{
		XS = NoteTexture.MaterialUSize();
		YS = NoteTexture.MaterialVSize();
	}
	else
	{
		XS = 256;
		YS = 512;
	}
	XS*=(NoteTexSize*FClamp(C.ClipX/640.f,0.5,2));
	YS*=(NoteTexSize*FClamp(C.ClipX/640.f,0.5,2));
	C.OrgX = FMax(C.ClipX/20.f,C.ClipX/5*3-XS);
	C.OrgY = FMax(C.ClipY/20.f,C.ClipY/2-YS/2);
	C.CurX = 0;
	C.CurY = 0;
	ClX = C.ClipX;
	C.ClipX = XS;
	if( NoteTexture!=None )
	{
		C.DrawColor.R = 255;
		C.DrawColor.G = 255;
		C.DrawColor.B = 255;
		C.DrawColor.A = 255;
		C.DrawTile(NoteTexture,XS,YS,0,0,NoteTexture.MaterialUSize(),NoteTexture.MaterialVSize());
	}
	if( NoteText!="" )
	{
		C.OrgX+=(XS*TextCoords.X1);
		C.ClipX = (XS*(TextCoords.X2-TextCoords.X1));
		C.CurX = 0;
		C.CurY = (YS*TextCoords.Y1);
		C.Font = NoteTextFont;
		C.DrawColor = NoteTextColor;
		S = NoteText;
		i = InStr(S,"/");
		C.bCenter = bTextCentered;
		while( True )
		{
			if( i==-1 )
			{
				C.DrawText(S,False);
				Break;
			}
			C.DrawText(Left(S,i),False);
			C.CurX = 0;
			S = Mid(S,i+1);
			i = InStr(S,"/");
		}
	}
	C.bCenter = False;
	C.OrgX = 0;
	C.OrgY = 0;
	C.ClipX = ClX;
}

defaultproperties
{
	NoteText="This is default note text"
	NoteTextFont=Font'DefaultFont'
	NoteTextColor=(R=255,G=255,B=255,A=255)
	RemoteRole=ROLE_None
	bNoDelete=True
	bEnabled=True
	TextCoords=(X1=0.1,X2=0.9,Y1=0.1,Y2=1)
}
