From 78472ee95c19709587887fe62633ddab39a8b565 Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 27 Feb 2026 01:05:55 +0000 Subject: [PATCH] Updated mirror wave; tweaked CRT movement --- scenes/bullet.gd | 46 ++- scenes/enemy_chicken.gd | 2 +- scenes/enemy_crt.gd | 6 +- scenes/enemy_mirror.gd | 27 ++ scenes/enemy_mirror.gd.uid | 1 + scenes/enemy_mirror.tscn | 84 +++++ scenes/enemy_shards.gd | 19 ++ scenes/enemy_shards.gd.uid | 1 + scenes/enemy_shards.tscn | 435 +++++++++++++++++++++++++ scenes/enemy_table.tscn | 27 ++ scenes/event_bus.gd | 4 + scenes/main.gd | 14 + scenes/main.tscn | 13 + scenes/player.gd | 13 +- scenes/shards.gd | 17 + scenes/shards.gd.uid | 1 + scenes/sink.gd | 74 +++++ scenes/sink.gd.uid | 1 + scenes/ui.tscn | 11 +- scenes/wave.gd | 46 ++- shaders/flash.gdshader | 7 + shaders/flash.gdshader.uid | 1 + sprites/glass_shards_packed.png | Bin 0 -> 1495 bytes sprites/glass_shards_packed.png.import | 40 +++ sprites/sink_and_mirror.png | Bin 0 -> 622 bytes sprites/sink_and_mirror.png.import | 40 +++ sprites/table.png | Bin 0 -> 1451 bytes sprites/table.png.import | 40 +++ 28 files changed, 938 insertions(+), 32 deletions(-) create mode 100644 scenes/enemy_mirror.gd create mode 100644 scenes/enemy_mirror.gd.uid create mode 100644 scenes/enemy_mirror.tscn create mode 100644 scenes/enemy_shards.gd create mode 100644 scenes/enemy_shards.gd.uid create mode 100644 scenes/enemy_shards.tscn create mode 100644 scenes/enemy_table.tscn create mode 100644 scenes/shards.gd create mode 100644 scenes/shards.gd.uid create mode 100644 scenes/sink.gd create mode 100644 scenes/sink.gd.uid create mode 100644 shaders/flash.gdshader create mode 100644 shaders/flash.gdshader.uid create mode 100644 sprites/glass_shards_packed.png create mode 100644 sprites/glass_shards_packed.png.import create mode 100644 sprites/sink_and_mirror.png create mode 100644 sprites/sink_and_mirror.png.import create mode 100644 sprites/table.png create mode 100644 sprites/table.png.import diff --git a/scenes/bullet.gd b/scenes/bullet.gd index 8d56db0..48769e2 100644 --- a/scenes/bullet.gd +++ b/scenes/bullet.gd @@ -22,22 +22,38 @@ func _on_area_entered(area: Area2D) -> void: var enemies = get_tree().get_nodes_in_group("enemies") for enemy in enemies: - match enemy.enemy_type: - "crt": - if area.is_in_group("enemies"): - if enemy.vulnerable == true: - area.explode() - queue_free() - if enemy.vulnerable == false: - print("blocked!") - enemy.block() - #await bullet_fx() - queue_free() + match enemy.enemy_type: + "crt": + if area.is_in_group("enemies"): + if enemy.vulnerable == true: + area.hit_detection() + queue_free() + + if enemy.vulnerable == false: + print("blocked!") + enemy.block() + #await bullet_fx() + queue_free() - _: - if area.is_in_group("enemies"): - area.explode() - queue_free() + "shards": + if area.is_in_group("shards"): + print("Shards hit!") + area.hit_detection() + + + + "mirror": + if area.is_in_group("enemies"): + print("Mirror hit!") + area.hit_detection() + queue_free() + + + "chicken": + if area.is_in_group("enemies"): + print("Chicken hit!") + area.hit_detection() + queue_free() #func bullet_fx(): #shader_active = true diff --git a/scenes/enemy_chicken.gd b/scenes/enemy_chicken.gd index 397e8d8..2d9e7b6 100644 --- a/scenes/enemy_chicken.gd +++ b/scenes/enemy_chicken.gd @@ -45,7 +45,7 @@ func _process(delta): start(start_pos) -func explode(): +func hit_detection(): if exploding: return exploding = true EventBus.enemy_hit.emit(5) diff --git a/scenes/enemy_crt.gd b/scenes/enemy_crt.gd index ecc5bf5..d42e27c 100644 --- a/scenes/enemy_crt.gd +++ b/scenes/enemy_crt.gd @@ -24,7 +24,7 @@ const TILE = 32 @onready var screensize = get_viewport_rect().size @onready var timer = $MoveTimer -@onready var crt = $EnemyCRT/CRT +@onready var crt = get_node("CRT") func _ready(): timer.start() @@ -50,7 +50,7 @@ func _on_timer_timeout(): $DirectionTimer.start() func _on_direction_timer_timeout(): - var move_direction = int(randf_range(0,2)) + var move_direction = int(randf_range(0,3)) match move_direction: 0: $CRT.frame = 0 @@ -95,7 +95,7 @@ func _process(delta): start(start_pos) -func explode(): +func hit_detection(): if exploding: return exploding = true EventBus.enemy_hit.emit(5) diff --git a/scenes/enemy_mirror.gd b/scenes/enemy_mirror.gd new file mode 100644 index 0000000..6dc7cb9 --- /dev/null +++ b/scenes/enemy_mirror.gd @@ -0,0 +1,27 @@ +extends Node2D + +#var enemy_type: String = "mirror" +var tween_speed: float = 1.4 +var start_pos = Vector2.ZERO + +var exploding = false +var health: int = 3 + +@onready var screensize = get_viewport_rect().size +@onready var sink_player = $EnemyMirror/AnimationPlayer + +func _ready() -> void: + start_all_animations() + + +func start(pos): + position = Vector2(pos.x, -pos.y) + start_pos = pos + var tween = create_tween().set_trans(Tween.TRANS_BACK) + tween.tween_property(self, "position:y", start_pos.y, tween_speed) + + +func start_all_animations(): + for child in get_children(): + if child is AnimationPlayer: + child.play("patrol") diff --git a/scenes/enemy_mirror.gd.uid b/scenes/enemy_mirror.gd.uid new file mode 100644 index 0000000..e756e04 --- /dev/null +++ b/scenes/enemy_mirror.gd.uid @@ -0,0 +1 @@ +uid://dp8e0btv8lktd diff --git a/scenes/enemy_mirror.tscn b/scenes/enemy_mirror.tscn new file mode 100644 index 0000000..e4f39db --- /dev/null +++ b/scenes/enemy_mirror.tscn @@ -0,0 +1,84 @@ +[gd_scene format=3 uid="uid://cr72q4uij4dee"] + +[ext_resource type="Script" uid="uid://dp8e0btv8lktd" path="res://scenes/enemy_mirror.gd" id="1_ucqiy"] +[ext_resource type="Script" uid="uid://dno2nntxrik2j" path="res://scenes/sink.gd" id="2_alyar"] +[ext_resource type="Texture2D" uid="uid://bs5540jcnaf7o" path="res://sprites/sink_and_mirror.png" id="2_il73p"] +[ext_resource type="AudioStream" uid="uid://cbi5q575w1g1n" path="res://sounds/CRT_IMPACT.wav" id="4_alyar"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_tcthq"] +size = Vector2(26, 18) + +[sub_resource type="Animation" id="Animation_515op"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("..:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} + +[sub_resource type="Animation" id="Animation_52i7y"] +resource_name = "travel" +length = 8.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("..:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.9666667, 4, 6.0333333, 8.033334), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(88, 0), Vector2(0, 0), Vector2(-88, 0), Vector2(0, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_uxg4c"] +_data = { +&"RESET": SubResource("Animation_515op"), +&"travel": SubResource("Animation_52i7y") +} + +[node name="EnemyMirror" type="Node2D" unique_id=1897558241] +z_index = -1 +script = ExtResource("1_ucqiy") + +[node name="Sink" type="Area2D" parent="." unique_id=767161856 groups=["enemies"]] +script = ExtResource("2_alyar") + +[node name="Sprite" type="Sprite2D" parent="Sink" unique_id=1825839263] +texture = ExtResource("2_il73p") +hframes = 4 +region_enabled = true +region_rect = Rect2(0, 0, 128, 36) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Sink" unique_id=251481492] +position = Vector2(0, -7) +shape = SubResource("RectangleShape2D_tcthq") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Sink" unique_id=1288483812] +root_node = NodePath("../Sprite") +libraries/ = SubResource("AnimationLibrary_uxg4c") +autoplay = &"travel" + +[node name="ImpactSound" type="AudioStreamPlayer2D" parent="Sink" unique_id=227261011] +stream = ExtResource("4_alyar") + +[node name="SinkMarkers" type="Node2D" parent="." unique_id=527549021] + +[node name="Marker2D" type="Marker2D" parent="SinkMarkers" unique_id=1345428527] +position = Vector2(88, 0) + +[node name="Marker2D2" type="Marker2D" parent="SinkMarkers" unique_id=1724416493] +position = Vector2(-88, 0) + +[node name="Table" type="Node2D" parent="." unique_id=128144371] + +[node name="Top" type="Node2D" parent="Table" unique_id=1108085768] diff --git a/scenes/enemy_shards.gd b/scenes/enemy_shards.gd new file mode 100644 index 0000000..0813c4e --- /dev/null +++ b/scenes/enemy_shards.gd @@ -0,0 +1,19 @@ +extends Node2D + +# var enemy_type: String = "shards" + +func _ready() -> void: + print("Requesting Animations…") + start_all_animations() + + + +func start_all_animations(): + var all_children = get_children(true) + for child in all_children: + #print(all_children) + print("Looking for AnimationPlayers…") + if child is AnimationPlayer: + print("Found an AnimationPlayer!") + child.play("patrol") + elif child != AnimationPlayer: print("No animation players found!") diff --git a/scenes/enemy_shards.gd.uid b/scenes/enemy_shards.gd.uid new file mode 100644 index 0000000..b4790bb --- /dev/null +++ b/scenes/enemy_shards.gd.uid @@ -0,0 +1 @@ +uid://bbtafofyupffs diff --git a/scenes/enemy_shards.tscn b/scenes/enemy_shards.tscn new file mode 100644 index 0000000..97ff15f --- /dev/null +++ b/scenes/enemy_shards.tscn @@ -0,0 +1,435 @@ +[gd_scene format=3 uid="uid://j7gmlgd0dgn"] + +[ext_resource type="Texture2D" uid="uid://dik51qdl4ixco" path="res://sprites/glass_shards_packed.png" id="1_6ro5i"] +[ext_resource type="Script" uid="uid://bbtafofyupffs" path="res://scenes/enemy_shards.gd" id="1_yu0xq"] +[ext_resource type="Script" uid="uid://whayoa6gwn0u" path="res://scenes/shards.gd" id="2_1se2b"] +[ext_resource type="Shader" uid="uid://x02irwg8ynvp" path="res://shaders/pixel_highlight.gdshader" id="3_bw53u"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_l2u7i"] +shader = ExtResource("3_bw53u") +shader_parameter/speed = 1.0 +shader_parameter/line_width = 0.15 +shader_parameter/line_color = Color(1, 1, 1, 1) +shader_parameter/pause_duration = 0.15 +shader_parameter/offset = 2.0 +shader_parameter/pixelate_line = 1 + +[sub_resource type="Animation" id="Animation_6ro5i"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(27, -48)] +} + +[sub_resource type="Animation" id="Animation_yu0xq"] +resource_name = "patrol" +length = 2.0 +loop_mode = 2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.033333335, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(27, -48), Vector2(105.333336, -130.66667)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_1se2b"] +_data = { +&"RESET": SubResource("Animation_6ro5i"), +&"patrol": SubResource("Animation_yu0xq") +} + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_bnwne"] +shader = ExtResource("3_bw53u") +shader_parameter/speed = 1.0 +shader_parameter/line_width = 0.15 +shader_parameter/line_color = Color(1, 1, 1, 1) +shader_parameter/pause_duration = 0.15 +shader_parameter/offset = 2.0 +shader_parameter/pixelate_line = 1 + +[sub_resource type="Animation" id="Animation_bw53u"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-14.666667, -36)] +} + +[sub_resource type="Animation" id="Animation_l2u7i"] +resource_name = "patrol" +length = 4.0 +loop_mode = 2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 3.8333333, 3.9666667), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(-14.666667, -36), Vector2(-40, -58.666668), Vector2(-85.333336, -90.66667)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_bnwne"] +_data = { +&"RESET": SubResource("Animation_bw53u"), +&"patrol": SubResource("Animation_l2u7i") +} + +[sub_resource type="Animation" id="Animation_3jlmk"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-24, -14)] +} + +[sub_resource type="Animation" id="Animation_n0ncd"] +resource_name = "patrol" +length = 2.0 +loop_mode = 2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.9666667), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-24, -14), Vector2(-124, -14)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_8olg8"] +_data = { +&"RESET": SubResource("Animation_3jlmk"), +&"patrol": SubResource("Animation_n0ncd") +} + +[sub_resource type="Animation" id="Animation_ul3we"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(27, -19)] +} + +[sub_resource type="Animation" id="Animation_4y33j"] +resource_name = "patrol" +length = 1.5 +loop_mode = 2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(27, -19), Vector2(122.66667, -19)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_awbo5"] +_data = { +&"RESET": SubResource("Animation_ul3we"), +&"patrol": SubResource("Animation_4y33j") +} + +[sub_resource type="Animation" id="Animation_7s70c"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 14)] +} + +[sub_resource type="Animation" id="Animation_sd7ug"] +resource_name = "patrol" +length = 2.0 +loop_mode = 2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(0.25000003, 2.143551), +"update": 0, +"values": [Vector2(-1, 14), Vector2(-72, 34.666668)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_dmrvj"] +_data = { +&"RESET": SubResource("Animation_7s70c"), +&"patrol": SubResource("Animation_sd7ug") +} + +[sub_resource type="Animation" id="Animation_c6ehs"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(16, 37)] +} + +[sub_resource type="Animation" id="Animation_ieuki"] +resource_name = "patrol" +length = 2.75 +loop_mode = 2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.033333335, 2.7333333), +"transitions": PackedFloat32Array(0.24999996, 1), +"update": 0, +"values": [Vector2(16, 37), Vector2(76, 21.333332)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_bg1f8"] +_data = { +&"RESET": SubResource("Animation_c6ehs"), +&"patrol": SubResource("Animation_ieuki") +} + +[sub_resource type="Animation" id="Animation_rsb42"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-18, 40)] +} + +[sub_resource type="Animation" id="Animation_ee5xp"] +resource_name = "patrol" +length = 3.0 +loop_mode = 2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 2.9666667), +"transitions": PackedFloat32Array(0.4061259, 0.20306315), +"update": 0, +"values": [Vector2(-18, 40), Vector2(-52, 73.333336)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_a2ego"] +_data = { +&"RESET": SubResource("Animation_rsb42"), +&"patrol": SubResource("Animation_ee5xp") +} + +[node name="EnemyShards" type="Node2D" unique_id=288811575] +visible = false +scale = Vector2(0.75, 0.75) +script = ExtResource("1_yu0xq") + +[node name="Shard 7a" type="Area2D" parent="." unique_id=2082596482 groups=["enemies", "shards"]] +position = Vector2(27, -48) +script = ExtResource("2_1se2b") + +[node name="Sprite2D" type="Sprite2D" parent="Shard 7a" unique_id=1293357619] +material = SubResource("ShaderMaterial_l2u7i") +texture = ExtResource("1_6ro5i") +region_enabled = true +region_rect = Rect2(236, 0, 38, 36) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Shard 7a" unique_id=901900924] +position = Vector2(-0.33333302, 0) +scale = Vector2(0.9, 0.815) +polygon = PackedVector2Array(-17.333334, 17.333332, 16, -2.666668, 16, -16, -6.666668, -16) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Shard 7a" unique_id=1249901448] +libraries/ = SubResource("AnimationLibrary_1se2b") +autoplay = &"patrol" +speed_scale = 0.768 + +[node name="Shard 6a" type="Area2D" parent="." unique_id=1610872105 groups=["enemies", "shards"]] +position = Vector2(-14.666667, -36) +script = ExtResource("2_1se2b") + +[node name="Sprite2D" type="Sprite2D" parent="Shard 6a" unique_id=1377882733] +material = SubResource("ShaderMaterial_bnwne") +position = Vector2(0, -2) +texture = ExtResource("1_6ro5i") +region_enabled = true +region_rect = Rect2(94, 0, 70, 56) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Shard 6a" unique_id=910049206] +position = Vector2(-9.333335, -8.000001) +scale = Vector2(0.9, 0.815) +polygon = PackedVector2Array(0, 15.873028, 17.240612, 26.455048, 31.607788, -15.873032, -17.240612, -15.873032, -17.240612, 5.291008) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Shard 6a" unique_id=6479119] +libraries/ = SubResource("AnimationLibrary_bnwne") +autoplay = &"patrol" +speed_scale = 0.768 + +[node name="Shard 5a" type="Area2D" parent="." unique_id=1066911643 groups=["enemies", "shards"]] +position = Vector2(-24, -14) +script = ExtResource("2_1se2b") + +[node name="Sprite2D" type="Sprite2D" parent="Shard 5a" unique_id=586563828] +material = SubResource("ShaderMaterial_l2u7i") +texture = ExtResource("1_6ro5i") +region_enabled = true +region_rect = Rect2(226, 48, 48, 40) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Shard 5a" unique_id=1528118020] +position = Vector2(-8, -2) +scale = Vector2(0.9, 0.815) +polygon = PackedVector2Array(-14.666668, -16, -14.666668, 20, 32, 8) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Shard 5a" unique_id=419906886] +libraries/ = SubResource("AnimationLibrary_8olg8") +autoplay = &"patrol" +speed_scale = 0.768 + +[node name="Shard 4a" type="Area2D" parent="." unique_id=1400249441 groups=["enemies", "shards"]] +position = Vector2(27, -19) +script = ExtResource("2_1se2b") + +[node name="Sprite2D" type="Sprite2D" parent="Shard 4a" unique_id=1098571076] +material = SubResource("ShaderMaterial_l2u7i") +texture = ExtResource("1_6ro5i") +region_enabled = true +region_rect = Rect2(0, 46, 54, 68) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Shard 4a" unique_id=138889232] +position = Vector2(5, -3.6666667) +scale = Vector2(0.9, 0.815) +polygon = PackedVector2Array(16, 16, 16, 36, -29.333334, 12.000001, -21.333332, -8, 14.666668, -28) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Shard 4a" unique_id=2025454166] +libraries/ = SubResource("AnimationLibrary_awbo5") +autoplay = &"patrol" +speed_scale = 0.768 + +[node name="Shard 3a" type="Area2D" parent="." unique_id=1325375019 groups=["enemies", "shards"]] +position = Vector2(-1, 14) +script = ExtResource("2_1se2b") + +[node name="Sprite2D" type="Sprite2D" parent="Shard 3a" unique_id=1177483202] +material = SubResource("ShaderMaterial_l2u7i") +texture = ExtResource("1_6ro5i") +region_enabled = true +region_rect = Rect2(0, 0, 93, 46) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Shard 3a" unique_id=1103906458] +scale = Vector2(0.9, 0.815) +polygon = PackedVector2Array(-20.333334, 20.666668, 43.666668, 2, 1, -22, -45.666668, -8.666666, -45.666668, 2, -20.333334, 20.666668) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Shard 3a" unique_id=156197660] +libraries/ = SubResource("AnimationLibrary_dmrvj") +autoplay = &"patrol" +speed_scale = 0.768 + +[node name="Shard 2a" type="Area2D" parent="." unique_id=303720937 groups=["enemies", "shards"]] +position = Vector2(16, 37) +script = ExtResource("2_1se2b") + +[node name="Sprite2D" type="Sprite2D" parent="Shard 2a" unique_id=699252441] +material = SubResource("ShaderMaterial_l2u7i") +position = Vector2(-2, 4) +texture = ExtResource("1_6ro5i") +region_enabled = true +region_rect = Rect2(166, 0, 68, 48) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Shard 2a" unique_id=1209273661] +position = Vector2(16, -1) +scale = Vector2(0.9, 0.815) +polygon = PackedVector2Array(17.333336, 17.333336, 17.333336, 28, -18.666666, 28, -49.333336, 1.3333359, 17.333336, -17.333332) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Shard 2a" unique_id=791849802] +libraries/ = SubResource("AnimationLibrary_bg1f8") +autoplay = &"patrol" +speed_scale = 0.768 + +[node name="Shard 1a" type="Area2D" parent="." unique_id=1571154045 groups=["enemies", "shards"]] +position = Vector2(-18, 40) +script = ExtResource("2_1se2b") + +[node name="Sprite2D" type="Sprite2D" parent="Shard 1a" unique_id=1796506745] +material = SubResource("ShaderMaterial_l2u7i") +texture = ExtResource("1_6ro5i") +region_enabled = true +region_rect = Rect2(164, 48, 62, 48) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Shard 1a" unique_id=1448077931] +position = Vector2(-12.666667, 8) +scale = Vector2(0.9, 0.815) +polygon = PackedVector2Array(-17.333332, 16, 42.666668, 17.333336, -16, -30.666666) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Shard 1a" unique_id=455180039] +libraries/ = SubResource("AnimationLibrary_a2ego") +autoplay = &"patrol" diff --git a/scenes/enemy_table.tscn b/scenes/enemy_table.tscn new file mode 100644 index 0000000..d16ccd5 --- /dev/null +++ b/scenes/enemy_table.tscn @@ -0,0 +1,27 @@ +[gd_scene format=3 uid="uid://716kunhta8vk"] + +[ext_resource type="Shader" uid="uid://x02irwg8ynvp" path="res://shaders/pixel_highlight.gdshader" id="1_d4l8f"] +[ext_resource type="Texture2D" uid="uid://cklakjbjislch" path="res://sprites/table.png" id="1_kcy6j"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_twce5"] +shader = ExtResource("1_d4l8f") +shader_parameter/speed = 1.0 +shader_parameter/line_width = 0.15 +shader_parameter/line_color = Color(1, 1, 1, 1) +shader_parameter/pause_duration = 0.15 +shader_parameter/offset = 2.0 +shader_parameter/pixelate_line = 1 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_d4l8f"] +size = Vector2(96, 128) + +[node name="EnemyTable" type="Area2D" unique_id=1100011048] +scale = Vector2(0.75, 0.75) + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1791816654] +material = SubResource("ShaderMaterial_twce5") +texture = ExtResource("1_kcy6j") +hframes = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=982140641] +shape = SubResource("RectangleShape2D_d4l8f") diff --git a/scenes/event_bus.gd b/scenes/event_bus.gd index b87a513..15ce1ff 100644 --- a/scenes/event_bus.gd +++ b/scenes/event_bus.gd @@ -3,6 +3,7 @@ extends Node @warning_ignore_start("unused_signal") # since otherwise Godot will throw a warning that the signal is unused in current scope signal shield_changed(max_value: int, old_value: int, new_value: int) +signal set_shield(value: int) signal player_died() signal enemy_died() signal enemy_hit(value: int) @@ -10,4 +11,7 @@ signal initialize_shieldbar() signal start_game() signal goose_talk(frame_index: int) +# FX +signal flash_screen(duration: float) + @warning_ignore_restore("unused_signal") # put any future signals you add between the two ignore annotations diff --git a/scenes/main.gd b/scenes/main.gd index ab3b803..1fb2a2a 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -25,6 +25,7 @@ func _ready(): EventBus.player_died.connect(_on_player_died) #EventBus.enemy_died.connect(_on_enemy_died) EventBus.enemy_hit.connect(_on_enemy_hit) + EventBus.flash_screen.connect(_on_flash_screen) #func spawn_enemies(): @@ -90,6 +91,7 @@ func new_game(): $CanvasLayer/Title.hide() # Ensure enemies are cleared. get_tree().call_group("enemies", "queue_free") + get_tree().call_group("shards", "queue_free") get_tree().call_group("enemy_bullets", "queue_free") # print("Number of enemies at new_game: ",enemy_count) enemy_count = 0 @@ -145,3 +147,15 @@ func win_game(): game_over.hide() $CanvasLayer/Title.show() start_button.show() + +func _on_flash_screen(duration: float): + print("flash!") + $CanvasLayer/ColorRect.visible = true + await get_tree().create_timer(duration).timeout + #var tween = create_tween().set_parallel(false) + #tween.tween_property($CanvasLayer/ColorRect.material, "intensity", 1.0, duration) + #tween.set_ease(Tween.EASE_IN_OUT).tween_property($CanvasLayer/ColorRect.material, "intensity", 0.0, duration) + #await tween.finished + print("flash finished!") + $CanvasLayer/ColorRect.visible = false + diff --git a/scenes/main.tscn b/scenes/main.tscn index e512cec..645999e 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -8,6 +8,7 @@ [ext_resource type="Texture2D" uid="uid://bonoqs5pisflo" path="res://_graphics/Mini Pixel Pack 3/UI objects/START (48 x 8).png" id="5_lquwl"] [ext_resource type="Texture2D" uid="uid://0mcbtnidp5kn" path="res://sprites/third space title.png" id="5_tipki"] [ext_resource type="Texture2D" uid="uid://bubqwoum50gf8" path="res://_graphics/Mini Pixel Pack 3/UI objects/GAME_OVER (72 x 8).png" id="6_7mycd"] +[ext_resource type="Shader" uid="uid://blxo4qgrkjiup" path="res://shaders/flash.gdshader" id="8_eb6dy"] [ext_resource type="PackedScene" uid="uid://cd1kwb8klcsb5" path="res://scenes/goose.tscn" id="9_85g3d"] [ext_resource type="AudioStream" uid="uid://c3e8sdfqcikp6" path="res://sounds/welcome.wav" id="10_choun"] [ext_resource type="PackedScene" uid="uid://drf1k1iulvy6f" path="res://scenes/wave.tscn" id="11_ya4ey"] @@ -59,6 +60,10 @@ shader_parameter/pause_duration = 6.0 shader_parameter/offset = 10.0 shader_parameter/pixelate_line = 0 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_trceg"] +shader = ExtResource("8_eb6dy") +shader_parameter/intensity = 1.0 + [sub_resource type="ShaderMaterial" id="ShaderMaterial_5vw27"] [node name="Main" type="Node2D" unique_id=128010797] @@ -103,6 +108,14 @@ texture_normal = ExtResource("5_lquwl") layout_mode = 2 texture = ExtResource("6_7mycd") +[node name="ColorRect" type="ColorRect" parent="CanvasLayer" unique_id=18763245] +visible = false +material = SubResource("ShaderMaterial_trceg") +offset_right = 240.0 +offset_bottom = 320.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + [node name="background" type="Sprite2D" parent="." unique_id=1790434669] visible = false z_index = -4 diff --git a/scenes/player.gd b/scenes/player.gd index 1e4c85c..0f489d9 100644 --- a/scenes/player.gd +++ b/scenes/player.gd @@ -10,7 +10,7 @@ signal damage_taken @export var bullet_scene : PackedScene @export var max_shield: int = 10 var shield: int = 0: - set = set_shield + set = _on_set_shield var can_shoot = false @@ -31,6 +31,7 @@ var clamp_shield = clamp(shield, 0, max_shield) func _ready(): set_process(false) print(shield) + EventBus.set_shield.connect(_on_set_shield) # start() func start(): @@ -45,7 +46,7 @@ func start(): tween.tween_property(self, "position:y", 120 * -1, 1).as_relative() await tween.finished $GunCooldown.wait_time = cooldown - set_shield(max_shield) + _on_set_shield(max_shield) print(shield) await get_tree().create_timer(1).timeout set_process(true) @@ -85,7 +86,7 @@ func shoot(): tween.tween_property(ship, "position:y", 1, 0.1) tween.tween_property(ship, "position:y", 0, 0.05) -func set_shield(value: int): +func _on_set_shield(value: int): var old_value = shield # shield = clamp(value, 0, max_shield) shield = min(max_shield, value) @@ -116,10 +117,12 @@ func _on_area_entered(area): if area.is_in_group("enemies"): shield -= int(max_shield / 2) # damage_taken.emit() - area.explode() + area.hit_detection() if area.is_in_group("enemy_bullets") and self.monitoring == true: damage_taken.emit() - + + if area.is_in_group("shards"): + shield -= int(max_shield / 2) func _on_damage_taken(): diff --git a/scenes/shards.gd b/scenes/shards.gd new file mode 100644 index 0000000..7a69e7c --- /dev/null +++ b/scenes/shards.gd @@ -0,0 +1,17 @@ +extends Area2D + +var enemy_type: String = "shards" + +@onready var shard_player = $AnimationPlayer +@onready var child_node = get_node("Player") + +func hit_detection(): + print("Shift!") + #var tween = create_tween().set_parallel(true) + #tween.tween_property($Sprite, "position:y", 4, 0.1) + #tween.tween_property($Sprite, "position:y", 0, 0.05) + #await tween.finished + #EventBus.set_shield.emit(-1) + shard_player.pause() + await get_tree().create_timer(0.5).timeout + shard_player.play() diff --git a/scenes/shards.gd.uid b/scenes/shards.gd.uid new file mode 100644 index 0000000..cdeabed --- /dev/null +++ b/scenes/shards.gd.uid @@ -0,0 +1 @@ +uid://whayoa6gwn0u diff --git a/scenes/sink.gd b/scenes/sink.gd new file mode 100644 index 0000000..b152c61 --- /dev/null +++ b/scenes/sink.gd @@ -0,0 +1,74 @@ +extends Area2D + +var enemy_type: String = "mirror" +var tween_speed: float = 1.4 +var start_pos = Vector2.ZERO + +var exploding = false +var health: int = 3 +var pause: bool = false + +@onready var screensize = get_viewport_rect().size +@onready var sink_player = $AnimationPlayer +@onready var impact_sound = $ImpactSound + +func _ready() -> void: + sink_player.seek(randf_range(5, sink_player.current_animation_length)) + EventBus.flash_screen.emit(0.15) + + +func start(pos): + position = Vector2(pos.x, -pos.y) + start_pos = pos + var tween = create_tween().set_trans(Tween.TRANS_BACK) + tween.tween_property(self, "position:y", start_pos.y, tween_speed) + +#func _process(delta): + #if pause == true: return + + + +func hit_detection(): + if exploding: return + + if health != 0: + health -= 1 + EventBus.enemy_hit.emit(5) + var current_frame = get_node("Sprite").frame + impact_sound.play() + $Sprite.frame = current_frame + 1 + #$AnimationPlayer.play("explode") + #set_deferred("monitoring", false) + #await $AnimationPlayer.animation_finished + var tween = create_tween().set_parallel(false) + tween.tween_property($Sprite, "position:y", -2, 0.1) + tween.tween_property($Sprite, "position:y", 0, 0.05) + await tween.finished + sink_player.pause() + await get_tree().create_timer(0.25).timeout + sink_player.play() + + if health == 0: + exploding = true + impact_sound.play() + #await impact_sound.finished + #find all nodes in group "shards" and then queue_free. + var nodes = get_tree().get_nodes_in_group("shards") + for node in nodes: + node.queue_free() + EventBus.enemy_died.emit() + queue_free() + + + +func explode(): + if exploding: return + #exploding = true + EventBus.enemy_hit.emit(5) + hit_detection() + #$ImpactCRT.play() + #$AnimationPlayer.play("explode") + #set_deferred("monitoring", false) + #await $AnimationPlayer.animation_finished + #queue_free() + #EventBus.enemy_died.emit() diff --git a/scenes/sink.gd.uid b/scenes/sink.gd.uid new file mode 100644 index 0000000..2054b79 --- /dev/null +++ b/scenes/sink.gd.uid @@ -0,0 +1 @@ +uid://dno2nntxrik2j diff --git a/scenes/ui.tscn b/scenes/ui.tscn index 6e772a3..db6b321 100644 --- a/scenes/ui.tscn +++ b/scenes/ui.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=3 uid="uid://s6wf3egdqtmh"] +[gd_scene format=3 uid="uid://s6wf3egdqtmh"] [ext_resource type="Texture2D" uid="uid://d11molrkdjjh5" path="res://_graphics/bar_background.png" id="1_m6e0p"] [ext_resource type="Script" uid="uid://b544c65halgk4" path="res://scenes/ui.gd" id="1_nltto"] @@ -10,7 +10,7 @@ shader = ExtResource("2_ibotj") shader_parameter/toggle = 0.0 -[node name="UI" type="MarginContainer"] +[node name="UI" type="MarginContainer" unique_id=722926975] anchors_preset = 10 anchor_right = 1.0 offset_bottom = 20.0 @@ -21,10 +21,10 @@ theme_override_constants/margin_right = 10 theme_override_constants/margin_bottom = 10 script = ExtResource("1_nltto") -[node name="HBoxContainer" type="HBoxContainer" parent="."] +[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=2065468078] layout_mode = 2 -[node name="ShieldBar" type="TextureProgressBar" parent="HBoxContainer"] +[node name="ShieldBar" type="TextureProgressBar" parent="HBoxContainer" unique_id=378017393] material = SubResource("ShaderMaterial_n5ude") custom_minimum_size = Vector2(80, 16) layout_mode = 2 @@ -37,7 +37,8 @@ stretch_margin_bottom = 3 texture_under = ExtResource("1_m6e0p") texture_progress = ExtResource("2_27fn8") -[node name="ScoreCounter" parent="HBoxContainer" instance=ExtResource("4_ibotj")] +[node name="ScoreCounter" parent="HBoxContainer" unique_id=1107960341 instance=ExtResource("4_ibotj")] +visible = false layout_mode = 2 [connection signal="value_changed" from="HBoxContainer/ShieldBar" to="." method="_on_shield_bar_value_changed"] diff --git a/scenes/wave.gd b/scenes/wave.gd index 42a41cf..e83e877 100644 --- a/scenes/wave.gd +++ b/scenes/wave.gd @@ -6,11 +6,16 @@ var enemy = null @export var wave_complete: bool = false +@onready var screensize = get_viewport_rect().size + const COLS: int = 5 const ROWS: int = 3 const CHICKEN = preload("res://scenes/enemy_chicken.tscn") const CRT = preload("res://scenes/enemy_CRT.tscn") +const MIRROR = preload("res://scenes/enemy_mirror.tscn") +const SHARDS = preload("res://scenes/enemy_shards.tscn") +const TABLE = preload("res://scenes/enemy_table.tscn") func _ready(): wave_count = 0 @@ -19,7 +24,7 @@ func _ready(): func spawn_enemies(): - if wave_count == 1: #This is for CHICKENS + if wave_count == 2: #This is for CHICKENS print("Enemy Wave: ", wave_count) enemy = CHICKEN for x in range(COLS): @@ -32,7 +37,7 @@ func spawn_enemies(): await get_tree().process_frame print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) - if wave_count == 0: #This is for CRTs + if wave_count == 1: #This is for CRTs print("Enemy Wave: ", wave_count) enemy = CRT var cols_mod = COLS - 1 @@ -47,6 +52,41 @@ func spawn_enemies(): enemy_count = rows_mod * cols_mod await get_tree().process_frame + if wave_count == 0: #This if for Mirror + print("Enemy Wave: ", wave_count) + + # Spawn Table + EventBus.flash_screen.emit(.25) + var t = TABLE.instantiate() + add_child(t) + t.position = Vector2(screensize.x / 2, position.y + 125) + await get_tree().create_timer(1.5).timeout + var ts = t.get_child(0) + ts.frame = 1 + EventBus.flash_screen.emit(.25) + await get_tree().create_timer(1.5).timeout + + # Spawn Mirror + enemy = MIRROR + enemy_count = 1 + var e = enemy.instantiate() + add_child(e) + e.position = Vector2(screensize.x / 2, position.y + 48) + + # Spawn Shards + t.queue_free() + var s = SHARDS.instantiate() + add_child(s) + s.position = Vector2(screensize.x / 2, position.y + 125) + s.show() + + # Start Shards + await get_tree().create_timer(2) + s.start_all_animations() + + + + func _on_enemy_died(): @@ -65,7 +105,7 @@ func update_enemy_aggression(low,high): func wave_status(): if enemy_count > 0: - enemy_aggression_check() + #enemy_aggression_check() wave_complete = false else: diff --git a/shaders/flash.gdshader b/shaders/flash.gdshader new file mode 100644 index 0000000..5b6d9f2 --- /dev/null +++ b/shaders/flash.gdshader @@ -0,0 +1,7 @@ +shader_type canvas_item; + +uniform float intensity : hint_range(0.0, 1.0) = 0.0; + +void fragment() { + COLOR = vec4(1.0, 1.0, 1.0, intensity); +} diff --git a/shaders/flash.gdshader.uid b/shaders/flash.gdshader.uid new file mode 100644 index 0000000..e270694 --- /dev/null +++ b/shaders/flash.gdshader.uid @@ -0,0 +1 @@ +uid://blxo4qgrkjiup diff --git a/sprites/glass_shards_packed.png b/sprites/glass_shards_packed.png new file mode 100644 index 0000000000000000000000000000000000000000..2cdeda65ec24a27344f71f5546a9ea0de388e936 GIT binary patch literal 1495 zcmV;|1t|K7P)Px#8&FJCMF0Q*7#SleEkQUyT})JMZ)kdpd4r{miM5`P`mNnv00009bW%=J0RR90 z|NsC0|2G1g)BpelRY^oaRCt`_TuGASFbwO1|NrKxsm>zVTmTYs>@-h32?bDyR!W+m zAI`RIBi$872I+)>Mn)rZs1Rtng#T16^m&Bs2lQiBcfqPE3ZgkM&V5`n z#vYnPmZg-NP!smF&4xQ3e3_nW8%nEm_5q1!$m~+DntGbMDX8m{c++|^Ooqutd5t7m zO?r`TQ~CTho0Dy2fGoTM+*=dw_^L()Y+Ea;gmXeE)JG1DDqC*k*bxkiTK_gEREUG7B2HI0 z?8LhwN-+sTl_5E}fHGfgZ`4qg4ioSq$nt^ZuTSDg$?}G`aE=*)k>s5F#FVXhd&zT9 zbPS85ro3S)(OuQt2Zf@D8E246AxMNjdca7`AdkD6R0g?lqbS^yGOnm=`2z6voT`FylIWlO{0Vm#HUaH5F!v0u<(}e}O#WFef)+;!G zX=2_JufB%x`w`~GP^@b3io;GDcZX>`^RPVp7 z?^_$sBS+tamuv!#h~fED*K&?;4q5bb%T}QtS+*nF%vw#9jU?sxCd3(M;gTh|hxu;) z&HS38sUVYr&fGeW&7WVn}PSe}Rvq%!#5A=$hBiq`1_e*HP^&h`3q8#TnG@(R^YJ;Yu zWT{e}Ia}p&;Rz-O$WrQ99Aa~(4oS{2L&<5bqY2!9(kjIr187G;5PI{bQ|w+^?%~3S z2v%4SvgT)W7O0<0ewSHwhtF1GSTTq%GoKacKk%Gg%>i6Z6F`*e!tBHY#)@T2jQD$k zXGH2Rl$To45QNLj%Dwn2YLfIHGUTWGi5C`11}wWY+tvYx7={P}ok7bkcM*e*~+PME>&ll6_;K6!gyx;%QQKNvb{bfx*$c!ILnM< zJuFBi$EhlBm9g8nNrS>ogfG;jd;hbzlRnpY)|M#W*-n~o1+?!u*I0$Mcb)ue_B;Dh z%^T^kYnh~DMb_p>d)M=wq}(a0+)I=8n~WQt7b8WR5d*4xNRx&M$TNpF#r^D>_mn>mc@rKqevxVN+23Z@x<`Exs~)O-w{ZtZf5pHD(SOX&efxG7JMWF;o$Q>qv^TRe x-dx|$R=>@^r>*=y9PVquGx0xcniS3T?H`}D8Ci(_w*3GA002ovPDHLkV1f=E&vO6( literal 0 HcmV?d00001 diff --git a/sprites/glass_shards_packed.png.import b/sprites/glass_shards_packed.png.import new file mode 100644 index 0000000..3fca2d5 --- /dev/null +++ b/sprites/glass_shards_packed.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dik51qdl4ixco" +path="res://.godot/imported/glass_shards_packed.png-31578c9c2b5ba92ed897ce5896a00c47.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/glass_shards_packed.png" +dest_files=["res://.godot/imported/glass_shards_packed.png-31578c9c2b5ba92ed897ce5896a00c47.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/sink_and_mirror.png b/sprites/sink_and_mirror.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b105ee6cc69769ca8c5218635bd22fbe693e5e GIT binary patch literal 622 zcmV-!0+IcRP)Px#8&FJCMF0Q*7#SleEkQUyT})JMZ)kdpd4r{miM5`P`mNnv00009bW%=J0RR90 z|NsC0|2G1g)Bpeh>`6pHR9J=0mfNzWAPhvg1Umo!#itTMAcF3BfSQ!0=t8;;L3J5G zM$TFHZI|`3obBZ=4xPwZ8CCz~~1w&h|hZXXYCaw{G|_0OuUiT3<5MIJJSxvE$y~eMn4jBrSf?zGttc z7^v~jDOl)Fi*U)yo$Tpe1wYn6_o|ucuO0Nf%3p5)anbX4{q+|)pW$x$19APX9O2G^ zr-8#91ZMf9Xrt?~o0kqL#gsV4(s&H8k6#@?F-G~KvNm7`*vK7NYJyWt05gzcVyT)o zz+Nt83PFh(x=91b`4k6~Yf^N(S^&;)hjy89H>7=rYmq#bD#jw($^R1rrU&c*8+lo$ zeV1~AGrYd4&;=jmSDij4=^($B>PXLW=Q2#>v)noRzi^8G0Yj)vk<1HoK>z>%07*qo IM6N<$g0zVvoB#j- literal 0 HcmV?d00001 diff --git a/sprites/sink_and_mirror.png.import b/sprites/sink_and_mirror.png.import new file mode 100644 index 0000000..9683b3f --- /dev/null +++ b/sprites/sink_and_mirror.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bs5540jcnaf7o" +path="res://.godot/imported/sink_and_mirror.png-f27de7d3cfa17d4c14d2dcbf3cd91832.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/sink_and_mirror.png" +dest_files=["res://.godot/imported/sink_and_mirror.png-f27de7d3cfa17d4c14d2dcbf3cd91832.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/table.png b/sprites/table.png new file mode 100644 index 0000000000000000000000000000000000000000..1122dda3b7c34b629de072af14f0770fbbd8945b GIT binary patch literal 1451 zcmV;c1yuTpP)Px#8&FJCMF0Q*7#SleEkQUyT})JMZ)kdpd4r{miM5`P`mNnv00009bW%=J0RR90 z|NsC0|2G1g)BpelDM>^@RCt`#oa>V0AP9x6TIc;=d28%kya00GSk=S7-6-&NAQ2@~ z>PLQ#Nj)v47K(h-+)6w7p%|#T78Zg^@K+E%2C76*NeI>@f`#E04ElbPjQ1O9*7Fuj zfLK0z<22H*iVVed`7zmrIVGE8R zDij3!CL|D?1YeBcNrNV71pA2^Ua9)hpvg&u3m{^_8$^YIpkHaWLI?;!8bQ4Yx2*_* zI}Mr~LU>K%2vx6cB!WDG?8IvdMu38-Ae6z z5D*AKv?BN+{HPiNBMn3ZFGLz46hsn%xWMp007ZbZfGs2fWsS6dVI>h*L8K$>mklWd zS{hgg`^8%VK?jHsSmnO~fxJH!1Y#Pr;by&{s>~p;33i(>vQlIvG9hr&pg0iZUnY*w zRY{CAa3P2g$Z~K%pa#)B-cviT=7I?HG;kx#7J>+|G}scj_f-2?SXuGJ|L75o0N56O z&uu~oN74X9cua*5&Jkdn^KCX-VwZX@4RC}@DK?|ah9d+JLcQ(+8c4Aq@)AH#q|O%z zAw=Lx12@7l7uxB#(wP%P(u6I7I1#uJ_1U;QkOq4MW1btLrSqvYuo0|D2*e9;h(Jcz zy6i1kJsn{HF&| zp(1E|PA|e40xE*C=Ty~e)65tF89{KguNTZ&Q35)`;_F*4*i)haClDrgpL)R@pCCAb zFzuV|8dZ`6XApV_VVSoM%@CYI=r+zai`g{6IfNU+-aE?!T+6(?yM}{i8wr8nUa6+N z)g81y(#R8V7TcIfu)^7Q6WSFFpcO&LZ2pcI~qU*mu2ADVCo z?uROaK~|x(k?;uK_d=3Eoh~9U3Fb|hkPg$n+zCS@=-9LhfOY9VPpWYUeMJ>437Iq z2MENHM^+p(*LT7kA#fg4C5$a+|7-%K@Eo+~EX_yfbON<@zV)Z=Oh@N*fbF4e-pthr zbB@5+!5~@bkIs(}n42&ZJ1PLJOx!mxBn_Ot2fM8>f-MChr*x2g!*l+Lbe6!?@SL(J zA|&*!;%j)$6x9MkT$?10ZQ-0%0U@kQmQZ6GA`3!Lk1npw`HbxuA*RI==lMe1`h*bD zVGGpc88I*-L^SNgeaaJcVL-sAI|S;Sk2s;U7ZL?;cm_poFJubbIUgwh&k}$qo&jen zVVz}5r1>AC=AVO20-rmh4#8gwz=9v0gADLzC$I!g|FK}A{i$$OA`J`>!*?P;!St;N z@$-cP677U>2h;Z=_|JpB7h%(H_l{Dx!e;pw6|aG?{0Dx8MO83ip*sKo002ovPDHLk FV1m^!ao+#{ literal 0 HcmV?d00001 diff --git a/sprites/table.png.import b/sprites/table.png.import new file mode 100644 index 0000000..ed49085 --- /dev/null +++ b/sprites/table.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cklakjbjislch" +path="res://.godot/imported/table.png-323cb18db94fde5a97f77a2a1125a74a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/table.png" +dest_files=["res://.godot/imported/table.png-323cb18db94fde5a97f77a2a1125a74a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1