* Evolution de l'histoire avec de nouveaux dialogues, une plus grande durée de vie du jeu, des nouvelles zones d'histoire... * Suppression du mode infini * Ajout d'un écran des mutations découvertes * Ajout d'un nouveau mécanisme de respawn situé dans le vaissau * Ajout de 2 nouveaux modificateurs de région * Quatre nouveaux artefacts * Visuel de la décontamination de la planète 3D en cours de la partie * Ajout d'une annonce visuelle des scène du jeu * Fix sur la mutation Généreux pour être en accord avec sa description * Amélioration de l'effet de la mutation Purification * Fix de la mutation sociale aux niveau supérieurs * Ajout d'un effet visuel de réacteur sur le joueur 3D * Fix sur l'annonce de nouveaux objets qui se déclenchaient à une nouvelle run * Amélioration des animation et des informations données dans le vaisseau * Correction mineure des traductions
90 lines
2.8 KiB
GDScript
90 lines
2.8 KiB
GDScript
extends Node
|
|
|
|
const SAVE_GAME_LOCATION = "user://stw_beta_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):
|
|
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])
|
|
|