Skip to main content

banished_formats/
game.rs

1//! The gameplay resources: terrain and climate profiles, start conditions, the toolbar, entity
2//! templates and the descriptions of their components (buildings, citizens, animals, resources,
3//! fires and more).
4//!
5//! Each resource has a struct and a reader function, for example [`ToolbarDescription`] and
6//! [`toolbar_description`]. The source is split into topic files (world, interface, entities,
7//! nature, particles, construction, goods, work, people and disasters), and everything is
8//! re-exported here, so every path is `banished_formats::game::NAME`.
9
10mod construction;
11mod disasters;
12mod entities;
13mod goods;
14mod interface;
15mod nature;
16mod particles;
17mod people;
18mod work;
19mod world;
20pub use construction::{
21    build_description, clear_area_description, create_bridge_description, create_drag_description,
22    create_fenced_description, create_placed_description, create_removal_description,
23    create_road_description, destroy_description, floor_description, terraform_description,
24    BuildDescription, ClearAreaDescription, CreateBridgeDescription, CreateDragDescription,
25    CreateFencedDescription, CreatePlacedDescription, CreateRemovalDescription,
26    CreateRoadDescription, DestroyDescription, FloorDescription, TerraformDescription,
27};
28pub use disasters::{fire_description, tornado_description, FireDescription};
29pub use entities::{
30    character_description, component_description, decal_description, interact_description,
31    interaction_points, model_description, point_list, CharacterDescription, ComponentDescription,
32    DecalDescription, InteractDescription, ModelDescription, ModelVariant, NamedPoint, PointList,
33};
34pub use goods::{
35    auto_pickup_description, market_description, raw_material_description, residence_description,
36    storage_description, storage_location_description, trade_description, value_description,
37    MarketDescription, Merchant, RawMaterialDescription, ResidenceDescription, StorageDescription,
38    TradeDescription, TradeRow, ValueDescription,
39};
40pub use interface::{
41    status_icon_description, toolbar_description, toolbar_item, ui_description,
42    StatusIconDescription, ToolbarDescription, ToolbarItem, UiController, UiDescription,
43};
44pub use nature::{
45    animal_description, fruit_description, growth_description, herd_description,
46    natural_resource_description, spawn_description, AnimalDescription, GrowthDescription,
47    HerdDescription, NaturalResourceDescription, SpawnEntry,
48};
49pub use particles::{
50    particle_description, particle_system, tornado_particle, ParticleDescription, ParticleSlot,
51    ParticleSystem, TornadoParticle,
52};
53pub use people::{
54    attendance_description, cemetery_description, citizen_description, disease,
55    disease_description, happiness_description, immigration_description, nomad_description,
56    population_description, tombstone_description, CitizenDescription, Disease, DiseaseDescription,
57    HappinessDescription, ImmigrationDescription, PopulationDescription, Scalar,
58};
59pub use work::{
60    consume_produce_description, crop_field_description, fishing_description, forester_description,
61    herbalist_description, hunt_description, livestock_description, orchard_description,
62    pasture_description, profession, quarry_description, radius_description, work_description,
63    workplace_description, ConsumeProduceDescription, FishingDescription, ForesterDescription,
64    HerbalistDescription, HuntDescription, LivestockDescription, ProduceRecipe, Profession,
65    QuarryDescription, WorkDescription, WorkPlaceDescription,
66};
67pub use world::{
68    climate_generator, climate_header, environment_description, external_list, map_description,
69    map_generator, terrain_generator, ClimateGenerator, ClimateHeader, EnvironmentDescription,
70    EnvironmentMonth, MapDescription, MapGenerator, PlacedStructure, TerrainGenerator,
71};
72
73use crate::crc::type_id;
74use crate::crs::{self, Reader};
75use crate::error::{format_err, Result};