c22b21a537
Enhance stage.gd debug output in _on_topmenu_button_pressed function for better state tracking; comment out unnecessary print statements. Update owniverse.gd to introduce new state properties: batch_origins, distribution, and auto_resources; refactor evolute function for improved state management and batch processing. Revise state.gd to clean up debug print statements in add function for better readability and maintainability.
115 lines
3.2 KiB
GDScript
115 lines
3.2 KiB
GDScript
extends Node
|
|
|
|
const SPEED_LIMIT: int = 5
|
|
|
|
var Settings: Dictionary = {
|
|
"filename": "save-0001",
|
|
"sound_volume": 1.0,
|
|
"language": "en",
|
|
}
|
|
|
|
# TODO getter setter for locale
|
|
|
|
var Locales: Dictionary = {}
|
|
var Locale = "en"
|
|
|
|
var OwniverseEntities: Dictionary = {}
|
|
var OwniverseItems: Dictionary = {}
|
|
var Templates: Dictionary = {}
|
|
|
|
var batch_count: float = 40.0 # must be even not odd
|
|
|
|
|
|
func get_localized_item_description(item_id: String, item: String) -> String:
|
|
if Locales[Locale].has(item_id):
|
|
return Locales[Locale][item_id][item]
|
|
return ""
|
|
|
|
|
|
func get_description(item_id: String, items: Array = []) -> String:
|
|
if !Templates[Locale].has(item_id):
|
|
return ""
|
|
var description: String = Templates[Locale][item_id]["text"]
|
|
var value = 0
|
|
for item in items:
|
|
description.replace("value" + str(value), str(item))
|
|
return description
|
|
|
|
|
|
func format_number(value: float, digits: int = 0) -> String:
|
|
if value == 0: return ""
|
|
if value < 10_000:
|
|
return "%.*f" % [digits, value]
|
|
|
|
var exp_value = int(floor(log(abs(value)) / log(10.0)))
|
|
var mantissa = value / pow(10.0, exp_value)
|
|
|
|
return "%.*f" % [digits, mantissa] + "E%+d" % exp_value
|
|
|
|
|
|
func _ready() -> void:
|
|
OwniverseEntities = _read_from_csv("res://data/owniverse_entitites.txt")
|
|
OwniverseItems = _read_from_csv("res://data/owniverse_items.txt")
|
|
|
|
Locales["en"] = _read_from_csv("res://data/locale.en.txt")
|
|
Locales["ru"] = _read_from_csv("res://data/locale.ru.txt")
|
|
|
|
Templates["en"] = _read_from_csv("res://data/templates.en.txt")
|
|
|
|
|
|
func _read_from_csv(file_path: String) -> Dictionary:
|
|
if not FileAccess.file_exists(file_path):
|
|
printerr("File not found: " + file_path)
|
|
return {}
|
|
|
|
var file = FileAccess.open(file_path, FileAccess.READ)
|
|
if file == null:
|
|
printerr("File can not be opened:" + file_path)
|
|
return {}
|
|
|
|
var headers: PackedStringArray = []
|
|
var data: Array = []
|
|
|
|
if not file.eof_reached():
|
|
headers = PackedStringArray()
|
|
for val in file.get_csv_line("|"):
|
|
headers.append(val.strip_edges())
|
|
|
|
while not file.eof_reached():
|
|
var raw_row = file.get_csv_line("|")
|
|
if raw_row.is_empty(): # пропускаем пустые строки
|
|
continue
|
|
|
|
var trimmed_row: PackedStringArray = []
|
|
for val in raw_row:
|
|
trimmed_row.append(val.strip_edges())
|
|
|
|
data.append(trimmed_row)
|
|
|
|
file.close()
|
|
|
|
var dict_data: Dictionary = {}
|
|
for row in data:
|
|
if row.size() < 2: continue
|
|
|
|
if row.size() == headers.size():
|
|
var dict: Dictionary = {}
|
|
for i in headers.size():
|
|
dict[headers[i]] = row[i]
|
|
dict_data[row[0]] = dict
|
|
|
|
return dict_data
|
|
|
|
|
|
func _read_folder_list(folder_name: String) -> void:
|
|
var dir := DirAccess.open(folder_name)
|
|
if dir == null: printerr("Could not open folder: ", folder_name); return
|
|
dir.list_dir_begin()
|
|
for file: String in dir.get_files():
|
|
print(" → ", file)
|
|
|
|
|
|
func _print_dict(dict_to_print: Dictionary):
|
|
for d in dict_to_print:
|
|
print(d, " → ", dict_to_print[d])
|