summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/CampaignPlanEvent.h
blob: 77fbae26fafcea6d0535eeb155fbfc8be9fcb1c8 (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
/*  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
    ========
    CampaignPlanEvent generates simulated combat
    events based on a statistical analysis of the
    combatants within the context of a dynamic
    campaign.
*/

#ifndef CampaignPlanEvent_h
#define CampaignPlanEvent_h

#include "Types.h"
#include "CampaignPlan.h"

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

class CombatAction;
class CombatAssignment;
class CombatEvent;
class CombatGroup;
class CombatUnit;
class CombatZone;

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

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

    CampaignPlanEvent(Campaign* c);
    virtual ~CampaignPlanEvent();

    // operations:
    virtual void   ExecFrame();
    virtual void   SetLockout(int seconds);

    virtual bool   ExecScriptedEvents();
    virtual bool   ExecStatisticalEvents();

protected:
    virtual void   ProsecuteKills(CombatAction* action);

    virtual CombatAssignment*
    ChooseAssignment(CombatGroup* c);
    virtual bool   CreateEvent(CombatAssignment* a);

    virtual CombatEvent* CreateEventDefend(CombatAssignment* a);
    virtual CombatEvent* CreateEventFighterAssault(CombatAssignment* a);
    virtual CombatEvent* CreateEventFighterStrike(CombatAssignment* a);
    virtual CombatEvent* CreateEventFighterSweep(CombatAssignment* a);
    virtual CombatEvent* CreateEventStarship(CombatAssignment* a);

    virtual bool         IsFriendlyAssignment(CombatAssignment* a);
    virtual bool         Success(CombatAssignment* a);
    virtual Text         GetTeamName(CombatGroup* g);

    // attributes:
    int            event_time;
};

#endif  // CampaignPlanEvent_h