summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/MissionTemplate.h
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-04-01 21:23:39 +0200
committerAki <please@ignore.pl>2022-04-01 21:23:39 +0200
commit3c487c5cd69c53d6fea948643c0a76df03516605 (patch)
tree72730c7b8b26a5ef8fc9a987ec4c16129efd5aac /StarsEx/MissionTemplate.h
parent8f353abd0bfe18baddd8a8250ab7c4f2d1c83a6e (diff)
downloadstarshatter-3c487c5cd69c53d6fea948643c0a76df03516605.zip
starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.gz
starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.bz2
Moved Stars45 to StarsEx
Diffstat (limited to 'StarsEx/MissionTemplate.h')
-rw-r--r--StarsEx/MissionTemplate.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/StarsEx/MissionTemplate.h b/StarsEx/MissionTemplate.h
new file mode 100644
index 0000000..44ef0ca
--- /dev/null
+++ b/StarsEx/MissionTemplate.h
@@ -0,0 +1,116 @@
+/* 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
+ ========
+ Simulation Universe and Region classes
+*/
+
+#ifndef MissionTemplate_h
+#define MissionTemplate_h
+
+#include "Types.h"
+#include "Mission.h"
+
+// +--------------------------------------------------------------------+
+
+class MissionTemplate;
+class MissionAlias;
+class MissionCallsign;
+class MissionEvent;
+
+// +--------------------------------------------------------------------+
+
+class MissionTemplate : public Mission
+{
+public:
+ static const char* TYPENAME() { return "MissionTemplate"; }
+
+ MissionTemplate(int id, const char* filename=0, const char* path=0);
+ virtual ~MissionTemplate();
+
+ virtual bool Load(const char* filename=0, const char* path=0);
+
+ // accessors/mutators:
+ virtual MissionElement* FindElement(const char* name);
+ virtual void AddElement(MissionElement* elem);
+ virtual bool MapElement(MissionElement* elem);
+ virtual Text MapShip(Text name);
+ virtual CombatGroup* GetPlayerSquadron() const { return player_squadron; }
+ virtual void SetPlayerSquadron(CombatGroup* ps) { player_squadron = ps; }
+ virtual Text MapCallsign(const char* name, int iff);
+ virtual bool MapEvent(MissionEvent* event);
+
+
+protected:
+ CombatGroup* FindCombatGroup(int iff, const ShipDesign* dsn);
+ void ParseAlias(TermStruct* val);
+ void ParseCallsign(TermStruct* val);
+ bool ParseOptional(TermStruct* val);
+ void CheckObjectives();
+
+ List<MissionAlias> aliases;
+ List<MissionCallsign> callsigns;
+ CombatGroup* player_squadron;
+};
+
+// +--------------------------------------------------------------------+
+
+class MissionAlias
+{
+ friend class MissionTemplate;
+
+public:
+ static const char* TYPENAME() { return "MissionAlias"; }
+
+ MissionAlias() : elem(0) { }
+ MissionAlias(const char* n, MissionElement* e) : name(n), elem(e) { }
+ virtual ~MissionAlias() { }
+
+ int operator == (const MissionAlias& a) const { return name == a.name; }
+
+ Text Name() const { return name; }
+ MissionElement* Element() const { return elem; }
+
+ void SetName(const char* n) { name = n; }
+ void SetElement(MissionElement* e) { elem = e; }
+
+protected:
+ Text name;
+ MissionElement* elem;
+};
+
+// +--------------------------------------------------------------------+
+
+class MissionCallsign
+{
+ friend class MissionTemplate;
+
+public:
+ static const char* TYPENAME() { return "MissionCallsign"; }
+
+ MissionCallsign() { }
+ MissionCallsign(const char* c, const char* n) : call(c), name(n) { }
+ virtual ~MissionCallsign() { }
+
+ int operator == (const MissionCallsign& a)const { return call == a.call; }
+
+ Text Callsign() const { return call; }
+ Text Name() const { return name; }
+
+ void SetCallsign(const char* c) { call = c; }
+ void SetName(const char* n) { name = n; }
+
+protected:
+ Text call;
+ Text name;
+};
+
+
+#endif // MissionTemplate_h
+