forked from team-sg/hero-mark-2
the start of marathon mode
This commit is contained in:
parent
83f0bccd9a
commit
d06acf2522
18 changed files with 607 additions and 26 deletions
|
@ -49,6 +49,13 @@ var can_pause: bool = true
|
|||
var can_restart: bool = true
|
||||
var current_palette: String = "default"
|
||||
var still_playing: bool = false
|
||||
var last_mm_button = null
|
||||
#== marathon mode ==#
|
||||
var marathon_mode: bool = false
|
||||
var marathon_score: int = 0
|
||||
var marathon_lives: int = 0
|
||||
var marathon_shards: int = 0
|
||||
var marathon_deaths: int = 0
|
||||
|
||||
|
||||
func _ready():
|
||||
|
@ -133,7 +140,11 @@ func tally_scores() -> void:
|
|||
perfect_bonus += 1000
|
||||
# final score
|
||||
final_score = score + arrows_bonus + collection_bonus + time_bonus + life_bonus + perfect_bonus
|
||||
Game.save()
|
||||
if marathon_mode:
|
||||
marathon_shards += shards_collected.count(true)
|
||||
marathon_score += final_score
|
||||
else:
|
||||
Game.save()
|
||||
|
||||
|
||||
#Go to new map
|
||||
|
@ -144,11 +155,12 @@ func change_map(map: PackedScene) -> void:
|
|||
yield(Fade, "fade_finished")
|
||||
can_pause = true
|
||||
# save deaths
|
||||
var save_id = LevelData.levels[current_level].save_id
|
||||
var save_data: Save.LevelSaveData = Save.current_file.levels[save_id]
|
||||
save_data.deaths += deaths
|
||||
Save.current_file.play_time += time
|
||||
Save.current_file.save_to_file()
|
||||
if not marathon_mode:
|
||||
var save_id = LevelData.levels[current_level].save_id
|
||||
var save_data: Save.LevelSaveData = Save.current_file.levels[save_id]
|
||||
save_data.deaths += deaths
|
||||
Save.current_file.play_time += time
|
||||
Save.current_file.save_to_file()
|
||||
# clear
|
||||
clear_collectibles()
|
||||
StainLayer.reset()
|
||||
|
@ -162,7 +174,8 @@ func clear_collectibles() -> void:
|
|||
stars_collected.fill(false)
|
||||
shards_collected.fill(false)
|
||||
arrows = 0
|
||||
lives = 2
|
||||
if not marathon_mode:
|
||||
lives = 2
|
||||
deaths = 0
|
||||
# score
|
||||
score = 0
|
||||
|
@ -174,6 +187,8 @@ func clear_collectibles() -> void:
|
|||
|
||||
#Save
|
||||
func save():
|
||||
if marathon_mode:
|
||||
return
|
||||
# get level's save data object
|
||||
var save_id = LevelData.levels[current_level].save_id
|
||||
var save_data: Save.LevelSaveData = Save.current_file.levels[save_id]
|
||||
|
@ -206,6 +221,8 @@ func save():
|
|||
|
||||
# smaller save function for bosses
|
||||
func save_boss() -> void:
|
||||
if marathon_mode:
|
||||
return
|
||||
var save_id = LevelData.levels[current_level].save_id
|
||||
var save_data: Save.LevelSaveData = Save.current_file.levels[save_id]
|
||||
|
||||
|
@ -231,13 +248,13 @@ func timeify(input):
|
|||
# convert seconds into M:SS.MS
|
||||
func format_time(seconds: float) -> String:
|
||||
if is_inf(seconds) or is_nan(seconds): # infinite
|
||||
return "-:--.--"
|
||||
elif seconds >= 600.0: # 10 minutes or greater
|
||||
return "9:99.99"
|
||||
return "--:--.--"
|
||||
elif seconds >= 6000.0: # 10 minutes or greater
|
||||
return "99:99.99"
|
||||
else:
|
||||
var minutes = floor(seconds / 60.0)
|
||||
var centiseconds = fmod(floor(seconds * 100.0), 100.0)
|
||||
return "%01d:%02d.%02d" % [minutes, fmod(seconds, 60.0), centiseconds]
|
||||
return "%02d:%02d.%02d" % [minutes, fmod(seconds, 60.0), centiseconds]
|
||||
|
||||
#Restart level
|
||||
func restart_level():
|
||||
|
@ -268,14 +285,17 @@ func has_collection_bonus():
|
|||
# called when player dies
|
||||
func _on_player_died() -> void:
|
||||
deaths += 1
|
||||
if marathon_mode:
|
||||
marathon_deaths += 1
|
||||
if use_lives and lives <= 0:
|
||||
still_playing = false
|
||||
can_restart = false
|
||||
can_pause = false
|
||||
Save.current_file.play_time += time
|
||||
Save.current_file.levels[LevelData.levels[current_level].save_id].deaths += deaths
|
||||
Save.current_file.save_to_file()
|
||||
clear_collectibles()
|
||||
if not marathon_mode:
|
||||
Save.current_file.play_time += time
|
||||
Save.current_file.levels[LevelData.levels[current_level].save_id].deaths += deaths
|
||||
Save.current_file.save_to_file()
|
||||
clear_collectibles()
|
||||
Audio.play_sound(Audio.a_game_over, Audio.ac_die)
|
||||
get_tree().get_nodes_in_group("player")[0].queue_free()
|
||||
var time_tween = create_tween()
|
||||
|
@ -286,11 +306,14 @@ func _on_player_died() -> void:
|
|||
Engine.time_scale = 1.0
|
||||
Fade.fade_out(Options.transition_speed_secs)
|
||||
yield(Fade, "fade_finished")
|
||||
var map = get_map()
|
||||
var gover = load("res://menus/game_over.tscn").instance()
|
||||
map.add_child(gover)
|
||||
can_restart = true
|
||||
can_pause = true
|
||||
if marathon_mode:
|
||||
SceneManager.current_scene = load("res://menus/main_menu.tscn").instance()
|
||||
else:
|
||||
var map = get_map()
|
||||
var gover = load("res://menus/game_over.tscn").instance()
|
||||
map.add_child(gover)
|
||||
can_restart = true
|
||||
can_pause = true
|
||||
else:
|
||||
# count death
|
||||
lives -= 1
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
tool
|
||||
extends Node
|
||||
|
||||
export var marathon_start: int = 0
|
||||
export var marathon_end: int = 11
|
||||
export var levels: Array = [] setget set_levels
|
||||
|
||||
func set_levels(value):
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
[sub_resource type="ShaderMaterial" id=1]
|
||||
shader = ExtResource( 2 )
|
||||
shader_param/enabled = false
|
||||
shader_param/enabled = true
|
||||
shader_param/resolution = Vector2( 256, 192 )
|
||||
shader_param/curvature = Vector2( 0, 0 )
|
||||
shader_param/scanline_opacity = Vector2( 0.2, 0 )
|
||||
shader_param/scanline_opacity = Vector2( 0.1, 0.1 )
|
||||
shader_param/brightness = 1.0
|
||||
|
||||
[node name="SceneManager" type="Node"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue