Refactor production logic to use state amounts; update calculate_max_producible function to accept default desired amount

This commit is contained in:
Kirill
2026-09-01 21:29:07 +03:00
parent d90f8693c9
commit 2f4b6a98d8
2 changed files with 9 additions and 3 deletions
+7 -1
View File
@@ -240,7 +240,13 @@ func _set_active_page_actions() -> void:
if !g_active_items.has(pa): continue if !g_active_items.has(pa): continue
var item_id: String = g_active_items[pa].item_id var item_id: String = g_active_items[pa].item_id
var amount = owniverse.get_available_to_produce(item_id) var entity: OwniverseEntity = owniverse.entities[item_id]
#var amount = owniverse.get_available_to_produce(item_id)
#var amount = owniverse.get_available_to_produce(entity)
var amount = owniverse.calculate_max_producible(entity)
print(item_id, " : ", amount)
page_actions[pa].set_actions(item_id, amount) page_actions[pa].set_actions(item_id, amount)
+2 -2
View File
@@ -122,14 +122,14 @@ func produce_hs(entity_id: String, value: float) -> float:
## @param entity - entity to produce ## @param entity - entity to produce
## @param desired_amount - desired quantity ## @param desired_amount - desired quantity
## @return maximum producible amount considering all constraints ## @return maximum producible amount considering all constraints
func calculate_max_producible(entity: OwniverseEntity, desired_amount: float) -> float: func calculate_max_producible(entity: OwniverseEntity, desired_amount: float = 1.0E150) -> float:
var max_producible: float = desired_amount var max_producible: float = desired_amount
# Check cost constraints - resources consumed during production # Check cost constraints - resources consumed during production
for cost_item in entity.cost: for cost_item in entity.cost:
if entity.cost[cost_item] == 0: if entity.cost[cost_item] == 0:
continue continue
var available = current_amount.get(cost_item, 0.0) var available = state.amount.get(cost_item, 0.0)
var max_from_cost = floorf(available / entity.cost[cost_item]) var max_from_cost = floorf(available / entity.cost[cost_item])
max_producible = min(max_producible, max_from_cost) max_producible = min(max_producible, max_from_cost)