Save System Mk.III (and start of new difficulty system)
This commit is contained in:
parent
746b9813e2
commit
4958c420d8
8 changed files with 203 additions and 82 deletions
|
@ -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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue