Refactor global scripts: remove Global.gd, add globals.gd with enhanced functionality
This commit is contained in:
@@ -1,114 +0,0 @@
|
||||
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 = {}
|
||||
|
||||
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])
|
||||
Reference in New Issue
Block a user