diff --git a/source/triggers/trigger.cpp b/source/triggers/trigger.cpp new file mode 100644 index 000000000..155c53d96 --- /dev/null +++ b/source/triggers/trigger.cpp @@ -0,0 +1,110 @@ +/*========================================================================= + + trigger source file + + Author: Davey Boy + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2001 Climax Development Ltd + +===========================================================================*/ + +#ifndef __TRIGGER_TRIGGER_HEADER__ +#include "triggers\trigger.h" +#endif + +#ifndef __TRIGGERS_TLEVEXIT_H__ +#include "triggers\tlevexit.h" +#endif + +#ifndef __TRIGGERS_TRESTART_H__ +#include "triggers\trestart.h" +#endif + +#ifndef __TRIGGERS_TTELEPRT_H__ +#include "triggers\tteleprt.h" +#endif + +#ifndef __TRIGGERS_TCAMLOCK_H__ +#include "triggers\tcamlock.h" +#endif + +#ifndef __TRIGGERS_TWATER_H__ +#include "triggers\twater.h" +#endif + +#ifndef __GAME_GAME_H__ +#include "game\game.h" +#endif + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +CTrigger *CTrigger::Create(int Type) +{ +CTrigger *trigger; +printf("Trig Type %i\n",Type); + trigger = (CTrigger*)CThingManager::GetThing(CThing::TYPE_TRIGGER,Type); + if (!trigger) + switch( Type ) + { + // Exit trigger + case TRIGGER_EXIT: + trigger=(CTrigger*)new ("LevelExitTrigger") CLevelExitTrigger(); + break; + + // Level respawn trigger + case TRIGGER_RESPAWN: + trigger=(CRestartPointTrigger*)new ("RestartTrigger") CRestartPointTrigger(); + break; + + // Teleport trigger + case TRIGGER_TELEPORT: + trigger=(CTeleportTrigger*)new ("TeleportTrigger") CTeleportTrigger(); + break; + + // Camera lock trigger + case TRIGGER_CAMLOCK: + trigger=NULL; + break; + + // In/Out of water triggers + case TRIGGER_WATER: + trigger=(CInWaterTrigger*)new ("InWaterTrigger") CInWaterTrigger(); + break; + case 5: + trigger=(COutOfWaterTrigger*)new ("OutOfWaterTrigger") COutOfWaterTrigger(); + break; + default: + trigger=NULL; + } +printf("TriggerDone\n"); + ASSERT( trigger); + + trigger->setThingSubType(Type); + trigger->init(); + + return( trigger); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +CTrigger *CTrigger::Create(sThingTrigger *ThisTrigger) +{ +CTrigger *trigger=Create(ThisTrigger->Type); + + trigger->setPositionAndSize(ThisTrigger->Pos.X<<4,ThisTrigger->Pos.Y<<4,ThisTrigger->Width<<4,ThisTrigger->Height<<4); + trigger->setTargetBox(ThisTrigger->TargetPos.X<<4,ThisTrigger->TargetPos.Y<<4,ThisTrigger->TargetSize.X<<4,ThisTrigger->TargetSize.Y<<4); + + return( trigger); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +void CTrigger::init() +{ +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +void CTrigger::shutdown() +{ +} diff --git a/source/triggers/trigger.h b/source/triggers/trigger.h new file mode 100644 index 000000000..c03ba5177 --- /dev/null +++ b/source/triggers/trigger.h @@ -0,0 +1,51 @@ +/*========================================================================= + + trigger.h + + Author: dave + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2001 Climax Development Ltd + +===========================================================================*/ + +#ifndef __TRIGGER_TRIGGER_HEADER__ +#define __TRIGGER_TRIGGER_HEADER__ + +#ifndef __THING_THING_H__ +#include "thing/thing.h" +#endif + +class CTrigger : public CTriggerThing +{ +public: +enum TRIGGER_TYPE + { + TRIGGER_EXIT=0, + TRIGGER_RESPAWN, + TRIGGER_TELEPORT, + TRIGGER_CAMLOCK, + TRIGGER_WATER, + TRIGGER_MAX, + }; + + enum + { // For Dynamic ThingCache + MAX_SUBTYPE =TRIGGER_MAX, + }; + +virtual void init(); +virtual void shutdown(); + +static CTrigger *Create(int Type); +static CTrigger *Create(sThingTrigger *ThisTrigger); + +protected: +virtual void collidedWith(CThing *_thisThing){}; + +}; + +#endif +