From 36abc689d783774ce4f2d7b5a1bb621d8684be45 Mon Sep 17 00:00:00 2001 From: David Luevano Alvarado Date: Sat, 4 Jun 2022 23:00:58 -0600 Subject: added more ui for after gameplay, generalized basic food --- src/tools/score_manager/scripts/score_manager.gd | 67 ++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/tools/score_manager/scripts/score_manager.gd (limited to 'src/tools/score_manager/scripts/score_manager.gd') diff --git a/src/tools/score_manager/scripts/score_manager.gd b/src/tools/score_manager/scripts/score_manager.gd new file mode 100644 index 0000000..27a8dd4 --- /dev/null +++ b/src/tools/score_manager/scripts/score_manager.gd @@ -0,0 +1,67 @@ +extends Node + +export(PackedScene) var SCORE_LABEL: PackedScene + +var initial_stats: Stats = SaveData.get_stats() +var stats: Stats = Stats.new() +var mutation_stats: Array = [ + Stats.new(), + Stats.new(), + Stats.new() +] + +var last_snake_pos: Vector2 = Vector2.ZERO + + +func _ready(): + Event.connect("game_over", self, "_on_game_over") + Event.connect("food_eaten", self, "_on_food_eaten") + Event.connect("snake_path_new_point", self, "_on_snake_path_new_point") + + +func _on_food_eaten(properties: Dictionary) -> void: + var points: int = properties["points"] + var location: Vector2 = properties["global_position"] + var amount_to_grow: int = _process_points(points) + _spawn_added_score_text(points, location) + _spawn_added_segment_text(amount_to_grow) + + +func _process_points(points: int) -> int: + var score_to_grow: int = (stats.segments + 1) * Global.POINTS_TO_GROW - stats.points + var amount_to_grow: int = 0 + var growth_progress: int + stats.points += points + if points >= score_to_grow: + amount_to_grow += 1 + points -= score_to_grow + # maybe be careful with this + amount_to_grow += points / Global.POINTS_TO_GROW + stats.segments += amount_to_grow + Event.emit_signal("snake_add_new_segment", amount_to_grow) + + growth_progress = Global.POINTS_TO_GROW - ((stats.segments + 1) * Global.POINTS_TO_GROW - stats.points) + Event.emit_signal("snake_growth_progress", growth_progress) + return amount_to_grow + + +func _spawn_added_score_text(points: int, location: Vector2) -> void: + var label: ScoreLabel = SCORE_LABEL.instance() + add_child(label) + label.set_properties(points, Color.red, location) + + +func _spawn_added_segment_text(amount: int) -> void: + if amount > 0: + var label: ScoreLabel = SCORE_LABEL.instance() + add_child(label) + label.set_properties(amount, Color.green, last_snake_pos, ScoreLabel.Type.BODY_SEGMENT) + + +func _on_snake_path_new_point(coordinates: Vector2) -> void: + last_snake_pos = coordinates + + +func _on_game_over() -> void: + print("Show comparison.") + Event.emit_signal("display_stats", initial_stats, stats, mutation_stats) -- cgit v1.2.3