1 #pragma once
2 
3 #include "item_type.h"
4 #include "creature_factory.h"
5 #include "item_factory.h"
6 #include "furniture_factory.h"
7 #include "inhabitants_info.h"
8 
9 enum class BuildingId { WOOD, MUD, BRICK, WOOD_CASTLE, DUNGEON, DUNGEON_SURFACE};
10 
11 RICH_ENUM(BiomeId,
12   GRASSLAND,
13   FORREST,
14   MOUNTAIN
15 );
16 
17 struct StockpileInfo {
18   enum Type { GOLD, MINERALS } type;
19   int number;
20 };
21 
22 enum class SettlementType {
23   VILLAGE,
24   SMALL_VILLAGE,
25   FORREST_VILLAGE,
26   FOREST,
27   CASTLE,
28   CASTLE2,
29   COTTAGE,
30   FORREST_COTTAGE,
31   TOWER,
32   WITCH_HOUSE,
33   MINETOWN,
34   ANT_NEST,
35   SMALL_MINETOWN,
36   VAULT,
37   CAVE,
38   SPIDER_CAVE,
39   ISLAND_VAULT,
40   ISLAND_VAULT_DOOR,
41   CEMETERY,
42   SWAMP,
43   MOUNTAIN_LAKE,
44 };
45 
46 class CollectiveBuilder;
47 
48 struct SettlementInfo {
49   SettlementType type;
50   InhabitantsInfo inhabitants;
51   optional<string> locationName;
52   TribeId tribe;
53   optional<string> race;
54   BuildingId buildingId;
55   vector<StairKey> downStairs;
56   vector<StairKey> upStairs;
57   vector<StockpileInfo> stockpiles;
58   optional<CreatureId> guardId;
59   optional<ItemType> elderLoot;
60   optional<ItemFactory> shopFactory;
61   CollectiveBuilder* collective;
62   optional<FurnitureFactory> furniture;
63   optional<FurnitureFactory> outsideFeatures;
64   bool closeToPlayer;
65 };
66