From 7cbb93822bb58091d47912f18ef671066ebd494e Mon Sep 17 00:00:00 2001 From: Zenny Date: Mon, 15 Sep 2025 21:20:46 -0700 Subject: [PATCH] Add Special Rooms class --- .../src/map/dungeon/code/SpecialFloor.cs | 25 +++++++++++++++++++ .../src/map/dungeon/code/SpecialFloor.cs.uid | 1 + .../dungeon/rooms/Set B/30. Void Room.tscn | 14 +++++++---- .../Set B/35. Goddess of Guidance's Room.tscn | 4 +-- .../dungeon/rooms/Set B/36. Final Floor.tscn | 11 ++++---- .../Set B/40. Goddess of Guidance's Room.tscn | 23 +++-------------- 6 files changed, 45 insertions(+), 33 deletions(-) create mode 100644 Zennysoft.Game.Ma/src/map/dungeon/code/SpecialFloor.cs create mode 100644 Zennysoft.Game.Ma/src/map/dungeon/code/SpecialFloor.cs.uid diff --git a/Zennysoft.Game.Ma/src/map/dungeon/code/SpecialFloor.cs b/Zennysoft.Game.Ma/src/map/dungeon/code/SpecialFloor.cs new file mode 100644 index 00000000..8274e404 --- /dev/null +++ b/Zennysoft.Game.Ma/src/map/dungeon/code/SpecialFloor.cs @@ -0,0 +1,25 @@ +using Chickensoft.AutoInject; +using Chickensoft.Introspection; +using Godot; +using System.Collections.Immutable; + +namespace Zennysoft.Game.Ma; + +[Meta(typeof(IAutoNode))] +public partial class SpecialFloor : Node3D, IDungeonFloor +{ + public override void _Notification(int what) => this.Notify(what); + + [Node] private Marker3D PlayerSpawn { get; set; } = default!; + + public ImmutableList Rooms => []; + + public void InitializeDungeon() + { + FloorIsLoaded = true; + } + + public bool FloorIsLoaded { get; set; } + + public Transform3D GetPlayerSpawnPoint() => PlayerSpawn.GlobalTransform; +} \ No newline at end of file diff --git a/Zennysoft.Game.Ma/src/map/dungeon/code/SpecialFloor.cs.uid b/Zennysoft.Game.Ma/src/map/dungeon/code/SpecialFloor.cs.uid new file mode 100644 index 00000000..bc66c373 --- /dev/null +++ b/Zennysoft.Game.Ma/src/map/dungeon/code/SpecialFloor.cs.uid @@ -0,0 +1 @@ +uid://xd6tx3lifebl diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/30. Void Room.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/30. Void Room.tscn index 4a98ba3e..7b5f5254 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/30. Void Room.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/30. Void Room.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=18 format=3 uid="uid://dttk7gis5ibge"] -[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_7ld5y"] +[ext_resource type="Script" uid="uid://xd6tx3lifebl" path="res://src/map/dungeon/code/SpecialFloor.cs" id="1_gtn7m"] [ext_resource type="PackedScene" uid="uid://dcyriq5bejtdj" path="res://src/map/dungeon/models/Set B/30. Void Room/30_A2_VOID_ROOM_VER.2.glb" id="2_pauwa"] -[ext_resource type="Shader" uid="uid://ucyntjbf812l" path="res://src/map/map shaders/VOIDSHADE.gdshader" id="3_gtn7m"] +[ext_resource type="Shader" path="res://src/map/map shaders/VOIDSHADE.gdshader" id="3_gtn7m"] [ext_resource type="FastNoiseLite" uid="uid://c7mj06ydprexd" path="res://src/map/map shaders/noise void.tres" id="4_gtn7m"] -[ext_resource type="Shader" uid="uid://dra2fnoyyinii" path="res://src/map/map shaders/VOID GLASS.gdshader" id="4_rvyv7"] -[ext_resource type="Shader" uid="uid://bpkmgenx50vof" path="res://src/map/map shaders/VOID PORTAL.gdshader" id="5_euvyt"] +[ext_resource type="Shader" path="res://src/map/map shaders/VOID GLASS.gdshader" id="4_rvyv7"] +[ext_resource type="Shader" path="res://src/map/map shaders/VOID PORTAL.gdshader" id="5_euvyt"] [sub_resource type="Gradient" id="Gradient_hths4"] offsets = PackedFloat32Array(0, 0.698113, 1) @@ -67,7 +67,7 @@ subdivide_width = 2 subdivide_depth = 2 [node name="Void Room" type="Node3D"] -script = ExtResource("1_7ld5y") +script = ExtResource("1_gtn7m") [node name="Model" type="Node3D" parent="."] @@ -91,6 +91,10 @@ skeleton = NodePath("../../..") [node name="Spawn Points" type="Node3D" parent="."] +[node name="PlayerSpawn" type="Marker3D" parent="Spawn Points"] +unique_name_in_owner = true +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 7.70625, -1.18482, -27.841) + [node name="Room" type="Node3D" parent="."] [node name="Minimap" type="Node3D" parent="."] diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/35. Goddess of Guidance's Room.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/35. Goddess of Guidance's Room.tscn index 7eae7e54..3f4502a8 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/35. Goddess of Guidance's Room.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/35. Goddess of Guidance's Room.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=102 format=4 uid="uid://bo20ffw2ygbks"] -[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_7wym6"] +[ext_resource type="Script" uid="uid://xd6tx3lifebl" path="res://src/map/dungeon/code/SpecialFloor.cs" id="1_j4ho3"] [ext_resource type="Texture2D" uid="uid://ddrvsy7psmwig" path="res://src/map/dungeon/models/Set B/35. Goddess of Guidance's Floor/GoG Room mirrored_DARKER_STONE_AREA_2.png" id="2_jbyuo"] [ext_resource type="Texture2D" uid="uid://dk2cj5rcnkxnf" path="res://src/map/dungeon/models/Set B/35. Goddess of Guidance's Floor/GoG Room mirrored_CEILING_AREA2.jpg" id="3_nadnf"] [ext_resource type="Texture2D" uid="uid://bfr26em2xh1r1" path="res://src/map/dungeon/models/Set B/35. Goddess of Guidance's Floor/GoG Room mirrored_STONE_PANEL_AREA2png.png" id="4_bb3ot"] @@ -774,7 +774,7 @@ shader_parameter/steps = 512 shader_parameter/ssr_screen_fade = 0.05 [node name="Goddess of Guidance\'s Floor" type="Node3D"] -script = ExtResource("1_7wym6") +script = ExtResource("1_j4ho3") [node name="Model" type="Node3D" parent="."] diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/36. Final Floor.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/36. Final Floor.tscn index bb25a86b..e2650216 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/36. Final Floor.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/36. Final Floor.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=56 format=4 uid="uid://cyrrhoarhxlhg"] [ext_resource type="Texture2D" uid="uid://btt02vinv3ikx" path="res://src/map/dungeon/models/Set B/36. Final Floor/36_A2_FINAL_FLOOR_VER.0_Plane Base Color.png" id="1_er87g"] -[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_y4p12"] +[ext_resource type="Script" uid="uid://xd6tx3lifebl" path="res://src/map/dungeon/code/SpecialFloor.cs" id="1_y4p12"] [ext_resource type="Texture2D" uid="uid://bg3dxa6v6n165" path="res://src/map/dungeon/models/Set B/36. Final Floor/36_A2_FINAL_FLOOR_VER.0_DARKER_STONE_AREA_2.png" id="2_6tqdj"] [ext_resource type="Texture2D" uid="uid://ej5sfwsfjog4" path="res://src/map/dungeon/models/Set B/36. Final Floor/36_A2_FINAL_FLOOR_VER.0_WHITE_TILE2.png" id="3_fmpqk"] [ext_resource type="Texture2D" uid="uid://c7lt8mcdhr7sr" path="res://src/map/dungeon/models/Set B/36. Final Floor/36_A2_FINAL_FLOOR_VER.0_final_sand.jpg" id="4_k7sl3"] @@ -21,25 +21,21 @@ [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7o1e6"] resource_name = "EYE" transparency = 4 -shading_mode = 1 albedo_color = Color(0.906695, 0, 0.0496455, 1) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k34ib"] resource_name = "MOTHER PAINT" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("1_er87g") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lrrse"] resource_name = "HORN" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("2_6tqdj") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_84s5d"] resource_name = "HEADWEAR" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("3_fmpqk") [sub_resource type="ArrayMesh" id="ArrayMesh_ag2gb"] @@ -151,7 +147,6 @@ shadow_mesh = SubResource("ArrayMesh_ag2gb") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_67ke0"] resource_name = "SAND" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("4_k7sl3") [sub_resource type="ArrayMesh" id="ArrayMesh_vv0lm"] @@ -1929,6 +1924,10 @@ skeleton = NodePath("") [node name="Spawn Points" type="Node3D" parent="."] +[node name="PlayerSpawn" type="Marker3D" parent="Spawn Points"] +unique_name_in_owner = true +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -173.476, 90.0869, -1.18212) + [node name="Room" type="Node3D" parent="."] [node name="Minimap" type="Node3D" parent="."] diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/40. Goddess of Guidance's Room.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/40. Goddess of Guidance's Room.tscn index eee62346..f8dc0c63 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/40. Goddess of Guidance's Room.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set B/40. Goddess of Guidance's Room.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=92 format=4 uid="uid://jha0mhct0e7i"] +[gd_scene load_steps=87 format=4 uid="uid://jha0mhct0e7i"] -[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_qlntn"] +[ext_resource type="Script" uid="uid://xd6tx3lifebl" path="res://src/map/dungeon/code/SpecialFloor.cs" id="1_c8nq0"] [ext_resource type="Texture2D" uid="uid://ddrvsy7psmwig" path="res://src/map/dungeon/models/Set B/35. Goddess of Guidance's Floor/GoG Room mirrored_DARKER_STONE_AREA_2.png" id="2_nk06r"] [ext_resource type="Texture2D" uid="uid://dk2cj5rcnkxnf" path="res://src/map/dungeon/models/Set B/35. Goddess of Guidance's Floor/GoG Room mirrored_CEILING_AREA2.jpg" id="3_aspfl"] [ext_resource type="Texture2D" uid="uid://bfr26em2xh1r1" path="res://src/map/dungeon/models/Set B/35. Goddess of Guidance's Floor/GoG Room mirrored_STONE_PANEL_AREA2png.png" id="4_gu2dn"] @@ -13,14 +13,9 @@ [ext_resource type="Texture2D" uid="uid://cacij2icygje2" path="res://src/map/dungeon/models/Set B/40/Floor - ALT Goddess of Guidance mirrored_DARKER_STONE_AREA_2.png" id="13_qlntn"] [ext_resource type="Texture2D" uid="uid://dd1jvmfs1cbbg" path="res://src/map/dungeon/models/Set B/35. Goddess of Guidance's Floor/GoG Room mirrored_floral_single_tile.jpg" id="13_qvgr0"] [ext_resource type="Texture2D" uid="uid://nvg6i8gbgqjv" path="res://src/map/dungeon/models/Set B/35. Goddess of Guidance's Floor/GoG Room mirrored_angkor_mural.jpg" id="14_357qs"] -[ext_resource type="PackedScene" uid="uid://twrj4wixcbu7" path="res://src/items/ItemDatabase.tscn" id="14_c8nq0"] [ext_resource type="Shader" path="res://src/map/map shaders/gog spectral.gdshader" id="14_nk06r"] [ext_resource type="Shader" path="res://src/map/map shaders/spectreweapons.gdshader" id="15_aspfl"] [ext_resource type="Shader" path="res://src/map/map shaders/GOGROOM Water.gdshader" id="16_qgq3i"] -[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="17_vqdg0"] -[ext_resource type="PackedScene" uid="uid://bs56ccgosmu47" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.tscn" id="18_c8nq0"] -[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/02. michael/Michael.tscn" id="19_5bm60"] -[ext_resource type="PackedScene" uid="uid://cvk007twac22c" path="res://src/enemy/enemy_types/03. filth_eater/FilthEater.tscn" id="20_q7u05"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_q1ixl"] resource_name = "Material.014" @@ -880,7 +875,7 @@ shader_parameter/steps = 512 shader_parameter/ssr_screen_fade = 0.05 [node name="Goddess of Guidance\'s Floor" type="Node3D"] -script = ExtResource("1_qlntn") +script = ExtResource("1_c8nq0") [node name="Model" type="Node3D" parent="."] @@ -971,13 +966,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -66.2332) unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.87173, -1.37707, 2.25211) -[node name="ItemDatabase" parent="Spawn Points" instance=ExtResource("14_c8nq0")] -unique_name_in_owner = true - -[node name="ItemSpawnPoint" type="Marker3D" parent="Spawn Points"] -unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -108.001, -2.05432, 2.0026) - [node name="Room" type="Node3D" parent="."] [node name="Minimap" type="Node3D" parent="."] @@ -1045,8 +1033,3 @@ transform = Transform3D(230, 0, 0, 0, 230, 0, 0, 0, 230, 0, -2.98516, 0) mesh = SubResource("PlaneMesh_slalf") skeleton = NodePath("../Model/GoG Room mirrored") surface_material_override/0 = SubResource("ShaderMaterial_savej") - -[node name="EnemyDatabase" parent="." instance=ExtResource("17_vqdg0")] -unique_name_in_owner = true -EnemyList = Array[PackedScene]([ExtResource("18_c8nq0"), ExtResource("19_5bm60"), ExtResource("20_q7u05")]) -SpawnRate = PackedFloat32Array(0.5, 1, 1)