Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
Marco 2025-05-26 09:22:38 +02:00
commit 8889a2cdac
16 changed files with 317 additions and 37 deletions

View file

@ -1,4 +1,4 @@
<Project Sdk="Godot.NET.Sdk/4.4.1">
<Project Sdk="Godot.NET.Sdk/4.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,32 @@
[gd_resource type="Resource" script_class="EnemyResource" load_steps=6 format=3 uid="uid://ddx2b6ymqu3eo"]
[ext_resource type="Texture2D" uid="uid://b58oxkofm64o7" path="res://ExternalMaterial/WallTurret/WallTurret_Small.png" id="1_1l6xq"]
[ext_resource type="Script" uid="uid://cq65aed620ijo" path="res://Scripts/Resources/Loot/LootDrop.cs" id="2_mc6lv"]
[ext_resource type="Resource" uid="uid://cdfmedtgp2rcn" path="res://Resources/Weapons/EnemyWeapon.tres" id="8_ylifv"]
[ext_resource type="Script" uid="uid://cd5o0ceb50jki" path="res://Scripts/Resources/EnemyResource.cs" id="9_awem6"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mc6lv"]
atlas = ExtResource("1_1l6xq")
region = Rect2(48, 0, 16, 16)
[resource]
script = ExtResource("9_awem6")
EnemyName = &"Wall Turret"
EnemyKey = &"WALL_TURRET"
PrefabPath = &"uid://8ab7omgqeodu"
MaxHealth = 4.0
MovementSpeed = 0.0
Weapon = ExtResource("8_ylifv")
LootDrops = Array[ExtResource("2_mc6lv")]([])
MotivationReward = 4.0
PredictPlayer = false
PlayerDetectionRange = 90.0
ViewRange = 120.0
AlarmReactRange = 150.0
PlayerDisengageRange = 200.0
StrafeSpeed = 0.0
MaxStrafeDistance = 0.0
MinStrafeDistance = 0.0
ResponseTime = 0.5
IconSprite = SubResource("AtlasTexture_mc6lv")
metadata/_custom_type_script = "uid://cd5o0ceb50jki"

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=44 format=3 uid="uid://8ab7omgqeodu"]
[ext_resource type="Script" uid="uid://bi2edpdosngll" path="res://Scripts/Components/FSM/Enemy/EnemyFSMProxy.cs" id="1_q7y0e"]
[ext_resource type="Resource" uid="uid://cocl3qontm3be" path="res://Resources/Enemies/Base_Fairy.tres" id="2_eymbs"]
[ext_resource type="Resource" uid="uid://ddx2b6ymqu3eo" path="res://Resources/Enemies/Wall_Turret.tres" id="2_q7y0e"]
[ext_resource type="Script" uid="uid://dn6dbog1s2818" path="res://Scripts/Components/FSM/Enemy/EnemyStateMachine.cs" id="3_x4aey"]
[ext_resource type="Script" uid="uid://rrelumir3g6n" path="res://Scripts/Components/FSM/Enemy/Init.cs" id="4_kkydi"]
[ext_resource type="Script" uid="uid://bjrh5q24nuoec" path="res://Scripts/Components/FSM/Enemy/Idle.cs" id="5_mjnu8"]
@ -21,7 +21,7 @@
[ext_resource type="Script" uid="uid://dhsqsajq537qn" path="res://Scripts/Components/FSM/Enemy/EnemyAlarmModule.cs" id="19_3veuh"]
[ext_resource type="Script" uid="uid://bo5sgbv1t8ril" path="res://Scripts/Components/Actors/PlayerAnimationProvider.cs" id="20_sw3pd"]
[ext_resource type="Material" uid="uid://dnvwgyt2tbqmr" path="res://Resources/Materials/Player_Blink_Teleport_Material.tres" id="21_tdg7b"]
[ext_resource type="Script" uid="uid://dncdgq843sj2f" path="res://Scripts/Components/FSM/Enemy/AnimationModule.cs" id="22_whdyq"]
[ext_resource type="Script" uid="uid://ci0cievasc7k1" path="res://Scripts/Components/FSM/Enemy/TurretAnimationModule.cs" id="22_q7y0e"]
[ext_resource type="Script" uid="uid://bw4t2clyr6lib" path="res://Scripts/Components/FSM/Enemy/EnemyDropsProvider.cs" id="23_n8wpv"]
[ext_resource type="Texture2D" uid="uid://b2v6j7lsyltrc" path="res://Sprites/Actors/CirnoWings.png" id="24_uelh5"]
[ext_resource type="Script" uid="uid://dq338w2lw5phl" path="res://Scripts/Components/Actors/KeyboardInputProvider.cs" id="25_v7gpu"]
@ -137,7 +137,7 @@ collision_layer = 16
collision_mask = 33
script = ExtResource("1_q7y0e")
EnemyFSM = NodePath("StateMachine")
EnemyResource = ExtResource("2_eymbs")
EnemyResource = ExtResource("2_q7y0e")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_pnkma")
@ -258,10 +258,11 @@ lifetime = 0.4
one_shot = true
process_material = SubResource("ParticleProcessMaterial_poxpj")
[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule")]
script = ExtResource("22_whdyq")
[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule", "HealthProvider")]
script = ExtResource("22_q7y0e")
AnimationProvider = NodePath("../AnimationProvider")
StorageModule = NodePath("../Storage")
HealthProvider = NodePath("../DamageReceiver/Health")
[node name="DropsProvider" type="Node2D" parent="." node_paths=PackedStringArray("StorageModule")]
script = ExtResource("23_n8wpv")

View file

@ -27,6 +27,7 @@ process_mode = 1
y_sort_enabled = true
script = ExtResource("4_jtlua")
MapThemes = Array[Object]([ExtResource("25_7gtqx")])
ManualSeed = "3284405524142660119"
[node name="CameraController" parent="." instance=ExtResource("6_gwtv6")]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=4 uid="uid://dcxrdhq1yw5c7"]
[gd_scene load_steps=15 format=4 uid="uid://dcxrdhq1yw5c7"]
[ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_cak6m"]
[ext_resource type="Resource" uid="uid://ly8l7asedjpx" path="res://Resources/RogueliteMaps/TestRGMap2.tres" id="2_cak6m"]
@ -8,10 +8,12 @@
[ext_resource type="Script" uid="uid://umyqgyxjiaig" path="res://Scripts/Actors/ChestMarker.cs" id="7_hgeju"]
[ext_resource type="Resource" uid="uid://cocl3qontm3be" path="res://Resources/Enemies/Base_Fairy.tres" id="7_wtdf1"]
[ext_resource type="Texture2D" uid="uid://qeh4ai8h6sw5" path="res://Sprites/Chest.png" id="8_qe4tn"]
[ext_resource type="Script" uid="uid://g6oraxgd87ij" path="res://Scripts/Actors/TeleporterMarker.cs" id="9_sbfh4"]
[ext_resource type="Texture2D" uid="uid://d3e762pxublbt" path="res://Sprites/teleporter.png" id="10_86nbh"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_f7qjl"]
vertices = PackedVector2Array(186, 122, 186, 58, 294, 58, 294, 134, 166, 134, 134, 122, 166, 150, 154, 150, 154, 134, 26, 134, 26, 58, 134, 58, 166, 54, 154, 54, 154, 10, 166, 10)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(0, 3, 4, 5), PackedInt32Array(4, 6, 7, 8), PackedInt32Array(5, 4, 8), PackedInt32Array(5, 8, 9, 10), PackedInt32Array(11, 5, 10), PackedInt32Array(12, 13, 14, 15)])
vertices = PackedVector2Array(166, 54, 154, 54, 154, 10, 166, 10, 294, 68, 294, 118, 280, 118, 264, 116, 264, 70, 264, 68, 216, 70, 186, 58, 264, 58, 186, 122, 216, 116, 280, 134, 166, 134, 134, 122, 154, 134, 166, 150, 154, 150, 120, 134, 120, 118, 134, 58, 120, 68, 88, 118, 88, 134, 40, 134, 40, 102, 26, 102, 26, 68, 120, 58)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 5, 6, 7, 8), PackedInt32Array(9, 4, 8, 10), PackedInt32Array(11, 12, 9, 10), PackedInt32Array(13, 11, 10, 14), PackedInt32Array(14, 7, 6, 15, 16, 13), PackedInt32Array(17, 13, 16, 18), PackedInt32Array(16, 19, 20, 18), PackedInt32Array(17, 18, 21, 22), PackedInt32Array(23, 17, 22, 24), PackedInt32Array(25, 26, 27, 28), PackedInt32Array(28, 29, 30, 24), PackedInt32Array(25, 28, 24, 22), PackedInt32Array(23, 24, 31)])
outlines = Array[PackedVector2Array]([PackedVector2Array(17, 36, 14, 12, 47, 15, 49, 34)])
parsed_collision_mask = 353
source_geometry_mode = 1
@ -23,6 +25,10 @@ size = Vector2(272, 85)
atlas = ExtResource("8_qe4tn")
region = Rect2(0, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_qldan"]
atlas = ExtResource("10_86nbh")
region = Rect2(0, 0, 16, 16)
[node name="Map" type="Node2D" node_paths=PackedStringArray("RoomClearActivation")]
process_mode = 1
script = ExtResource("1_cak6m")
@ -33,12 +39,13 @@ metadata/test_scene = "res://Scenes/Maps/Roguelike.tscn"
[node name="Tilemaps" type="Node2D" parent="." groups=["navigation_polygon_source_geometry_group"]]
[node name="Floor" type="TileMapLayer" parent="Tilemaps" node_paths=PackedStringArray("_solidLayers") groups=["Solid"]]
tile_map_data = PackedByteArray("AAAAAAIAAAAFAAAAAAAAAAMAAAAFAAAAAAAAAAQAAAAFAAAAAAAAAAUABgAGAAMAAAAAAAYAAAAFAAAAAAAAAAcAAAAFAAAAAAAAAAgAAAAFAAAAAAAAAAkAAAAFAAAAAAABAAIAAAAFAAAAAAABAAMABgAGAAMAAAABAAQABgAGAAMAAAABAAUABgAGAAMAAAABAAYABgAGAAMAAAABAAcABgAGAAMAAAABAAgABgAGAAMAAAABAAkAAAAFAAAAAAACAAIAAAAFAAAAAAACAAMABgAGAAMAAAACAAQABgAGAAMAAAACAAUABgAGAAMAAAACAAYABgAGAAMAAAACAAcABgAGAAMAAAACAAgABgAGAAMAAAACAAkAAAAFAAAAAAADAAIAAAAFAAAAAAADAAMABgAGAAMAAAADAAQABgAGAAMAAAADAAUABgAGAAMAAAADAAYABgAGAAMAAAADAAcABgAGAAMAAAADAAgABgAGAAMAAAADAAkAAAAFAAAAAAAEAAIAAAAFAAAAAAAEAAMABgAGAAMAAAAEAAQABgAGAAMAAAAEAAUABgAGAAMAAAAEAAYABgAGAAMAAAAEAAcABgAGAAMAAAAEAAgABgAGAAMAAAAEAAkAAAAFAAAAAAAFAAIAAAAFAAAAAAAFAAMABgAGAAMAAAAFAAQABgAGAAMAAAAFAAUABgAGAAMAAAAFAAYABgAGAAMAAAAFAAcABgAGAAMAAAAFAAgABgAGAAMAAAAFAAkAAAAFAAAAAAAGAAIAAAAFAAAAAAAGAAMABgAGAAMAAAAGAAQABgAGAAMAAAAGAAUABgAGAAMAAAAGAAYABgAGAAMAAAAGAAcABgAGAAMAAAAGAAgABgAGAAMAAAAGAAkAAAAFAAAAAAAHAAIAAAAFAAAAAAAHAAMABgAGAAMAAAAHAAQABgAGAAMAAAAHAAUABgAGAAMAAAAHAAYABgAGAAMAAAAHAAcABgAGAAMAAAAHAAgABgAGAAMAAAAHAAkAAAAFAAAAAAAIAAIAAAAFAAAAAAAIAAMABgAGAAMAAAAIAAQABgAGAAMAAAAIAAUABgAGAAMAAAAIAAYABgAGAAMAAAAIAAcABgAGAAMAAAAIAAgABgAGAAMAAAAIAAkAAAAFAAAAAAAJAAIABgAGAAMAAAAJAAMABgAGAAMAAAAJAAQABgAGAAMAAAAJAAgABgAGAAMAAAAJAAkABgAGAAMAAAAKAAIABgAGAAMAAAAKAAMABgAGAAMAAAAKAAQABgAGAAMAAAAKAAgABgAGAAMAAAAKAAkABgAGAAMAAAALAAIAAAAFAAAAAAALAAUABgAGAAMAAAALAAYABgAGAAMAAAALAAcABgAGAAMAAAALAAgABgAGAAMAAAALAAkAAAAFAAAAAAAMAAIAAAAFAAAAAAAMAAUABgAGAAMAAAAMAAYABgAGAAMAAAAMAAcABgAGAAMAAAAMAAgABgAGAAMAAAAMAAkAAAAFAAAAAAANAAIAAAAFAAAAAAANAAMABgAGAAMAAAANAAQABgAGAAMAAAANAAUABgAGAAMAAAANAAYABgAGAAMAAAANAAcABgAGAAMAAAANAAgABgAGAAMAAAANAAkAAAAFAAAAAAAOAAIAAAAFAAAAAAAOAAMABgAGAAMAAAAOAAQABgAGAAMAAAAOAAUABgAGAAMAAAAOAAYABgAGAAMAAAAOAAcABgAGAAMAAAAOAAgABgAGAAMAAAAOAAkAAAAFAAAAAAAPAAIAAAAFAAAAAAAPAAMABgAGAAMAAAAPAAQABgAGAAMAAAAPAAUABgAGAAMAAAAPAAYABgAGAAMAAAAPAAcABgAGAAMAAAAPAAgABgAGAAMAAAAPAAkAAAAFAAAAAAAQAAIAAAAFAAAAAAAQAAMABgAGAAMAAAAQAAQABgAGAAMAAAAQAAUABgAGAAMAAAAQAAYABgAGAAMAAAAQAAcABgAGAAMAAAAQAAgABgAGAAMAAAAQAAkAAAAFAAAAAAARAAIAAAAFAAAAAAARAAMABgAGAAMAAAARAAQABgAGAAMAAAARAAUABgAGAAMAAAARAAYABgAGAAMAAAARAAcABgAGAAMAAAARAAgABgAGAAMAAAARAAkAAAAFAAAAAAASAAIAAAAFAAAAAAASAAMABgAGAAMAAAASAAQABgAGAAMAAAASAAUABgAGAAMAAAASAAYABgAGAAMAAAASAAcABgAGAAMAAAASAAgABgAGAAMAAAASAAkAAAAFAAAAAAATAAIAAAAFAAAAAAATAAMAAAAFAAAAAAATAAQAAAAFAAAAAAATAAUABgAGAAMAAAATAAYAAAAFAAAAAAATAAcAAAAFAAAAAAATAAgAAAAFAAAAAAATAAkAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAEAAAAFAAAAAAABAAAAAAAFAAAAAAABAAEAAAAFAAAAAAACAAAAAAAFAAAAAAACAAEAAAAFAAAAAAADAAAAAAAFAAAAAAADAAEAAAAFAAAAAAAEAAAAAAAFAAAAAAAEAAEAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAEAAAAFAAAAAAAGAAAAAAAFAAAAAAAGAAEAAAAFAAAAAAAHAAAAAAAFAAAAAAAHAAEAAAAFAAAAAAAIAAAAAAAFAAAAAAAIAAEAAAAFAAAAAAAJAAAABgAGAAMAAAAJAAEABgAGAAMAAAAKAAAABgAGAAMAAAAKAAEABgAGAAMAAAALAAAAAAAFAAAAAAALAAEAAAAFAAAAAAALAAMABgAGAAMAAAALAAQABgAGAAMAAAAMAAAAAAAFAAAAAAAMAAEAAAAFAAAAAAAMAAMABgAGAAMAAAAMAAQABgAGAAMAAAANAAAAAAAFAAAAAAANAAEAAAAFAAAAAAAOAAAAAAAFAAAAAAAOAAEAAAAFAAAAAAAPAAAAAAAFAAAAAAAPAAEAAAAFAAAAAAAQAAAAAAAFAAAAAAAQAAEAAAAFAAAAAAARAAAAAAAFAAAAAAARAAEAAAAFAAAAAAASAAAAAAAFAAAAAAASAAEAAAAFAAAAAAATAAAAAAAFAAAAAAATAAEAAAAFAAAAAAAJAAUABgAGAAMAAAAJAAYABgAGAAMAAAAJAAcABgAGAAMAAAAKAAUABgAGAAMAAAAKAAYABgAGAAMAAAAKAAcABgAGAAMAAAA=")
tile_map_data = PackedByteArray("AAAAAAIABwALAA4AAAAAAAMABwALAA4AAAAAAAQABwALAA4AAAAAAAUABwAKAA4AAAAAAAYABwALAA4AAAAAAAcABwALAA4AAAAAAAgABwAKAA4AAAAAAAkABwAKAA4AAAABAAIABwALAA4AAAABAAMABwALAAQAAAABAAQABwALAAQAAAABAAUABwALAAQAAAABAAYABwALAAQAAAABAAcABwALAAQAAAABAAgABwALAAQAAAABAAkABwALAA4AAAACAAIABwAKAA4AAAACAAMABwAKAAQAAAACAAQABwALAA4AAAACAAUABwAKAA4AAAACAAYABwALAA4AAAACAAcABwALAA4AAAACAAgABwALAAQAAAACAAkABwAKAA4AAAADAAIABwAKAA4AAAADAAMABwALAAQAAAADAAQABwALAA4AAAADAAUABwALAA4AAAADAAYABwAKAA4AAAADAAcABwAKAA4AAAADAAgABwAKAA4AAAADAAkABwAKAA4AAAAEAAIABwAKAA4AAAAEAAMABwAKAAQAAAAEAAQABwALAA4AAAAEAAUABwAKAA4AAAAEAAYABwAKAA4AAAAEAAcACAABAAAAAAAEAAgACAABAAAAAAAEAAkABwAKAA4AAAAFAAIABwAKAA4AAAAFAAMABwAKAAQAAAAFAAQABwAKAA4AAAAFAAUABwAKAA4AAAAFAAYABwAKAA4AAAAFAAcACAABAAAAAAAFAAgACAABAAAAAAAFAAkABwAKAA4AAAAGAAIABwALAA4AAAAGAAMABwALAAQAAAAGAAQABwALAA4AAAAGAAUABwALAA4AAAAGAAYABwALAA4AAAAGAAcACAABAAAAAAAGAAgACAABAAAAAAAGAAkABwAKAA4AAAAHAAIABwALAA4AAAAHAAMABwALAAQAAAAHAAQABwALAA4AAAAHAAUABwAKAA4AAAAHAAYABwALAA4AAAAHAAcABwALAA4AAAAHAAgABwALAA4AAAAHAAkABwALAA4AAAAIAAIABwALAA4AAAAIAAMABwAKAAQAAAAIAAQABwALAA4AAAAIAAUABwALAA4AAAAIAAYABwALAA4AAAAIAAcABwAKAA4AAAAIAAgABwAKAAQAAAAIAAkABwAKAA4AAAAJAAIABwAKAA4AAAAJAAMABwAKAA4AAAAJAAQABwAKAA4AAAAJAAgABwAKAAQAAAAJAAkABwALAA4AAAAKAAIABwAKAA4AAAAKAAMABwALAA4AAAAKAAQABwAKAA4AAAAKAAgABwALAAQAAAAKAAkABwAKAA4AAAALAAIABwALAA4AAAALAAUABwALAA4AAAALAAYABwAKAA4AAAALAAcABwALAA4AAAALAAgABwAKAAQAAAALAAkABwALAA4AAAAMAAUABwAKAA4AAAAMAAYABwAKAA4AAAAMAAcABwALAA4AAAAMAAgABwALAAQAAAAMAAkABwAKAA4AAAANAAIABwAKAA4AAAANAAMABwALAAQAAAANAAQABwALAA4AAAANAAUABwALAA4AAAANAAYABwAKAA4AAAANAAcABwAKAA4AAAANAAgABwALAAQAAAANAAkABwALAA4AAAAOAAIABwALAA4AAAAOAAMACAABAAAAAAAOAAQACAABAAAAAAAOAAUABwALAA4AAAAOAAYABwAKAA4AAAAOAAcABwALAA4AAAAOAAgABwAKAAQAAAAOAAkABwAKAA4AAAAPAAIABwALAA4AAAAPAAMACAABAAAAAAAPAAQACAABAAAAAAAPAAUABwALAA4AAAAPAAYABwAKAA4AAAAPAAcABwALAA4AAAAPAAgABwALAAQAAAAPAAkABwAKAA4AAAAQAAIABwALAA4AAAAQAAMACAABAAAAAAAQAAQACAABAAAAAAAQAAUABwALAA4AAAAQAAYABwAKAA4AAAAQAAcABwALAA4AAAAQAAgABwALAAQAAAAQAAkABwALAA4AAAARAAIABwAKAA4AAAARAAMABwAKAAQAAAARAAQABwAKAA4AAAARAAUABwAKAA4AAAARAAYABwAKAA4AAAARAAcABwALAA4AAAARAAgABwAKAAQAAAARAAkABwALAA4AAAASAAIABwAKAA4AAAASAAMABwAKAAQAAAASAAQABwAKAAQAAAASAAUABwAKAAQAAAASAAYABwALAAQAAAASAAcABwALAAQAAAASAAgABwALAAQAAAASAAkABwALAA4AAAATAAIABwAKAA4AAAATAAMABwAKAA4AAAATAAQABwALAA4AAAATAAUABwALAA4AAAATAAYABwALAA4AAAATAAcABwALAA4AAAATAAgABwALAA4AAAATAAkABwALAA4AAAAAAAAABwALAA4AAAAAAAEABwAKAA4AAAABAAAABwALAA4AAAABAAEABwALAA4AAAACAAAABwAKAA4AAAACAAEABwALAA4AAAADAAAABwAKAA4AAAADAAEABwAKAA4AAAAEAAAABwALAA4AAAAEAAEABwALAA4AAAAFAAAABwAKAA4AAAAFAAEABwALAA4AAAAGAAAABwAKAA4AAAAGAAEABwAKAA4AAAAHAAAABwAKAA4AAAAHAAEABwAKAA4AAAAIAAAABwAKAA4AAAAIAAEABwALAA4AAAAJAAAABwALAA4AAAAJAAEABwAKAA4AAAAKAAAABwALAA4AAAAKAAEABwAKAA4AAAALAAAABwALAA4AAAALAAEABwALAA4AAAALAAMABwAKAA4AAAALAAQABwALAA4AAAAMAAAABwAKAA4AAAAMAAEABwAKAA4AAAAMAAQABwAKAA4AAAANAAAABwAKAA4AAAANAAEABwALAA4AAAAOAAAABwAKAA4AAAAOAAEABwALAA4AAAAPAAAABwAKAA4AAAAPAAEABwALAA4AAAAQAAAABwAKAA4AAAAQAAEABwALAA4AAAARAAAABwALAA4AAAARAAEABwAKAA4AAAASAAAABwAKAA4AAAASAAEABwAKAA4AAAATAAAABwALAA4AAAATAAEABwALAA4AAAAJAAUABwALAA4AAAAJAAYABwAKAA4AAAAJAAcABwAKAA4AAAAKAAUABwALAA4AAAAKAAYABwAKAA4AAAAKAAcABwAKAA4AAAAMAAIABwAKAA4AAAAMAAMABwAKAA4AAAA=")
tile_set = ExtResource("3_f7qjl")
navigation_enabled = false
script = ExtResource("4_wtdf1")
_solidLayers = [NodePath("../Solid"), NodePath("../Props")]
metadata/_edit_lock_ = true
metadata/_edit_group_ = true
[node name="Solid" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]]
tile_map_data = PackedByteArray("AAATAAAAAAABAAsAAAASAAAAAAABAAQAAAARAAAAAAABAAQAAAAQAAAAAAABAAQAAAAPAAAAAAABAAQAAAAOAAAAAAABAAQAAAANAAAAAAABAAQAAAAMAAAAAAABAAQAAAALAAAAAAACAAQAAAAIAAAAAAADAAQAAAAHAAAAAAABAAQAAAAGAAAAAAABAAQAAAAFAAAAAAABAAQAAAAEAAAAAAABAAQAAAADAAAAAAABAAQAAAACAAAAAAABAAQAAAABAAAAAAABAAQAAAAAAAAAAAAAAAsAAAATAAIAAAAEAAQAAAATAAEAAAAAAAQAAAAAAAIAAAAEAAQAAAAAAAEAAAAAAAQAAAAAAAkAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAYAAAAFAAQAAAATAAkAAAABAAwAAAASAAkAAAABAAQAAAARAAkAAAABAAQAAAAQAAkAAAABAAQAAAAPAAkAAAABAAQAAAAOAAkAAAABAAQAAAANAAkAAAABAAQAAAAMAAkAAAABAAQAAAALAAkAAAACAAQAAAAIAAkAAAADAAQAAAAHAAkAAAABAAQAAAAGAAkAAAABAAQAAAAFAAkAAAABAAQAAAAEAAkAAAABAAQAAAADAAkAAAABAAQAAAACAAkAAAABAAQAAAABAAkAAAABAAQAAAATAAgAAAAAAAQAAAATAAcAAAAAAAQAAAATAAYAAAAFAAQAAAATAAMAAAAMAAAAAAATAAQAAAAMAAEAAAALAAEAAAAMAAAAAAALAAIAAAAMAAEAAAAMAAEAAAAMAAAAAAAMAAIAAAAMAAEAAAANAAEAAAAMAAAAAAANAAIAAAAMAAEAAAAOAAEAAAAMAAAAAAAOAAIAAAAMAAEAAAAPAAEAAAAMAAAAAAAPAAIAAAAMAAEAAAAQAAEAAAAMAAAAAAAQAAIAAAAMAAEAAAARAAEAAAAMAAAAAAARAAIAAAAMAAEAAAASAAEAAAAMAAAAAAASAAIAAAAMAAEAAAABAAEAAAAMAAAAAAABAAIAAAAMAAEAAAACAAEAAAAMAAAAAAACAAIAAAAMAAEAAAADAAEAAAAMAAAAAAADAAIAAAAMAAEAAAAEAAEAAAAMAAAAAAAEAAIAAAAMAAEAAAAFAAEAAAAMAAAAAAAFAAIAAAAMAAEAAAAGAAEAAAAMAAAAAAAGAAIAAAAMAAEAAAAHAAEAAAAMAAAAAAAHAAIAAAAMAAEAAAAIAAEAAAAMAAAAAAAIAAIAAAAMAAEAAAAAAAMAAAAMAAAAAAAAAAQAAAAMAAEAAAAJAAUAAAAMAAAAAAAJAAYAAAAMAAEAAAAKAAUAAAAMAAAAAAAKAAYAAAAMAAEAAAAJAAQAAAACAAQAAAAKAAQAAAADAAQAAAA=")
@ -47,7 +54,7 @@ navigation_enabled = false
metadata/_edit_lock_ = true
[node name="Props" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]]
tile_map_data = PackedByteArray("AAAJAAUAAAAJAAwAAAAJAAYAAAAJAA0AAAAKAAUAAAAKAAwAAAAKAAYAAAAKAA0AAAAAAAMAAAAKAAwAAAAAAAQAAAAKAA0AAAAIAAEAAAAKAAwAAAAIAAIAAAAKAA0AAAALAAEAAAAJAAwAAAALAAIAAAAJAA0AAAATAAMAAAAJAAwAAAATAAQAAAAJAA0AAAABAAMAAAAGAAAAAAACAAMAAAAHAAAAAAARAAMAAAAGAAAAAAASAAMAAAAHAAAAAAADAAMAAAAGAAAAAAAEAAMAAAAHAAAAAAAFAAMAAQAAAAAADgAGAAMAAQAAAAAADgABAAgAAQAAAAAADgABAAcAAQAAAAAADgASAAgAAQAAAAAADgALAAUAAQAAAAAAEgALAAYAAQAAAAAAEgA=")
tile_map_data = PackedByteArray("AAAJAAUAAAAJAAwAAAAJAAYAAAAJAA0AAAAKAAUAAAAKAAwAAAAKAAYAAAAKAA0AAAAAAAMAAAAKAAwAAAAAAAQAAAAKAA0AAAAIAAEAAAAKAAwAAAAIAAIAAAAKAA0AAAALAAEAAAAJAAwAAAALAAIAAAAJAA0AAAATAAMAAAAJAAwAAAATAAQAAAAJAA0AAAABAAMAAAAGAAAAAAACAAMAAAAHAAAAAAARAAMAAAAGAAYAAAADAAMAAAAGAAAAAAAEAAMAAAAHAAAAAAAFAAMAAQAAAAAAFgAGAAMAAQAAAAAADgABAAgAAQAAAAAAFgABAAcAAQAAAAAADgASAAgAAQAAAAAAFQALAAUAAQAAAAAAEgALAAYAAQAAAAAAEgAGAAgAAQAAAAAAEwAEAAYAAAAHAAcAAAAFAAYAAAAHAAcAAAAGAAYAAAAHAAcAAAAHAAcAAAAGAAYAAAAHAAgAAAAGAAYAAAADAAcAAAAIAAYAAAADAAgAAAAIAAYAAAAHAAYAAAAFAA4AAAADAAYAAAAEAA4AAAAOAAUAAAAHAAUAAAAPAAUAAAAHAAUAAAAPAAYAAQAAAAAAFQAOAAYAAQAAAAAAFQANAAMAAAAIAAYAAAANAAQAAAAIAAYAAAAQAAUAAAAHAAUAAAARAAQAAAAGAAYAAAARAAUAAAAFAA8AAAANAAUAAAAEAA8AAAAPAAEACgAAAAAAAAAPAAIACgAAAAEAAAAFAAEACgAAAAAAAAAFAAIACgAAAAEAAAA=")
tile_set = ExtResource("3_f7qjl")
navigation_enabled = false
metadata/_edit_lock_ = true
@ -55,13 +62,6 @@ metadata/_edit_lock_ = true
[node name="Actors" type="Node2D" parent="Tilemaps"]
metadata/_edit_lock_ = true
[node name="EnemySpawners" type="Node2D" parent="."]
[node name="RogueliteEnemySpawner6" type="Marker2D" parent="EnemySpawners"]
position = Vector2(201, 92)
script = ExtResource("5_f7qjl")
Enemy = ExtResource("7_wtdf1")
[node name="NavigationRegion2D" type="NavigationRegion2D" parent="."]
visible = false
navigation_polygon = SubResource("NavigationPolygon_f7qjl")
@ -78,7 +78,7 @@ shape = SubResource("RectangleShape2D_wtdf1")
[node name="Features" type="Node2D" parent="."]
[node name="Chest" type="Marker2D" parent="Features"]
position = Vector2(281, 136)
position = Vector2(280, 135)
script = ExtResource("7_hgeju")
MarkerTexture = SubResource("AtlasTexture_sbfh4")
SpawnChance = 10.0
@ -89,4 +89,26 @@ script = ExtResource("7_hgeju")
MarkerTexture = SubResource("AtlasTexture_sbfh4")
SpawnChance = 10.0
[node name="Teleporter" type="Marker2D" parent="Features"]
position = Vector2(87, 136)
script = ExtResource("9_sbfh4")
MarkerTexture = SubResource("AtlasTexture_qldan")
[node name="Teleporter2" type="Marker2D" parent="Features"]
position = Vector2(248, 56)
script = ExtResource("9_sbfh4")
MarkerTexture = SubResource("AtlasTexture_qldan")
[node name="EnemySpawners" type="Node2D" parent="."]
[node name="RogueliteEnemySpawner6" type="Marker2D" parent="EnemySpawners"]
position = Vector2(248, 55)
script = ExtResource("5_f7qjl")
Enemy = ExtResource("7_wtdf1")
[node name="RogueliteEnemySpawner7" type="Marker2D" parent="EnemySpawners"]
position = Vector2(87, 134)
script = ExtResource("5_f7qjl")
Enemy = ExtResource("7_wtdf1")
[connection signal="area_entered" from="PlayerEnterDetector" to="." method="OnRoomEntered"]

File diff suppressed because one or more lines are too long

View file

@ -74,6 +74,19 @@ public partial class PlayerAnimationProvider : Node2D
}
}
public void SweepSprite(float angle, float sweepAngle)
{
if (_animatedSprite == null) return;
var frames = _animatedSprite.SpriteFrames.GetFrameCount("default");
// Map angle (-SweepAngle/2 to +SweepAngle/2) to frame (0 to 5)
float normalizedAngle = (angle + (sweepAngle / 2)) / sweepAngle;
int frame = Mathf.Clamp((int)(normalizedAngle * frames), 0, frames);
_animatedSprite.Frame = frame;
}
public void SetAnimation(Vector2 direction)
{
if (direction == Vector2.Zero)

View file

@ -0,0 +1,104 @@
using Cirno.Scripts.Components.Actors;
using Cirno.Scripts.Enums;
using Godot;
namespace Cirno.Scripts.Components.FSM.Enemy;
public partial class TurretAnimationModule : ModuleBase<EnemyState, CharacterBody2D>
{
private IStateMachine<EnemyState, CharacterBody2D> _machine;
[Export] public PlayerAnimationProvider AnimationProvider { get; set; }
[Export] public EnemyStorageModule StorageModule { get; set; }
[Export] public ActorResourceProvider HealthProvider { get; set; }
[Export] public float SweepAngle = 90f; // In degrees
[Export] public float SweepSpeed = 1f; // Speed of sweeping
[Export] public bool Debug = false; // Enable debug lines
//[Export] public NodePath SpritePath;
private float _currentAngle;
private float _sweepDirection = 1f;
private float _raycastLength;
public override void EnterState(EnemyState state)
{
AnimationProvider.SetAnimation(StorageModule.AimingDirection);
AnimationProvider.SetAnimation(Vector2.Zero);
if (HealthProvider is not null)
{
HealthProvider.ResourceDecreased += HealthProviderOnResourceDecreased;
}
}
private void HealthProviderOnResourceDecreased(float oldValue, float newValue, float maxValue)
{
AnimationProvider?.Blink();
}
public override void ExitState(EnemyState state)
{
AnimationProvider.SetAnimation(Vector2.Zero);
if (HealthProvider is not null)
{
HealthProvider.ResourceDecreased -= HealthProviderOnResourceDecreased;
}
}
public override void Init(IStateMachine<EnemyState, CharacterBody2D> machine)
{
_machine = machine;
}
public override void Process(double delta)
{
AnimationProvider.SetAnimation(StorageModule.AimingDirection);
if (_machine.MainObject.Velocity == Vector2.Zero)
{
AnimationProvider.SetAnimation(Vector2.Zero);
}
}
public override void PhysicsProcess(double delta)
{
}
private void Sweep(float delta)
{
_currentAngle += _sweepDirection * SweepSpeed * delta;
// Clamp angle within the sweep range
float halfAngle = SweepAngle / 2f;
if (_currentAngle > halfAngle || _currentAngle < -halfAngle)
{
_sweepDirection *= -1f;
_currentAngle = Mathf.Clamp(_currentAngle, -halfAngle, halfAngle);
}
}
private void DrawDebugLine(Vector2 endPoint)
{
// Request the node to redraw
QueueRedraw();
_debugLineEndPoint = endPoint;
}
private void UpdateSpriteDirection()
{
AnimationProvider.SweepSprite(_currentAngle, SweepAngle);
}
private Vector2 _debugLineEndPoint;
public override void _Draw()
{
if (Debug)
{
DrawLine(Vector2.Zero, ToLocal(_debugLineEndPoint), Colors.Red, 2);
}
}
}

View file

@ -0,0 +1 @@
uid://ci0cievasc7k1

View file

@ -1,4 +1,4 @@
[gd_resource type="TileSet" load_steps=100 format=3 uid="uid://6k28roiljylj"]
[gd_resource type="TileSet" load_steps=102 format=3 uid="uid://6k28roiljylj"]
[ext_resource type="Texture2D" uid="uid://bty7p61v46chx" path="res://Resources/Textures/Tilemap_Canvas.tres" id="1_u4jco"]
[ext_resource type="PackedScene" uid="uid://bj28qiai2x2ar" path="res://Scenes/Props/Barrel.tscn" id="2_cxg4b"]
@ -1746,6 +1746,12 @@ polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ctxsb"]
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ork78"]
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
@ -2372,6 +2378,76 @@ texture = ExtResource("25_ttooi")
14:17/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_026cw")
15:17/0 = 0
15:17/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_026cw")
0:18/0 = 0
0:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
1:18/0 = 0
1:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
2:18/0 = 0
2:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
3:18/0 = 0
3:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
4:18/0 = 0
4:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
5:18/0 = 0
5:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
6:18/0 = 0
6:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
7:18/0 = 0
7:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
8:18/0 = 0
8:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
9:18/0 = 0
9:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
10:18/0 = 0
10:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
11:18/0 = 0
11:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
12:18/0 = 0
12:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
13:18/0 = 0
13:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
14:18/0 = 0
14:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
15:18/0 = 0
15:18/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
15:19/0 = 0
15:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
14:19/0 = 0
14:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
13:19/0 = 0
13:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
12:19/0 = 0
12:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
11:19/0 = 0
11:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
10:19/0 = 0
10:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
9:19/0 = 0
9:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
8:19/0 = 0
8:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
7:19/0 = 0
7:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
6:19/0 = 0
6:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
5:19/0 = 0
5:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
4:19/0 = 0
4:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
3:19/0 = 0
3:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
2:19/0 = 0
2:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
1:19/0 = 0
1:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
0:19/0 = 0
0:19/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ctxsb")
[sub_resource type="NavigationPolygon" id="NavigationPolygon_10x1a"]
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_63v5g"]
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
@ -2409,6 +2485,14 @@ texture = ExtResource("26_0p3v4")
12:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
13:0/0 = 0
13:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:1/0 = 0
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_10x1a")
1:1/0 = 0
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_10x1a")
2:1/0 = 0
2:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_10x1a")
3:1/0 = 0
3:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_10x1a")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hfdld"]
texture = ExtResource("27_0p3v4")