Add world indicators and parameters to enhance universe simulation

- new universe creation function.
This commit is contained in:
Kirill
2026-09-28 22:19:13 +03:00
parent e79f3fa362
commit 15ee7833ed
14 changed files with 522 additions and 27 deletions
+53 -8
View File
@@ -5,6 +5,9 @@ const OWNIVERSE_ITEM = preload("uid://d3xjfxwe3w16v")
const SPEED_TEXTURE_NAME_TEMPLATE = "res://ui/topmenu/time&speed/time%s.png"
const ItemDescription = preload("res://world/owniverse/item_description.gd")
const WorldIndicators = preload("res://ui/indicators/world_indicators.gd")
var world_indicators: RefCounted
var indicator_elapsed: float = 0.0
var description_targets: Dictionary = {}
var description_samples: Dictionary = {}
var description_rates: Dictionary = {}
@@ -317,15 +320,10 @@ func _page_action_pressed(page_id: int, action_amount: float) -> void:
func _ready() -> void:
get_tree().auto_accept_quit = false
var inited_result = init_enitities()
locked_items = inited_result.locked_items
world_indicators = WorldIndicators.new(self)
create_new_universe()
load_data()
_init_owniverse_items()
owniverse.refresh_item_amounts()
_change_speed(0)
set_datetime(owniverse.state.time.year)
set_owniverse_item_value()
_unlock_items()
_refresh_universe_ui()
g_counters.swipe.sec = 0.2
@@ -333,10 +331,57 @@ func _ready() -> void:
page_actions[pa].action_pressed.connect(_page_action_pressed)
page_actions[pa].page_id = pa
## Starts a fresh universe. Can be connected directly to a button's pressed signal.
## Saving continues through the normal autosave/close path.
func create_new_universe() -> void:
var previous: Owniverse = owniverse
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():
entity.free()
previous.free()
if is_instance_valid(g_tween):
g_tween.kill()
g_active_items.clear()
description_targets.clear()
description_samples.clear()
description_rates.clear()
description_elapsed = 0.0
for label in g_item_descriptions:
label.text = ""
for item in owniverse_items.values():
item.get_parent().remove_child(item)
item.queue_free()
_init_owniverse_items()
for page in range(5, item_pages.size()):
item_pages[page].visible = false
for actions in page_actions.values():
actions.set_actions("", 0.0)
pending_page = RESOURCE_PAGE
_restore_page.call_deferred()
_refresh_universe_ui()
_on_topmenu_button_pressed("World")
func _refresh_universe_ui() -> void:
owniverse.refresh_item_amounts()
_change_speed(0)
set_datetime(owniverse.state.time.year)
set_owniverse_item_value()
_unlock_items()
if world_indicators != null: world_indicators.update(owniverse)
func _process(delta: float) -> void:
owniverse.evolute(delta)
indicator_elapsed += delta
if indicator_elapsed >= 0.1:
indicator_elapsed = 0.0
world_indicators.update(owniverse)
_update_descriptions(delta)
set_owniverse_item_value()
set_datetime(owniverse.state.time.year)