diff --git a/src/simulator/api-gdext/src/lib.rs b/src/simulator/api-gdext/src/lib.rs index 31d6e8a6..3066fac5 100644 --- a/src/simulator/api-gdext/src/lib.rs +++ b/src/simulator/api-gdext/src/lib.rs @@ -818,6 +818,20 @@ impl GdCity { self.inner.has_building(&building.to_string()) } + /// Register a building's flat yield bonuses. GDScript passes the + /// five per-turn bonuses parsed from the building JSON's `effects` array. + /// The city applies these in `get_yields` for each owned building. + #[func] + fn register_building_yields( + &mut self, building: GString, + food: f64, production: f64, gold: f64, culture: f64, science: f64, + ) { + self.inner.register_building_yields( + building.to_string(), + mc_city::CityYields { food, production, gold, culture, science }, + ); + } + /// Load items from a JSON array `[ { id, production: { building, secondary_building?, /// production_cost, materials?, requires_tech? }, ... }, ... ]`. The DataLoader passes /// the merged item list from `public/resources/items/*.json`. Items without a