From 447a43eda24d4b409bebfff098c6680d5c19ca9a Mon Sep 17 00:00:00 2001 From: Marco Date: Mon, 20 Jan 2025 12:17:27 +0100 Subject: [PATCH] Openable doors --- Scenes/Activable.cs | 14 +--- Scenes/Control_Pad.tscn | 4 +- Scenes/Door_Vertical.tscn | 120 ++++++++++++++++++++++++++++++-- Scenes/Interactable.cs | 2 +- Scenes/test.tscn | 23 +++--- Scripts/Door.cs | 97 ++++++++++++++++++++++++++ Scripts/IActivable.cs | 6 ++ Sprites/Button_Small.aseprite | 3 + Sprites/Button_Small.png | 3 + Sprites/Button_Small.png.import | 34 +++++++++ Sprites/DoorVertical.png | 3 + Sprites/DoorVertical.png.import | 34 +++++++++ Tilesets/factory.aseprite | 4 +- Tilesets/factory.png | 4 +- 14 files changed, 319 insertions(+), 32 deletions(-) create mode 100644 Scripts/Door.cs create mode 100644 Scripts/IActivable.cs create mode 100644 Sprites/Button_Small.aseprite create mode 100644 Sprites/Button_Small.png create mode 100644 Sprites/Button_Small.png.import create mode 100644 Sprites/DoorVertical.png create mode 100644 Sprites/DoorVertical.png.import diff --git a/Scenes/Activable.cs b/Scenes/Activable.cs index 49d6762f..00adb0ec 100644 --- a/Scenes/Activable.cs +++ b/Scenes/Activable.cs @@ -4,18 +4,8 @@ using System.Diagnostics; public partial class Activable : Area2D { - // Called when the node enters the scene tree for the first time. - public override void _Ready() + public virtual void Activate() { - } - - // Called every frame. 'delta' is the elapsed time since the previous frame. - public override void _Process(double delta) - { - } - - public void Activate() - { - Debug.WriteLine("Activated"); + //Debug.WriteLine("Activated"); } } diff --git a/Scenes/Control_Pad.tscn b/Scenes/Control_Pad.tscn index aae07dad..c3808477 100644 --- a/Scenes/Control_Pad.tscn +++ b/Scenes/Control_Pad.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://crph24e6e0v0q"] -[ext_resource type="Texture2D" uid="uid://dwpocd22r4pas" path="res://Sprites/Control_Pad.png" id="1_bgeyn"] [ext_resource type="Script" path="res://Scenes/Interactable.cs" id="1_g3j01"] +[ext_resource type="Texture2D" uid="uid://d24g1qb40t72l" path="res://Sprites/Button_Small.png" id="2_7m30w"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_x0adl"] @@ -14,4 +14,4 @@ script = ExtResource("1_g3j01") shape = SubResource("RectangleShape2D_x0adl") [node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource("1_bgeyn") +texture = ExtResource("2_7m30w") diff --git a/Scenes/Door_Vertical.tscn b/Scenes/Door_Vertical.tscn index 3a112fd3..3685f2aa 100644 --- a/Scenes/Door_Vertical.tscn +++ b/Scenes/Door_Vertical.tscn @@ -1,14 +1,126 @@ -[gd_scene load_steps=3 format=3 uid="uid://bc64lr3vlwchq"] +[gd_scene load_steps=16 format=3 uid="uid://bc64lr3vlwchq"] -[sub_resource type="AtlasTexture" id="AtlasTexture_xakim"] +[ext_resource type="Script" path="res://Scripts/Door.cs" id="1_e61bg"] +[ext_resource type="Texture2D" uid="uid://dwcjixrhq4cdv" path="res://Sprites/DoorVertical.png" id="1_vdvtb"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_mbysk"] +atlas = ExtResource("1_vdvtb") +region = Rect2(0, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cswit"] +atlas = ExtResource("1_vdvtb") +region = Rect2(48, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5twlp"] +atlas = ExtResource("1_vdvtb") +region = Rect2(32, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_appi3"] +atlas = ExtResource("1_vdvtb") +region = Rect2(16, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_qf4nm"] +atlas = ExtResource("1_vdvtb") +region = Rect2(0, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mvjy4"] +atlas = ExtResource("1_vdvtb") +region = Rect2(48, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hqwo7"] +atlas = ExtResource("1_vdvtb") +region = Rect2(0, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fjrcg"] +atlas = ExtResource("1_vdvtb") +region = Rect2(16, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pjqv0"] +atlas = ExtResource("1_vdvtb") +region = Rect2(32, 0, 16, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6brcl"] +atlas = ExtResource("1_vdvtb") +region = Rect2(48, 0, 16, 48) + +[sub_resource type="SpriteFrames" id="SpriteFrames_keeml"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_mbysk") +}], +"loop": true, +"name": &"Closed", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_cswit") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5twlp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_appi3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_qf4nm") +}], +"loop": false, +"name": &"Closing", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_mvjy4") +}], +"loop": true, +"name": &"Open", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_hqwo7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fjrcg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pjqv0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6brcl") +}], +"loop": false, +"name": &"Opening", +"speed": 5.0 +}] [sub_resource type="RectangleShape2D" id="RectangleShape2D_0wg11"] +size = Vector2(8, 48) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_f2rl6"] +size = Vector2(8, 48) [node name="Area2D" type="Area2D"] +collision_layer = 64 +collision_mask = 154 +script = ExtResource("1_e61bg") metadata/_edit_group_ = true -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = SubResource("AtlasTexture_xakim") +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +sprite_frames = SubResource("SpriteFrames_keeml") +animation = &"Closing" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("RectangleShape2D_0wg11") + +[node name="RigidBody2D" type="RigidBody2D" parent="."] +collision_layer = 64 +collision_mask = 10 +gravity_scale = 0.0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D"] +shape = SubResource("RectangleShape2D_f2rl6") + +[connection signal="animation_changed" from="AnimatedSprite2D" to="." method="_on_animated_sprite_2d_animation_changed"] diff --git a/Scenes/Interactable.cs b/Scenes/Interactable.cs index 5b0f45cb..654faade 100644 --- a/Scenes/Interactable.cs +++ b/Scenes/Interactable.cs @@ -18,6 +18,6 @@ public partial class Interactable : Area2D public void Activate() { - Debug.WriteLine("Activated"); + Target?.Activate(); } } diff --git a/Scenes/test.tscn b/Scenes/test.tscn index 9f7def16..d6c95eba 100644 --- a/Scenes/test.tscn +++ b/Scenes/test.tscn @@ -59,7 +59,6 @@ texture = ExtResource("8_0km4o") 3:3/0 = 0 4:3/0 = 0 5:3/0 = 0 -6:3/0 = 0 7:3/0 = 0 8:3/0 = 0 9:3/0 = 0 @@ -191,6 +190,8 @@ texture = ExtResource("8_0km4o") 7:14/0 = 0 8:14/0 = 0 9:14/0 = 0 +6:3/0 = 0 +6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-4, -6, -4, 0, 4, 0, 4, -6) [sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_qg3vu"] resource_name = "Props" @@ -228,7 +229,7 @@ tile_set = SubResource("TileSet_d7en2") [node name="Solid2" type="TileMapLayer" parent="Factory Tilemaps" groups=["Solid"]] use_parent_material = true -tile_map_data = PackedByteArray("AADL//L/AAACAAYAAADL//P/AAACAAYAAADL//T/AAACAAYAAADL//X/AAACAAYAAADL//b/AAACAAYAAADL//f/AAACAAYAAADL//j/AAACAAYAAADL//n/AAACAAYAAADL//r/AAACAAYAAADL//v/AAACAAYAAADL//z/AAACAAYAAADS//T/AAAAAAcAAADM//H/AAABAAcAAADN//H/AAABAAcAAADO//H/AAABAAcAAADP//H/AAABAAcAAADT//T/AAABAAcAAADU//T/AAABAAcAAADV//T/AAABAAcAAADW//T/AAABAAcAAADX//T/AAABAAcAAADO//f/AAADAAAAAADN//f/AAADAAAAAADM//f/AAADAAAAAADS//f/AAADAAAAAADO//r/AAADAAAAAADN//r/AAADAAAAAADM//r/AAADAAAAAADS//r/AAADAAAAAADT//r/AAADAAAAAADU//r/AAADAAAAAADV//r/AAADAAAAAADW//r/AAADAAAAAADX//r/AAADAAAAAADa//f/AAAAAAYAAADa//n/AAAAAAYAAADa//r/AAAAAAYAAADa//v/AAAAAAYAAADa//z/AAAAAAYAAADa//3/AAAAAAYAAADa//7/AAAAAAYAAADL//3/AAACAAYAAADL//7/AAACAAYAAADa////AAAAAAYAAADa/wAAAAAAAAYAAADY//r/AAADAAAAAADZ//r/AAADAAAAAADM//3/AAAEAAUAAADN//3/AAAEAAUAAADO//3/AAAEAAUAAADP//3/AAAEAAUAAADQ//3/AAAEAAUAAADR//3/AAAEAAUAAADS//3/AAAEAAUAAADT//3/AAAFAAUAAADX//3/AAADAAUAAADY//3/AAAEAAUAAADZ//3/AAAEAAUAAADX//7/AAADAAcAAADY////AAAEAAUAAADZ////AAAEAAUAAADT//7/AAAFAAcAAADS//7/AAAEAAUAAADR//7/AAAEAAUAAADQ//7/AAAEAAUAAADP//7/AAAEAAUAAADO//7/AAAEAAUAAADN//7/AAAEAAUAAADM//7/AAAEAAUAAADX/wEAAAAFAAcAAADW/wEAAAAEAAUAAADV/wEAAAAEAAUAAADU/wEAAAAEAAUAAADT/wEAAAAEAAUAAADX/wAAAAADAAYAAAC2////AAADAAAAAAC1////AAADAAAAAAC0////AAADAAAAAACz////AAADAAAAAACy////AAADAAAAAACx////AAADAAAAAACx//7/AAADAAAAAACx//3/AAADAAAAAAC2/wIAAAADAAAAAAC1/wIAAAADAAAAAAC0/wIAAAADAAAAAACz/wIAAAADAAAAAACy/wIAAAADAAAAAACx/wIAAAADAAAAAACw/wIAAAADAAAAAACv/wIAAAADAAAAAACu/wIAAAADAAAAAACt/wIAAAADAAAAAACs/wIAAAADAAAAAACu////AAADAAAAAACu//7/AAADAAAAAACu//3/AAADAAAAAACt////AAADAAAAAACs////AAADAAAAAACr////AAADAAAAAACq////AAADAAAAAACp////AAADAAAAAACr/wIAAAADAAAAAACq/wIAAAADAAAAAACp/wIAAAADAAAAAADQ/wEAAAADAAUAAADR/wEAAAAEAAUAAADS/wEAAAAEAAUAAADQ/wIAAAADAAYAAADQ/wMAAAADAAcAAADR/wMAAAAEAAUAAADX////AAADAAUAAADY//7/AAAEAAUAAADZ//7/AAAEAAUAAADL/wkAAAAAAAQAAADM/wAAAQAAAAAAAQDM/wEAAQAAAAAAAQDM/wIAAQAAAAAAAQDM/wMAAQAAAAAAAQDR//b/AQAAAAAAAgDV//H/AQAAAAAAAgDW//H/AQAAAAAAAwDX//H/AQAAAAAABADH//L/AQAAAAAABQDG//f/AQAAAAAABgDG//r/AQAAAAAABwDI//v/AQAAAAAACADR//X/AQAAAAAAAQDM//T/AAABAAEAAADN//T/AAABAAEAAADO//T/AAABAAEAAADP//T/AAABAAEAAADQ//T/AAABAAEAAADR//T/AAABAAEAAADS//X/AAAEAAEAAADS//b/AAAEAAEAAADT//X/AAABAAEAAADT//b/AAABAAEAAADV//b/AAABAAEAAADV//X/AAABAAEAAADX//b/AAABAAEAAADX//X/AAABAAEAAADZ//b/AAABAAEAAADZ//X/AAABAAEAAADa//j/AAAAAAYAAADL////AAACAAYAAADL/wAAAAACAAYAAADL/wEAAAACAAYAAADL/wIAAAACAAYAAADL/wMAAAACAAYAAADL/wQAAAACAAYAAADL/wUAAAACAAYAAADL/wYAAAACAAYAAADL/wcAAAACAAYAAADL/wgAAAACAAYAAADa/wEAAAAAAAYAAADa/wIAAAAAAAYAAADa/wMAAAAAAAYAAADa/wQAAAAAAAYAAADa/wUAAAAAAAYAAADa/wYAAAAAAAYAAADa/wcAAAAAAAYAAADa/wgAAAAAAAYAAADa/wkAAAAAAAYAAADa/woAAAAAAAYAAADa/wsAAAAAAAYAAADa/wwAAAAAAAYAAADa/w0AAAAAAAYAAADa/w4AAAAAAAYAAADZ/w8AAAABAAUAAADY/w8AAAABAAUAAADX/w8AAAABAAUAAADW/w8AAAABAAUAAADV/w8AAAABAAUAAADU/w8AAAABAAUAAADT/w8AAAABAAUAAADS/w8AAAABAAUAAADR/w8AAAABAAUAAADQ/w8AAAABAAUAAADP/w8AAAABAAUAAADO/w8AAAABAAUAAADN/w8AAAABAAUAAADM/w8AAAABAAUAAADL/w4AAAAAAAQAAADL/w0AAAAAAAQAAADK/w4AAAABAAUAAADJ/w4AAAABAAUAAADI/w4AAAABAAUAAADH/w4AAAABAAUAAADG/w4AAAABAAUAAADF/w4AAAABAAUAAADE/w4AAAABAAUAAADL/wsAAAAFAAEAAADL/woAAAAFAAEAAADK/woAAAABAAEAAADI/woAAAABAAEAAADH/woAAAABAAEAAADH/wkAAAABAAEAAADI/wkAAAABAAEAAADK/wkAAAABAAEAAADF/woAAAABAAEAAADE/woAAAABAAEAAADE/wkAAAABAAEAAADF/wkAAAABAAEAAADB/woAAAABAAEAAADC/woAAAABAAEAAADC/wkAAAABAAEAAADB/wkAAAABAAEAAAC//woAAAABAAEAAAC//wkAAAABAAEAAADJ/woAAAADAAEAAADJ/wkAAAADAAEAAADG/woAAAADAAEAAADG/wkAAAADAAEAAADD/woAAAADAAEAAADD/wkAAAADAAEAAADA/woAAAADAAEAAADA/wkAAAADAAEAAADD/w4AAAABAAUAAADC/w4AAAABAAUAAADB/w4AAAABAAUAAADA/w4AAAABAAUAAAC//w4AAAABAAUAAADU//b/AAADAAEAAADU//X/AAADAAEAAADW//b/AAADAAEAAADW//X/AAADAAEAAADY//b/AAADAAEAAADY//X/AAADAAEAAADT/wkAAQAAAAAAAgDU/wkAAQAAAAAAAgDU/woAAQAAAAAAAgDT/woAAQAAAAAAAgDT/wsAAQAAAAAAAgDU/wsAAQAAAAAAAgDU/wwAAQAAAAAAAgDT/wwAAQAAAAAAAgDS/wwAAQAAAAAAAgDR/wwAAQAAAAAAAgDR/wsAAQAAAAAAAgDS/wsAAQAAAAAAAgDS/woAAQAAAAAAAgDR/woAAQAAAAAAAgDS/wkAAQAAAAAAAgDR/wkAAQAAAAAAAgA=") +tile_map_data = PackedByteArray("AADL//L/AAACAAYAAADL//P/AAACAAYAAADL//T/AAACAAYAAADL//X/AAACAAYAAADL//b/AAACAAYAAADL//f/AAACAAYAAADL//j/AAACAAYAAADL//n/AAACAAYAAADL//r/AAACAAYAAADL//v/AAACAAYAAADL//z/AAACAAYAAADS//T/AAAAAAcAAADM//H/AAABAAcAAADN//H/AAABAAcAAADO//H/AAABAAcAAADP//H/AAABAAcAAADT//T/AAABAAcAAADU//T/AAABAAcAAADV//T/AAABAAcAAADW//T/AAABAAcAAADX//T/AAABAAcAAADO//f/AAADAAAAAADN//f/AAADAAAAAADM//f/AAADAAAAAADS//f/AAADAAAAAADO//r/AAADAAAAAADN//r/AAADAAAAAADM//r/AAADAAAAAADS//r/AAADAAAAAADT//r/AAADAAAAAADU//r/AAADAAAAAADV//r/AAADAAAAAADW//r/AAADAAAAAADX//r/AAADAAAAAADa//f/AAAAAAYAAADa//n/AAAAAAYAAADa//r/AAAAAAYAAADa//v/AAAAAAYAAADa//z/AAAAAAYAAADa//3/AAAAAAYAAADa//7/AAAAAAYAAADL//3/AAACAAYAAADL//7/AAACAAYAAADa////AAAAAAYAAADa/wAAAAAAAAYAAADY//r/AAADAAAAAADZ//r/AAADAAAAAADM//3/AAAEAAUAAADN//3/AAAEAAUAAADO//3/AAAEAAUAAADP//3/AAAEAAUAAADQ//3/AAAEAAUAAADR//3/AAAEAAUAAADS//3/AAAEAAUAAADT//3/AAAFAAUAAADX//3/AAADAAUAAADY//3/AAAEAAUAAADZ//3/AAAEAAUAAADX//7/AAADAAcAAADY////AAAEAAUAAADZ////AAAEAAUAAADT//7/AAAFAAcAAADS//7/AAAEAAUAAADR//7/AAAEAAUAAADQ//7/AAAEAAUAAADP//7/AAAEAAUAAADO//7/AAAEAAUAAADN//7/AAAEAAUAAADM//7/AAAEAAUAAADX/wEAAAAFAAcAAADW/wEAAAAEAAUAAADV/wEAAAAEAAUAAADU/wEAAAAEAAUAAADT/wEAAAAEAAUAAADX/wAAAAADAAYAAAC2////AAADAAAAAAC1////AAADAAAAAAC0////AAADAAAAAACz////AAADAAAAAACy////AAADAAAAAACx////AAADAAAAAACx//7/AAADAAAAAACx//3/AAADAAAAAAC2/wIAAAADAAAAAAC1/wIAAAADAAAAAAC0/wIAAAADAAAAAACz/wIAAAADAAAAAACy/wIAAAADAAAAAACx/wIAAAADAAAAAACw/wIAAAADAAAAAACv/wIAAAADAAAAAACu/wIAAAADAAAAAACt/wIAAAADAAAAAACs/wIAAAADAAAAAACu////AAADAAAAAACu//7/AAADAAAAAACu//3/AAADAAAAAACt////AAADAAAAAACs////AAADAAAAAACr////AAADAAAAAACq////AAADAAAAAACp////AAADAAAAAACr/wIAAAADAAAAAACq/wIAAAADAAAAAACp/wIAAAADAAAAAADQ/wEAAAADAAUAAADR/wEAAAAEAAUAAADS/wEAAAAEAAUAAADQ/wIAAAADAAYAAADQ/wMAAAADAAcAAADR/wMAAAAEAAUAAADX////AAADAAUAAADY//7/AAAEAAUAAADZ//7/AAAEAAUAAADL/wkAAAAEAAQAAADM/wAAAQAAAAAAAQDM/wEAAQAAAAAAAQDM/wIAAQAAAAAAAQDM/wMAAQAAAAAAAQDR//b/AQAAAAAAAgDV//H/AQAAAAAAAgDW//H/AQAAAAAAAwDX//H/AQAAAAAABADH//L/AQAAAAAABQDG//f/AQAAAAAABgDG//r/AQAAAAAABwDI//v/AQAAAAAACADR//X/AQAAAAAAAQDM//T/AAABAAEAAADN//T/AAABAAEAAADO//T/AAABAAEAAADP//T/AAABAAEAAADQ//T/AAABAAEAAADR//T/AAABAAEAAADS//X/AAAEAAEAAADS//b/AAAEAAEAAADT//X/AAABAAEAAADT//b/AAABAAEAAADV//b/AAABAAEAAADV//X/AAABAAEAAADX//b/AAABAAEAAADX//X/AAABAAEAAADZ//b/AAABAAEAAADZ//X/AAABAAEAAADa//j/AAAAAAYAAADL////AAACAAYAAADL/wAAAAACAAYAAADL/wEAAAACAAYAAADL/wIAAAACAAYAAADL/wMAAAACAAYAAADL/wQAAAACAAYAAADL/wUAAAACAAYAAADL/wYAAAACAAYAAADL/wcAAAACAAYAAADL/wgAAAACAAYAAADa/wEAAAAAAAYAAADa/wIAAAAAAAYAAADa/wMAAAAAAAYAAADa/wQAAAAAAAYAAADa/wUAAAAAAAYAAADa/wYAAAAAAAYAAADa/wcAAAAAAAYAAADa/wgAAAAAAAYAAADa/wkAAAAAAAYAAADa/woAAAAAAAYAAADa/wsAAAAAAAYAAADa/wwAAAAAAAYAAADa/w0AAAAAAAYAAADa/w4AAAAAAAYAAADZ/w8AAAABAAUAAADY/w8AAAABAAUAAADX/w8AAAABAAUAAADW/w8AAAABAAUAAADV/w8AAAABAAUAAADU/w8AAAABAAUAAADT/w8AAAABAAUAAADS/w8AAAABAAUAAADR/w8AAAABAAUAAADQ/w8AAAABAAUAAADP/w8AAAABAAUAAADO/w8AAAABAAUAAADN/w8AAAABAAUAAADM/w8AAAABAAUAAADL/w4AAAAAAAQAAADL/w0AAAAFAAQAAADK/w4AAAABAAUAAADJ/w4AAAABAAUAAADI/w4AAAABAAUAAADH/w4AAAABAAUAAADG/w4AAAABAAUAAADF/w4AAAABAAUAAADE/w4AAAABAAUAAADL/wsAAAAFAAEAAADL/woAAAAFAAEAAADK/woAAAABAAEAAADI/woAAAABAAEAAADH/woAAAABAAEAAADH/wkAAAABAAEAAADI/wkAAAABAAEAAADK/wkAAAABAAEAAADF/woAAAABAAEAAADE/woAAAABAAEAAADE/wkAAAABAAEAAADF/wkAAAABAAEAAADB/woAAAABAAEAAADC/woAAAABAAEAAADC/wkAAAABAAEAAADB/wkAAAABAAEAAAC//woAAAABAAEAAAC//wkAAAABAAEAAADJ/woAAAADAAEAAADJ/wkAAAADAAEAAADG/woAAAADAAEAAADG/wkAAAADAAEAAADD/woAAAADAAEAAADD/wkAAAADAAEAAADA/woAAAADAAEAAADA/wkAAAADAAEAAADD/w4AAAABAAUAAADC/w4AAAABAAUAAADB/w4AAAABAAUAAADA/w4AAAABAAUAAAC//w4AAAABAAUAAADU//b/AAADAAEAAADU//X/AAADAAEAAADW//b/AAADAAEAAADW//X/AAADAAEAAADY//b/AAADAAEAAADY//X/AAADAAEAAADT/wkAAQAAAAAAAgDU/wkAAQAAAAAAAgDU/woAAQAAAAAAAgDT/woAAQAAAAAAAgDT/wsAAQAAAAAAAgDU/wsAAQAAAAAAAgDU/wwAAQAAAAAAAgDT/wwAAQAAAAAAAgDS/wwAAQAAAAAAAgDR/wwAAQAAAAAAAgDR/wsAAQAAAAAAAgDS/wsAAQAAAAAAAgDS/woAAQAAAAAAAgDR/woAAQAAAAAAAgDS/wkAAQAAAAAAAgDR/wkAAQAAAAAAAgDM/woAAAAGAAMAAAC+/w0AAAAFAAQAAAC+/wkAAAAEAAQAAAA=") tile_set = SubResource("TileSet_d7en2") [node name="Barrel" parent="Factory Tilemaps" instance=ExtResource("5_3uba3")] @@ -269,11 +270,17 @@ position = Vector2(-696, -136) [node name="ControlPad" parent="Factory Tilemaps" node_paths=PackedStringArray("Target") instance=ExtResource("12_hfkf1")] position = Vector2(-713, -153) -Target = NodePath("../Door") +Target = NodePath("../Door_vertical") [node name="ControlPad2" parent="Factory Tilemaps" node_paths=PackedStringArray("Target") instance=ExtResource("12_hfkf1")] -position = Vector2(-616, -154) -Target = NodePath("../Door") +position = Vector2(-824, 167) +Target = NodePath("../Door_vertical2") + +[node name="Door_vertical" parent="Factory Tilemaps" instance=ExtResource("15_mgtvp")] +position = Vector2(-684, -120) + +[node name="Door_vertical2" parent="Factory Tilemaps" instance=ExtResource("15_mgtvp")] +position = Vector2(-840, 184) [node name="Door" parent="Factory Tilemaps" instance=ExtResource("14_y363m")] position = Vector2(-766, -74) @@ -306,12 +313,10 @@ position = Vector2(-743, -117) position = Vector2(-687, -10) [node name="Enemy2" parent="." instance=ExtResource("18_ixcwn")] -position = Vector2(-783, 92) +position = Vector2(-646, 179) [node name="Enemy3" parent="." instance=ExtResource("18_ixcwn")] -position = Vector2(-652, 180) +position = Vector2(-796, 88) [node name="Enemy4" parent="." instance=ExtResource("18_ixcwn")] position = Vector2(-883, 183) - -[node name="Door" parent="." instance=ExtResource("15_mgtvp")] diff --git a/Scripts/Door.cs b/Scripts/Door.cs new file mode 100644 index 00000000..6a4d1b11 --- /dev/null +++ b/Scripts/Door.cs @@ -0,0 +1,97 @@ +using Godot; +using System; +using System.Diagnostics; +using Cirno.Scripts; + +public partial class Door : Activable +{ + private AnimatedSprite2D _animatedSprite; + private CollisionShape2D _collisionShape; + private CollisionShape2D _solidShape; + // Called when the node enters the scene tree for the first time. + + [Export] + public DoorState State { get; set; } + + public override void _Ready() + { + _animatedSprite = GetNode("AnimatedSprite2D"); + _collisionShape = GetNode("CollisionShape2D"); + _solidShape = GetNode("RigidBody2D/CollisionShape2D"); + + SetState(State); + } + + // Called every frame. 'delta' is the elapsed time since the previous frame. + public override void _Process(double delta) + { + } + + public void Open() + { + _animatedSprite.Play("Opening"); + State = DoorState.Open; + _collisionShape.Disabled = true; + _solidShape.Disabled = true; + } + + public void Close() + { + _animatedSprite.Play("Closing"); + State = DoorState.Closed; + _collisionShape.Disabled = false; + _solidShape.Disabled = false; + + } + + public override void Activate() + { + switch (State) + { + case DoorState.Closed: + Open(); + break; + case DoorState.Open: + Close(); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + private void SetState(DoorState state) + { + switch (state) + { + case DoorState.Closed: + Close(); + break; + case DoorState.Open: + Open(); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + public void _on_animated_sprite_2d_animation_changed() + { + switch (_animatedSprite.Animation) + { + case "Opening": + + break; + case "Closing": + + break; + default: + break; + } + } +} + +public enum DoorState +{ + Closed, + Open +} diff --git a/Scripts/IActivable.cs b/Scripts/IActivable.cs new file mode 100644 index 00000000..a9535a36 --- /dev/null +++ b/Scripts/IActivable.cs @@ -0,0 +1,6 @@ +namespace Cirno.Scripts; + +public interface IActivable +{ + void Activate(); +} \ No newline at end of file diff --git a/Sprites/Button_Small.aseprite b/Sprites/Button_Small.aseprite new file mode 100644 index 00000000..f7e7dbf6 --- /dev/null +++ b/Sprites/Button_Small.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:472499338c4e23fd075d373bf6a71efd8d14a0768c40a51b4be3c8c911dbdb91 +size 588 diff --git a/Sprites/Button_Small.png b/Sprites/Button_Small.png new file mode 100644 index 00000000..f83ece8b --- /dev/null +++ b/Sprites/Button_Small.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4859f109a01e024c61251e046636e3407c52ac0550782dfe4c88101d83f30f6a +size 158 diff --git a/Sprites/Button_Small.png.import b/Sprites/Button_Small.png.import new file mode 100644 index 00000000..0a4f6024 --- /dev/null +++ b/Sprites/Button_Small.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d24g1qb40t72l" +path="res://.godot/imported/Button_Small.png-98a4c5460459fa0da24d50dc27d2bef8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/Button_Small.png" +dest_files=["res://.godot/imported/Button_Small.png-98a4c5460459fa0da24d50dc27d2bef8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/DoorVertical.png b/Sprites/DoorVertical.png new file mode 100644 index 00000000..b4c9e7f9 --- /dev/null +++ b/Sprites/DoorVertical.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64565e092faac45a3c677812fd8a97a2d98d42fd848b58c44d0fc0558896b9c2 +size 456 diff --git a/Sprites/DoorVertical.png.import b/Sprites/DoorVertical.png.import new file mode 100644 index 00000000..117f2d00 --- /dev/null +++ b/Sprites/DoorVertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwcjixrhq4cdv" +path="res://.godot/imported/DoorVertical.png-d84a2064a28d3dea08e4e4d728307fa8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/DoorVertical.png" +dest_files=["res://.godot/imported/DoorVertical.png-d84a2064a28d3dea08e4e4d728307fa8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/Tilesets/factory.aseprite b/Tilesets/factory.aseprite index 30baa8b1..ac28fb8a 100644 --- a/Tilesets/factory.aseprite +++ b/Tilesets/factory.aseprite @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f13b09d340017b33b8e0305784d069aae64e0e0bce2bf2b45dd08ad3dd31a95c -size 2937 +oid sha256:e06b62d503efa97ef118a1398cb3dacb664f72f518868c89f8430dce5befda77 +size 3280 diff --git a/Tilesets/factory.png b/Tilesets/factory.png index 7616f191..3ba11c6f 100644 --- a/Tilesets/factory.png +++ b/Tilesets/factory.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a91622359705467b8fe7689e717f0aa893e54c9cfe20b69cd7633f1897ee48e6 -size 4403 +oid sha256:678f2151cc822d2bc7778ae7caef88f46f928c5c3178e7405556c989c87d439d +size 4448