2025-12-02 01:21:10 +00:00
|
|
|
extends Node
|
|
|
|
|
|
2025-12-06 16:43:37 +00:00
|
|
|
func _ready() -> void:
|
|
|
|
|
load_settings()
|
|
|
|
|
|
2025-12-02 21:00:10 +00:00
|
|
|
var ground_location = null
|
|
|
|
|
|
2025-12-02 01:21:10 +00:00
|
|
|
var orbit_zones = [
|
2025-12-02 19:51:40 +00:00
|
|
|
{
|
|
|
|
|
"name": "The Star",
|
|
|
|
|
"distance": 2048 * 1.5,
|
|
|
|
|
"spawns": []
|
|
|
|
|
},
|
2025-12-02 01:21:10 +00:00
|
|
|
{
|
|
|
|
|
"name": "Test Zone",
|
|
|
|
|
"distance": 0,
|
|
|
|
|
"spawns": [
|
|
|
|
|
{
|
|
|
|
|
"type": "asteroid",
|
|
|
|
|
"chance_percent": 100,
|
|
|
|
|
"amount_min": 4,
|
|
|
|
|
"amount_max": 5,
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
2025-12-02 19:51:40 +00:00
|
|
|
|
2025-12-02 01:21:10 +00:00
|
|
|
]
|
2025-12-04 21:32:46 +00:00
|
|
|
|
2025-12-06 16:43:37 +00:00
|
|
|
func generate_save():
|
|
|
|
|
var save_dict = {
|
|
|
|
|
"stats": stats
|
|
|
|
|
}
|
|
|
|
|
return save_dict
|
|
|
|
|
|
|
|
|
|
## Saves the game in its current state.
|
|
|
|
|
func save_game():
|
|
|
|
|
var save_file = FileAccess.open("user://savegame.save", FileAccess.WRITE)
|
|
|
|
|
|
|
|
|
|
var json_string = JSON.stringify(generate_save())
|
|
|
|
|
|
|
|
|
|
save_file.store_line(json_string)
|
|
|
|
|
|
|
|
|
|
func save_settings():
|
|
|
|
|
var save_file = FileAccess.open("user://settings.json", FileAccess.WRITE)
|
|
|
|
|
|
|
|
|
|
var json_string = JSON.stringify(settings)
|
|
|
|
|
|
|
|
|
|
save_file.store_line(json_string)
|
|
|
|
|
|
|
|
|
|
## Loads the game data from the savegame.save file.
|
|
|
|
|
func load_game():
|
|
|
|
|
if not FileAccess.file_exists("user://savegame.save"):
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
var save_file = FileAccess.open("user://savegame.save", FileAccess.READ)
|
|
|
|
|
|
|
|
|
|
var json = JSON.new()
|
|
|
|
|
|
|
|
|
|
var parse_result = json.parse(save_file.get_as_text())
|
|
|
|
|
|
|
|
|
|
if not parse_result == OK:
|
|
|
|
|
print("JSON Parse Error: ", json.get_error_message(), " in ", parse_result, " at line ", json.get_error_line())
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if json.data.settings: settings = json.data.settings
|
|
|
|
|
if json.data.stats: settings = json.data.stats
|
|
|
|
|
|
|
|
|
|
func load_settings():
|
|
|
|
|
if not FileAccess.file_exists("user://settings.json"):
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
var save_file = FileAccess.open("user://settings.json", FileAccess.READ)
|
|
|
|
|
|
|
|
|
|
var json = JSON.new()
|
|
|
|
|
|
|
|
|
|
var parse_result = json.parse(save_file.get_as_text())
|
|
|
|
|
|
|
|
|
|
if not parse_result == OK:
|
|
|
|
|
print("JSON Parse Error: ", json.get_error_message(), " in ", parse_result, " at line ", json.get_error_line())
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
settings = json.data
|
|
|
|
|
|
|
|
|
|
func delete_game():
|
|
|
|
|
await DirAccess.remove_absolute("user://savegame.save")
|
|
|
|
|
|
2025-12-06 19:33:22 +00:00
|
|
|
var default_stats = {
|
2025-12-06 16:43:37 +00:00
|
|
|
"loaded": false,
|
2025-12-04 21:32:46 +00:00
|
|
|
"fuel": 12,
|
|
|
|
|
"fuel_tank_size": 1,
|
|
|
|
|
"speed": 512,
|
|
|
|
|
"boost_tank_size": 1,
|
|
|
|
|
"marks": 200,
|
2025-12-06 16:43:37 +00:00
|
|
|
"location": "space",
|
|
|
|
|
"ship_position": Vector2(),
|
2025-12-06 19:33:22 +00:00
|
|
|
"ship_rotation": 0,
|
2025-12-06 20:28:33 +00:00
|
|
|
"story_progress": 1,
|
2025-12-04 21:32:46 +00:00
|
|
|
}
|
2025-12-06 03:34:56 +00:00
|
|
|
|
2025-12-06 19:33:22 +00:00
|
|
|
var stats = default_stats.duplicate_deep()
|
|
|
|
|
|
2025-12-06 03:34:56 +00:00
|
|
|
var settings = {
|
|
|
|
|
"master_volume": 1.0,
|
|
|
|
|
"music_volume": 1.0,
|
|
|
|
|
"sfx_volume": 1.0,
|
|
|
|
|
}
|