diff options
Diffstat (limited to 'src/ui/stats_display/scripts')
-rw-r--r-- | src/ui/stats_display/scripts/progression_label.gd | 48 | ||||
-rw-r--r-- | src/ui/stats_display/scripts/stats_display.gd | 80 |
2 files changed, 128 insertions, 0 deletions
diff --git a/src/ui/stats_display/scripts/progression_label.gd b/src/ui/stats_display/scripts/progression_label.gd new file mode 100644 index 0000000..d4a0da0 --- /dev/null +++ b/src/ui/stats_display/scripts/progression_label.gd @@ -0,0 +1,48 @@ +class_name ProgressionLabel +extends MarginContainer + +enum Type { + BODY_SEGMENT, + EMPTY +} + +export(int) var TYPE: int = Type.EMPTY +export(String) var PREFIX: String +export(float) var BEFORE_VALUE: float +export(float) var AFTER_VALUE: float = -1.0 + +onready var label_prefix: Label = $HBox/Prefix +onready var label_stats: Label = $HBox/Stats +onready var texture_rect: TextureRect = $HBox/Center/VBox/TextureRect + + +var textures: Dictionary = { + Type.BODY_SEGMENT: preload("res://ui/hud/progress_bars/sprites/grow_progress_icon.png"), + Type.EMPTY: preload("res://ui/stats_display/sprites/sep_8x8.png") +} + +var _fmt: String = "%s->%s" +var _fmt_partial: String = "%s" +var _fmt_prefix: String = " %s " + + +func _ready() -> void: + set_properties(TYPE, PREFIX, BEFORE_VALUE, AFTER_VALUE) + + +func set_properties(icon: int, prefix: String, before: float, after: float=-1.0) -> void: + texture_rect.texture = textures[icon] + if after == -1.0: + label_stats.text =_fmt_partial % before + else: + label_stats.text =_fmt % [before, after] + if after > before: + label_stats.add_color_override("font_color", Color.green) + elif after < before: + label_stats.add_color_override("font_color", Color.red) + if not prefix.empty(): + label_prefix.text = _fmt_prefix % prefix + else: + label_prefix.text = " " + label_prefix.update() + label_stats.update() diff --git a/src/ui/stats_display/scripts/stats_display.gd b/src/ui/stats_display/scripts/stats_display.gd new file mode 100644 index 0000000..f1f77ef --- /dev/null +++ b/src/ui/stats_display/scripts/stats_display.gd @@ -0,0 +1,80 @@ +extends MarginContainer + +export(PackedScene) var PROGRESSION_LABEL: PackedScene + +onready var label_parent: VBoxContainer = $Center/HBox/ProgressionPanel/VBox/VBox + + +func _ready(): + Event.connect("display_stats", self, "_on_display_stats") + visible = false + + +func _on_display_stats(old_stats: Stats, new_stats: Stats, mut_stats: Array) -> void: + visible = true + var old_stats_dict: Dictionary = old_stats.get_stats() + var new_stats_dict: Dictionary = new_stats.get_stats() + var mut_stats_dict: Array = [] + for i in mut_stats: + mut_stats_dict.append(i) + print(i) + + var type: int + var prefix: String + var should_print: bool + + for stat_name in old_stats_dict: + should_print = _should_print(stat_name, new_stats_dict) + if should_print: + type = _get_type(stat_name) + prefix = _get_prefix(stat_name) + var _temp_label: ProgressionLabel = PROGRESSION_LABEL.instance() + label_parent.add_child(_temp_label) + _temp_label.set_properties(type, prefix, old_stats_dict[stat_name], new_stats_dict[stat_name]) + + +func _get_type(stat_name: String) -> int: + var type: int + match stat_name: + "segments": + type = ProgressionLabel.Type.BODY_SEGMENT + _: + type = ProgressionLabel.Type.EMPTY + return type + + +func _get_prefix(stat_name: String) -> String: + var prefix: String + match stat_name: + "points": + prefix = "points" + _: + prefix = "" + return prefix + + +func _should_print(stat_name: String, stats: Dictionary) -> bool: + var to_print: Array = [ + "points", + "segments", + ] + var to_print_check: Array = [ + "dash_percentage", + "slow_percentage", + "jump_lenght" + ] + var checks: Dictionary = { + to_print_check[0]: stats["trait_dash"], + to_print_check[1]: stats["trait_slow"], + to_print_check[2]: stats["trait_jump"] + } + + if to_print.has(stat_name): + return true + elif to_print_check.has(stat_name): + if checks[stat_name]: + return true + else: + return false + else: + return false |