perf(empire): ⚡ Optimize gold income scaling performance by migrating empire logic from GDScript to Rust
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
91d7516049
commit
5e6b3d7170
1 changed files with 9 additions and 9 deletions
|
|
@ -43,15 +43,11 @@ static func process_turn(player: RefCounted, game_map: RefCounted) -> void:
|
|||
var params_json: String = _build_params_json(player)
|
||||
var gd_economy: RefCounted = ClassDB.instantiate("GdEconomy") as RefCounted
|
||||
var result: Dictionary = gd_economy.process_turn(cities_json, units_json, params_json)
|
||||
var net_gold: int = int(result.get("net_gold", 0))
|
||||
# Apply per-yield difficulty multiplier to gold income only (warcouncil
|
||||
# p1-29 H4, 2026-04-27). Net negative gold (upkeep > income) is NOT
|
||||
# scaled — handicap should help income, not amplify deficits.
|
||||
if net_gold > 0:
|
||||
var gold_mult: float = GameState.get_effective_yield_mult(player, "gold")
|
||||
net_gold = int(net_gold * gold_mult)
|
||||
player.gold_per_turn = net_gold
|
||||
player.gold = int(result.get("new_gold", player.gold)) + (net_gold - int(result.get("net_gold", 0)))
|
||||
# Per-yield difficulty multiplier is applied INSIDE Rust now (warcouncil
|
||||
# p1-31, 2026-04-27): _build_params_json injects yield_mult and GdEconomy
|
||||
# scales gross_income before netting out expenses. Rail-1 compliant.
|
||||
player.gold_per_turn = int(result.get("net_gold", 0))
|
||||
player.gold = int(result.get("new_gold", player.gold))
|
||||
var disbanded_count: int = int(result.get("disbanded_units", 0))
|
||||
if disbanded_count > 0:
|
||||
_disband_cheapest(player, disbanded_count)
|
||||
|
|
@ -111,12 +107,16 @@ static func _build_params_json(player: RefCounted) -> String:
|
|||
if player.researched_techs != null:
|
||||
tech_count = player.researched_techs.size()
|
||||
var deficit_floor: int = -maxi(DEFICIT_MIN, tech_count * DEFICIT_PER_TECH)
|
||||
# Per-yield difficulty multiplier composes static difficulty handicap +
|
||||
# linear-per-turn growth (warcouncil p1-29 H4 / p1-31 Rail-1 port).
|
||||
var yield_mult: float = GameState.get_effective_yield_mult(player, "gold")
|
||||
return JSON.stringify(
|
||||
{
|
||||
"golden_age_active": bool(player.golden_age_active),
|
||||
"golden_age_bonus": GOLDEN_AGE_GOLD_BONUS,
|
||||
"current_gold": int(player.gold),
|
||||
"deficit_floor": deficit_floor,
|
||||
"yield_mult": yield_mult,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue