aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/defines/Define.hpp
blob: e1b2bc2f2ec9b06b18b6251670d12292a814d9c1 (plain) (blame)
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
#pragma once

#include "openvic-simulation/defines/AIDefines.hpp"
#include "openvic-simulation/defines/CountryDefines.hpp"
#include "openvic-simulation/defines/DiplomacyDefines.hpp"
#include "openvic-simulation/defines/EconomyDefines.hpp"
#include "openvic-simulation/defines/GraphicsDefines.hpp"
#include "openvic-simulation/defines/MilitaryDefines.hpp"
#include "openvic-simulation/defines/PopsDefines.hpp"
#include "openvic-simulation/types/Date.hpp"
#include "openvic-simulation/utility/Getters.hpp"

namespace OpenVic {
   struct DefineManager {
   private:
      // Date
      Date PROPERTY(start_date);
      Date PROPERTY(end_date);

      // Other define groups
      AIDefines PROPERTY(ai_defines);
      CountryDefines PROPERTY(country_defines);
      DiplomacyDefines PROPERTY(diplomacy_defines);
      EconomyDefines PROPERTY(economy_defines);
      GraphicsDefines PROPERTY(graphics_defines);
      MilitaryDefines PROPERTY(military_defines);
      PopsDefines PROPERTY(pops_defines);

   public:
      DefineManager();

      constexpr bool in_game_period(Date date) const {
         return date.in_range(start_date, end_date);
      }

      bool load_defines_file(ast::NodeCPtr root);
   };
}