godot-shooter / commit
Scores are now constantly being updated, they should always show the latest values.
actors/Player.gd | 10 +++++++--- scenes/Scores.gd | 17 ++++++++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/actors/Player.gd b/actors/Player.gd index 2f8e7b4..beea228 100644 --- a/actors/Player.gd +++ b/actors/Player.gd @@ -236,13 +236,17 @@ func _on_ShowItemsInRadarCheckBox_pressed() -> void: settings.show_items = show_items settings.save_user_settings() +func sort_high_scores(a, b): + return (a as Settings.HighScore).score > (b as Settings.HighScore).score + func add_high_score(new_score: int) -> void: var hs = Settings.HighScore.new(new_score, Time.get_datetime_dict_from_system()) var hss = settings.high_scores hss.push_back(hs) - settings.high_scores.sort_custom(self, "sort_high_scores") - while settings.high_scores.size() > 10: - settings.high_scores.pop_back() + hss.sort_custom(self, "sort_high_scores") + while hss.size() > 10: + hss.pop_back() + settings.high_scores = hss settings.save_user_settings() func _on_LinkButton_pressed() -> void: diff --git a/scenes/Scores.gd b/scenes/Scores.gd index 2173b2f..0c63936 100644 --- a/scenes/Scores.gd +++ b/scenes/Scores.gd @@ -6,19 +6,30 @@ const PowerUp = preload("res://items/PowerUp.tscn") const Settings = preload("res://utils/Settings.gd") onready var scores_list = $ScoresList -func _ready() -> void: +func _process(_delta: float) -> void: + update_scores() + pass + +func update_scores() -> void: + Utils.remove_all_children(scores_list) var settings = Utils.load_user_settings() if settings.high_scores.size() > 0: - Utils.remove_all_children(scores_list) settings.high_scores.sort_custom(self, "sort_high_scores") var now = Time.get_datetime_dict_from_system() for hs in settings.high_scores: - var label = Label.new() var date_dict = hs.date var date_diff_secs = Utils.time_diff_secs(date_dict, now) var date_diff = Utils.timespan_to_english(date_diff_secs) + var label = Label.new() label.text = " %s points, %s" % [hs.score, date_diff] scores_list.add_child(label) + else: + var no_scores_label = Label.new() + no_scores_label.text = "No high scores yet" + scores_list.add_child(no_scores_label) +# var debug_label = Label.new() +# debug_label.text = "List populated at %s" % Time.get_datetime_string_from_system(false, true) +# scores_list.add_child(debug_label) func sort_high_scores(a, b): return (a as Settings.HighScore).score > (b as Settings.HighScore).score