implementing save games
This commit is contained in:
parent
3a70fab018
commit
7d25c9cba5
|
|
@ -7,7 +7,7 @@ class_name SaveGame extends Resource
|
||||||
@export var mementos_complete: int = 0
|
@export var mementos_complete: int = 0
|
||||||
@export var board_state: Dictionary = {}
|
@export var board_state: Dictionary = {}
|
||||||
@export var thumbnail: Texture = preload("res://import/interface-elements/empty_save_slot.png")
|
@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
|
@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]):
|
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])
|
tmp_img = Image.load_from_file("%s/thumbnails/%s.png" % [State.user_saves_path, filepath])
|
||||||
|
|
||||||
|
|
||||||
is_save_file_valid = (
|
is_save_file_valid = (
|
||||||
unique_save_name is String and
|
parsed["nique_save_name"] is String and
|
||||||
current_room is int and
|
parsed["urrent_room"] is int and
|
||||||
mementos_complete is int and
|
parsed["ementos_complete"] is int and
|
||||||
board_state is Dictionary and
|
parsed["oard_state"] is Dictionary and
|
||||||
last_saved is Dictionary and
|
parsed["ast_saved"] is float and last_saved != 0 and
|
||||||
Time.get_unix_time_from_datetime_dict(last_saved) != 0 and
|
parsed["mp_img"] is Image
|
||||||
tmp_img is Image
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if is_save_file_valid:
|
if is_save_file_valid:
|
||||||
|
|
@ -66,7 +64,7 @@ func _get_save_dict() -> Dictionary:
|
||||||
}
|
}
|
||||||
|
|
||||||
func save_to_file(current_screen: Texture):
|
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()
|
var thumbnail_image: Image = current_screen.get_image()
|
||||||
current_screen.resize(384, 261, Image.INTERPOLATE_LANCZOS)
|
current_screen.resize(384, 261, Image.INTERPOLATE_LANCZOS)
|
||||||
|
|
|
||||||
|
|
@ -17,28 +17,28 @@ func _init(save: SaveGame, id: int) -> void:
|
||||||
heading.theme_type_variation = "HeaderLarge"
|
heading.theme_type_variation = "HeaderLarge"
|
||||||
|
|
||||||
var localised_date_time: String
|
var localised_date_time: String
|
||||||
|
|
||||||
var localised_weekday: PackedStringArray
|
var localised_weekday: PackedStringArray
|
||||||
|
var date_time: Dictionary = Time.get_datetime_dict_from_unix_time(save.last_saved)
|
||||||
|
|
||||||
match TranslationServer.get_locale():
|
match TranslationServer.get_locale():
|
||||||
"de":
|
"de":
|
||||||
localised_weekday = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"]
|
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"]],
|
localised_date_time = "%s, %d.%d.%d um %d:%02d" % [localised_weekday[date_time["weekday"]],
|
||||||
save.last_saved["day"],
|
date_time["day"],
|
||||||
save.last_saved["month"],
|
date_time["month"],
|
||||||
save.last_saved["year"],
|
date_time["year"],
|
||||||
save.last_saved["hour"],
|
date_time["hour"],
|
||||||
save.last_saved["minute"]
|
date_time["minute"]
|
||||||
]
|
]
|
||||||
_:
|
_:
|
||||||
localised_weekday = ["Monday", "Tuseday", "Wensday", "Thursday", "Friday", "Saturday", "Sunday"]
|
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"]],
|
localised_date_time = "%s, %d/%d/%d - %d:%02d (%s)" % [localised_weekday[date_time["weekday"]],
|
||||||
save.last_saved["day"],
|
date_time["day"],
|
||||||
save.last_saved["month"],
|
date_time["month"],
|
||||||
save.last_saved["year"],
|
date_time["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,
|
date_time["hour"] % 12 if date_time["hour"] % 12 > 1 else 12 if date_time["hour"] == 12 or date_time["minute"] == 0 else 0,
|
||||||
save.last_saved["minute"],
|
date_time["minute"],
|
||||||
"AM" if save.last_saved["hour"] < 12 else "PM"]
|
"AM" if date_time["hour"] < 12 else "PM"]
|
||||||
|
|
||||||
var time:= Label.new()
|
var time:= Label.new()
|
||||||
time.text = localised_date_time if not save.current_room == 0 else "Start new game."
|
time.text = localised_date_time if not save.current_room == 0 else "Start new game."
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,12 @@ var scroll_container: ScrollContainer
|
||||||
var create_new_game: bool = false
|
var create_new_game: bool = false
|
||||||
|
|
||||||
func _ready() -> void:
|
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()
|
load_games()
|
||||||
|
|
||||||
func load_games():
|
func load_games():
|
||||||
|
|
@ -36,6 +42,8 @@ func load_games():
|
||||||
if scroll_container != null:
|
if scroll_container != null:
|
||||||
scroll_container.free()
|
scroll_container.free()
|
||||||
|
|
||||||
|
scroll_container = ScrollContainer.new()
|
||||||
|
|
||||||
scroll_container.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED
|
scroll_container.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED
|
||||||
add_child(scroll_container)
|
add_child(scroll_container)
|
||||||
|
|
||||||
|
|
@ -64,8 +72,8 @@ func get_most_recent_save() -> SaveGame:
|
||||||
var most_recent_time := 0.0
|
var most_recent_time := 0.0
|
||||||
var most_recent_index:int = 0
|
var most_recent_index:int = 0
|
||||||
for i in range(saves.size()):
|
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_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()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue