Update speed limit, enable embedded PCK format, and enhance brown dwarf production logic
This commit is contained in:
+12
-64
@@ -9,10 +9,6 @@ var description_targets: Dictionary = {}
|
||||
var description_samples: Dictionary = {}
|
||||
var description_rates: Dictionary = {}
|
||||
var description_elapsed: float = 0.0
|
||||
const UI_UPDATE_INTERVAL: float = 0.1
|
||||
var ui_elapsed: float = 0.0
|
||||
var ui_pages: Vector2i = Vector2i(-1, -1)
|
||||
var closing: bool = false
|
||||
|
||||
const PAGE_COUNT = 5
|
||||
const RESOURCE_PAGE = 1
|
||||
@@ -93,9 +89,7 @@ func set_datetime(value: float):
|
||||
# Simulation time advances in tenths of a year; displaying five decimal
|
||||
# places only adds zeroes and suggests precision the simulation does not
|
||||
# have.
|
||||
var text: String = Global.format_number(value, 1) if value != 0.0 else "0.0"
|
||||
if date_time.text != text:
|
||||
date_time.text = text
|
||||
date_time.text = Global.format_number(value, 1) if value != 0.0 else "0.0"
|
||||
|
||||
#region Item manipulations: update and visibility
|
||||
|
||||
@@ -103,27 +97,8 @@ func set_datetime(value: float):
|
||||
func set_owniverse_item_value() -> void:
|
||||
for item_id in owniverse.items_to_update:
|
||||
if owniverse_items.has(item_id):
|
||||
var item: OwniverseItem = owniverse_items[item_id]
|
||||
if item.is_visible_in_tree() and item.get_global_rect().intersects(stage_page_scroller.get_global_rect()):
|
||||
item.set_label(owniverse.items_to_update[item_id])
|
||||
|
||||
|
||||
func _refresh_ui(force: bool = false) -> void:
|
||||
if force or owniverse.item_amounts_dirty:
|
||||
owniverse.refresh_item_amounts(true)
|
||||
set_owniverse_item_value()
|
||||
set_datetime(owniverse.state.time.year)
|
||||
_set_active_page_actions()
|
||||
ui_elapsed = 0.0
|
||||
|
||||
|
||||
func _update_ui(delta: float) -> void:
|
||||
ui_elapsed += delta
|
||||
var position_in_pages: float = float(stage_page_scroller.scroll_horizontal) / PAGE_WIDTH
|
||||
var pages := Vector2i(floori(position_in_pages), ceili(position_in_pages))
|
||||
if pages != ui_pages or ui_elapsed >= UI_UPDATE_INTERVAL:
|
||||
ui_pages = pages
|
||||
_refresh_ui()
|
||||
owniverse_items[item_id].set_label(owniverse.items_to_update[item_id])
|
||||
owniverse.items_to_update.clear()
|
||||
|
||||
|
||||
#endregion
|
||||
@@ -244,9 +219,6 @@ func item_activated(item: OwniverseItem) -> void:
|
||||
|
||||
if item.item_id == "S" or item.item_id == "H":
|
||||
var _value = owniverse.produce_hs(item.item_id, 100_000)
|
||||
_unlock_items()
|
||||
_refresh_ui(true)
|
||||
_refresh_descriptions()
|
||||
|
||||
|
||||
func _check_counters(delta: float) -> Array:
|
||||
@@ -305,8 +277,6 @@ func _input(event: InputEvent) -> void:
|
||||
func _set_active_page_actions() -> void:
|
||||
for pa in page_actions:
|
||||
if !g_active_items.has(pa): continue
|
||||
if not page_actions[pa].is_visible_in_tree() or not page_actions[pa].get_global_rect().intersects(stage_page_scroller.get_global_rect()):
|
||||
continue
|
||||
|
||||
var item_id: String = g_active_items[pa].item_id
|
||||
var entity: OwniverseEntity = owniverse.entities[item_id]
|
||||
@@ -332,17 +302,12 @@ func _page_action_pressed(page_id: int, action_amount: float) -> void:
|
||||
|
||||
if action_amount > 0:
|
||||
owniverse.produce(item_id, action_amount)
|
||||
_unlock_items()
|
||||
_refresh_ui(true)
|
||||
_refresh_descriptions()
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
get_tree().auto_accept_quit = false
|
||||
owniverse.defer_item_updates = true
|
||||
var inited_result = init_enitities()
|
||||
locked_items = inited_result.locked_items
|
||||
load_data()
|
||||
@@ -352,7 +317,6 @@ func _ready() -> void:
|
||||
set_datetime(owniverse.state.time.year)
|
||||
set_owniverse_item_value()
|
||||
_unlock_items()
|
||||
_refresh_ui(true)
|
||||
|
||||
g_counters.swipe.sec = 0.2
|
||||
|
||||
@@ -365,7 +329,8 @@ func _process(delta: float) -> void:
|
||||
|
||||
owniverse.evolute(delta)
|
||||
_update_descriptions(delta)
|
||||
_update_ui(delta)
|
||||
set_owniverse_item_value()
|
||||
set_datetime(owniverse.state.time.year)
|
||||
|
||||
#owniverse.cycle(delta)
|
||||
|
||||
@@ -374,6 +339,7 @@ func _process(delta: float) -> void:
|
||||
var actions = _check_counters(delta)
|
||||
_do_actions(actions)
|
||||
|
||||
_set_active_page_actions()
|
||||
|
||||
|
||||
func _change_speed(delta: int) -> void:
|
||||
@@ -440,8 +406,10 @@ func load_data() -> bool:
|
||||
SaveManager.blocked_saves["owniverse"] = true
|
||||
push_error("Save is missing the current entity: " + id)
|
||||
return false
|
||||
owniverse.state = restored
|
||||
owniverse.new_state = restored.duplicate(true)
|
||||
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()
|
||||
pending_page = clampi(int(game_data.get("ui", {}).get("current_page", 0)), 0, PAGE_COUNT - 1)
|
||||
@@ -455,41 +423,21 @@ func _restore_page() -> void:
|
||||
if pending_page >= 0:
|
||||
stage_page_scroller.scroll_horizontal = pending_page * PAGE_WIDTH
|
||||
pending_page = -1
|
||||
_refresh_ui(true)
|
||||
|
||||
|
||||
func save_data() -> void:
|
||||
var page: int = pending_page
|
||||
if page < 0:
|
||||
page = clampi(roundi(float(stage_page_scroller.scroll_horizontal) / PAGE_WIDTH), 0, PAGE_COUNT - 1)
|
||||
SaveManager.request_save("owniverse", "qwerty", {
|
||||
SaveManager.save_data("owniverse", "qwerty", {
|
||||
"state": owniverse.state,
|
||||
"ui": {"current_page": page},
|
||||
})
|
||||
|
||||
|
||||
func _notification(what: int) -> void:
|
||||
if not is_node_ready() or closing:
|
||||
return
|
||||
if what == NOTIFICATION_WM_CLOSE_REQUEST:
|
||||
_close_after_save()
|
||||
elif what == NOTIFICATION_APPLICATION_PAUSED:
|
||||
if is_node_ready() and (what == NOTIFICATION_WM_CLOSE_REQUEST or what == NOTIFICATION_APPLICATION_PAUSED):
|
||||
save_data()
|
||||
# Mobile platforms can suspend all processing immediately after this event.
|
||||
SaveManager.flush_saves()
|
||||
|
||||
|
||||
func _close_after_save() -> void:
|
||||
closing = true
|
||||
set_process(false)
|
||||
set_process_input(false)
|
||||
mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
# Stop GUI actions too while the final snapshot is being written.
|
||||
process_mode = Node.PROCESS_MODE_DISABLED
|
||||
save_data()
|
||||
if SaveManager.is_saving():
|
||||
await SaveManager.saves_drained
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
func init_enitities() -> Dictionary:
|
||||
|
||||
Reference in New Issue
Block a user