28 lines
995 B
GDScript
28 lines
995 B
GDScript
extends Control
|
|
|
|
const FONT := preload("res://assets/fonts/font2.ttf")
|
|
const LOW_HULL_RATIO := 0.25
|
|
var player: CharacterBody2D
|
|
var _elapsed := 0.0
|
|
|
|
func _ready() -> void:
|
|
mouse_filter = Control.MOUSE_FILTER_IGNORE
|
|
set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
|
|
|
func _process(delta: float) -> void:
|
|
_elapsed += delta
|
|
queue_redraw()
|
|
|
|
func _draw() -> void:
|
|
if not is_instance_valid(player) or bool(player.get("_is_destroyed")):
|
|
return
|
|
var hull := float(player.get("hull"))
|
|
var max_hull := maxf(1.0, float(player.get("max_hull")))
|
|
if hull / max_hull > LOW_HULL_RATIO or bool(player.get("is_docked")):
|
|
return
|
|
var pulse := 0.55 + 0.25 * (sin(_elapsed * TAU) + 1.0) * 0.5
|
|
var warning_color := Color(1.0, 0.32, 0.26, pulse)
|
|
draw_rect(Rect2(Vector2(3, 3), size - Vector2(6, 6)), warning_color, false, 3)
|
|
var warning := "NISKI KADŁUB — %d%%" % roundi(hull / max_hull * 100)
|
|
draw_string(FONT, Vector2(0, 34), warning, HORIZONTAL_ALIGNMENT_CENTER, size.x, 18, warning_color)
|