Files
seeding-planets/common/game_info/game_info.gd
Zacharie Guet 908878dff4 Dev de la démo
* Modification de l'apparence de l'UI des dialogues
* Changement de l'ordre de déblocage des mutations
* Ajout d'une confirmation pour l'abandon
* Ajout de la scène de fin avec la base Boréa, en tant que fin de démo
* Modification des icône de durée de vie, temps de pousse, et de mort
* Ajout d'un icône au dessus du joueur quand il n'a plus d'énergie
* Amélioration des dialogues du jeu
* Changement du modèle du téléphone
* Ajout de cellule d'énergie et de cellule de talion trouvable sur la carte
* Il est à nouveau possible de se recharger après la fin d'une région
* Buff des mutations ancien sociale et solide
* Modification de la mutation fertile (ne donne de gain de graine qu'à la maturation)
* Ajout d'une récupération automatique des graines
* Ajout de deux cartons de tutoriel ainsi qu'une option pour les revoir dans l'aide de jeu
* Amélioration générale du tutoriel
* Ajout d'un écran titre digne de ce nom
* Lors de l'arrivée à destination, ne téléporte plus le joueur sur une map vide, mais directement dans les lieux de cinématique
* Ajout graphique de plus de pattern de mousse et de roche
* Le talion apparait maintenant sur toute la carte
* La roche peut désormais apparaitre sur la zone de départ
* Ajout dud modificateur de région Canyon
* Equilibrage général
* Fix de bugs en tout genre
2026-05-27 19:13:32 +02:00

90 lines
2.9 KiB
GDScript

extends Node
const SAVE_GAME_LOCATION = "user://stw_demo_save.tres"
const SAVE_SETTINGS_LOCATION = "user://stw_settings.tres"
var game_loaded = false
signal game_data_updated(g : GameData)
var game_data : GameData :
set(v):
game_data = v
game_data_updated.emit(v)
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()
return game_data
func start_game_data():
game_data = GameData.new()
save_game_data()
func save_game_data():
if game_data:
ResourceSaver.save(game_data, SAVE_GAME_LOCATION)
func load_settings_data() -> SettingsData:
if ResourceLoader.exists(SAVE_SETTINGS_LOCATION):
settings_data = ResourceLoader.load(SAVE_SETTINGS_LOCATION).duplicate_deep()
else :
settings_data = SettingsData.new()
save_settings()
return settings_data
func save_settings():
if settings_data:
ResourceSaver.save(settings_data, SAVE_SETTINGS_LOCATION)
func _init():
load_game_data()
load_settings_data()
update_language_settings()
update_video_settings()
settings_data.language_changed.connect(_on_settings_language_changed)
settings_data.video_changed.connect(_on_settings_video_changed)
settings_data.sound_changed.connect(_on_settings_sound_changed)
func _ready():
Dialogic.timeline_started.connect(_on_timeline_started)
Dialogic.timeline_ended.connect(_on_timeline_ended)
func _on_settings_video_changed(s : SettingsData):
update_video_settings(s)
func _on_settings_language_changed(s : SettingsData):
update_language_settings(s)
func _on_settings_sound_changed(s : SettingsData):
AudioServer.set_bus_volume_db(SettingsData.MUSIC_BUS_ID, linear_to_db(s.music_volume))
AudioServer.set_bus_volume_db(SettingsData.SFX_BUS_ID, linear_to_db(s.sfx_volume))
AudioServer.set_bus_volume_db(SettingsData.AMBIANCE_BUS_ID, linear_to_db(s.ambiance_volume))
func _on_timeline_started():
current_dialog_path = Dialogic.current_timeline.resource_path
func _on_timeline_ended():
if not current_dialog_path in game_data.dialogs_done:
game_data.dialogs_done.append(current_dialog_path)
save_game_data()
func update_language_settings(s : SettingsData = settings_data):
TranslationServer.set_locale(s.language)
func update_video_settings(s : SettingsData = settings_data):
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN if s.full_screen else DisplayServer.WINDOW_MODE_WINDOWED)
func update_inputs(s : SettingsData = settings_data):
for i in range(len(s.input_remapped)):
InputMap.action_erase_events(s.action_remapped[i])
InputMap.action_add_event(s.action_remapped[i], s.input_remapped[i])