Add core simulation modules for owniverse mechanics
- Introduced `life_evolution.gd` to manage life evolution processes. - Implemented `manual_production.gd` for handling production mechanics, including resource management and production steps. - Created `object_batches.gd` to manage batches of objects, including scaling and appending batches. - Developed `object_ledger.gd` for tracking physical amounts, available resources, and binding ownerships. - Added `simulation_module.gd` as a base class for simulation modules, providing a weak reference to the world. - Established `stellar_rules.gd` for managing stellar evolution and destruction mechanics. - Introduced `universe_environment.gd` to calculate environmental parameters based on the current state of the universe.
This commit is contained in:
+18
-18
@@ -106,10 +106,10 @@ func set_datetime(value: float):
|
||||
|
||||
|
||||
func set_owniverse_item_value() -> void:
|
||||
for item_id in owniverse.items_to_update:
|
||||
for item_id in owniverse.presentation.pending_amounts:
|
||||
if owniverse_items.has(item_id):
|
||||
owniverse_items[item_id].set_label(owniverse.items_to_update[item_id])
|
||||
owniverse.items_to_update.clear()
|
||||
owniverse_items[item_id].set_label(owniverse.presentation.pending_amounts[item_id])
|
||||
owniverse.presentation.pending_amounts.clear()
|
||||
|
||||
|
||||
#endregion
|
||||
@@ -127,7 +127,7 @@ func _on_indicator_pressed(indicator_name: String, page: int = 0):
|
||||
|
||||
|
||||
func _set_item_description(item: OwniverseItem) -> void:
|
||||
var category: String = "Entity" if owniverse.entities.has(item.item_id) else "Force"
|
||||
var category: String = "Entity" if owniverse.catalog.entities.has(item.item_id) else "Force"
|
||||
var id: String = item.item_id if category == "Entity" else item.item_name.capitalize()
|
||||
var page: int = clampi(item.item_page, 0, 4)
|
||||
if description_targets.get(page, {}).get("id", "") != id:
|
||||
@@ -215,7 +215,7 @@ func item_activated(item: OwniverseItem) -> void:
|
||||
if item.item_id == "S" or item.item_id == "H":
|
||||
var _value = owniverse.state.amount[item.item_id]
|
||||
_value = 9 * _value if _value > 0 else 1
|
||||
owniverse.produce_hs(item.item_id, _value)
|
||||
owniverse.production.produce_hs(item.item_id, _value)
|
||||
|
||||
|
||||
func _check_counters(delta: float) -> Array:
|
||||
@@ -276,16 +276,16 @@ func _set_active_page_actions() -> void:
|
||||
if !g_active_items.has(pa): continue
|
||||
|
||||
var item_id: String = g_active_items[pa].item_id
|
||||
var entity: OwniverseEntity = owniverse.entities[item_id]
|
||||
var entity: OwniverseEntity = owniverse.catalog.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)
|
||||
var amount = owniverse.production.calculate_max_producible(entity)
|
||||
#print(item_id, " : ", amount)
|
||||
if item_id == "SMBH":
|
||||
var preview: Callable = func(requested: float) -> float:
|
||||
return owniverse.calculate_max_producible(entity, requested)
|
||||
return owniverse.production.calculate_max_producible(entity, requested)
|
||||
page_actions[pa].set_actions(item_id, amount, preview)
|
||||
else:
|
||||
page_actions[pa].set_actions(item_id, amount)
|
||||
@@ -298,7 +298,7 @@ func _page_action_pressed(page_id: int, action_amount: float) -> void:
|
||||
var item_id: String = g_active_items[page_id].item_id
|
||||
|
||||
if action_amount > 0:
|
||||
owniverse.produce(item_id, action_amount)
|
||||
owniverse.production.produce(item_id, action_amount)
|
||||
|
||||
|
||||
#endregion
|
||||
@@ -325,8 +325,8 @@ func create_new_universe() -> void:
|
||||
owniverse = Owniverse.new()
|
||||
var inited_result: Dictionary = init_enitities()
|
||||
locked_items = inited_result.locked_items
|
||||
owniverse.new_state = owniverse.state
|
||||
for entity in previous.entities.values():
|
||||
|
||||
for entity in previous.catalog.entities.values():
|
||||
entity.free()
|
||||
previous.free()
|
||||
|
||||
@@ -354,7 +354,7 @@ func create_new_universe() -> void:
|
||||
|
||||
|
||||
func _refresh_universe_ui() -> void:
|
||||
owniverse.refresh_item_amounts()
|
||||
owniverse.presentation.refresh(owniverse.state, owniverse.catalog)
|
||||
_change_speed(0)
|
||||
set_datetime(owniverse.state.time.year)
|
||||
set_owniverse_item_value()
|
||||
@@ -437,9 +437,9 @@ func load_data() -> bool:
|
||||
var complete: Dictionary = owniverse.state.duplicate(true)
|
||||
complete.merge(restored, true)
|
||||
owniverse.state = complete
|
||||
owniverse.new_state = complete
|
||||
owniverse.initialize_life_batches()
|
||||
owniverse.refresh_item_amounts()
|
||||
|
||||
owniverse.evolution.initialize_life_batches()
|
||||
owniverse.presentation.refresh(owniverse.state, owniverse.catalog)
|
||||
pending_page = clampi(int(game_data.get("ui", {}).get("current_page", 0)), 0, PAGE_COUNT - 1)
|
||||
_restore_page.call_deferred()
|
||||
return true
|
||||
@@ -491,14 +491,14 @@ func init_enitities() -> Dictionary:
|
||||
'locked_items': [],
|
||||
}
|
||||
owniverse.catalog.load_definitions(Global.OwniverseEntities)
|
||||
for entity_id in owniverse.entities:
|
||||
var entity: OwniverseEntity = owniverse.entities[entity_id]
|
||||
for entity_id in owniverse.catalog.entities:
|
||||
var entity: OwniverseEntity = owniverse.catalog.entities[entity_id]
|
||||
|
||||
owniverse.state.stats.total_amount[entity_id] = 0
|
||||
owniverse.state.amount[entity_id] = 0
|
||||
if entity.lifespan > 0:
|
||||
owniverse.state.batches[entity.id] = []
|
||||
owniverse.add_entity_to_batch(entity_id, 0, 0)
|
||||
owniverse.batches.add_entity_to_batch(entity_id, 0, 0)
|
||||
if entity.group_as != "":
|
||||
owniverse.state.amount[entity.group_as] = 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user