Save System Mk.III (and start of new difficulty system)

This commit is contained in:
Haze Weathers 2023-06-29 22:07:54 -04:00
parent 746b9813e2
commit 4958c420d8
8 changed files with 203 additions and 82 deletions

View file

@ -1,5 +1,12 @@
extends Node
enum Difficulty {
SWEET, # slower enemies, infinite lives
SALTY, # normal enemies, infinite lives
SPICY, # normal enemies, 3 lives, DEFAULT
PUNGENT, # faster enemies, 3 lives
}
var resolution = Vector2(256,192)
var current_sector = Vector2(0,0)
#Onreadys
@ -22,17 +29,39 @@ var current_level = 0 #Current level being played
var current_file = 1 #Current save file
var shards_collected = [false,false,false,false,false,false,false,false,false,false]
var is_marathon_mode = false
var is_easy_mode = false
var easy_mode_speed_factor = 0.75
var difficulty: int = Difficulty.SPICY setget _set_difficulty
var enemy_speed_factor: float = 1.0 # multiplier of enemy speed
var is_easy_mode = false # whether to do easy-specific behaviors
var easy_mode_speed_factor = 0.75 # DEPRECATED: speed enemies go in easy mode
var use_lives = false
var can_pause = true
var current_palette = "default"
func _ready():
Save.load_file(current_file)
Save.load_options()
pause_mode = Node.PAUSE_MODE_PROCESS
# stuff to change when setting difficulty
func _set_difficulty(value: int) -> void:
difficulty = value
match difficulty:
Difficulty.SWEET:
is_easy_mode = true
enemy_speed_factor = 0.75
use_lives = false
Difficulty.SALTY:
is_easy_mode = false
enemy_speed_factor = 1.0
use_lives = false
Difficulty.SPICY:
is_easy_mode = false
enemy_speed_factor = 1.0
use_lives = true
Difficulty.PUNGENT:
is_easy_mode = false
enemy_speed_factor = 1.25
use_lives = true
#Instances a node
func instance_node(node:PackedScene,x:float,y:float,parent):
var Instance = node.instance()
@ -71,22 +100,32 @@ func clear_collectibles():
#Save
func save():
# get level's save data object
var save_id = LevelData.levels[current_level].save_id
var save_data = Save.get_level_data(save_id)
var is_100 = shards >= 5 && keys >= 50
# set score and time depending on completion
if score > save_data["score_100" if is_100 else "score_any"]:
Save.set_score(save_id, score, is_100)
if time < save_data["time_100" if is_100 else "time_any"]:
Save.set_time(save_id, time, is_100)
var save_data: Save.LevelSaveData = Save.current_file.levels[save_id]
# save score and time depending on completion
if shards >= 5 && keys >= 50:
save_data.score_100 = max(save_data.score_100, score)
save_data.time_100 = min(save_data.time_100, time)
else:
save_data.score_any = max(save_data.score_100, score)
save_data.time_any = min(save_data.time_any, time)
# set shards
for i in 8:
if shards_collected[i]:
Save.set_shard_collected(save_id, i, true)
# set options
Save.set_options()
# save file
Save.save_file(current_file)
save_data.shards_collected[i] = true
# set keys
save_data.keys_collected = max(save_data.keys_collected, keys)
# add to playtime
Save.current_file.play_time += time
# save the file
Save.current_file.save_to_file()
#Convert seconds into M:SS:MS
func timeify(input):