diff --git a/src/dev-util/savegame.gd b/src/dev-util/savegame.gd index cf4c5d4..073a684 100644 --- a/src/dev-util/savegame.gd +++ b/src/dev-util/savegame.gd @@ -7,7 +7,7 @@ class_name SaveGame extends Resource @export var mementos_complete: int = 0 @export var board_state: Dictionary = {} @export var thumbnail: Texture = preload("res://import/interface-elements/empty_save_slot.png") -@export var last_saved: Dictionary = Time.get_datetime_dict_from_system() +@export var last_saved: float = Time.get_unix_time_from_system() @export var is_save_file_valid: bool = false @@ -38,15 +38,13 @@ func read_save_file(): if FileAccess.file_exists("%s/thumbnails/%s.png" % [State.user_saves_path, filepath]): tmp_img = Image.load_from_file("%s/thumbnails/%s.png" % [State.user_saves_path, filepath]) - is_save_file_valid = ( - unique_save_name is String and - current_room is int and - mementos_complete is int and - board_state is Dictionary and - last_saved is Dictionary and - Time.get_unix_time_from_datetime_dict(last_saved) != 0 and - tmp_img is Image + parsed["nique_save_name"] is String and + parsed["urrent_room"] is int and + parsed["ementos_complete"] is int and + parsed["oard_state"] is Dictionary and + parsed["ast_saved"] is float and last_saved != 0 and + parsed["mp_img"] is Image ) if is_save_file_valid: @@ -66,7 +64,7 @@ func _get_save_dict() -> Dictionary: } func save_to_file(current_screen: Texture): - last_saved = Time.get_datetime_dict_from_system() + last_saved = Time.get_unix_time_from_system() var thumbnail_image: Image = current_screen.get_image() current_screen.resize(384, 261, Image.INTERPOLATE_LANCZOS) diff --git a/src/logic-scenes/main menu/save_game_display.gd b/src/logic-scenes/main menu/save_game_display.gd index 85ba426..20e596e 100644 --- a/src/logic-scenes/main menu/save_game_display.gd +++ b/src/logic-scenes/main menu/save_game_display.gd @@ -17,28 +17,28 @@ func _init(save: SaveGame, id: int) -> void: heading.theme_type_variation = "HeaderLarge" var localised_date_time: String - var localised_weekday: PackedStringArray + var date_time: Dictionary = Time.get_datetime_dict_from_unix_time(save.last_saved) match TranslationServer.get_locale(): "de": localised_weekday = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"] - localised_date_time = "%s, %d.%d.%d um %d:%02d" % [localised_weekday[save.last_saved["weekday"]], - save.last_saved["day"], - save.last_saved["month"], - save.last_saved["year"], - save.last_saved["hour"], - save.last_saved["minute"] + localised_date_time = "%s, %d.%d.%d um %d:%02d" % [localised_weekday[date_time["weekday"]], + date_time["day"], + date_time["month"], + date_time["year"], + date_time["hour"], + date_time["minute"] ] _: localised_weekday = ["Monday", "Tuseday", "Wensday", "Thursday", "Friday", "Saturday", "Sunday"] - localised_date_time = "%s, %d/%d/%d - %d:%02d (%s)" % [localised_weekday[save.last_saved["weekday"]], - save.last_saved["day"], - save.last_saved["month"], - save.last_saved["year"], - save.last_saved["hour"] % 12 if save.last_saved["hour"] % 12 > 1 else 12 if save.last_saved["hour"] == 12 or save.last_saved["minute"] == 0 else 0, - save.last_saved["minute"], - "AM" if save.last_saved["hour"] < 12 else "PM"] + localised_date_time = "%s, %d/%d/%d - %d:%02d (%s)" % [localised_weekday[date_time["weekday"]], + date_time["day"], + date_time["month"], + date_time["year"], + date_time["hour"] % 12 if date_time["hour"] % 12 > 1 else 12 if date_time["hour"] == 12 or date_time["minute"] == 0 else 0, + date_time["minute"], + "AM" if date_time["hour"] < 12 else "PM"] var time:= Label.new() time.text = localised_date_time if not save.current_room == 0 else "Start new game." diff --git a/src/logic-scenes/main menu/save_game_list.gd b/src/logic-scenes/main menu/save_game_list.gd index 8a22d60..72ef6eb 100644 --- a/src/logic-scenes/main menu/save_game_list.gd +++ b/src/logic-scenes/main menu/save_game_list.gd @@ -19,6 +19,12 @@ var scroll_container: ScrollContainer var create_new_game: bool = false func _ready() -> void: + var dir = DirAccess.open(State.user_saves_path) + print(DirAccess.get_open_error()) + # Invalid Error being raised when Directory does not exist. + if DirAccess.get_open_error() == ERR_INVALID_PARAMETER: + dir = DirAccess.open("user://") + dir.make_dir_recursive(State.user_saves_path) load_games() func load_games(): @@ -36,6 +42,8 @@ func load_games(): if scroll_container != null: scroll_container.free() + scroll_container = ScrollContainer.new() + scroll_container.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED add_child(scroll_container) @@ -64,8 +72,8 @@ func get_most_recent_save() -> SaveGame: var most_recent_time := 0.0 var most_recent_index:int = 0 for i in range(saves.size()): - if Time.get_unix_time_from_datetime_dict(saves[i].last_saved) > most_recent_time and not saves[i].current_room == 0: + if saves[i].last_saved > most_recent_time and not saves[i].current_room == 0: most_recent_index = i - most_recent_time = Time.get_unix_time_from_datetime_dict(saves[i].last_saved) + most_recent_time = saves[i].last_saved - return saves[most_recent_index] if most_recent_time > 0 else SaveGame.new(0) + return saves[most_recent_index] if most_recent_time > 0 else SaveGame.new()