Ajout d'un mode infini

This commit is contained in:
2026-06-26 17:53:28 +02:00
parent e133519dc0
commit 53c86e9cc7
38 changed files with 595 additions and 148 deletions

View File

@@ -1,35 +1,62 @@
extends Node
const SAVE_GAME_LOCATION = "user://stw_playtest_2_save.tres"
const SAVE_NAME = "playtest_2"
const SAVE_STORY_GAME_LOCATION = "user://stw_%s_save.tres" % SAVE_NAME
const SAVE_INFINTE_GAME_LOCATION = "user://stw_%s_infinite_save.tres" % SAVE_NAME
const SAVE_SETTINGS_LOCATION = "user://stw_settings.tres"
signal game_loaded
signal game_data_updated(g : GameData)
var game_mode_choosen := GameData.Mode.STORY
var game_data : GameData :
set(v):
game_data = v
game_data_updated.emit(v)
get():
if game_mode_choosen == GameData.Mode.STORY:
return story_game_data
elif game_mode_choosen == GameData.Mode.INFINITE:
return infinite_game_data
return null
var story_game_data : GameData
var infinite_game_data : GameData
var settings_data : SettingsData
var current_dialog_path : String
func load_game_data() -> GameData:
game_data = null
if ResourceLoader.exists(SAVE_GAME_LOCATION) and ResourceLoader.load(SAVE_GAME_LOCATION):
game_data = ResourceLoader.load(SAVE_GAME_LOCATION).duplicate_deep()
func load_story_game_data() -> GameData:
story_game_data = null
if ResourceLoader.exists(SAVE_STORY_GAME_LOCATION) and ResourceLoader.load(SAVE_STORY_GAME_LOCATION):
story_game_data = ResourceLoader.load(SAVE_STORY_GAME_LOCATION).duplicate_deep()
game_loaded.emit()
return game_data
return story_game_data
func load_infinite_game_data() -> GameData:
infinite_game_data = null
if ResourceLoader.exists(SAVE_INFINTE_GAME_LOCATION) and ResourceLoader.load(SAVE_INFINTE_GAME_LOCATION):
infinite_game_data = ResourceLoader.load(SAVE_INFINTE_GAME_LOCATION).duplicate_deep()
return infinite_game_data
func start_game_data():
game_data = GameData.new()
if game_mode_choosen == GameData.Mode.STORY:
story_game_data = GameData.new(GameData.Mode.STORY)
story_game_data.start_run()
else:
infinite_game_data = GameData.new(GameData.Mode.INFINITE)
infinite_game_data.start_run()
save_game_data()
func save_game_data():
if game_data:
ResourceSaver.save(game_data, SAVE_GAME_LOCATION)
if game_mode_choosen == GameData.Mode.STORY:
if story_game_data:
ResourceSaver.save(story_game_data, SAVE_STORY_GAME_LOCATION)
elif game_mode_choosen == GameData.Mode.INFINITE:
if infinite_game_data:
ResourceSaver.save(infinite_game_data, SAVE_INFINTE_GAME_LOCATION)
func load_settings_data() -> SettingsData:
if ResourceLoader.exists(SAVE_SETTINGS_LOCATION):
@@ -45,7 +72,8 @@ func save_settings():
ResourceSaver.save(settings_data, SAVE_SETTINGS_LOCATION)
func _init():
load_game_data()
load_story_game_data()
load_infinite_game_data()
load_settings_data()
update_language_settings()
update_video_settings()
@@ -91,3 +119,5 @@ func update_inputs(s : SettingsData = settings_data):
InputMap.action_erase_events(s.action_remapped[i])
InputMap.action_add_event(s.action_remapped[i], s.input_remapped[i])
func has_unlocked_infinite_mode():
return true