_________ __ __
/ _____// |_____________ _/ |______ ____ __ __ ______
\_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
/ \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
/_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
\/ \/ \//_____/ \/
______________________ ______________________
T H E W A R B E G I N S
Stratagus - A free fantasy real time strategy game engine
Go to the documentation of this file.
30 #ifndef __AI_LOCAL_H__
31 #define __AI_LOCAL_H__
110 #define AI_WAIT_ON_RALLY_POINT 60
132 InternalRemoveUnit(&unit);
169 void CountTypes(
unsigned int *counter,
const size_t len);
174 static void InternalRemoveUnit(
CUnit *unit);
194 #define AI_MAX_FORCES 50
195 #define AI_MAX_FORCE_INTERNAL (AI_MAX_FORCES / 2)
207 inline size_t Size()
const {
return forces.size(); }
214 for (
unsigned int i = 0; i < forces.size(); ++i) {
215 if (force == &forces[i]) {
224 if (script[index] == -1) {
227 return script[index];
237 std::vector<AiForce> forces;
335 std::vector<std::vector<CUnitType *> > &
Train();
340 std::vector<std::vector<CUnitType *> > &
Build();
345 std::vector<std::vector<CUnitType *> > &
Upgrade();
352 std::vector<std::vector<CUnitType *> > &
Research();
364 std::vector<std::vector<CUnitType *> > &
Repair();
369 std::vector<std::vector<CUnitType *> > &
UnitLimit();
374 std::vector<std::vector<CUnitType *> > &
Equiv();
380 std::vector<std::vector<CUnitType *> > &
Refinery();
386 std::vector<std::vector<CUnitType *> > &
Depots();
393 extern std::vector<CAiType *>
AiTypes;
464 const Vec2i &pos,
unsigned range);
474 #endif // !__AI_LOCAL_H__
std::vector< std::vector< CUnitType * > > & Equiv()
Definition: ai.cpp:1086
Diplomacy states for CommandDiplomacy.
Definition: player.h:83
int Used[MaxCosts]
Resources to keep in reserve.
Definition: ai_local.h:303
unsigned long LastCanNotMoveGameCycle
When did the last explore occur?
Definition: ai_local.h:313
void AiAddResearchRequest(CUpgrade *upgrade)
Add research request to resource manager.
Definition: ai_resource.cpp:741
AiForce()
Definition: ai_local.h:121
CUnitType * Type
built number
Definition: ai_local.h:257
size_t Size() const
Definition: ai_local.h:156
PlayerAi * AiPlayer
equivalence between unittypes
Definition: ai.cpp:167
@ MaxCosts
resource 6
Definition: upgrade_structs.h:70
CPlayer * Player
Definition: ai_local.h:293
std::vector< CAiType * > AiTypes
Ai sleeps # cycles.
Definition: ai.cpp:164
void AiNewDepotRequest(CUnit &worker)
Definition: ai_resource.cpp:358
void clear()
Definition: unit_cache.h:61
@ AiForceAttackingState_Boarding
Definition: ai_local.h:104
std::vector< CUnitType * > UpgradeToRequests
unit-types to build/train request,priority list
Definition: ai_local.h:315
std::vector< AiRequestType > UnitTypeRequests
Last can not move cycle.
Definition: ai_local.h:314
Definition: unit_cache.h:50
int GetForce(const CUnit &unit)
Definition: ai_force.cpp:591
#define AI_WAIT_ON_RALLY_POINT
Definition: ai_local.h:110
Definition: ai_local.h:278
Vec2i Pos
wait until this cycle
Definition: ai_local.h:259
int AiFindAvailableUnitTypeEquiv(const CUnitType &type, int *result)
Finds all available equivalents units to a given one, in the preferred order.
Definition: ai_force.cpp:279
AiForceRole
Definition: ai_local.h:95
void AiAttackWithForceAt(unsigned int force, int x, int y)
Attack with force at position.
Definition: ai_force.cpp:742
std::vector< std::vector< CUnitType * > > & Train()
Definition: ai.cpp:1044
int Needed[MaxCosts]
Used resources.
Definition: ai_local.h:304
int UnitTypeEquivs[UnitTypeMax+1]
AI helper variables.
Definition: ai_force.cpp:197
Definition: ai_local.h:83
@ AiForceRoleDefault
Definition: ai_local.h:96
void AiSendExplorers()
Definition: ai_plan.cpp:503
void AiAttackWithForces(int *forces)
Attack with forces in array.
Definition: ai_force.cpp:809
unsigned long Wait
unit-type
Definition: ai_local.h:258
bool Defending
Flag saying force is complete build.
Definition: ai_local.h:178
Vec2i pos
Definition: ai_local.h:271
void AiNewUnitTypeEquiv(const CUnitType &a, const CUnitType &b)
Make two unittypes be considered equals.
Definition: ai_force.cpp:219
@ AiForceRoleDefend
Force should attack.
Definition: ai_local.h:98
@ AiForceRoleAttack
So default is attacking.
Definition: ai_local.h:97
int LastRepairBuilding
What the resource manager should build.
Definition: ai_local.h:318
void RemoveDeadUnit()
Definition: ai_force.cpp:610
bool NewRallyPoint(const Vec2i &startPos, Vec2i *resultPos)
Definition: ai_force.cpp:419
void for_each(const _T functor)
Apply a function to every element of a cache.
Definition: unit_cache.h:102
T y
Definition: vec2i.h:43
Definition: ai_local.h:117
unsigned int Want
Definition: ai_local.h:88
unsigned int FindFreeForce(AiForceRole role=AiForceRoleDefault, int begin=0)
Definition: ai_force.cpp:568
unsigned long LastExplorationGameCycle
Requests for exploration.
Definition: ai_local.h:312
void AiResourceManager()
Periodic called resource manager handler.
Definition: ai_resource.cpp:1486
CUnit * AiGetSuitableDepot(const CUnit &worker, const CUnit &oldDepot, CUnit **resUnit)
Definition: ai_resource.cpp:467
bool Attacking
Flag saying force is defending.
Definition: ai_local.h:179
Definition: unittype.h:508
CUnitType * Type
elements in table
Definition: ai_local.h:77
std::string Script
class of this ai
Definition: ai_local.h:65
int getIndex(AiForce *force) const
Definition: ai_local.h:212
std::vector< AiExplorationRequest > FirstExplorationRequest
Build new depots if nessesary.
Definition: ai_local.h:311
bool AiAssignToForce(CUnit &unit)
Assign a new unit to a force.
Definition: ai_force.cpp:713
int NeededMask
Collect % of resources.
Definition: ai_local.h:306
Vec2i GoalPos
Attack state.
Definition: ai_local.h:188
std::vector< std::vector< CUnitType * > > & Refinery()
Definition: ai.cpp:1092
@ AiForceAttackingState_Free
Definition: ai_local.h:102
int Reserve[MaxCosts]
Forces controlled by AI.
Definition: ai_local.h:302
void AiRemoveDeadUnitInForces()
Cleanup units in force.
Definition: ai_force.cpp:703
int PlanAttack()
Definition: ai_plan.cpp:343
void Update()
Definition: ai_force.cpp:1138
void AiAddUnitTypeRequest(CUnitType &type, int count)
Current AI player.
Definition: ai_resource.cpp:1455
#define AI_MAX_FORCES
Definition: ai_local.h:194
Definition: upgrade_structs.h:154
Definition: ai_local.h:265
@ AiForceAttackingState_Waiting
Definition: ai_local.h:103
AiForceAttackingState State
Original force number.
Definition: ai_local.h:187
std::vector< AiBuildQueue > UnitTypeBuilt
Upgrades requested and priority list.
Definition: ai_local.h:317
size_t Size() const
Definition: ai_local.h:207
std::vector< std::vector< CUnitType * > > & UnitLimit()
Definition: ai.cpp:1080
Definition: ai_local.h:202
Definition: ai_local.h:57
unsigned int Made
requested number
Definition: ai_local.h:256
void Insert(CUnit &unit)
Definition: ai_force.cpp:356
bool BuildDepots
Flag script debuging on/off.
Definition: ai_local.h:309
std::string Name
Definition: ai_local.h:62
CAiType()
Definition: ai_local.h:60
CUnit * Remove(const unsigned int index)
Definition: unit_cache.h:140
std::vector< std::vector< CUnitType * > > & Build()
Definition: ai.cpp:1050
bool Assign(CUnit &unit, int force=-1)
Definition: ai_force.cpp:622
int AiGetBuildRequestsCount(const PlayerAi &pai, int(&counter)[UnitTypeMax])
Definition: ai_resource.cpp:343
void AiCheckMagic()
Check for magic.
Definition: ai_magic.cpp:51
size_t size() const
Definition: unit_cache.h:59
bool ScriptDebug
Flag need food.
Definition: ai_local.h:308
const AiForce & operator[](unsigned int index) const
Definition: ai_local.h:209
std::string Script
AI type of this player AI.
Definition: ai_local.h:296
std::string Race
Name of this ai.
Definition: ai_local.h:63
@ AiForceAttackingState_AttackingWithTransporter
Definition: ai_local.h:106
void Remove(CUnit &unit)
Definition: ai_local.h:129
int AiFindUnitTypeEquiv(const CUnitType &type, int *result)
Finds all equivalents units to a given one.
Definition: ai_force.cpp:246
void AiForceManager()
Periodic called force manager handler.
Definition: ai_local.h:119
AiBuildQueue()
Definition: ai_local.h:249
unsigned int Count
Definition: ai_local.h:76
std::vector< std::vector< CUnitType * > > & Depots()
Definition: ai.cpp:1098
AiForce & operator[](unsigned int index)
Definition: ai_local.h:210
AiForceManager Force
Cycles to sleep.
Definition: ai_local.h:299
CUnitCache Units
Count and types of unit-type.
Definition: ai_local.h:183
void AiResetUnitTypeEquiv()
Remove any equivalence between unittypes.
Definition: ai_force.cpp:206
CAiType * AiType
Engine player structure.
Definition: ai_local.h:294
void Attack(const Vec2i &pos)
Definition: ai_force.cpp:440
bool NeedSupply
Mask for needed resources.
Definition: ai_local.h:307
AiRequestType()
Definition: ai_local.h:74
void CheckUnits(int *counter)
Definition: ai_force.cpp:652
void Reset(bool types=false)
Definition: ai_local.h:139
bool AiEnemyUnitsInDistance(const CPlayer &player, const CUnitType *type, const Vec2i &pos, unsigned range)
Check if there are enemy units in a given range (optionally of type)
Definition: ai_resource.cpp:213
unsigned int getScriptForce(unsigned int index)
Definition: ai_local.h:222
AiUnitType()
Definition: ai_local.h:86
Vec2i HomePos
Attack point tile map position.
Definition: ai_local.h:189
std::vector< CUpgrade * > ResearchRequests
Upgrade to unit-type requested and priority list.
Definition: ai_local.h:316
int WaitOnRallyPoint
Return after attack tile map position.
Definition: ai_local.h:190
AiExplorationRequest(const Vec2i &pos, int mask)
Definition: ai_local.h:268
AiForceManager()
Definition: ai_force.cpp:562
bool AiFindBuildingPlace(const CUnit &worker, const CUnitType &type, const Vec2i &nearPos, Vec2i *resultPos)
Find nice building place.
Definition: ai_building.cpp:433
int Collect[MaxCosts]
Needed resources.
Definition: ai_local.h:305
bool IsAttacking() const
Definition: ai_local.h:158
std::vector< std::vector< CUnitType * > > & Upgrade()
Definition: ai.cpp:1056
T x
Definition: vec2i.h:42
void AiExplore(const Vec2i &pos, int exploreMask)
Ask the ai to explore around pos.
Definition: ai_resource.cpp:1471
void RemoveDeadUnit()
Definition: ai_force.cpp:372
bool Completed
Definition: ai_local.h:177
Definition: ai_local.h:246
AiForceAttackingState
Definition: ai_local.h:101
int FormerForce
Units in the force.
Definition: ai_local.h:186
void AiAssignFreeUnitsToForce(int force=-1)
Assign a free units to a force.
Definition: ai_force.cpp:721
constexpr unsigned short UnitTypeMax
How many players are supported.
Definition: settings.h:63
int AiFindWall(AiForce *force)
Find a wall to attack.
Definition: ai_plan.cpp:184
Definition: ai_local.h:71
AiForceRole Role
Flag saying force is attacking.
Definition: ai_local.h:180
std::vector< std::vector< CUnitType * > > & SingleResearch()
Definition: ai.cpp:1068
unsigned long SleepCycles
Script executed.
Definition: ai_local.h:297
std::vector< std::vector< CUnitType * > > & Research()
Definition: ai.cpp:1062
Definition: ai_local.h:328
CUnitType * Type
number of this unit-type wanted
Definition: ai_local.h:89
void AiAddUpgradeToRequest(CUnitType &type)
Add upgrade-to request to resource manager.
Definition: ai_resource.cpp:836
std::vector< std::vector< CUnitType * > > & Repair()
Definition: ai.cpp:1074
void ReturnToHome()
Definition: ai_force.cpp:545
AiHelper AiHelpers
List of all AI types.
Definition: ai.cpp:165
The big unit structure.
Definition: unit.h:135
unsigned int Want
Definition: ai_local.h:255
@ AiForceAttackingState_Attacking
Definition: ai_local.h:107
int Mask
pos on map
Definition: ai_local.h:272
void AiAttackWithForce(unsigned int force)
Attack with force.
Definition: ai_force.cpp:764
std::string Class
for this race
Definition: ai_local.h:64
@ AiForceAttackingState_GoingToRallyPoint
Definition: ai_local.h:105
PlayerAi()
Definition: ai_local.h:281
std::vector< AiUnitType > UnitTypes
Role of the force.
Definition: ai_local.h:182
(C) Copyright 1998-2012 by The Stratagus Project under the GNU General Public License.
All trademarks and copyrights on this page are owned by their respective owners.