diff options
author | Aki <please@ignore.pl> | 2022-04-01 21:23:39 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-04-01 21:23:39 +0200 |
commit | 3c487c5cd69c53d6fea948643c0a76df03516605 (patch) | |
tree | 72730c7b8b26a5ef8fc9a987ec4c16129efd5aac /StarsEx/MissionEvent.h | |
parent | 8f353abd0bfe18baddd8a8250ab7c4f2d1c83a6e (diff) | |
download | starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.zip starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.gz starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.bz2 |
Moved Stars45 to StarsEx
Diffstat (limited to 'StarsEx/MissionEvent.h')
-rw-r--r-- | StarsEx/MissionEvent.h | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/StarsEx/MissionEvent.h b/StarsEx/MissionEvent.h new file mode 100644 index 0000000..5fe4f10 --- /dev/null +++ b/StarsEx/MissionEvent.h @@ -0,0 +1,166 @@ +/* Starshatter: The Open Source Project + Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors + Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors + Copyright (c) 1997-2006, Destroyer Studios LLC. + + AUTHOR: John DiCamillo + + + OVERVIEW + ======== + Events for mission scripting +*/ + +#ifndef MissionEvent_h +#define MissionEvent_h + +#include "Types.h" +#include "List.h" +#include "Text.h" +#include "Geometry.h" +#include "Bitmap.h" + +// +--------------------------------------------------------------------+ + +class Mission; +class MissionElement; +class MissionLoad; +class MissionEvent; + +class Ship; +class System; +class Element; +class ShipDesign; +class WeaponDesign; +class StarSystem; +class Instruction; +class Sound; + +// +--------------------------------------------------------------------+ + +class MissionEvent +{ + friend class Mission; + friend class MissionTemplate; + friend class MsnEditDlg; + friend class MsnEventDlg; + +public: + static const char* TYPENAME() { return "MissionEvent"; } + + enum EVENT_TYPE { + MESSAGE, + OBJECTIVE, + INSTRUCTION, + IFF, + DAMAGE, + JUMP, + HOLD, + SKIP, + END_MISSION, + + BEGIN_SCENE, + CAMERA, + VOLUME, + DISPLAY, + FIRE_WEAPON, + END_SCENE, + + NUM_EVENTS + }; + + enum EVENT_STATUS { + PENDING, ACTIVE, COMPLETE, SKIPPED + }; + + enum EVENT_TRIGGER { + TRIGGER_TIME, TRIGGER_DAMAGE, TRIGGER_DESTROYED, + TRIGGER_JUMP, TRIGGER_LAUNCH, TRIGGER_DOCK, + TRIGGER_NAVPT, TRIGGER_EVENT, TRIGGER_SKIPPED, + TRIGGER_TARGET, TRIGGER_SHIPS_LEFT, TRIGGER_DETECT, + TRIGGER_RANGE, TRIGGER_EVENT_ALL, TRIGGER_EVENT_ANY, + NUM_TRIGGERS + }; + + MissionEvent(); + ~MissionEvent(); + + // operations: + void ExecFrame(double seconds); + void Activate(); + + virtual bool CheckTrigger(); + virtual void Execute(bool silent=false); + virtual void Skip(); + + // accessors: + int EventID() const { return id; } + int Status() const { return status; } + bool IsPending() const { return status == PENDING; } + bool IsActive() const { return status == ACTIVE; } + bool IsComplete() const { return status == COMPLETE; } + bool IsSkipped() const { return status == SKIPPED; } + + double Time() const { return time; } + double Delay() const { return delay; } + + int Event() const { return event; } + const char* EventName() const; + Text EventShip() const { return event_ship; } + Text EventSource() const { return event_source; } + Text EventTarget() const { return event_target; } + Text EventMessage() const { return event_message; } + Text EventSound() const { return event_sound; } + + int EventParam(int index=0) const; + int NumEventParams() const; + + int EventChance() const { return event_chance; } + Point EventPoint() const { return event_point; } + Rect EventRect() const { return event_rect; } + + int Trigger() const { return trigger; } + const char* TriggerName() const; + Text TriggerShip() const { return trigger_ship; } + Text TriggerTarget() const { return trigger_target; } + + Text TriggerParamStr() const; + int TriggerParam(int index=0) const; + int NumTriggerParams() const; + + static const char* EventName(int n); + static int EventForName(const char* n); + static const char* TriggerName(int n); + static int TriggerForName(const char* n); + +protected: + int id; + int status; + double time; + double delay; + + int event; + Text event_ship; + Text event_source; + Text event_target; + Text event_message; + Text event_sound; + int event_param[10]; + int event_nparams; + int event_chance; + Vec3 event_point; + Rect event_rect; + + int trigger; + Text trigger_ship; + Text trigger_target; + int trigger_param[10]; + int trigger_nparams; + + Bitmap image; + Sound* sound; +}; + + +#endif // MissionEvent_h + |