From 54d98245817b2a5d382043df5ed9478fb69a7712 Mon Sep 17 00:00:00 2001 From: MaddoScientisto Date: Sun, 9 Mar 2025 21:58:25 +0100 Subject: [PATCH] Interactable interface --- Scenes/Activable.cs | 3 ++- Scenes/Cutscenes/Intro.tscn | 22 +++++++++++-------- Scenes/Interactable.cs | 2 +- Scenes/Maps/RebelBase.tscn | 14 +++++++----- Scripts/Activables/BlackCover.cs | 3 ++- Scripts/Activables/BulletEmitter.cs | 4 +++- Scripts/Activables/DialogueStarter.cs | 3 ++- Scripts/Activables/HealthStation.cs | 4 +++- Scripts/Activables/PlayerMover.cs | 6 +++-- Scripts/Activables/ScriptableBase.cs | 10 ++++++++- Scripts/Activables/Teleporter.cs | 4 +++- Scripts/Actors/ActorSpawner.cs | 4 +++- Scripts/Actors/Boss.cs | 4 +++- Scripts/Chest.cs | 2 +- .../Components/Actors/ActivationProvider.cs | 17 +++++++------- .../Components/FSM/Elevator/ElevatorProxy.cs | 3 ++- Scripts/Door.cs | 4 +++- Scripts/IActivable.cs | 2 +- Scripts/Interactables/AlarmBox.cs | 2 +- Scripts/Interactables/Computer.cs | 3 ++- Scripts/Interactables/IInteractable.cs | 8 +++++-- Scripts/Interactables/ItemPickup.cs | 2 +- Scripts/Interactables/Switch.cs | 4 ++-- Scripts/Interactables/Valve.cs | 2 +- Scripts/Pickupper.cs | 8 +++---- Scripts/Selector.cs | 19 ++++++++-------- Tilesets/factory.aseprite | 4 ++-- 27 files changed, 102 insertions(+), 61 deletions(-) diff --git a/Scenes/Activable.cs b/Scenes/Activable.cs index 3584c07d..fcd7beac 100644 --- a/Scenes/Activable.cs +++ b/Scenes/Activable.cs @@ -5,8 +5,9 @@ using Cirno.Scripts; public partial class Activable : Area2D, IActivable { - public virtual void Activate(ActivationType activationType = ActivationType.Toggle) + public virtual bool Activate(ActivationType activationType = ActivationType.Toggle) { //Debug.WriteLine("Activated"); + return true; } } diff --git a/Scenes/Cutscenes/Intro.tscn b/Scenes/Cutscenes/Intro.tscn index 140bb8bf..f297518e 100644 --- a/Scenes/Cutscenes/Intro.tscn +++ b/Scenes/Cutscenes/Intro.tscn @@ -1124,31 +1124,36 @@ stretch_mode = 5 [node name="l1_forest" type="TextureRect" parent="MarginContainer/ImagesContainer/Intro1"] layout_mode = 0 -offset_right = 256.0 +offset_left = -13.915 +offset_right = 242.085 offset_bottom = 100.0 texture = ExtResource("20_jmnog") [node name="l2_forest" type="TextureRect" parent="MarginContainer/ImagesContainer/Intro1"] layout_mode = 0 -offset_right = 256.0 +offset_left = -37.65 +offset_right = 218.35 offset_bottom = 100.0 texture = ExtResource("21_kvayf") [node name="l3_forest" type="TextureRect" parent="MarginContainer/ImagesContainer/Intro1"] layout_mode = 0 -offset_right = 256.0 +offset_left = -80.0 +offset_right = 176.0 offset_bottom = 100.0 texture = ExtResource("22_ypu2s") [node name="l4_forest" type="TextureRect" parent="MarginContainer/ImagesContainer/Intro1"] layout_mode = 0 -offset_right = 256.0 +offset_left = -100.0 +offset_right = 156.0 offset_bottom = 100.0 texture = ExtResource("23_1hkdx") [node name="l5_forest" type="TextureRect" parent="MarginContainer/ImagesContainer/Intro1"] layout_mode = 0 -offset_right = 256.0 +offset_left = -120.0 +offset_right = 136.0 offset_bottom = 100.0 texture = ExtResource("24_mqbwl") @@ -1312,10 +1317,9 @@ stretch_mode = 5 [node name="Intro11-Crystal" type="TextureRect" parent="MarginContainer/ImagesContainer/Intro11"] layout_mode = 2 -offset_left = 41.0 -offset_top = 34.0 -offset_right = 89.0 -offset_bottom = 66.0 +offset_left = 150.0 +offset_right = 198.0 +offset_bottom = 32.0 texture = ExtResource("19_paaiq") stretch_mode = 5 diff --git a/Scenes/Interactable.cs b/Scenes/Interactable.cs index 4da1631a..e60b002b 100644 --- a/Scenes/Interactable.cs +++ b/Scenes/Interactable.cs @@ -44,7 +44,7 @@ public partial class Interactable : Area2D, IInteractable return true; } - public virtual bool Activate() + public virtual bool Activate(ActivationType activationType = ActivationType.Toggle) { return true; } diff --git a/Scenes/Maps/RebelBase.tscn b/Scenes/Maps/RebelBase.tscn index 8df30d5a..2d989555 100644 --- a/Scenes/Maps/RebelBase.tscn +++ b/Scenes/Maps/RebelBase.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=25 format=4 uid="uid://bx31ou6tw3kd1"] +[gd_scene load_steps=26 format=4 uid="uid://bx31ou6tw3kd1"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_jpse7"] [ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_8erab"] @@ -36,6 +36,8 @@ WaitForCompletion = true atlas = ExtResource("10_6rpbc") region = Rect2(0, 0, 8, 16) +[sub_resource type="CircleShape2D" id="CircleShape2D_cr26l"] + [node name="GameScene" type="Node2D"] process_mode = 3 script = ExtResource("1_jpse7") @@ -56,7 +58,7 @@ _solidLayers = [NodePath("../Solid"), NodePath("../Props")] metadata/_edit_lock_ = true [node name="Solid" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]] -tile_map_data = PackedByteArray("AAD3/w0AAAACAAYAAAD3/w4AAAACAAYAAAD2/w4AAAACAAgAAAD2/w0AAAACAAgAAAD//wwAAAABAAcAAAD+/wwAAAABAAcAAAD9/wwAAAABAAcAAAD8/wwAAAABAAcAAAD7/wwAAAABAAcAAAD6/wwAAAABAAcAAAD5/wwAAAABAAcAAAD4/wwAAAABAAcAAAD3/wwAAAAAAAgAAAD2/wwAAAACAAgAAAD3/wsAAAACAAgAAAD4/wsAAAACAAgAAAD5/wsAAAACAAgAAAD6/wsAAAACAAgAAAD7/wsAAAACAAgAAAD8/wsAAAACAAgAAAD9/wsAAAACAAgAAAD+/wsAAAACAAgAAAAAAAwAAAABAAcAAAAAAAsAAAACAAgAAAD//wsAAAACAAgAAAD2/wsAAAACAAgAAAD1/wsAAAACAAgAAAD1/wwAAAACAAgAAAD1/w0AAAACAAgAAAD1/w4AAAACAAgAAAD0/w0AAAACAAgAAADz/w0AAAAAAAYAAADz/wwAAAAAAAYAAAD0/wwAAAACAAgAAAD0/wsAAAACAAgAAAD0/w4AAAACAAgAAADz/w4AAAAAAAYAAADz/wsAAAAAAAYAAAD2/w8AAAACAAgAAAD3/w8AAAACAAYAAAD3/xAAAAACAAYAAAD3/xEAAAACAAYAAAD2/xEAAAACAAgAAAD2/xAAAAACAAgAAAD2/xIAAAACAAgAAAD1/xIAAAACAAgAAAD1/xMAAAACAAgAAAD2/xMAAAACAAgAAAD3/xMAAAACAAYAAAD3/xIAAAACAAYAAAD1/xEAAAACAAgAAAD1/xAAAAACAAgAAAD1/w8AAAACAAgAAAD0/xAAAAACAAgAAAD0/xEAAAACAAgAAAD0/xIAAAACAAgAAAD0/xMAAAACAAgAAAD0/w8AAAACAAgAAADz/w8AAAAAAAYAAADz/xAAAAAAAAYAAADz/xEAAAAAAAYAAADz/xIAAAAAAAYAAAD1/xQAAAACAAgAAAD0/xQAAAACAAgAAAD2/xQAAAACAAgAAAD3/xQAAAAAAAkAAAD3/xUAAAABAAcAAAD2/xUAAAABAAcAAAD1/xUAAAABAAcAAADz/xUAAAAAAAcAAADz/xQAAAAAAAYAAADz/xMAAAAAAAYAAAD0/xUAAAABAAcAAAAFAA4AAAABAAcAAAAGAA4AAAABAAcAAAAHAA4AAAABAAcAAAAIAA4AAAABAAcAAAAJAA4AAAABAAgAAAAKAA4AAAACAAgAAAAKAA8AAAACAAgAAAAKABAAAAACAAgAAAAKABEAAAACAAgAAAAKABIAAAACAAgAAAAEAA4AAAACAAsAAAAEAA0AAAAAAAYAAAAFAA0AAAACAAgAAAAGAA0AAAACAAgAAAAHAA0AAAACAAgAAAAIAA0AAAACAAgAAAAJAA0AAAACAAgAAAAKAA0AAAACAAgAAAALABMAAAACAAgAAAALABIAAAACAAgAAAALABEAAAACAAgAAAALABAAAAACAAgAAAALAA8AAAACAAgAAAALAA4AAAACAAgAAAALAA0AAAACAAgAAAALAAwAAAACAAgAAAAKAAwAAAACAAgAAAAJAAwAAAACAAgAAAAIAAwAAAACAAgAAAAHAAwAAAACAAgAAAAGAAwAAAACAAgAAAAFAAwAAAACAAgAAAAEAAwAAAABAAgAAAADAAwAAAABAAcAAAAEAA8AAAAAAAQAAAAEABAAAAAAAAQAAAAFAA8AAAAJAAoAAAAFABAAAAAJAAsAAAAGAA8AAAAJAAoAAAAGABAAAAAJAAsAAAAHAA8AAAAJAAoAAAAHABAAAAAJAAsAAAAIAA8AAAAJAAoAAAAIABAAAAAJAAsAAAAJAA8AAAAAAAYAAAAJABAAAAAAAAYAAAAKABMAAAACAAgAAAAKABQAAAACAAgAAAAKABUAAAABAAcAAAAJABUAAAABAAcAAAAIABUAAAAAAAcAAAAEABUAAAABAAcAAAAFABUAAAACAAcAAAADABUAAAABAAcAAAADABQAAAABAAUAAAALABUAAAABAAcAAAALABQAAAACAAgAAAABAAwAAAABAAcAAAACAAwAAAABAAcAAAABABQAAAABAAUAAAACABQAAAABAAUAAAACABUAAAABAAcAAAABABUAAAABAAcAAAABABYAAAACAAEAAAABABcAAAACAAEAAAACABYAAAACAAEAAAACABcAAAACAAEAAAADABYAAAACAAEAAAADABcAAAACAAEAAAAEABYAAAACAAEAAAAEABcAAAACAAEAAAAFABYAAAACAAEAAAAFABcAAAACAAEAAAAIABYAAAACAAEAAAAIABcAAAACAAEAAAAJABYAAAACAAEAAAAJABcAAAACAAEAAAAKABYAAAACAAEAAAAKABcAAAACAAEAAAALABYAAAACAAEAAAALABcAAAACAAEAAAAEABEAAAAAAAQAAAAEABIAAAAAAAQAAAAEABMAAAAAAAQAAAAEABQAAAADAA4AAAAJABEAAAAAAAYAAAAJABIAAAAAAAYAAAAJABMAAAAAAAYAAAAJABQAAAABAAkAAAAIABQAAAAAAAUAAAAFABQAAAACAAUAAAAMABYAAAACAAEAAAAMABcAAAACAAEAAAAIAB8AAAAAAAQAAAAIAB4AAAAAAAQAAAABAB0AAAADAAQAAAAAAB0AAAAEAAwAAAAAABwAAAACAAYAAAD//x0AAAABAAcAAAD//xwAAAABAAkAAAASAB0AAAAFAAwAAAASABwAAAAAAAYAAAD+/x0AAAABAAcAAAD+/xwAAAABAAUAAAD9/x8AAAACAAYAAAD9/x4AAAACAAYAAAD9/x0AAAAAAAgAAAD9/xwAAAABAAUAAAD8/x8AAAACAAgAAAD8/x4AAAACAAgAAAD8/x0AAAACAAgAAAD8/xwAAAABAAUAAAD7/x8AAAACAAgAAAD7/x4AAAACAAgAAAD7/x0AAAACAAgAAAD7/xwAAAABAAUAAAD6/x8AAAACAAgAAAD6/x4AAAACAAgAAAD6/x0AAAACAAgAAAD6/xwAAAABAAUAAAD5/x8AAAACAAgAAAD5/x4AAAACAAgAAAD5/x0AAAACAAgAAAD5/xwAAAABAAUAAAD4/x8AAAACAAgAAAD4/x4AAAACAAgAAAD4/x0AAAACAAgAAAD4/xwAAAABAAUAAAD3/x8AAAACAAgAAAD3/x4AAAACAAgAAAD3/x0AAAACAAgAAAD3/xwAAAABAAUAAAD2/x8AAAACAAgAAAD2/x4AAAACAAgAAAD2/x0AAAACAAgAAAD2/xwAAAABAAUAAAD1/x8AAAACAAgAAAD1/x4AAAACAAgAAAD1/x0AAAACAAgAAAD1/xwAAAABAAUAAAD0/x8AAAACAAgAAAD0/x4AAAACAAgAAAD0/x0AAAACAAgAAAD0/xwAAAABAAUAAADz/x8AAAACAAgAAADz/x4AAAACAAgAAADz/x0AAAACAAgAAADz/xwAAAABAAUAAADy/x8AAAAAAAYAAADy/x4AAAAAAAYAAADy/x0AAAAAAAYAAADy/xwAAAAAAAUAAAAIACQAAAAAAAQAAAAIACMAAAAAAAQAAAAIACIAAAAAAAQAAAAIACEAAAAAAAQAAAAIACAAAAAAAAQAAAAIACUAAAACAA4AAAAHACUAAAABAAUAAAAGACUAAAABAAUAAAAFACUAAAABAAUAAAAEACUAAAABAAUAAAADACUAAAABAAUAAAACACUAAAABAAUAAAABACUAAAABAAUAAAAAACUAAAABAAUAAAD//yUAAAABAAUAAAD+/yUAAAABAAUAAAD9/yUAAAACAAgAAAD9/yQAAAAAAAkAAAD9/yMAAAACAAYAAAD9/yIAAAACAAYAAAD9/yEAAAACAAYAAAD9/yAAAAACAAYAAAD8/yUAAAACAAgAAAD8/yQAAAACAAgAAAD8/yMAAAACAAgAAAD8/yIAAAACAAgAAAD8/yEAAAACAAgAAAD8/yAAAAACAAgAAAD7/yUAAAACAAgAAAD7/yQAAAACAAgAAAD7/yMAAAACAAgAAAD7/yIAAAACAAgAAAD7/yEAAAACAAgAAAD7/yAAAAACAAgAAAD6/yUAAAACAAgAAAD6/yQAAAACAAgAAAD6/yMAAAACAAgAAAD6/yIAAAACAAgAAAD6/yEAAAACAAgAAAD6/yAAAAACAAgAAAD5/yUAAAACAAgAAAD5/yQAAAACAAgAAAD5/yMAAAACAAgAAAD5/yIAAAACAAgAAAD5/yEAAAACAAgAAAD5/yAAAAACAAgAAAD4/yUAAAACAAgAAAD4/yQAAAACAAgAAAD4/yMAAAACAAgAAAD4/yIAAAACAAgAAAD4/yEAAAACAAgAAAD4/yAAAAACAAgAAAD3/yUAAAACAAgAAAD3/yQAAAACAAgAAAD3/yMAAAACAAgAAAD3/yIAAAACAAgAAAD3/yEAAAACAAgAAAD3/yAAAAACAAgAAAD2/yUAAAACAAgAAAD2/yQAAAACAAgAAAD2/yMAAAACAAgAAAD2/yIAAAACAAgAAAD2/yEAAAACAAgAAAD2/yAAAAACAAgAAAD1/yUAAAACAAgAAAD1/yQAAAACAAgAAAD1/yMAAAACAAgAAAD1/yIAAAACAAgAAAD1/yEAAAACAAgAAAD1/yAAAAACAAgAAAD0/yUAAAACAAgAAAD0/yQAAAACAAgAAAD0/yMAAAACAAgAAAD0/yIAAAACAAgAAAD0/yEAAAACAAgAAAD0/yAAAAACAAgAAADz/yUAAAACAAgAAADz/yQAAAACAAgAAADz/yMAAAACAAgAAADz/yIAAAACAAgAAADz/yEAAAACAAgAAADz/yAAAAACAAgAAADy/yUAAAAAAAYAAADy/yQAAAAAAAYAAADy/yMAAAAAAAYAAADy/yIAAAAAAAYAAADy/yEAAAAAAAYAAADy/yAAAAAAAAYAAAD9/ycAAAABAAcAAAD9/yYAAAACAAgAAAD8/ycAAAABAAcAAAD8/yYAAAACAAgAAAD7/ycAAAABAAcAAAD7/yYAAAACAAgAAAD6/ycAAAABAAcAAAD6/yYAAAACAAgAAAD5/ycAAAABAAcAAAD5/yYAAAACAAgAAAD4/ycAAAABAAcAAAD4/yYAAAACAAgAAAD3/ycAAAABAAcAAAD3/yYAAAACAAgAAAD2/ycAAAABAAcAAAD2/yYAAAACAAgAAAD1/ycAAAABAAcAAAD1/yYAAAACAAgAAAD0/ycAAAABAAcAAAD0/yYAAAACAAgAAADz/ycAAAABAAcAAADz/yYAAAACAAgAAAAMACcAAAABAAcAAAAMACYAAAACAAgAAAALACcAAAABAAcAAAALACYAAAACAAgAAAAKACcAAAABAAcAAAAKACYAAAACAAgAAAAJACcAAAABAAcAAAAJACYAAAACAAgAAAAIACcAAAABAAcAAAAIACYAAAACAAgAAAAHACcAAAABAAcAAAAHACYAAAACAAgAAAAGACcAAAABAAcAAAAGACYAAAACAAgAAAAFACcAAAABAAcAAAAFACYAAAACAAgAAAAEACcAAAABAAcAAAAEACYAAAACAAgAAAADACcAAAABAAcAAAADACYAAAACAAgAAAACACcAAAABAAcAAAACACYAAAACAAgAAAABACcAAAABAAcAAAABACYAAAACAAgAAAAAACcAAAABAAcAAAAAACYAAAACAAgAAAD//ycAAAABAAcAAAD//yYAAAACAAgAAAD+/ycAAAABAAcAAAD+/yYAAAACAAgAAADy/ycAAAAAAAcAAADy/yYAAAAAAAYAAAATACcAAAABAAcAAAATACYAAAACAAgAAAATACUAAAABAAkAAAATACQAAAAAAAYAAAASACcAAAABAAcAAAASACYAAAACAAgAAAASACUAAAABAAUAAAARACcAAAABAAcAAAARACYAAAACAAgAAAARACUAAAABAAUAAAAQACcAAAABAAcAAAAQACYAAAACAAgAAAAQACUAAAABAAUAAAAPACcAAAABAAcAAAAPACYAAAACAAgAAAAPACUAAAABAAUAAAAOACcAAAABAAcAAAAOACYAAAACAAgAAAAOACUAAAABAAUAAAANACcAAAABAAcAAAANACYAAAACAAgAAAANACUAAAABAAUAAAAMACUAAAABAAUAAAALACUAAAABAAUAAAAKACUAAAABAAUAAAAJACUAAAABAAUAAAAAABUAAAAAAAgAAAAAABQAAAABAAUAAAD//xUAAAAAAAYAAAD//xQAAAAAAAUAAAD7/xUAAAABAAcAAAD7/xQAAAABAAUAAAD6/xUAAAABAAcAAAD6/xQAAAABAAUAAAD5/xUAAAABAAcAAAD5/xQAAAABAAUAAAD4/xUAAAABAAcAAAD4/xQAAAABAAUAAAD8/xUAAAACAAcAAAD8/xQAAAACAAUAAAD//xcAAAAAAAYAAAAAABYAAAACAAYAAAAAABcAAAACAAYAAADz/xYAAAAJAAAAAADz/xcAAAAJAAAAAAD0/xYAAAAJAAAAAAD0/xcAAAAJAAAAAAD1/xYAAAAJAAAAAAD1/xcAAAAJAAAAAAD2/xYAAAAJAAAAAAD2/xcAAAAJAAAAAAD3/xYAAAAJAAAAAAD3/xcAAAAJAAAAAAD4/xYAAAAJAAAAAAD4/xcAAAAJAAAAAAD5/xYAAAAJAAAAAAD5/xcAAAAJAAAAAAD6/xYAAAAJAAAAAAD6/xcAAAAJAAAAAAD7/xYAAAAJAAAAAAD7/xcAAAAJAAAAAAD8/xYAAAAJAAAAAAD8/xcAAAAJAAAAAAALAAsAAAACAAgAAAALAAoAAAACAAgAAAALAAkAAAABAAUAAAAKAAsAAAACAAgAAAAKAAoAAAACAAgAAAAKAAkAAAABAAUAAAAJAAsAAAACAAgAAAAJAAoAAAACAAgAAAAJAAkAAAABAAUAAAAIAAsAAAACAAgAAAAIAAoAAAACAAgAAAAIAAkAAAABAAUAAAAHAAsAAAACAAgAAAAHAAoAAAACAAgAAAAHAAkAAAABAAUAAAAGAAsAAAACAAgAAAAGAAoAAAACAAgAAAAGAAkAAAABAAUAAAAFAAsAAAACAAgAAAAFAAoAAAACAAgAAAAFAAkAAAABAAUAAAAEAAsAAAACAAgAAAAEAAoAAAACAAgAAAAEAAkAAAABAAUAAAADAAsAAAACAAgAAAADAAoAAAACAAgAAAADAAkAAAABAAUAAAACAAsAAAACAAgAAAACAAoAAAACAAgAAAACAAkAAAABAAUAAAABAAsAAAACAAgAAAABAAoAAAACAAgAAAABAAkAAAABAAUAAAAAAAoAAAACAAgAAAAAAAkAAAABAAUAAAD//woAAAACAAgAAAD//wkAAAABAAUAAAD+/woAAAACAAgAAAD+/wkAAAABAAUAAAD9/woAAAACAAgAAAD9/wkAAAABAAUAAAD8/woAAAACAAgAAAD8/wkAAAABAAUAAAD7/woAAAACAAgAAAD7/wkAAAABAAUAAAD6/woAAAACAAgAAAD6/wkAAAABAAUAAAD5/woAAAACAAgAAAD5/wkAAAABAAUAAAD4/woAAAACAAgAAAD4/wkAAAABAAUAAAD3/woAAAACAAgAAAD3/wkAAAABAAUAAAD2/woAAAACAAgAAAD2/wkAAAABAAUAAAD1/woAAAACAAgAAAD1/wkAAAABAAUAAAD0/woAAAACAAgAAAD0/wkAAAABAAUAAADz/woAAAAAAAYAAADz/wkAAAAAAAUAAAANAAsAAAACAAgAAAANAAoAAAACAAgAAAANAAkAAAABAAUAAAAMAAsAAAACAAgAAAAMAAoAAAACAAgAAAAMAAkAAAABAAUAAAD4/w0AAAAKAAAAAAD4/w4AAAAKAAEAAAD5/w0AAAAKAAAAAAD5/w4AAAAKAAEAAAD6/w0AAAAKAAAAAAD6/w4AAAAKAAEAAAD7/w0AAAAKAAAAAAD7/w4AAAAKAAEAAAD8/w0AAAAKAAAAAAD8/w4AAAAKAAEAAAD9/w0AAAAKAAAAAAD9/w4AAAAKAAEAAAD+/w0AAAAKAAAAAAD+/w4AAAAKAAEAAAD//w0AAAAKAAAAAAD//w4AAAAKAAEAAAAAAA0AAAAKAAAAAAAAAA4AAAAKAAEAAAABAA0AAAAKAAAAAAABAA4AAAAKAAEAAAACAA0AAAAKAAAAAAACAA4AAAAKAAEAAAADAA0AAAAKAAAAAAADAA4AAAAKAAEAAAAEAB4AAAAKAAgAAAAEAB8AAAAKAAkAAAAFAB4AAAAJAAIAAAAFAB8AAAAJAAMAAAAGAB4AAAAKAAIAAAAGAB8AAAAKAAMAAAAHAB4AAAAKAAgAAAAHAB8AAAAKAAkAAAD+/x4AAAAKAAgAAAD+/x8AAAAKAAkAAAD//x4AAAAJAAIAAAD//x8AAAAJAAMAAAAAAB4AAAAKAAIAAAAAAB8AAAAKAAMAAAABAB4AAAAKAAgAAAABAB8AAAAKAAkAAAAAABgAAAACAAYAAAAAABkAAAACAAYAAAAAABoAAAACAAYAAAAAABsAAAACAAYAAAD//xsAAAAAAAYAAAD//xoAAAAAAAYAAAD//xkAAAAAAAYAAAD//xgAAAAAAAYAAAASABsAAAAAAAYAAAASABoAAAAAAAYAAAASABkAAAAAAAYAAAASABgAAAAAAAYAAAASABcAAAAAAAYAAAASABYAAAAAAAYAAAASABUAAAABAAgAAAARABUAAAABAAcAAAAQABUAAAABAAcAAAAPABUAAAABAAcAAAAOABUAAAABAAcAAAANABUAAAABAAcAAAAMABUAAAABAAcAAAAMABQAAAACAAgAAAANABQAAAACAAgAAAAOABQAAAACAAgAAAAPABQAAAACAAgAAAAQABQAAAACAAgAAAARABQAAAACAAgAAAASABQAAAACAAgAAAATABQAAAACAAgAAAATABUAAAACAAgAAAATABYAAAACAAgAAAATABcAAAACAAgAAAATABgAAAACAAgAAAATABkAAAACAAgAAAATABoAAAACAAgAAAATABsAAAACAAgAAAATABwAAAACAAgAAAATAB0AAAABAAgAAAAUACMAAAACAAgAAAAUACQAAAACAAgAAAAUACUAAAACAAgAAAAUACYAAAACAAgAAAAUACcAAAABAAcAAAAVACUAAAACAAgAAAAVACQAAAACAAgAAAAVACMAAAACAAgAAAAUACIAAAACAAgAAAAUACEAAAACAAgAAAAUACAAAAACAAgAAAAUAB8AAAACAAgAAAAUAB4AAAACAAgAAAAUAB0AAAACAAgAAAAUABwAAAACAAgAAAAUABsAAAACAAgAAAAUABoAAAACAAgAAAAUABkAAAACAAgAAAAUABgAAAACAAgAAAAUABcAAAACAAgAAAAUABYAAAACAAgAAAAUABUAAAACAAgAAAAUABQAAAACAAgAAAAVABQAAAACAAgAAAAVABUAAAACAAgAAAAVABYAAAACAAgAAAAVABcAAAACAAgAAAAVABgAAAACAAgAAAAVABkAAAACAAgAAAAVABoAAAACAAgAAAAVABsAAAACAAgAAAAVABwAAAACAAgAAAAVAB4AAAACAAgAAAAVAB0AAAACAAgAAAAVAB8AAAACAAgAAAAVACEAAAACAAgAAAAVACAAAAACAAgAAAAVACIAAAACAAgAAAAWACUAAAACAAYAAAAWACYAAAACAAYAAAAWACcAAAACAAcAAAAVACcAAAABAAcAAAAVACYAAAACAAgAAAAWACQAAAACAAYAAAAWACMAAAACAAYAAAAWACIAAAACAAYAAAAWACEAAAACAAYAAAAWACAAAAACAAYAAAAWAB8AAAACAAYAAAAWAB4AAAACAAYAAAAWAB0AAAACAAYAAAAWABwAAAACAAYAAAAWABsAAAACAAYAAAAWABoAAAACAAYAAAAWABkAAAACAAYAAAAWABgAAAACAAYAAAAWABcAAAACAAYAAAAWABYAAAACAAYAAAAWABUAAAACAAYAAAAWABQAAAACAAYAAAAWABMAAAACAAYAAAAWABIAAAACAAYAAAAWABEAAAACAAYAAAAWABAAAAACAAYAAAAWAA8AAAACAAYAAAAWAA4AAAACAAYAAAAWAA0AAAACAAYAAAAWAAwAAAACAAYAAAAWAAsAAAACAAYAAAAWAAoAAAACAAYAAAAWAAkAAAACAAUAAAAVABMAAAACAAgAAAAVABIAAAACAAgAAAAVABEAAAACAAgAAAAVABAAAAACAAgAAAAVAA8AAAACAAgAAAAVAA4AAAACAAgAAAAVAA0AAAACAAgAAAAVAAwAAAACAAgAAAAVAAsAAAACAAgAAAAVAAoAAAACAAgAAAAVAAkAAAABAAUAAAAUABMAAAACAAgAAAAUABIAAAACAAgAAAAUABEAAAACAAgAAAAUABAAAAACAAgAAAAUAA8AAAACAAgAAAAUAA4AAAACAAgAAAAUAA0AAAACAAgAAAAUAAwAAAACAAgAAAAUAAsAAAACAAgAAAAUAAoAAAACAAgAAAAUAAkAAAABAAUAAAATABMAAAACAAgAAAATABIAAAACAAgAAAATABEAAAACAAgAAAATABAAAAACAAgAAAATAA8AAAACAAgAAAATAA4AAAACAAgAAAATAA0AAAACAAgAAAATAAwAAAACAAgAAAATAAsAAAACAAgAAAATAAoAAAACAAgAAAATAAkAAAABAAUAAAASABMAAAACAAgAAAASABIAAAACAAgAAAASABEAAAACAAgAAAASABAAAAACAAgAAAASAA8AAAACAAgAAAASAA4AAAACAAgAAAASAA0AAAACAAgAAAASAAwAAAACAAgAAAASAAsAAAACAAgAAAASAAoAAAACAAgAAAASAAkAAAABAAUAAAARABMAAAACAAgAAAARABIAAAACAAgAAAARABEAAAACAAgAAAARABAAAAACAAgAAAARAA8AAAACAAgAAAARAA4AAAACAAgAAAARAA0AAAACAAgAAAARAAwAAAACAAgAAAARAAsAAAACAAgAAAARAAoAAAACAAgAAAARAAkAAAABAAUAAAAQABMAAAACAAgAAAAQABIAAAACAAgAAAAQABEAAAACAAgAAAAQABAAAAACAAgAAAAQAA8AAAACAAgAAAAQAA4AAAACAAgAAAAQAA0AAAACAAgAAAAQAAwAAAACAAgAAAAQAAsAAAACAAgAAAAQAAoAAAACAAgAAAAQAAkAAAABAAUAAAAPABMAAAACAAgAAAAPABIAAAACAAgAAAAPABEAAAACAAgAAAAPABAAAAACAAgAAAAPAA8AAAACAAgAAAAPAA4AAAACAAgAAAAPAA0AAAACAAgAAAAPAAwAAAACAAgAAAAPAAsAAAACAAgAAAAPAAoAAAACAAgAAAAPAAkAAAABAAUAAAAOABMAAAACAAgAAAAOABIAAAACAAgAAAAOABEAAAACAAgAAAAOABAAAAACAAgAAAAOAA8AAAACAAgAAAAOAA4AAAACAAgAAAAOAA0AAAACAAgAAAAOAAwAAAACAAgAAAAOAAsAAAACAAgAAAAOAAoAAAACAAgAAAAOAAkAAAABAAUAAAANABMAAAACAAgAAAANABIAAAACAAgAAAANABEAAAACAAgAAAANABAAAAACAAgAAAANAA8AAAACAAgAAAANAA4AAAACAAgAAAANAA0AAAACAAgAAAANAAwAAAACAAgAAAAMABMAAAACAAgAAAAMABIAAAACAAgAAAAMABEAAAACAAgAAAAMABAAAAACAAgAAAAMAA8AAAACAAgAAAAMAA4AAAACAAgAAAAMAA0AAAACAAgAAAAMAAwAAAACAAgAAAANABYAAAACAAEAAAAOABYAAAACAAEAAAAPABcAAAACAAEAAAAQABcAAAACAAEAAAARABcAAAACAAEAAAARABYAAAACAAEAAAAQABYAAAACAAEAAAAPABYAAAACAAEAAAAOABcAAAACAAEAAAANABcAAAACAAEAAAAJAB0AAAABAAQAAAAIAB0AAAAAAA0AAAAHAB0AAAABAAQAAAAGAB0AAAABAAQAAAAFAB0AAAABAAQAAAAEAB0AAAACAAQAAAARAB0AAAABAAQAAAAQAB0AAAABAAQAAAAPAB0AAAACAAQAAAAMAB0AAAADAAQAAAALAB0AAAABAAQAAAAKAB0AAAABAAQAAAD//xYAAAAAAAYAAAATACMAAAAAAAYAAAATACIAAAAAAAYAAAATACEAAAAAAAYAAAATACAAAAAAAAYAAAATAB8AAAAAAAYAAAATAB4AAAAAAAYAAAAMAB4AAAAKAAgAAAAMAB8AAAAKAAkAAAALAB4AAAAKAAIAAAALAB8AAAAKAAMAAAAKAB4AAAAJAAIAAAAKAB8AAAAJAAMAAAAJAB4AAAAKAAgAAAAJAB8AAAAKAAkAAAAPAB4AAAAKAAgAAAAPAB8AAAAKAAkAAAAQAB4AAAAJAAIAAAAQAB8AAAAJAAMAAAARAB4AAAAKAAIAAAARAB8AAAAKAAMAAAASAB4AAAAKAAgAAAASAB8AAAAKAAkAAAA=") +tile_map_data = PackedByteArray("AAD3/w0AAAACAAYAAAD3/w4AAAACAAYAAAD2/w4AAAACAAgAAAD2/w0AAAACAAgAAAD//wwAAAABAAcAAAD+/wwAAAABAAcAAAD9/wwAAAABAAcAAAD8/wwAAAABAAcAAAD7/wwAAAABAAcAAAD6/wwAAAABAAcAAAD5/wwAAAABAAcAAAD4/wwAAAABAAcAAAD3/wwAAAAAAAgAAAD2/wwAAAACAAgAAAD3/wsAAAACAAgAAAD4/wsAAAACAAgAAAD5/wsAAAACAAgAAAD6/wsAAAACAAgAAAD7/wsAAAACAAgAAAD8/wsAAAACAAgAAAD9/wsAAAACAAgAAAD+/wsAAAACAAgAAAAAAAwAAAABAAcAAAAAAAsAAAACAAgAAAD//wsAAAACAAgAAAD2/wsAAAACAAgAAAD1/wsAAAACAAgAAAD1/wwAAAACAAgAAAD1/w0AAAACAAgAAAD1/w4AAAACAAgAAAD0/w0AAAACAAgAAADz/w0AAAAAAAYAAADz/wwAAAAAAAYAAAD0/wwAAAACAAgAAAD0/wsAAAACAAgAAAD0/w4AAAACAAgAAADz/w4AAAAAAAYAAADz/wsAAAAAAAYAAAD2/w8AAAACAAgAAAD3/w8AAAACAAYAAAD3/xAAAAACAAYAAAD3/xEAAAACAAYAAAD2/xEAAAACAAgAAAD2/xAAAAACAAgAAAD2/xIAAAACAAgAAAD1/xIAAAACAAgAAAD1/xMAAAACAAgAAAD2/xMAAAACAAgAAAD3/xMAAAACAAYAAAD3/xIAAAACAAYAAAD1/xEAAAACAAgAAAD1/xAAAAACAAgAAAD1/w8AAAACAAgAAAD0/xAAAAACAAgAAAD0/xEAAAACAAgAAAD0/xIAAAACAAgAAAD0/xMAAAACAAgAAAD0/w8AAAACAAgAAADz/w8AAAAAAAYAAADz/xAAAAAAAAYAAADz/xEAAAAAAAYAAADz/xIAAAAAAAYAAAD1/xQAAAACAAgAAAD0/xQAAAACAAgAAAD2/xQAAAACAAgAAAD3/xQAAAAAAAkAAAD3/xUAAAABAAcAAAD2/xUAAAABAAcAAAD1/xUAAAABAAcAAADz/xUAAAAAAAcAAADz/xQAAAAAAAYAAADz/xMAAAAAAAYAAAD0/xUAAAABAAcAAAAFAA4AAAABAAcAAAAGAA4AAAABAAcAAAAHAA4AAAABAAcAAAAIAA4AAAABAAcAAAAJAA4AAAABAAgAAAAKAA4AAAACAAgAAAAKAA8AAAACAAgAAAAKABAAAAACAAgAAAAKABEAAAACAAgAAAAKABIAAAACAAgAAAAEAA4AAAACAAsAAAAEAA0AAAAAAAYAAAAFAA0AAAACAAgAAAAGAA0AAAACAAgAAAAHAA0AAAACAAgAAAAIAA0AAAACAAgAAAAJAA0AAAACAAgAAAAKAA0AAAACAAgAAAALABMAAAACAAgAAAALABIAAAACAAgAAAALABEAAAACAAgAAAALABAAAAACAAgAAAALAA8AAAACAAgAAAALAA4AAAACAAgAAAALAA0AAAACAAgAAAALAAwAAAACAAgAAAAKAAwAAAACAAgAAAAJAAwAAAACAAgAAAAIAAwAAAACAAgAAAAHAAwAAAACAAgAAAAGAAwAAAACAAgAAAAFAAwAAAACAAgAAAAEAAwAAAABAAgAAAADAAwAAAABAAcAAAAEAA8AAAAAAAQAAAAEABAAAAAAAAQAAAAFAA8AAAAJAAoAAAAFABAAAAAJAAsAAAAGAA8AAAAJAAoAAAAGABAAAAAJAAsAAAAHAA8AAAAJAAoAAAAHABAAAAAJAAsAAAAIAA8AAAAJAAoAAAAIABAAAAAJAAsAAAAJAA8AAAAAAAYAAAAJABAAAAAAAAYAAAAKABMAAAACAAgAAAAKABQAAAACAAgAAAAKABUAAAABAAcAAAAJABUAAAABAAcAAAAIABUAAAAAAAcAAAAEABUAAAABAAcAAAAFABUAAAACAAcAAAADABUAAAABAAcAAAADABQAAAABAAUAAAALABUAAAABAAcAAAALABQAAAACAAgAAAABAAwAAAABAAcAAAACAAwAAAABAAcAAAABABQAAAABAAUAAAACABQAAAABAAUAAAACABUAAAABAAcAAAABABUAAAABAAcAAAABABYAAAACAAEAAAABABcAAAACAAEAAAAEABYAAAACAAEAAAAEABcAAAACAAEAAAAFABYAAAACAAEAAAAFABcAAAACAAEAAAAIABYAAAACAAEAAAAIABcAAAACAAEAAAAJABYAAAACAAEAAAAJABcAAAACAAEAAAAKABYAAAACAAEAAAAKABcAAAACAAEAAAALABYAAAACAAEAAAALABcAAAACAAEAAAAEABEAAAAAAAQAAAAEABIAAAAAAAQAAAAEABMAAAAAAAQAAAAEABQAAAADAA4AAAAJABEAAAAAAAYAAAAJABIAAAAAAAYAAAAJABMAAAAAAAYAAAAJABQAAAABAAkAAAAIABQAAAAAAAUAAAAFABQAAAACAAUAAAAMABYAAAACAAEAAAAMABcAAAACAAEAAAAIAB8AAAAAAAQAAAAIAB4AAAAAAAQAAAABAB0AAAADAAQAAAAAAB0AAAAEAAwAAAAAABwAAAACAAYAAAD//x0AAAABAAcAAAD//xwAAAABAAkAAAASAB0AAAAFAAwAAAASABwAAAAAAAYAAAD+/x0AAAABAAcAAAD+/xwAAAABAAUAAAD9/x8AAAACAAYAAAD9/x4AAAACAAYAAAD9/x0AAAAAAAgAAAD9/xwAAAABAAUAAAD8/x8AAAACAAgAAAD8/x4AAAACAAgAAAD8/x0AAAACAAgAAAD8/xwAAAABAAUAAAD7/x8AAAACAAgAAAD7/x4AAAACAAgAAAD7/x0AAAACAAgAAAD7/xwAAAABAAUAAAD6/x8AAAACAAgAAAD6/x4AAAACAAgAAAD6/x0AAAACAAgAAAD6/xwAAAABAAUAAAD5/x8AAAACAAgAAAD5/x4AAAACAAgAAAD5/x0AAAACAAgAAAD5/xwAAAABAAkAAAD4/x8AAAACAAgAAAD4/x4AAAACAAgAAAD4/x0AAAACAAgAAAD4/xwAAAABAAUAAAD3/x8AAAACAAgAAAD3/x4AAAACAAgAAAD3/x0AAAACAAgAAAD3/xwAAAABAAUAAAD2/x8AAAACAAgAAAD2/x4AAAACAAgAAAD2/x0AAAACAAgAAAD2/xwAAAABAAUAAAD1/x8AAAACAAgAAAD1/x4AAAACAAgAAAD1/x0AAAACAAgAAAD1/xwAAAABAAUAAAD0/x8AAAACAAgAAAD0/x4AAAACAAgAAAD0/x0AAAACAAgAAAD0/xwAAAABAAUAAADz/x8AAAACAAgAAADz/x4AAAACAAgAAADz/x0AAAACAAgAAADz/xwAAAABAAUAAADy/x8AAAAAAAYAAADy/x4AAAAAAAYAAADy/x0AAAAAAAYAAADy/xwAAAAAAAUAAAAIACQAAAAAAAQAAAAIACMAAAAAAAQAAAAIACIAAAAAAAQAAAAIACEAAAAAAAQAAAAIACAAAAAAAAQAAAAIACUAAAACAA4AAAAHACUAAAABAAUAAAAGACUAAAABAAUAAAAFACUAAAABAAUAAAAEACUAAAABAAUAAAADACUAAAABAAUAAAACACUAAAABAAUAAAABACUAAAABAAUAAAAAACUAAAABAAUAAAD//yUAAAABAAUAAAD+/yUAAAABAAUAAAD9/yUAAAACAAgAAAD9/yQAAAAAAAkAAAD9/yMAAAACAAYAAAD9/yIAAAACAAYAAAD9/yEAAAACAAYAAAD9/yAAAAACAAYAAAD8/yUAAAACAAgAAAD8/yQAAAACAAgAAAD8/yMAAAACAAgAAAD8/yIAAAACAAgAAAD8/yEAAAACAAgAAAD8/yAAAAACAAgAAAD7/yUAAAACAAgAAAD7/yQAAAACAAgAAAD7/yMAAAACAAgAAAD7/yIAAAACAAgAAAD7/yEAAAACAAgAAAD7/yAAAAACAAgAAAD6/yUAAAACAAgAAAD6/yQAAAACAAgAAAD6/yMAAAACAAgAAAD6/yIAAAACAAgAAAD6/yEAAAACAAgAAAD6/yAAAAACAAgAAAD5/yUAAAACAAgAAAD5/yQAAAACAAgAAAD5/yMAAAACAAgAAAD5/yIAAAACAAgAAAD5/yEAAAACAAgAAAD5/yAAAAACAAgAAAD4/yUAAAACAAgAAAD4/yQAAAACAAgAAAD4/yMAAAACAAgAAAD4/yIAAAACAAgAAAD4/yEAAAACAAgAAAD4/yAAAAACAAgAAAD3/yUAAAACAAgAAAD3/yQAAAACAAgAAAD3/yMAAAACAAgAAAD3/yIAAAACAAgAAAD3/yEAAAACAAgAAAD3/yAAAAACAAgAAAD2/yUAAAACAAgAAAD2/yQAAAACAAgAAAD2/yMAAAACAAgAAAD2/yIAAAACAAgAAAD2/yEAAAACAAgAAAD2/yAAAAACAAgAAAD1/yUAAAACAAgAAAD1/yQAAAACAAgAAAD1/yMAAAACAAgAAAD1/yIAAAACAAgAAAD1/yEAAAACAAgAAAD1/yAAAAACAAgAAAD0/yUAAAACAAgAAAD0/yQAAAACAAgAAAD0/yMAAAACAAgAAAD0/yIAAAACAAgAAAD0/yEAAAACAAgAAAD0/yAAAAACAAgAAADz/yUAAAACAAgAAADz/yQAAAACAAgAAADz/yMAAAACAAgAAADz/yIAAAACAAgAAADz/yEAAAACAAgAAADz/yAAAAACAAgAAADy/yUAAAAAAAYAAADy/yQAAAAAAAYAAADy/yMAAAAAAAYAAADy/yIAAAAAAAYAAADy/yEAAAAAAAYAAADy/yAAAAAAAAYAAAD9/ycAAAABAAcAAAD9/yYAAAACAAgAAAD8/ycAAAABAAcAAAD8/yYAAAACAAgAAAD7/ycAAAABAAcAAAD7/yYAAAACAAgAAAD6/ycAAAABAAcAAAD6/yYAAAACAAgAAAD5/ycAAAABAAcAAAD5/yYAAAACAAgAAAD4/ycAAAABAAcAAAD4/yYAAAACAAgAAAD3/ycAAAABAAcAAAD3/yYAAAACAAgAAAD2/ycAAAABAAcAAAD2/yYAAAACAAgAAAD1/ycAAAABAAcAAAD1/yYAAAACAAgAAAD0/ycAAAABAAcAAAD0/yYAAAACAAgAAADz/ycAAAABAAcAAADz/yYAAAACAAgAAAAMACcAAAABAAcAAAAMACYAAAACAAgAAAALACcAAAABAAcAAAALACYAAAACAAgAAAAKACcAAAABAAcAAAAKACYAAAACAAgAAAAJACcAAAABAAcAAAAJACYAAAACAAgAAAAIACcAAAABAAcAAAAIACYAAAACAAgAAAAHACcAAAABAAcAAAAHACYAAAACAAgAAAAGACcAAAABAAcAAAAGACYAAAACAAgAAAAFACcAAAABAAcAAAAFACYAAAACAAgAAAAEACcAAAABAAcAAAAEACYAAAACAAgAAAADACcAAAABAAcAAAADACYAAAACAAgAAAACACcAAAABAAcAAAACACYAAAACAAgAAAABACcAAAABAAcAAAABACYAAAACAAgAAAAAACcAAAABAAcAAAAAACYAAAACAAgAAAD//ycAAAABAAcAAAD//yYAAAACAAgAAAD+/ycAAAABAAcAAAD+/yYAAAACAAgAAADy/ycAAAAAAAcAAADy/yYAAAAAAAYAAAATACcAAAABAAcAAAATACYAAAACAAgAAAATACUAAAABAAkAAAATACQAAAAAAAYAAAASACcAAAABAAcAAAASACYAAAACAAgAAAASACUAAAABAAUAAAARACcAAAABAAcAAAARACYAAAACAAgAAAARACUAAAABAAUAAAAQACcAAAABAAcAAAAQACYAAAACAAgAAAAQACUAAAABAAUAAAAPACcAAAABAAcAAAAPACYAAAACAAgAAAAPACUAAAABAAUAAAAOACcAAAABAAcAAAAOACYAAAACAAgAAAAOACUAAAABAAUAAAANACcAAAABAAcAAAANACYAAAACAAgAAAANACUAAAABAAUAAAAMACUAAAABAAUAAAALACUAAAABAAUAAAAKACUAAAABAAUAAAAJACUAAAABAAUAAAAAABUAAAAAAAgAAAAAABQAAAABAAUAAAD//xUAAAAAAAYAAAD//xQAAAACAAwAAAD7/xUAAAABAAcAAAD7/xQAAAABAAUAAAD6/xUAAAABAAcAAAD6/xQAAAABAAUAAAD5/xUAAAAAAAgAAAD5/xQAAAABAAUAAAD4/xUAAAABAAcAAAD4/xQAAAABAAUAAAD8/xUAAAACAAcAAAD8/xQAAAACAAUAAAAAABYAAAACAAcAAADz/xYAAAAJAAAAAADz/xcAAAAJAAAAAAD0/xYAAAAJAAAAAAD0/xcAAAAJAAAAAAD1/xYAAAAJAAAAAAD1/xcAAAAJAAAAAAD2/xYAAAAJAAAAAAD2/xcAAAAJAAAAAAD3/xYAAAAJAAAAAAD3/xcAAAAJAAAAAAD4/xYAAAAJAAAAAAD4/xcAAAAJAAAAAAD5/xYAAAAAAAQAAAD5/xcAAAAAAAQAAAD6/xYAAAAJAAAAAAD6/xcAAAAJAAAAAAD7/xYAAAAJAAAAAAD7/xcAAAAJAAAAAAD8/xYAAAAJAAAAAAD8/xcAAAAJAAAAAAALAAsAAAACAAgAAAALAAoAAAACAAgAAAALAAkAAAABAAUAAAAKAAsAAAACAAgAAAAKAAoAAAACAAgAAAAKAAkAAAABAAUAAAAJAAsAAAACAAgAAAAJAAoAAAACAAgAAAAJAAkAAAABAAUAAAAIAAsAAAACAAgAAAAIAAoAAAACAAgAAAAIAAkAAAABAAUAAAAHAAsAAAACAAgAAAAHAAoAAAACAAgAAAAHAAkAAAABAAUAAAAGAAsAAAACAAgAAAAGAAoAAAACAAgAAAAGAAkAAAABAAUAAAAFAAsAAAACAAgAAAAFAAoAAAACAAgAAAAFAAkAAAABAAUAAAAEAAsAAAACAAgAAAAEAAoAAAACAAgAAAAEAAkAAAABAAUAAAADAAsAAAACAAgAAAADAAoAAAACAAgAAAADAAkAAAABAAUAAAACAAsAAAACAAgAAAACAAoAAAACAAgAAAACAAkAAAABAAUAAAABAAsAAAACAAgAAAABAAoAAAACAAgAAAABAAkAAAABAAUAAAAAAAoAAAACAAgAAAAAAAkAAAABAAUAAAD//woAAAACAAgAAAD//wkAAAABAAUAAAD+/woAAAACAAgAAAD+/wkAAAABAAUAAAD9/woAAAACAAgAAAD9/wkAAAABAAUAAAD8/woAAAACAAgAAAD8/wkAAAABAAUAAAD7/woAAAACAAgAAAD7/wkAAAABAAUAAAD6/woAAAACAAgAAAD6/wkAAAABAAUAAAD5/woAAAACAAgAAAD5/wkAAAABAAUAAAD4/woAAAACAAgAAAD4/wkAAAABAAUAAAD3/woAAAACAAgAAAD3/wkAAAABAAUAAAD2/woAAAACAAgAAAD2/wkAAAABAAUAAAD1/woAAAACAAgAAAD1/wkAAAABAAUAAAD0/woAAAACAAgAAAD0/wkAAAABAAUAAADz/woAAAAAAAYAAADz/wkAAAAAAAUAAAANAAsAAAACAAgAAAANAAoAAAACAAgAAAANAAkAAAABAAUAAAAMAAsAAAACAAgAAAAMAAoAAAACAAgAAAAMAAkAAAABAAUAAAD4/w0AAAAKAAAAAAD4/w4AAAAKAAEAAAD5/w0AAAAKAAAAAAD5/w4AAAAKAAEAAAD6/w0AAAAKAAAAAAD6/w4AAAAKAAEAAAD7/w0AAAAKAAAAAAD7/w4AAAAKAAEAAAD8/w0AAAAKAAAAAAD8/w4AAAAKAAEAAAD9/w0AAAAKAAAAAAD9/w4AAAAKAAEAAAD+/w0AAAAKAAAAAAD+/w4AAAAKAAEAAAD//w0AAAAAAAQAAAD//w4AAAAAAAQAAAAAAA0AAAAKAAAAAAAAAA4AAAAKAAEAAAABAA0AAAAKAAAAAAABAA4AAAAKAAEAAAACAA0AAAAKAAAAAAACAA4AAAAKAAEAAAADAA0AAAAKAAAAAAADAA4AAAAKAAEAAAAEAB4AAAAKAAgAAAAEAB8AAAAKAAkAAAAFAB4AAAAJAAIAAAAFAB8AAAAJAAMAAAAGAB4AAAAKAAIAAAAGAB8AAAAKAAMAAAAHAB4AAAAKAAgAAAAHAB8AAAAKAAkAAAD+/x4AAAAKAAgAAAD+/x8AAAAKAAkAAAD//x4AAAAJAAIAAAD//x8AAAAJAAMAAAAAAB4AAAAKAAIAAAAAAB8AAAAKAAMAAAABAB4AAAAKAAgAAAABAB8AAAAKAAkAAAAAABoAAAACAAUAAAAAABsAAAACAAYAAAD//xsAAAAAAAYAAAD//xoAAAAAAAUAAAASABsAAAAAAAYAAAASABoAAAAAAAYAAAASABkAAAAAAAYAAAASABgAAAAAAAYAAAASABcAAAAAAAYAAAASABYAAAAAAAYAAAASABUAAAABAAgAAAARABUAAAABAAcAAAAQABUAAAABAAcAAAAPABUAAAABAAcAAAAOABUAAAABAAcAAAANABUAAAABAAcAAAAMABUAAAABAAcAAAAMABQAAAACAAgAAAANABQAAAACAAgAAAAOABQAAAACAAgAAAAPABQAAAACAAgAAAAQABQAAAACAAgAAAARABQAAAACAAgAAAASABQAAAACAAgAAAATABQAAAACAAgAAAATABUAAAACAAgAAAATABYAAAACAAgAAAATABcAAAACAAgAAAATABgAAAACAAgAAAATABkAAAACAAgAAAATABoAAAACAAgAAAATABsAAAACAAgAAAATABwAAAACAAgAAAATAB0AAAABAAgAAAAUACMAAAACAAgAAAAUACQAAAACAAgAAAAUACUAAAACAAgAAAAUACYAAAACAAgAAAAUACcAAAABAAcAAAAVACUAAAACAAgAAAAVACQAAAACAAgAAAAVACMAAAACAAgAAAAUACIAAAACAAgAAAAUACEAAAACAAgAAAAUACAAAAACAAgAAAAUAB8AAAACAAgAAAAUAB4AAAACAAgAAAAUAB0AAAACAAgAAAAUABwAAAACAAgAAAAUABsAAAACAAgAAAAUABoAAAACAAgAAAAUABkAAAACAAgAAAAUABgAAAACAAgAAAAUABcAAAACAAgAAAAUABYAAAACAAgAAAAUABUAAAACAAgAAAAUABQAAAACAAgAAAAVABQAAAACAAgAAAAVABUAAAACAAgAAAAVABYAAAACAAgAAAAVABcAAAACAAgAAAAVABgAAAACAAgAAAAVABkAAAACAAgAAAAVABoAAAACAAgAAAAVABsAAAACAAgAAAAVABwAAAACAAgAAAAVAB4AAAACAAgAAAAVAB0AAAACAAgAAAAVAB8AAAACAAgAAAAVACEAAAACAAgAAAAVACAAAAACAAgAAAAVACIAAAACAAgAAAAWACUAAAACAAYAAAAWACYAAAACAAYAAAAWACcAAAACAAcAAAAVACcAAAABAAcAAAAVACYAAAACAAgAAAAWACQAAAACAAYAAAAWACMAAAACAAYAAAAWACIAAAACAAYAAAAWACEAAAACAAYAAAAWACAAAAACAAYAAAAWAB8AAAACAAYAAAAWAB4AAAACAAYAAAAWAB0AAAACAAYAAAAWABwAAAACAAYAAAAWABsAAAACAAYAAAAWABoAAAACAAYAAAAWABkAAAACAAYAAAAWABgAAAACAAYAAAAWABcAAAACAAYAAAAWABYAAAACAAYAAAAWABUAAAACAAYAAAAWABQAAAACAAYAAAAWABMAAAACAAYAAAAWABIAAAACAAYAAAAWABEAAAACAAYAAAAWABAAAAACAAYAAAAWAA8AAAACAAYAAAAWAA4AAAACAAYAAAAWAA0AAAACAAYAAAAWAAwAAAACAAYAAAAWAAsAAAACAAYAAAAWAAoAAAACAAYAAAAWAAkAAAACAAUAAAAVABMAAAACAAgAAAAVABIAAAACAAgAAAAVABEAAAACAAgAAAAVABAAAAACAAgAAAAVAA8AAAACAAgAAAAVAA4AAAACAAgAAAAVAA0AAAACAAgAAAAVAAwAAAACAAgAAAAVAAsAAAACAAgAAAAVAAoAAAACAAgAAAAVAAkAAAABAAUAAAAUABMAAAACAAgAAAAUABIAAAACAAgAAAAUABEAAAACAAgAAAAUABAAAAACAAgAAAAUAA8AAAACAAgAAAAUAA4AAAACAAgAAAAUAA0AAAACAAgAAAAUAAwAAAACAAgAAAAUAAsAAAACAAgAAAAUAAoAAAACAAgAAAAUAAkAAAABAAUAAAATABMAAAACAAgAAAATABIAAAACAAgAAAATABEAAAACAAgAAAATABAAAAACAAgAAAATAA8AAAACAAgAAAATAA4AAAACAAgAAAATAA0AAAACAAgAAAATAAwAAAACAAgAAAATAAsAAAACAAgAAAATAAoAAAACAAgAAAATAAkAAAABAAUAAAASABMAAAACAAgAAAASABIAAAACAAgAAAASABEAAAACAAgAAAASABAAAAACAAgAAAASAA8AAAACAAgAAAASAA4AAAACAAgAAAASAA0AAAACAAgAAAASAAwAAAACAAgAAAASAAsAAAACAAgAAAASAAoAAAACAAgAAAASAAkAAAABAAUAAAARABMAAAACAAgAAAARABIAAAACAAgAAAARABEAAAACAAgAAAARABAAAAACAAgAAAARAA8AAAACAAgAAAARAA4AAAACAAgAAAARAA0AAAACAAgAAAARAAwAAAACAAgAAAARAAsAAAACAAgAAAARAAoAAAACAAgAAAARAAkAAAABAAUAAAAQABMAAAACAAgAAAAQABIAAAACAAgAAAAQABEAAAACAAgAAAAQABAAAAACAAgAAAAQAA8AAAACAAgAAAAQAA4AAAACAAgAAAAQAA0AAAACAAgAAAAQAAwAAAACAAgAAAAQAAsAAAACAAgAAAAQAAoAAAACAAgAAAAQAAkAAAABAAUAAAAPABMAAAACAAgAAAAPABIAAAACAAgAAAAPABEAAAACAAgAAAAPABAAAAACAAgAAAAPAA8AAAACAAgAAAAPAA4AAAACAAgAAAAPAA0AAAACAAgAAAAPAAwAAAACAAgAAAAPAAsAAAACAAgAAAAPAAoAAAACAAgAAAAPAAkAAAABAAUAAAAOABMAAAACAAgAAAAOABIAAAACAAgAAAAOABEAAAACAAgAAAAOABAAAAACAAgAAAAOAA8AAAACAAgAAAAOAA4AAAACAAgAAAAOAA0AAAACAAgAAAAOAAwAAAACAAgAAAAOAAsAAAACAAgAAAAOAAoAAAACAAgAAAAOAAkAAAABAAUAAAANABMAAAACAAgAAAANABIAAAACAAgAAAANABEAAAACAAgAAAANABAAAAACAAgAAAANAA8AAAACAAgAAAANAA4AAAACAAgAAAANAA0AAAACAAgAAAANAAwAAAACAAgAAAAMABMAAAACAAgAAAAMABIAAAACAAgAAAAMABEAAAACAAgAAAAMABAAAAACAAgAAAAMAA8AAAACAAgAAAAMAA4AAAACAAgAAAAMAA0AAAACAAgAAAAMAAwAAAACAAgAAAANABYAAAACAAEAAAAOABYAAAACAAEAAAAPABcAAAACAAEAAAAQABcAAAACAAEAAAARABcAAAACAAEAAAARABYAAAACAAEAAAAQABYAAAACAAEAAAAPABYAAAACAAEAAAAOABcAAAACAAEAAAANABcAAAACAAEAAAAJAB0AAAABAAQAAAAIAB0AAAAAAA0AAAAHAB0AAAABAAQAAAAGAB0AAAABAAQAAAAFAB0AAAABAAQAAAAEAB0AAAACAAQAAAARAB0AAAABAAQAAAAQAB0AAAABAAQAAAAPAB0AAAACAAQAAAAMAB0AAAADAAQAAAALAB0AAAABAAQAAAAKAB0AAAABAAQAAAD//xYAAAAAAAcAAAATACMAAAAAAAYAAAATACIAAAAAAAYAAAATACEAAAAAAAYAAAATACAAAAAAAAYAAAATAB8AAAAAAAYAAAATAB4AAAAAAAYAAAAMAB4AAAAKAAgAAAAMAB8AAAAKAAkAAAALAB4AAAAKAAIAAAALAB8AAAAKAAMAAAAKAB4AAAAJAAIAAAAKAB8AAAAJAAMAAAAJAB4AAAAKAAgAAAAJAB8AAAAKAAkAAAAPAB4AAAAKAAgAAAAPAB8AAAAKAAkAAAAQAB4AAAAJAAIAAAAQAB8AAAAJAAMAAAARAB4AAAAKAAIAAAARAB8AAAAKAAMAAAASAB4AAAAKAAgAAAASAB8AAAAKAAkAAAD//xcAAAAKAAgAAAD//xgAAAAKAAkAAAAAABcAAAAKAAgAAAAAABgAAAAKAAkAAAD//xMAAAAAAAQAAAD//xIAAAAAAAQAAAD//xEAAAAAAAQAAAD//xAAAAAAAAQAAAD//w8AAAAAAAQAAAD5/xsAAAAAAAQAAAD5/xoAAAAAAAQAAAD5/xkAAAAAAAQAAAD5/xgAAAAAAAQAAAA=") tile_set = ExtResource("2_m7mag") metadata/_edit_lock_ = true @@ -83,8 +85,10 @@ State = 1 position = Vector2(47, 496) State = 1 -[node name="Rumia" type="Node2D" parent="Tilemaps/Actors" groups=["Interactable"]] +[node name="Rumia" type="Area2D" parent="Tilemaps/Actors" groups=["Interactable"]] position = Vector2(216, 386) +collision_layer = 68 +collision_mask = 0 script = ExtResource("6_tf4ep") Events = Array[Object]([SubResource("Resource_0oces")]) metadata/_edit_group_ = true @@ -92,8 +96,8 @@ metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="Tilemaps/Actors/Rumia"] texture = SubResource("AtlasTexture_cr26l") -[node name="ControlPad" parent="Tilemaps/Actors/Rumia" node_paths=PackedStringArray("Target") instance=ExtResource("9_700kw")] -Target = NodePath("..") +[node name="CollisionShape2D" type="CollisionShape2D" parent="Tilemaps/Actors/Rumia"] +shape = SubResource("CircleShape2D_cr26l") [node name="Mainframe2" parent="Tilemaps/Actors" instance=ExtResource("17_u3bx7")] position = Vector2(275, 511) diff --git a/Scripts/Activables/BlackCover.cs b/Scripts/Activables/BlackCover.cs index 93cc08fe..dd113420 100644 --- a/Scripts/Activables/BlackCover.cs +++ b/Scripts/Activables/BlackCover.cs @@ -16,7 +16,7 @@ public partial class BlackCover : Sprite2D, IActivable UpdateSprite(); } - public void Activate(ActivationType activationType = ActivationType.Toggle) + public bool Activate(ActivationType activationType = ActivationType.Toggle) { switch (activationType) { @@ -36,6 +36,7 @@ public partial class BlackCover : Sprite2D, IActivable break; } UpdateSprite(); + return true; } private void UpdateSprite() diff --git a/Scripts/Activables/BulletEmitter.cs b/Scripts/Activables/BulletEmitter.cs index 1df35a11..2d5a7104 100644 --- a/Scripts/Activables/BulletEmitter.cs +++ b/Scripts/Activables/BulletEmitter.cs @@ -55,7 +55,7 @@ public partial class BulletEmitter : Node2D, IActivable _bulletSpawner.SpawnBullet(BulletResource.MakeBullet(this.GlobalPosition, Count, Spread, EmissionRotation)); } - public void Activate(ActivationType activationType = ActivationType.Toggle) + public bool Activate(ActivationType activationType = ActivationType.Toggle) { switch (activationType) { @@ -77,5 +77,7 @@ public partial class BulletEmitter : Node2D, IActivable case ActivationType.Destroy: break; } + + return true; } } \ No newline at end of file diff --git a/Scripts/Activables/DialogueStarter.cs b/Scripts/Activables/DialogueStarter.cs index 2baaa9bc..df98cf05 100644 --- a/Scripts/Activables/DialogueStarter.cs +++ b/Scripts/Activables/DialogueStarter.cs @@ -35,7 +35,7 @@ public partial class DialogueStarter : ChainActivable DialogueEndAction(); } - public override void Activate(ActivationType activationType = ActivationType.Toggle) + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { _dialogic.Connect("timeline_ended", Callable.From(OnTimelineEnded)); @@ -43,6 +43,7 @@ public partial class DialogueStarter : ChainActivable ((Node)dialogicNode).ProcessMode = ProcessModeEnum.Always; _gameManager.ChangeState(GameState.Dialogue); + return true; // Script dialogic = ResourceLoader.Load("res://addons/dialogic/Other/DialogicClass.gd") as Script; // var dialog = (Node) dialogic.Call("start","timeline"); // AddChild(dialog); diff --git a/Scripts/Activables/HealthStation.cs b/Scripts/Activables/HealthStation.cs index d8ae114d..739c4a1a 100644 --- a/Scripts/Activables/HealthStation.cs +++ b/Scripts/Activables/HealthStation.cs @@ -66,7 +66,7 @@ public partial class HealthStation : Activable _healingTimer = 0; } - public override void Activate(ActivationType activationType = ActivationType.Toggle) + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { switch (activationType) { @@ -90,6 +90,8 @@ public partial class HealthStation : Activable // Destroys break; } + + return true; } private void _on_area_entered(Area2D area) diff --git a/Scripts/Activables/PlayerMover.cs b/Scripts/Activables/PlayerMover.cs index b0415a00..31f9ff23 100644 --- a/Scripts/Activables/PlayerMover.cs +++ b/Scripts/Activables/PlayerMover.cs @@ -34,11 +34,13 @@ public partial class PlayerMover : ChainActivable _gameManager = this.GetGameManager(); } - public override void Activate(ActivationType activationType = ActivationType.Toggle) + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { - if (_gameManager.Player is null) return; + if (_gameManager.Player is null) return false; _ = MovePlayer(); + + return true; } private async Task MovePlayer() diff --git a/Scripts/Activables/ScriptableBase.cs b/Scripts/Activables/ScriptableBase.cs index 354eaa4e..8fdbb237 100644 --- a/Scripts/Activables/ScriptableBase.cs +++ b/Scripts/Activables/ScriptableBase.cs @@ -1,4 +1,5 @@ using System; +using Cirno.Scripts.Interactables; using Cirno.Scripts.Resources.Events; using Godot; using Godot.Collections; @@ -63,8 +64,15 @@ public partial class ScriptableBase : Node2D, IActivable // } } - public void Activate(ActivationType activationType = ActivationType.Toggle) + public bool Activate(ActivationType activationType = ActivationType.Toggle) { Start(); + + return true; + } + + public bool CanActivate() + { + return true; } } \ No newline at end of file diff --git a/Scripts/Activables/Teleporter.cs b/Scripts/Activables/Teleporter.cs index 0a2dcfd6..9083cf8e 100644 --- a/Scripts/Activables/Teleporter.cs +++ b/Scripts/Activables/Teleporter.cs @@ -76,7 +76,7 @@ public partial class Teleporter : Activable } } - public override void Activate(ActivationType activationType = ActivationType.Toggle) + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { switch (activationType) { @@ -100,6 +100,8 @@ public partial class Teleporter : Activable // Destroys break; } + + return true; } public void PrepareForReceiving() diff --git a/Scripts/Actors/ActorSpawner.cs b/Scripts/Actors/ActorSpawner.cs index e7607375..559bea68 100644 --- a/Scripts/Actors/ActorSpawner.cs +++ b/Scripts/Actors/ActorSpawner.cs @@ -17,7 +17,7 @@ public partial class ActorSpawner : Node2D, IActivable SpawnedActor = this.CreateSibling(ActorPrefab); } - public void Activate(ActivationType activationType = ActivationType.Toggle) + public bool Activate(ActivationType activationType = ActivationType.Toggle) { if (!WaitForActorDeath) { @@ -27,5 +27,7 @@ public partial class ActorSpawner : Node2D, IActivable { Spawn(); } + + return true; } } \ No newline at end of file diff --git a/Scripts/Actors/Boss.cs b/Scripts/Actors/Boss.cs index 982b62d7..5bc6eb3a 100644 --- a/Scripts/Actors/Boss.cs +++ b/Scripts/Actors/Boss.cs @@ -140,7 +140,7 @@ public partial class Boss : Enemy, IActivable _currentHealth -= amount; } - public void Activate(ActivationType activationType = ActivationType.Toggle) + public bool Activate(ActivationType activationType = ActivationType.Toggle) { _started = true; if (_bossHud is not null) @@ -149,6 +149,8 @@ public partial class Boss : Enemy, IActivable } _gameManager.CameraTargetObject(_cameraMarker); StartPhase(CurrentPhase); + + return true; } private async Task Switchphase(BossPhase phase) diff --git a/Scripts/Chest.cs b/Scripts/Chest.cs index cf8fb9d5..4d3a4b9a 100644 --- a/Scripts/Chest.cs +++ b/Scripts/Chest.cs @@ -13,7 +13,7 @@ public partial class Chest : Interactable private AnimatedSprite2D _sprite; - public override bool Activate() + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { GD.Print("Attempting to open chest"); if (State != ChestState.Closed) return false; diff --git a/Scripts/Components/Actors/ActivationProvider.cs b/Scripts/Components/Actors/ActivationProvider.cs index 69009932..afbbdd0b 100644 --- a/Scripts/Components/Actors/ActivationProvider.cs +++ b/Scripts/Components/Actors/ActivationProvider.cs @@ -1,4 +1,5 @@ using Cirno.Scripts.Components.FSM; +using Cirno.Scripts.Interactables; using Godot; namespace Cirno.Scripts.Components.Actors; @@ -17,11 +18,11 @@ public partial class ActivationProvider : Area2D [Export] private AudioStreamPlayer2D _errorSound; - [Signal] - public delegate void InteractableAreaEnteredEventHandler(Interactable interactable); + //[Signal] + //public delegate void InteractableAreaEnteredEventHandler(Interactable interactable); - [Signal] - public delegate void InteractableAreaExitedEventHandler(Interactable interactable); + //[Signal] + //public delegate void InteractableAreaExitedEventHandler(Interactable interactable); public void Init(CharacterBody2D actor) { @@ -80,9 +81,9 @@ public partial class ActivationProvider : Area2D private void _on_interaction_controller_area_entered(Area2D area) { if (!Enabled) return; - if (area.IsInGroup("Interactable") && area is Interactable interactable && interactable.CanActivate()) + if (area.IsInGroup("Interactable") && area is IInteractable interactable && interactable.CanActivate()) { - EmitSignal(nameof(InteractableAreaEntered), interactable); + //EmitSignal(nameof(InteractableAreaEntered), interactable); if (_selector == null) return; @@ -93,9 +94,9 @@ public partial class ActivationProvider : Area2D private void _on_interaction_controller_area_exited(Area2D area) { if (!Enabled) return; - if (area.IsInGroup("Interactable") && area is Interactable interactable) + if (area.IsInGroup("Interactable") && area is IInteractable interactable) { - EmitSignal(nameof(InteractableAreaExited), interactable); + //EmitSignal(nameof(InteractableAreaExited), interactable); if (_selector == null) return; _selector.RemoveInteractable(interactable); diff --git a/Scripts/Components/FSM/Elevator/ElevatorProxy.cs b/Scripts/Components/FSM/Elevator/ElevatorProxy.cs index e5c24e11..4fa832f8 100644 --- a/Scripts/Components/FSM/Elevator/ElevatorProxy.cs +++ b/Scripts/Components/FSM/Elevator/ElevatorProxy.cs @@ -30,9 +30,10 @@ public partial class ElevatorProxy : Area2D, IActivable public InteractionController CachedPlayer { get; private set; } - public void Activate(ActivationType activationType = ActivationType.Toggle) + public bool Activate(ActivationType activationType = ActivationType.Toggle) { EmitSignal(SignalName.Activated, (int)activationType); + return true; } private void _on_area_entered(Area2D area) diff --git a/Scripts/Door.cs b/Scripts/Door.cs index 252f93d9..180a563f 100644 --- a/Scripts/Door.cs +++ b/Scripts/Door.cs @@ -79,7 +79,7 @@ public partial class Door : Activable //_solidShape.Disabled = state; } - public override void Activate(ActivationType activationType = ActivationType.Toggle) + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { switch (activationType) { @@ -108,6 +108,8 @@ public partial class Door : Activable ToggleDoor(); break; } + + return true; } private void ToggleDoor() diff --git a/Scripts/IActivable.cs b/Scripts/IActivable.cs index b181dd22..043c8d8c 100644 --- a/Scripts/IActivable.cs +++ b/Scripts/IActivable.cs @@ -2,7 +2,7 @@ public interface IActivable { - void Activate(ActivationType activationType = ActivationType.Toggle); + bool Activate(ActivationType activationType = ActivationType.Toggle); } public enum ActivationType diff --git a/Scripts/Interactables/AlarmBox.cs b/Scripts/Interactables/AlarmBox.cs index 8d4263e5..2589a5f1 100644 --- a/Scripts/Interactables/AlarmBox.cs +++ b/Scripts/Interactables/AlarmBox.cs @@ -33,7 +33,7 @@ public partial class AlarmBox : Interactable _sprite.Play("alarmed"); } - public override bool Activate() + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { if (MeetsRequirements() && _alarmManager.IsAlarmOn) { diff --git a/Scripts/Interactables/Computer.cs b/Scripts/Interactables/Computer.cs index 9c53a035..e44d7b35 100644 --- a/Scripts/Interactables/Computer.cs +++ b/Scripts/Interactables/Computer.cs @@ -1,10 +1,11 @@ using Godot; using System; +using Cirno.Scripts; public partial class Computer : Interactable { [Export] public Activable Target { get; set; } - public override bool Activate() + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { if (MeetsRequirements()) { diff --git a/Scripts/Interactables/IInteractable.cs b/Scripts/Interactables/IInteractable.cs index d46ce64b..4cacddae 100644 --- a/Scripts/Interactables/IInteractable.cs +++ b/Scripts/Interactables/IInteractable.cs @@ -1,8 +1,12 @@ -namespace Cirno.Scripts.Interactables; +using Godot; + +namespace Cirno.Scripts.Interactables; public interface IInteractable { - public bool Activate(); + public bool Activate(ActivationType activationType = ActivationType.Toggle); public bool CanActivate(); + + public Vector2 GetPosition(); //protected bool MeetsRequirements(); } \ No newline at end of file diff --git a/Scripts/Interactables/ItemPickup.cs b/Scripts/Interactables/ItemPickup.cs index 7c4fc232..3bcc5667 100644 --- a/Scripts/Interactables/ItemPickup.cs +++ b/Scripts/Interactables/ItemPickup.cs @@ -8,7 +8,7 @@ public partial class ItemPickup : Interactable { [Export] public Array LootTable = new Array(); - public override bool Activate() + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { GD.Print("Attempting to Pickup Item"); diff --git a/Scripts/Interactables/Switch.cs b/Scripts/Interactables/Switch.cs index 74583ae1..3331b68e 100644 --- a/Scripts/Interactables/Switch.cs +++ b/Scripts/Interactables/Switch.cs @@ -7,7 +7,7 @@ namespace Cirno.Scripts.Interactables; public partial class Switch : Interactable { [Export] public Node2D Target { get; set; } - [Export] public Array Targets { get; private set; } = new Array(); + [Export] public Array Targets { get; private set; } = []; [Export] public ActivationType ActivationType { get; set; } = ActivationType.Toggle; private AudioStreamPlayer2D _activationSound; @@ -19,7 +19,7 @@ public partial class Switch : Interactable _activationSound = GetNodeOrNull(_activationSoundName); } - public override bool Activate() + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { if (!MeetsRequirements()) return false; _activationSound?.Play(); diff --git a/Scripts/Interactables/Valve.cs b/Scripts/Interactables/Valve.cs index e51d0010..3edf0f47 100644 --- a/Scripts/Interactables/Valve.cs +++ b/Scripts/Interactables/Valve.cs @@ -19,7 +19,7 @@ public partial class Valve : Interactable SetState(_activationState); } - public override bool Activate() + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { if (MeetsRequirements() && Target is IActivable activatable) { diff --git a/Scripts/Pickupper.cs b/Scripts/Pickupper.cs index 904da4d6..8dc52e0e 100644 --- a/Scripts/Pickupper.cs +++ b/Scripts/Pickupper.cs @@ -16,7 +16,7 @@ public partial class Pickupper : Activable _inventoryManager = GetNode("/root/GameScene/InventoryManager"); } - public override void Activate(ActivationType activationType = ActivationType.Toggle) + public override bool Activate(ActivationType activationType = ActivationType.Toggle) { foreach (var item in LootTable) { @@ -25,8 +25,8 @@ public partial class Pickupper : Activable //inventoryManager.AddRedKeycard(); //GetParent().QueueFree(); // TODO: send a signal instead - - - + + + return true; } } \ No newline at end of file diff --git a/Scripts/Selector.cs b/Scripts/Selector.cs index 428b9816..4d7714b7 100644 --- a/Scripts/Selector.cs +++ b/Scripts/Selector.cs @@ -1,19 +1,20 @@ using Godot; using System; using System.Collections.Generic; +using Cirno.Scripts.Interactables; public partial class Selector : Node2D { private Interactable _lastInteractable; - private List _interactables = new List(); + private List _interactables = []; private int _selectedInteractable; - [Signal] - public delegate void SelectedItemInteractableChangedEventHandler(Interactable interactable); + //[Signal] + //public delegate void SelectedItemInteractableChangedEventHandler(IInteractable interactable); - public Interactable SelectedInteractable + public IInteractable SelectedInteractable { get => _interactables.Count > 0 @@ -79,12 +80,12 @@ public partial class Selector : Node2D UpdatePosition(); } - private void NotifyChanged(Interactable interactable) + private void NotifyChanged(IInteractable interactable) { - EmitSignal(nameof(SelectedItemInteractableChanged), interactable); + //EmitSignal(nameof(SelectedItemInteractableChanged), interactable); } - public void AddInteractable(Interactable interactable) + public void AddInteractable(IInteractable interactable) { if (!_interactables.Contains(interactable)) { _interactables.Add(interactable); @@ -98,7 +99,7 @@ public partial class Selector : Node2D UpdatePosition(); } - public void RemoveInteractable(Interactable interactable) + public void RemoveInteractable(IInteractable interactable) { if (_interactables.Contains(interactable)) { @@ -117,7 +118,7 @@ public partial class Selector : Node2D { if (SelectedInteractable != null) { - this.Position = SelectedInteractable.Position; + this.Position = SelectedInteractable.GetPosition(); this.Visible = true; } else diff --git a/Tilesets/factory.aseprite b/Tilesets/factory.aseprite index b887e553..c8ff97fc 100644 --- a/Tilesets/factory.aseprite +++ b/Tilesets/factory.aseprite @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78da98b23029edcfc21f07b034c6cf57100113e2d46d374f0a53489aad61179d -size 8485 +oid sha256:bcfd07078bc4896d9519e85e39f43a07b0bdbcfb4fbd0edd3c4d2f3865886f66 +size 8600