Files
godot-playground/scenes/Grid/water_display.gd
T
2025-11-09 13:12:40 -06:00

38 lines
1.3 KiB
GDScript

@tool
extends Label
class_name WaterDisplay
@export var character_path: NodePath
@export var show_bladder: bool = true
@export var show_water: bool = true
var _character: GridCharacterController = null
func _ready() -> void:
set_process(true)
_resolve_character()
if _character:
_character.vitals_changed.connect(_on_vitals_changed)
_on_vitals_changed(_character.get_water_level(), _character.get_bladder_level(), _character.is_water_low(), _character.is_bladder_full())
func _process(_delta: float) -> void:
if Engine.is_editor_hint():
_update_text(0.0, 0.0, false, false)
func _resolve_character() -> void:
if character_path != NodePath():
_character = get_node_or_null(character_path) as GridCharacterController
else:
_character = get_parent() as GridCharacterController
func _on_vitals_changed(water_level: float, bladder_level: float, needs_water: bool, needs_bathroom: bool) -> void:
_update_text(water_level, bladder_level, needs_water, needs_bathroom)
func _update_text(water_level: float, bladder_level: float, needs_water: bool, needs_bathroom: bool) -> void:
var parts: Array[String] = []
if show_water:
parts.append("Water: %4d ml%s" % [int(water_level), " !" if needs_water else ""])
if show_bladder:
parts.append("Bladder: %4d ml%s" % [int(bladder_level), " !" if needs_bathroom else ""])
text = " | ".join(parts)