summaryrefslogtreecommitdiffhomepage
path: root/Stars45/MissionEvent.h
diff options
context:
space:
mode:
authorFWoltermann@gmail.com <FWoltermann@gmail.com@076cb2c4-205e-83fd-5cf3-1be9aa105544>2011-12-08 14:53:40 +0000
committerFWoltermann@gmail.com <FWoltermann@gmail.com@076cb2c4-205e-83fd-5cf3-1be9aa105544>2011-12-08 14:53:40 +0000
commite33e19d0587146859d48a134ec9fd94e7b7ba5cd (patch)
tree69d048c8801858d2756ab3a487090a7a1b74bf14 /Stars45/MissionEvent.h
downloadstarshatter-e33e19d0587146859d48a134ec9fd94e7b7ba5cd.zip
starshatter-e33e19d0587146859d48a134ec9fd94e7b7ba5cd.tar.gz
starshatter-e33e19d0587146859d48a134ec9fd94e7b7ba5cd.tar.bz2
Initial upload
Diffstat (limited to 'Stars45/MissionEvent.h')
-rw-r--r--Stars45/MissionEvent.h167
1 files changed, 167 insertions, 0 deletions
diff --git a/Stars45/MissionEvent.h b/Stars45/MissionEvent.h
new file mode 100644
index 0000000..c4025d1
--- /dev/null
+++ b/Stars45/MissionEvent.h
@@ -0,0 +1,167 @@
+/* Project Starshatter 4.5
+ Destroyer Studios LLC
+ Copyright © 1997-2004. All Rights Reserved.
+
+ SUBSYSTEM: Stars.exe
+ FILE: MissionEvent.h
+ 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
+