summaryrefslogtreecommitdiffhomepage
path: root/Stars45/CampaignPlanStrategic.h
blob: 9437e2d46f68cdb4ab3867f7cf74f7f04d9610ce (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