rott/kf_sources/Engine/Classes/SVehicleFactory.uc
2026-07-14 20:27:09 +07:00

90 lines
1.7 KiB
Ucode

//=============================================================================
// SVehicle spawner location.
//=============================================================================
class SVehicleFactory extends Actor
native
placeable;
#exec Texture Import File=Textures\S_KVehFact.pcx Name=S_KVehFact Mips=Off MASKED=1
var() class<Vehicle> VehicleClass;
var() int MaxVehicleCount;
var int VehicleCount;
var NavigationPoint MyMarker;
cpptext
{
INT AddMyMarker(AActor *S);
}
function PreBeginPlay()
{
if (!Level.Game.bAllowVehicles && !bNoDelete)
{
Destroy();
return;
}
Super.PreBeginPlay();
}
event VehicleDestroyed( Vehicle V )
{
VehicleCount--;
}
event VehiclePossessed( Vehicle V );
event VehicleUnPossessed( Vehicle V );
event Trigger( Actor Other, Pawn EventInstigator )
{
local Vehicle CreatedVehicle;
if (!Level.Game.bAllowVehicles)
return;
if ( VehicleClass == None )
{
Log("SVehicleFactory:"@self@"has no VehicleClass");
return;
}
// If RO
if ( !EventInstigator.IsA('UnrealPawn') && !EventInstigator.IsA('ROPawn'))
return;
// Else
/* if ( !EventInstigator.IsA('UnrealPawn') )
return;*/
if ( VehicleCount >= MaxVehicleCount )
{
// Send a message saying 'too many vehicles already'
return;
}
if ( VehicleClass != None )
{
CreatedVehicle = spawn(VehicleClass, , , Location, Rotation);
if ( CreatedVehicle != None )
{
VehicleCount++;
CreatedVehicle.ParentFactory = self;
}
}
}
defaultproperties
{
MaxVehicleCount=1
bHidden=true
Texture=S_KVehFact
RemoteRole=ROLE_None
bNoDelete=True
bDirectional=true
}