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