aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/economy/production/ArtisanalProducer.hpp
blob: 3287b40f4e37ca22fe5bc908352965e46a243b8f (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
#pragma once

#include "openvic-simulation/economy/production/ProductionType.hpp"
#include "openvic-simulation/economy/trading/MarketInstance.hpp"
#include "openvic-simulation/modifier/ModifierEffectCache.hpp"
#include "openvic-simulation/pop/Pop.hpp"
#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
#include "openvic-simulation/utility/Getters.hpp"

namespace OpenVic {
   struct ArtisanalProducer {
   private:
      MarketInstance& market_instance;
      ModifierEffectCache const& modifier_effect_cache;
      Pop& pop;
      Pop::pop_size_t previous_pop_size;
      fixed_point_t inputs_bought_scalar;
      ProductionType const& PROPERTY(production_type);
      fixed_point_t PROPERTY(current_production);

   public:
      ArtisanalProducer(
         MarketInstance& new_market_instance,
         ModifierEffectCache const& new_modifier_effect_cache,
         Pop& new_pop,
         Pop::pop_size_t new_previous_pop_size,
         fixed_point_t new_inputs_bought_scalar,
         ProductionType const& new_production_type,
         fixed_point_t new_current_production
      );
      void artisan_tick();
   };
}