1 #pragma once
2 
3 #include "GameSettings.h"
4 #include "GameInstance.h"
5 #include <array>
6 #include <stdint.h>
7 #include <string_theory/string>
8 
9 // gets the Strategic AI policy value for the current game difficulty
10 #define saipolicy(element) ( GCM->getStrategicAIPolicy()->element[gGameOptions.ubDifficultyLevel - 1] )
11 
12 // Refer to strategic-ai-policy.json for the definition of each value
13 class StrategicAIPolicy
14 {
15 public:
16 	std::array<unsigned int, NUM_DIF_LEVELS>    queens_pool_of_troops;
17 	std::array<unsigned int, NUM_DIF_LEVELS>    initial_garrison_percentages;
18 	std::array<unsigned int, NUM_DIF_LEVELS>    min_enemy_group_size;
19 	std::array<unsigned int, NUM_DIF_LEVELS>    enemy_starting_alert_level;
20 	std::array<unsigned int, NUM_DIF_LEVELS>    enemy_starting_alert_decay;
21 	std::array<unsigned int, NUM_DIF_LEVELS>    time_evaluate_in_minutes;
22 	std::array<int,          NUM_DIF_LEVELS>    time_evaluate_variance;
23 	std::array<unsigned int, NUM_DIF_LEVELS>    grace_period_in_hours;
24 	std::array<unsigned int, NUM_DIF_LEVELS>    patrol_grace_period_in_days;
25 	std::array<unsigned int, NUM_DIF_LEVELS>    num_aware_battles;
26 };
27