diff --git a/Babushka.sln.DotSettings.user b/Babushka.sln.DotSettings.user index 349fb41..2e4589b 100644 --- a/Babushka.sln.DotSettings.user +++ b/Babushka.sln.DotSettings.user @@ -8,6 +8,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded diff --git a/project.godot b/project.godot index baff4e1..c7180b7 100644 --- a/project.godot +++ b/project.godot @@ -144,6 +144,7 @@ directories/tres_directory={ "default_bus_layout": "res://audio/default_bus_layout.tres", "default_stylebox": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/default_stylebox.tres", "default_vn_style": "res://addons/dialogic/Modules/DefaultLayoutParts/Style_VN_Default/default_vn_style.tres", +"events/test": "res://resources/events/test.tres", "farming_equipment_glossary": "res://dialog/farming_equipment_glossary.tres", "hoe": "res://resources/items/hoe.tres", "inventory_interactable_outline": "res://art/materials/inventory_interactable_outline.tres", diff --git a/resources/events/test.tres b/resources/events/test.tres new file mode 100644 index 0000000..a01c70d --- /dev/null +++ b/resources/events/test.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="EventResource" load_steps=2 format=3 uid="uid://beed6ikqf46vk"] + +[ext_resource type="Script" uid="uid://ci3t5mvnopntg" path="res://scripts/CSharp/Events/EventResource.cs" id="1_6u8ge"] + +[resource] +resource_name = "kafjhkj" +script = ExtResource("1_6u8ge") +Name = "kafjhkj" +_showLog = true +metadata/_custom_type_script = "uid://ci3t5mvnopntg" diff --git a/scenes/Babushka_scene_indoor_vesnas_room.tscn b/scenes/Babushka_scene_indoor_vesnas_room.tscn index d5097bf..c2b4f8d 100644 --- a/scenes/Babushka_scene_indoor_vesnas_room.tscn +++ b/scenes/Babushka_scene_indoor_vesnas_room.tscn @@ -98,7 +98,6 @@ _followNode = NodePath("../Vesna/CharacterBody2D") [node name="BedInteraction" parent="." instance=ExtResource("8_phqdf")] position = Vector2(-1429, 487) -_useOutline = false _useSprite = false _id = 1 @@ -109,7 +108,6 @@ toStatus = 2 [node name="DoorInteraction" parent="." instance=ExtResource("8_phqdf")] position = Vector2(777, 201) -_useOutline = false _useSprite = false _id = 0 diff --git a/scenes/Babushka_scene_startMenu.tscn b/scenes/Babushka_scene_startMenu.tscn index f4ea948..43f1fc7 100644 --- a/scenes/Babushka_scene_startMenu.tscn +++ b/scenes/Babushka_scene_startMenu.tscn @@ -1,8 +1,11 @@ -[gd_scene load_steps=4 format=3 uid="uid://c6wnoif01ltld"] +[gd_scene load_steps=7 format=3 uid="uid://c6wnoif01ltld"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_fj2fh"] +[ext_resource type="Script" uid="uid://b5dotkx17gvxg" path="res://scripts/CSharp/Events/EventCaller.cs" id="3_beyjr"] [ext_resource type="Texture2D" uid="uid://c7atj6ohlmir3" path="res://art/ui/StartScreen/titlescreen.png" id="3_r0y6o"] +[ext_resource type="Script" uid="uid://bc6uaaxsx5k5p" path="res://scripts/CSharp/Events/EventListener.cs" id="4_beyjr"] [ext_resource type="Texture2D" uid="uid://du612t3xytly3" path="res://art/ui/StartScreen/babushkalog_white.png" id="4_dl0t1"] +[ext_resource type="Resource" uid="uid://beed6ikqf46vk" path="res://resources/events/test.tres" id="5_5a78e"] [node name="BabushkaSceneStartMenu" type="Node2D"] script = ExtResource("1_fj2fh") @@ -52,6 +55,24 @@ toggle_mode = true text = "Quit " +[node name="Quit2" type="Button" parent="CanvasLayer/TextureRect"] +custom_minimum_size = Vector2(100, 30) +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 205.0 +offset_top = 215.0 +offset_right = 405.0 +offset_bottom = 255.0 +grow_vertical = 2 +scale = Vector2(2, 2) +toggle_mode = true +text = "Test +" +script = ExtResource("3_beyjr") +eventResource = ExtResource("5_5a78e") + [node name="Text" type="TextureRect" parent="CanvasLayer/TextureRect"] layout_mode = 1 offset_left = 50.0 @@ -62,5 +83,11 @@ scale = Vector2(0.5, 0.5) texture = ExtResource("4_dl0t1") stretch_mode = 3 +[node name="Node" type="Node" parent="."] +script = ExtResource("4_beyjr") +_eventResource = ExtResource("5_5a78e") +_showLog = true + [connection signal="pressed" from="CanvasLayer/TextureRect/Start" to="." method="LoadScene"] [connection signal="pressed" from="CanvasLayer/TextureRect/Quit" to="." method="Quit"] +[connection signal="pressed" from="CanvasLayer/TextureRect/Quit2" to="CanvasLayer/TextureRect/Quit2" method="RaiseEvent"] diff --git a/scripts/CSharp/Events/EventCaller.cs b/scripts/CSharp/Events/EventCaller.cs new file mode 100644 index 0000000..c6171f2 --- /dev/null +++ b/scripts/CSharp/Events/EventCaller.cs @@ -0,0 +1,13 @@ +using Godot; + +namespace Babushka.scripts.CSharp.Events; + +public partial class EventCaller : Node +{ + [Export] EventResource eventResource; + + public void RaiseEvent() + { + eventResource.Raise(); + } +} \ No newline at end of file diff --git a/scripts/CSharp/Events/EventCaller.cs.uid b/scripts/CSharp/Events/EventCaller.cs.uid new file mode 100644 index 0000000..5c245d3 --- /dev/null +++ b/scripts/CSharp/Events/EventCaller.cs.uid @@ -0,0 +1 @@ +uid://b5dotkx17gvxg diff --git a/scripts/CSharp/Events/EventListener.cs b/scripts/CSharp/Events/EventListener.cs new file mode 100644 index 0000000..54a6307 --- /dev/null +++ b/scripts/CSharp/Events/EventListener.cs @@ -0,0 +1,28 @@ +using Godot; + +namespace Babushka.scripts.CSharp.Events; + +public partial class EventListener : Node +{ + [Export] private EventResource _eventResource; + [Export] private bool _showLog; + + [Signal] public delegate void EventRaisedEventHandler(); + + public override void _EnterTree() + { + _eventResource.RegisterListener(this); + } + + public override void _ExitTree() + { + _eventResource.UnregisterListener(this); + } + + public void RaiseEvent() + { + if(_showLog) + GD.Print("Event Raised on: " + Name); + EmitSignal(SignalName.EventRaised); + } +} \ No newline at end of file diff --git a/scripts/CSharp/Events/EventListener.cs.uid b/scripts/CSharp/Events/EventListener.cs.uid new file mode 100644 index 0000000..a140a15 --- /dev/null +++ b/scripts/CSharp/Events/EventListener.cs.uid @@ -0,0 +1 @@ +uid://bc6uaaxsx5k5p diff --git a/scripts/CSharp/Events/EventResource.cs b/scripts/CSharp/Events/EventResource.cs new file mode 100644 index 0000000..fe4771f --- /dev/null +++ b/scripts/CSharp/Events/EventResource.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using Godot; + +namespace Babushka.scripts.CSharp.Events; + +[GlobalClass] [Tool] +public partial class EventResource : Resource +{ + [Export] private string Name + { + get { return ResourceName; } + set { ResourceName = value; } + } + + [Export] private bool _showLog; + [ExportToolButton("Raise")] Callable _raiseAction => Callable.From(Raise); + + private List _eventListeners = new (); + + public void RegisterListener(EventListener listener) + { + if(_showLog) + GD.Print("Registering listener " + listener); + _eventListeners.Add(listener); + } + + public void UnregisterListener(EventListener listener) + { + if(_showLog) + GD.Print("Unregistering listener " + listener); + _eventListeners.Remove(listener); + } + + public void Raise() + { + if(_showLog) + GD.Print("Raising event: " + Name); + + foreach (var eventListener in _eventListeners) + { + eventListener.RaiseEvent(); + } + } +} \ No newline at end of file diff --git a/scripts/CSharp/Events/EventResource.cs.uid b/scripts/CSharp/Events/EventResource.cs.uid new file mode 100644 index 0000000..207618d --- /dev/null +++ b/scripts/CSharp/Events/EventResource.cs.uid @@ -0,0 +1 @@ +uid://ci3t5mvnopntg