1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
/*-- Door control --*/
/*
This object supplies the base functionality for structures with doors.
The buildings have to have OpenDoor, DoorOpen and CloseDoor in their act map
*/
protected func ActivateEntrance(object obj)
{
if (this->~IsBase() && this->~CanBlockEnemies())
{
var for_plr = obj->GetOwner();
if (Hostile(GetOwner(), for_plr))
{
Sound("Error", false, 100, for_plr);
PlayerMessage(for_plr, "$TxtNoEntryEnemy$", GetPlayerName(GetOwner()));
return false;
}
}
if (ActIdle())
SetAction("OpenDoor");
return true;
}
private func OpenEntrance()
{
SetEntrance(true);
return;
}
private func CloseEntrance()
{
SetEntrance(false);
return;
}
private func SoundOpenDoor()
{
// TODO: Get sound
Sound("DoorOpen");
return;
}
private func SoundCloseDoor()
{
// TODO: get sound
Sound("DoorClose");
return;
}
protected func Initialize()
{
SetEntrance(false);
return _inherited(...);
}
protected func Ejection(object obj)
{
// Let the door stay open longer on ejection.
if (GetAction () == "DoorOpen")
SetAction ("DoorOpen");
return _inherited(obj, ...);
}
protected func Collection2(object obj)
{
// Let the door stay open longer on collection.
if (GetAction () == "DoorOpen")
SetAction ("DoorOpen");
return _inherited(obj, ...);
}
|