Add world indicators and parameters to enhance universe simulation
- new universe creation function.
This commit is contained in:
+53
-8
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user