extends Node const SPEED_LIMIT: int = 4 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 = {} 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])