summaryrefslogtreecommitdiffhomepage
path: root/Stars45/CombatEvent.h
blob: 35dd7c02823eb8a5db019ac18599d9ba7af8ce5e (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*  Project Starshatter 4.5
    Destroyer Studios LLC
    Copyright © 1997-2004. All Rights Reserved.

    SUBSYSTEM:    Stars.exe
    FILE:         CombatEvent.h
    AUTHOR:       John DiCamillo


    OVERVIEW
    ========
    A significant (newsworthy) event in the dynamic campaign.
*/

#ifndef CombatEvent_h
#define CombatEvent_h

#include "Types.h"
#include "Geometry.h"
#include "Bitmap.h"
#include "Text.h"
#include "List.h"

// +--------------------------------------------------------------------+

class Campaign;
class CombatGroup;
class CombatUnit;

// +--------------------------------------------------------------------+

class CombatEvent
{
public:
   static const char* TYPENAME() { return "CombatEvent"; }

   enum EVENT_TYPE {
      ATTACK,
      DEFEND,
      MOVE_TO,
      CAPTURE,
      STRATEGY,

      CAMPAIGN_START,
      STORY,
      CAMPAIGN_END,
      CAMPAIGN_FAIL
   };

   enum EVENT_SOURCE {
      FORCOM,
      TACNET,
      INTEL,
      MAIL,
      NEWS
   };

   CombatEvent(Campaign* c, int type, int time, int team, int source, const char* rgn);

   int operator == (const CombatEvent& u)  const { return this == &u; }

   // accessors/mutators:
   int                  Type()         const { return type;       }
   int                  Time()         const { return time;       }
   int                  GetIFF()       const { return team;       }
   int                  Points()       const { return points;     }
   int                  Source()       const { return source;     }
   Point                Location()     const { return loc;        }
   const char*          Region()       const { return region;     }
   const char*          Title()        const { return title;      }
   const char*          Information()  const { return info;       }
   const char*          Filename()     const { return file;       }
   const char*          ImageFile()    const { return image_file; }
   const char*          SceneFile()    const { return scene_file; }
   Bitmap&              Image()              { return image;      }
   const char*          SourceName()   const;
   const char*          TypeName()     const;
   bool                 Visited()      const { return visited;    }

   void                 SetType(int t)       { type = t;          }
   void                 SetTime(int t)       { time = t;          }
   void                 SetIFF(int t)        { team = t;          }
   void                 SetPoints(int p)     { points = p;        }
   void                 SetSource(int s)     { source = s;        }
   void                 SetLocation(const Point& p) { loc = p;    }
   void                 SetRegion(Text rgn)  { region = rgn;      }
   void                 SetTitle(Text t)     { title = t;         }
   void                 SetInformation(Text t) { info = t;        }
   void                 SetFilename(Text f)  { file = f;          }
   void                 SetImageFile(Text f) { image_file = f;    }
   void                 SetSceneFile(Text f) { scene_file = f;    }
   void                 SetVisited(bool v)   { visited = v;       }

   // operations:
   void                 Load();

   // utilities:
   static int           TypeFromName(const char* n);
   static int           SourceFromName(const char* n);
   static const char*   TypeName(int n);
   static const char*   SourceName(int n);

private:
   Campaign*            campaign;
   int                  type;
   int                  time;
   int                  team;
   int                  points;
   int                  source;
   bool                 visited;
   Point                loc;
   Text                 region;
   Text                 title;
   Text                 info;
   Text                 file;
   Text                 image_file;
   Text                 scene_file;
   Bitmap               image;
};

#endif CombatEvent_h