diff --git a/scenes/objects/UltrasoundMachine.tscn b/scenes/objects/UltrasoundMachine.tscn new file mode 100644 index 0000000..69d57f8 --- /dev/null +++ b/scenes/objects/UltrasoundMachine.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=2 format=3 uid="uid://cozypaw_ultrasoundmachine"] + +[ext_resource type="Script" path="res://scripts/objects/ultrasound_machine.gd" id="1_ultrasound"] + +[node name="UltrasoundMachine" type="Node2D"] +script = ExtResource("1_ultrasound") + +[node name="MachineBody" type="ColorRect" parent="."] +color = Color(0.68, 0.70, 0.76, 1) +size = Vector2(80, 160) +position = Vector2(-40, -160) + +[node name="ScreenFrame" type="ColorRect" parent="."] +color = Color(0.30, 0.32, 0.36, 1) +size = Vector2(68, 52) +position = Vector2(-34, -152) + +[node name="Screen" type="ColorRect" parent="."] +color = Color(0.06, 0.08, 0.12, 1) +size = Vector2(60, 44) +position = Vector2(-30, -148) + +[node name="HeartbeatDot" type="Node2D" parent="."] +position = Vector2(0, -126) + +[node name="HeartbeatShape" type="ColorRect" parent="HeartbeatDot"] +color = Color(0.40, 0.95, 0.60, 1) +size = Vector2(12, 12) +position = Vector2(-6, -6) + +[node name="Probe" type="ColorRect" parent="."] +color = Color(0.55, 0.57, 0.62, 1) +size = Vector2(14, 80) +position = Vector2(-7, -30) diff --git a/scripts/objects/ultrasound_machine.gd b/scripts/objects/ultrasound_machine.gd new file mode 100644 index 0000000..bec57d6 --- /dev/null +++ b/scripts/objects/ultrasound_machine.gd @@ -0,0 +1,23 @@ +## UltrasoundMachine — displays a continuous heartbeat pulse on the screen. +class_name UltrasoundMachine extends Node2D + +const BEAT_RISE_DURATION: float = 0.12 +const BEAT_FALL_DURATION: float = 0.12 +const BEAT_INTERVAL: float = 0.60 +const BEAT_SCALE_PEAK: Vector2 = Vector2(1.5, 1.5) +const BEAT_SCALE_REST: Vector2 = Vector2(1.0, 1.0) + + +func _ready() -> void: + _start_heartbeat_loop() + + +func _start_heartbeat_loop() -> void: + var dot: Node2D = get_node_or_null("HeartbeatDot") as Node2D + if dot == null: + return + var tween: Tween = create_tween() + tween.set_loops() + tween.tween_property(dot, "scale", BEAT_SCALE_PEAK, BEAT_RISE_DURATION) + tween.tween_property(dot, "scale", BEAT_SCALE_REST, BEAT_FALL_DURATION) + tween.tween_interval(BEAT_INTERVAL)