summaryrefslogtreecommitdiffhomepage
path: root/Stars45/CampaignPlanStrategic.h
blob: b5376f82fd6d414d2e348aca7b749a1b7fcac1f8 (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
/*  Project Starshatter 4.5
    Destroyer Studios LLC
    Copyright © 1997-2004. All Rights Reserved.

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


    OVERVIEW
    ========
    CampaignPlanStrategic prioritizes targets and defensible
    allied forces as the first step in force tasking.  This
    algorithm computes which enemy resources are most important
    to attack, based on the AI value of each combat group, and
    strategic weighting factors that help shape the strategy
    to the objectives for the current campaign.
*/

#ifndef CampaignPlanStrategic_h
#define CampaignPlanStrategic_h

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

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

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

   CampaignPlanStrategic(Campaign* c) : CampaignPlan(c) { }
   virtual ~CampaignPlanStrategic()                     { }
   
   // operations:
   virtual void   ExecFrame();

protected:
   void           PlaceGroup(CombatGroup* g);

   void           ScoreCombatant(Combatant* c);

   void           ScoreDefensible(Combatant* c);
   void           ScoreDefend(Combatant* c, CombatGroup* g);

   void           ScoreTargets(Combatant* c, Combatant* t);
   void           ScoreTarget(Combatant* c, CombatGroup* g);

   void           ScoreNeeds(Combatant* c);

   // zone alocation:
   void           BuildGroupList(CombatGroup* g, List<CombatGroup>& groups);
   void           AssignZones(Combatant* c);
   void           ResolveZoneMovement(CombatGroup* g);
};

#endif CampaignPlanStrategic_h