summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/CombatEvent.h
blob: 5c4c6ff75f9bb2fc348bab61901396dba87f1968 (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
/*  Starshatter: The Open Source Project
    Copyright (c) 2021-2024, 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
    ========
    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