129 lines
3.2 KiB
C#
129 lines
3.2 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Torque Game Engine
|
|
//
|
|
// Copyright (c) 2001 GarageGames.Com
|
|
// Portions Copyright (c) 2001 by Sierra Online, Inc.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Normally the trigger class would be sub-classed to support different
|
|
// functionality, but we're going to use the name of the trigger instead
|
|
// as an experiment.
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock TriggerData(InBoundsTrigger)
|
|
{
|
|
tickPeriodMS = 100;
|
|
};
|
|
|
|
function InBoundsTrigger::onLeaveTrigger(%this,%trigger,%obj)
|
|
{
|
|
// Leaving an in bounds area.
|
|
%obj.getDatablock().onOutOfBounds(%obj);
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock TriggerData(OutOfBoundsTrigger)
|
|
{
|
|
tickPeriodMS = 100;
|
|
};
|
|
|
|
function OutOfBoundsTrigger::onEnterTrigger(%this,%trigger,%obj)
|
|
{
|
|
// Entering an out of bounds area
|
|
%obj.getDatablock().onOutOfBounds(%obj);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock TriggerData(HelpTrigger)
|
|
{
|
|
tickPeriodMS = 100;
|
|
};
|
|
|
|
function HelpTrigger::onEnterTrigger(%this,%trigger,%obj)
|
|
{
|
|
// Leaving an in bounds area.
|
|
addHelpLine(%trigger.text, true);
|
|
}
|
|
datablock TriggerData(TeleportTrigger)
|
|
{
|
|
tickPeriodMS = 500;
|
|
};
|
|
datablock AudioProfile(TeleportBuzz)
|
|
{
|
|
fileName = "~/data/sound/teleport.wav";
|
|
description = AudioClose3d;
|
|
preload = true;
|
|
};
|
|
|
|
function TeleportTrigger::onEnterTrigger(%data, %obj, %colObj)
|
|
{
|
|
%checkname = %obj.getName();
|
|
%client = %colObj.client;
|
|
if(!%client)
|
|
{
|
|
echo("not a client!");
|
|
return;
|
|
}
|
|
echo("Teleport client:" SPC %client);
|
|
|
|
if(%checkname $= "TeleportTrigger1")
|
|
{
|
|
if(!$from2to1)
|
|
{
|
|
%target = "TeleportTrigger2";
|
|
CommandToClient(%client,'bottomprint',"Teleport Activated",2,10);
|
|
$teleSched = schedule(2000,0,"goScotty",%client,%target);
|
|
$teleSound = serverPlay3D(TeleportBuzz,%client.player.getTransform());
|
|
%client.player.setCloaked(true);
|
|
$from1to2 = true;
|
|
$from2to1 = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(!$from1to2)
|
|
{
|
|
%target = "TeleportTrigger1";
|
|
CommandToClient(%client,'bottomprint',"Teleporter Activated",2,10);
|
|
$teleSched = schedule(2000,0,"goScotty",%client, %target);
|
|
$teleSound = serverPlay3D(TeleportBuzz,%client.player.getTransform());
|
|
%client.player.setCloaked(true);
|
|
$from2to1 = true;
|
|
$from1to2 = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
function TeleportTrigger::onLeaveTrigger(%data, %obj, %colObj)
|
|
{
|
|
%checkname = %obj.getName();
|
|
%client = %colObj.client;
|
|
echo("TeleportTrigger::onLeaveTrigger called!");
|
|
cancel($teleSched);
|
|
alxStop($teleSound);
|
|
%client.player.setCloaked(false);
|
|
// if the player leaves the target trigger,
|
|
// he can use it, too...
|
|
if(%checkname $= "TeleportTrigger1")
|
|
{
|
|
$from2to1 = false;
|
|
}
|
|
else if(%checkname $= "TeleportTrigger2")
|
|
{
|
|
$from1to2 = false;
|
|
}
|
|
}
|
|
function goScotty(%client, %target)
|
|
{
|
|
echo("goScotty called!");
|
|
// beam me up!
|
|
commandToServer('TeleportPlayer', %client, %target);
|
|
}
|
|
function TeleportTrigger::onTickTrigger(%data, %obj)
|
|
{
|
|
}
|