diff --git a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room1.tscn b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room1.tscn
index 38f57cb..205fa20 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room1.tscn
+++ b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room1.tscn
@@ -20,6 +20,7 @@
Type = 3
ItemId = "0001"
Layer = 1
+BirthRect = Vector2i(100, 20)
[node name="EnemyMark2" type="Node2D" parent="."]
position = Vector2(0, 70)
@@ -32,6 +33,7 @@
ItemId = "0001"
Layer = 1
DelayTime = 2.0
+BirthRect = Vector2i(100, 20)
[node name="EnemyMark3" type="Node2D" parent="."]
position = Vector2(114, -54)
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room3.tscn b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room3.tscn
index c69f646..5dcf9ca 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room3.tscn
+++ b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/battle/Room3.tscn
@@ -17,6 +17,8 @@
Type = 3
ItemId = "0001"
Layer = 1
+BirthRect = Vector2i(20, 20)
+DrawColor = Color(1, 0, 0, 1)
[node name="EnemyMark2" type="Node2D" parent="."]
position = Vector2(261, 217)
@@ -31,6 +33,7 @@
ResidueAmmo = 12
Type = 4
ItemId = "0002"
+DrawColor = Color(0, 0, 1, 1)
Altitude = 16
[node name="WeaponMark2" type="Node2D" parent="."]
@@ -39,6 +42,7 @@
ResidueAmmo = 7
Type = 4
ItemId = "0003"
+DrawColor = Color(0, 0, 1, 1)
Altitude = 16
[node name="EnemyMark3" type="Node2D" parent="."]
@@ -50,3 +54,4 @@
ItemId = "0001"
Layer = 1
WaveNumber = 2
+DrawColor = Color(1, 0, 0, 1)
diff --git a/DungeonShooting_Godot/resource/theme/mainTheme.tres b/DungeonShooting_Godot/resource/theme/mainTheme.tres
index 1d329a0..6992241 100644
--- a/DungeonShooting_Godot/resource/theme/mainTheme.tres
+++ b/DungeonShooting_Godot/resource/theme/mainTheme.tres
@@ -352,7 +352,7 @@
[sub_resource type="ImageTexture" id="58"]
-[sub_resource type="Image" id="Image_hjw7m"]
+[sub_resource type="Image" id="Image_bwq3c"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -362,7 +362,7 @@
}
[sub_resource type="ImageTexture" id="60"]
-image = SubResource("Image_hjw7m")
+image = SubResource("Image_bwq3c")
[sub_resource type="StyleBoxTexture" id="61"]
content_margin_left = 2.0
@@ -372,7 +372,7 @@
texture = SubResource("60")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_ak1j1"]
+[sub_resource type="Image" id="Image_7g2og"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -382,7 +382,7 @@
}
[sub_resource type="ImageTexture" id="63"]
-image = SubResource("Image_ak1j1")
+image = SubResource("Image_7g2og")
[sub_resource type="StyleBoxTexture" id="64"]
content_margin_left = 2.0
@@ -392,7 +392,7 @@
texture = SubResource("63")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_8tr7d"]
+[sub_resource type="Image" id="Image_1bn5a"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -402,7 +402,7 @@
}
[sub_resource type="ImageTexture" id="66"]
-image = SubResource("Image_8tr7d")
+image = SubResource("Image_1bn5a")
[sub_resource type="StyleBoxTexture" id="67"]
content_margin_left = 2.0
@@ -412,7 +412,7 @@
texture = SubResource("66")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_d01hu"]
+[sub_resource type="Image" id="Image_w71i6"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -422,7 +422,7 @@
}
[sub_resource type="ImageTexture" id="69"]
-image = SubResource("Image_d01hu")
+image = SubResource("Image_w71i6")
[sub_resource type="StyleBoxTexture" id="70"]
content_margin_left = 0.0
@@ -446,7 +446,7 @@
content_margin_right = 4.0
content_margin_bottom = 4.0
-[sub_resource type="Image" id="Image_5ym1c"]
+[sub_resource type="Image" id="Image_aomlc"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 228, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 228, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 18, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 17, 255, 255, 255, 186, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 191, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 186, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 189, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 77, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 77, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -456,7 +456,7 @@
}
[sub_resource type="ImageTexture" id="56"]
-image = SubResource("Image_5ym1c")
+image = SubResource("Image_aomlc")
[sub_resource type="StyleBoxFlat" id="57"]
content_margin_left = 6.0
diff --git a/DungeonShooting_Godot/scene/Main.tscn b/DungeonShooting_Godot/scene/Main.tscn
index 21417bf..23049fa 100644
--- a/DungeonShooting_Godot/scene/Main.tscn
+++ b/DungeonShooting_Godot/scene/Main.tscn
@@ -1,5 +1,6 @@
-[gd_scene load_steps=5 format=3 uid="uid://lbe753cb8heb"]
+[gd_scene load_steps=6 format=3 uid="uid://lbe753cb8heb"]
+[ext_resource type="PackedScene" uid="uid://degtollvmf37f" path="res://resource/map/tileMaps/testGroup/battle/Room1.tscn" id="2_b3k0t"]
[ext_resource type="Script" path="res://src/game/GameApplication.cs" id="3"]
[ext_resource type="Script" path="res://src/game/camera/GameCamera.cs" id="4_3gsi2"]
@@ -26,6 +27,7 @@
SubViewportContainer = NodePath("ViewCanvas/SubViewportContainer")
SceneRoot = NodePath("ViewCanvas/SubViewportContainer/SubViewport/SceneRoot")
GlobalNodeRoot = NodePath("GlobalNodeRoot")
+DesignatedRoom = Array[PackedScene]([ExtResource("2_b3k0t")])
[node name="ViewCanvas" type="CanvasLayer" parent="."]
layer = -1
diff --git a/DungeonShooting_Godot/src/framework/generator/ResourcePathGenerator.cs b/DungeonShooting_Godot/src/framework/generator/ResourcePathGenerator.cs
index dd4dfde..088ed07 100644
--- a/DungeonShooting_Godot/src/framework/generator/ResourcePathGenerator.cs
+++ b/DungeonShooting_Godot/src/framework/generator/ResourcePathGenerator.cs
@@ -15,7 +15,7 @@
//支持后缀
private static string[] suffix =
{
- ".png", ".jpg", ".txt", ".json", ".ini", ".tscn", ".tres", ".otf", ".gdshader", ".ogg", ".mp3", ".wav", ".svg"
+ ".png", ".jpg", ".txt", ".json", ".ini", ".tscn", ".tres", ".otf", ".gdshader", ".ogg", ".mp3", ".wav", ".svg", ".ttf", ".otf"
};
//排除第一层的文件夹
private static string[] exclude =
diff --git a/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs b/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
index 6fe35e7..380917d 100644
--- a/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
+++ b/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
@@ -21,7 +21,7 @@
///
/// 生成的房间数量
///
- private int _maxCount = 15;
+ private int _maxCount = 20;
//用于标记地图上的坐标是否被占用
private Grid _roomGrid { get; } = new Grid();
@@ -63,7 +63,10 @@
//房间组名称
private string _groupName;
private DungeonRoomGroup _roomGroup;
-
+
+ //指定只能生成的房间
+ private static List _designatedRoom;
+
private enum GenerateRoomErrorCode
{
NoError,
@@ -79,26 +82,40 @@
// NoProperDoor,
}
+#if TOOLS
+ ///
+ /// 用于调试, 设置生成器只能生成哪些房间
+ ///
+ public static void SetDesignatedRoom(List list)
+ {
+ _designatedRoom = list;
+ }
+#endif
+
public DungeonGenerator(string groupName)
{
_groupName = groupName;
_roomGroup = GameApplication.Instance.RoomConfig[_groupName];
-
+
//验证该组是否满足生成地牢的条件
if (_roomGroup.InletList.Count == 0)
{
throw new Exception("当前组'" + groupName + "'中没有起始房间, 不能生成地牢!");
}
- else if (_roomGroup.OutletList.Count == 0)
+ //没有指定房间
+ if (_designatedRoom == null || _designatedRoom.Count == 0)
{
- throw new Exception("当前组'" + groupName + "'中没有结束房间, 不能生成地牢!");
- }
- else if (_roomGroup.BattleList.Count == 0)
- {
- throw new Exception("当前组'" + groupName + "'中没有战斗房间, 不能生成地牢!");
+ if (_roomGroup.OutletList.Count == 0)
+ {
+ throw new Exception("当前组'" + groupName + "'中没有结束房间, 不能生成地牢!");
+ }
+ else if (_roomGroup.BattleList.Count == 0)
+ {
+ throw new Exception("当前组'" + groupName + "'中没有战斗房间, 不能生成地牢!");
+ }
}
}
-
+
///
/// 遍历所有房间
///
@@ -170,13 +187,23 @@
return GenerateRoomErrorCode.RoomFull;
}
- //随机选择一个房间
- var list = _roomGroup.GetRoomList(roomType);
- if (list.Count == 0) //如果没有指定类型的房间, 就生成战斗房间
+ DungeonRoomSplit roomSplit;
+ //没有指定房间
+ if (roomType == DungeonRoomType.Inlet || _designatedRoom == null || _designatedRoom.Count == 0)
{
- list = _roomGroup.BattleList;
+ //随机选择一个房间
+ var list = _roomGroup.GetRoomList(roomType);
+ if (list.Count == 0) //如果没有指定类型的房间, 就生成战斗房间
+ {
+ list = _roomGroup.BattleList;
+ }
+ roomSplit = Utils.RandomChoose(list);
}
- var roomSplit = Utils.RandomChoose(list);
+ else //指定了房间
+ {
+ roomSplit = Utils.RandomChoose(_designatedRoom);
+ }
+
var room = new RoomInfo(_count, roomSplit);
//房间大小
diff --git a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
index 417e48b..47c852e 100644
--- a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
+++ b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
@@ -39,6 +39,18 @@
public float DelayTime = 0;
///
+ /// 物体会在该矩形区域内随机位置生成
+ ///
+ [Export]
+ public Vector2I BirthRect = Vector2I.Zero;
+
+ ///
+ /// 绘制的颜色
+ ///
+ [Export]
+ public Color DrawColor = new Color(1, 1, 1, 1);
+
+ ///
/// 物体初始海拔高度
///
[ExportGroup("Vertical")]
@@ -55,11 +67,6 @@
/// 当前标记所在Tile节点
///
public TileMap TileRoot;
-
- ///
- /// 绘制的颜色
- ///
- protected Color DrawColor = new Color(0.4F, 0.56078434F, 0.8784314F);
//是否已经结束
private bool _isOver = true;
@@ -67,6 +74,9 @@
private float _timer = 0;
private RoomInfo _tempRoom;
+ //绘制的字体
+ private static Font _drawFont;
+
///
/// 获取物体Id
///
@@ -149,7 +159,19 @@
protected ActivityObject CreateActivityObject()
{
var instance = ActivityObject.Create(GetItemId());
- instance.Position = Position;
+ var pos = Position;
+ if (BirthRect != Vector2I.Zero)
+ {
+ instance.Position = new Vector2(
+ Utils.RandomRangeInt((int)pos.X - BirthRect.X / 2, (int)pos.X + BirthRect.X / 2),
+ Utils.RandomRangeInt((int)pos.Y - BirthRect.Y / 2, (int)pos.Y + BirthRect.Y / 2)
+ );
+ }
+ else
+ {
+ instance.Position = pos;
+ }
+
instance.VerticalSpeed = VerticalSpeed;
instance.Altitude = Altitude;
return instance;
@@ -160,8 +182,21 @@
{
if (Engine.IsEditorHint() || GameApplication.Instance.Debug)
{
- DrawLine(new Vector2(-5, -5), new Vector2(5, 5), DrawColor, 2f);
- DrawLine(new Vector2(-5, 5), new Vector2(5, -5), DrawColor, 2f);
+ DrawLine(new Vector2(-2, -2), new Vector2(2, 2), DrawColor, 1f);
+ DrawLine(new Vector2(-2, 2), new Vector2(2, -2), DrawColor, 1f);
+
+ if (BirthRect != Vector2.Zero)
+ {
+ var c = DrawColor;
+ c.A = 0.5f;
+ DrawRect(new Rect2(-BirthRect / 2, BirthRect), c, false, 0.5f);
+ }
+
+ if (_drawFont == null)
+ {
+ _drawFont = ResourceManager.Load(ResourcePath.Silver_ttf);
+ }
+ DrawString(_drawFont, new Vector2(-14, 12), WaveNumber.ToString(), HorizontalAlignment.Center, 28, 14);
}
}
#endif
diff --git a/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs b/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs
index 8165a49..8359e1a 100644
--- a/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs
+++ b/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs
@@ -50,7 +50,6 @@
public override void _Ready()
{
- DrawColor = Colors.Red;
Type = ActivityIdPrefix.ActivityPrefixType.Enemy;
Layer = RoomLayerEnum.YSortLayer;
}
diff --git a/DungeonShooting_Godot/src/framework/map/mark/PlayerBirthMark.cs b/DungeonShooting_Godot/src/framework/map/mark/PlayerBirthMark.cs
index fd51265..b654732 100644
--- a/DungeonShooting_Godot/src/framework/map/mark/PlayerBirthMark.cs
+++ b/DungeonShooting_Godot/src/framework/map/mark/PlayerBirthMark.cs
@@ -9,7 +9,6 @@
{
public override void _Ready()
{
- DrawColor = Colors.Green;
}
public override void Doing(RoomInfo roomInfo)
diff --git a/DungeonShooting_Godot/src/game/GameApplication.cs b/DungeonShooting_Godot/src/game/GameApplication.cs
index 56802c0..78c8b1d 100644
--- a/DungeonShooting_Godot/src/game/GameApplication.cs
+++ b/DungeonShooting_Godot/src/game/GameApplication.cs
@@ -1,4 +1,5 @@
+using System;
using System.Collections.Generic;
using System.Text.Json;
using Godot;
@@ -31,6 +32,13 @@
/// 全局根节点
///
[Export] public Node2D GlobalNodeRoot;
+
+ ///
+ /// 测试用, 指定生成的房间
+ ///
+ [ExportGroup("Test")]
+ [Export]
+ public PackedScene[] DesignatedRoom;
///
/// 鼠标指针
@@ -48,6 +56,11 @@
public Dictionary RoomConfig { get; private set; }
///
+ /// 房间配置数据, key: 模板房间资源路径
+ ///
+ public Dictionary RoomConfigMap { get; private set; }
+
+ ///
/// 游戏视图大小
///
public Vector2 ViewportSize { get; private set; } = new Vector2(480, 270);
@@ -81,6 +94,10 @@
GetWindow().SizeChanged += OnWindowSizeChanged;
RefreshSubViewportSize();
+#if TOOLS
+ InitDesignatedRoom();
+#endif
+
//初始化ui
UiManager.Init();
@@ -132,6 +149,19 @@
var asText = file.GetAsText();
RoomConfig = JsonSerializer.Deserialize>(asText);
file.Dispose();
+
+ //初始化RoomConfigMap
+ RoomConfigMap = new Dictionary();
+ foreach (var dungeonRoomGroup in RoomConfig)
+ {
+ foreach (var dungeonRoomType in Enum.GetValues())
+ {
+ foreach (var dungeonRoomSplit in dungeonRoomGroup.Value.GetRoomList(dungeonRoomType))
+ {
+ RoomConfigMap.Add(dungeonRoomSplit.ScenePath, dungeonRoomSplit);
+ }
+ }
+ }
}
//窗体大小改变
@@ -152,4 +182,24 @@
SubViewportContainer.Scale = new Vector2(PixelScale, PixelScale);
SubViewportContainer.Size = s;
}
+
+#if TOOLS
+ //调试模式下, 指定生成哪些房间
+ private void InitDesignatedRoom()
+ {
+ if (DesignatedRoom != null && DesignatedRoom.Length > 0)
+ {
+ var list = new List();
+ foreach (var packedScene in DesignatedRoom)
+ {
+ if (RoomConfigMap.TryGetValue(packedScene.ResourcePath, out var dungeonRoomSplit))
+ {
+ list.Add(dungeonRoomSplit);
+ }
+ }
+ DungeonGenerator.SetDesignatedRoom(list);
+ }
+ }
+#endif
+
}
diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
index 415bfb9..7d89582 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
@@ -17,7 +17,6 @@
public const string prefab_test_MoveComponent_tscn = "res://prefab/test/MoveComponent.tscn";
public const string prefab_test_TestActivity_tscn = "res://prefab/test/TestActivity.tscn";
public const string prefab_ui_EditorTools_tscn = "res://prefab/ui/EditorTools.tscn";
- public const string prefab_ui_MyUi_tscn = "res://prefab/ui/MyUi.tscn";
public const string prefab_ui_RoomUI_tscn = "res://prefab/ui/RoomUI.tscn";
public const string prefab_weapon_Knife_tscn = "res://prefab/weapon/Knife.tscn";
public const string prefab_weapon_Weapon_tscn = "res://prefab/weapon/Weapon.tscn";
@@ -35,18 +34,22 @@
public const string resource_font_cn_font_18_tres = "res://resource/font/cn_font_18.tres";
public const string resource_font_cn_font_36_tres = "res://resource/font/cn_font_36.tres";
public const string resource_map_RoomConfig_json = "res://resource/map/RoomConfig.json";
- public const string resource_map_tiledata_Room1_json = "res://resource/map/tiledata/Room1.json";
- public const string resource_map_tiledata_Room2_json = "res://resource/map/tiledata/Room2.json";
- public const string resource_map_tiledata_Room3_json = "res://resource/map/tiledata/Room3.json";
- public const string resource_map_tiledata_Room4_json = "res://resource/map/tiledata/Room4.json";
- public const string resource_map_tiledata_Room5_json = "res://resource/map/tiledata/Room5.json";
- public const string resource_map_tiledata_Room6_json = "res://resource/map/tiledata/Room6.json";
- public const string resource_map_tileMaps_Room1_tscn = "res://resource/map/tileMaps/Room1.tscn";
- public const string resource_map_tileMaps_Room2_tscn = "res://resource/map/tileMaps/Room2.tscn";
- public const string resource_map_tileMaps_Room3_tscn = "res://resource/map/tileMaps/Room3.tscn";
- public const string resource_map_tileMaps_Room4_tscn = "res://resource/map/tileMaps/Room4.tscn";
- public const string resource_map_tileMaps_Room5_tscn = "res://resource/map/tileMaps/Room5.tscn";
- public const string resource_map_tileMaps_Room6_tscn = "res://resource/map/tileMaps/Room6.tscn";
+ public const string resource_map_tiledata_testGroup_battle_Room1_json = "res://resource/map/tiledata/testGroup/battle/Room1.json";
+ public const string resource_map_tiledata_testGroup_battle_Room2_json = "res://resource/map/tiledata/testGroup/battle/Room2.json";
+ public const string resource_map_tiledata_testGroup_battle_Room3_json = "res://resource/map/tiledata/testGroup/battle/Room3.json";
+ public const string resource_map_tiledata_testGroup_battle_Room4_json = "res://resource/map/tiledata/testGroup/battle/Room4.json";
+ public const string resource_map_tiledata_testGroup_battle_Room5_json = "res://resource/map/tiledata/testGroup/battle/Room5.json";
+ public const string resource_map_tiledata_testGroup_battle_Room6_json = "res://resource/map/tiledata/testGroup/battle/Room6.json";
+ public const string resource_map_tiledata_testGroup_inlet_Room1_json = "res://resource/map/tiledata/testGroup/inlet/Room1.json";
+ public const string resource_map_tiledata_testGroup_outlet_Room1_json = "res://resource/map/tiledata/testGroup/outlet/Room1.json";
+ public const string resource_map_tileMaps_testGroup_battle_Room1_tscn = "res://resource/map/tileMaps/testGroup/battle/Room1.tscn";
+ public const string resource_map_tileMaps_testGroup_battle_Room2_tscn = "res://resource/map/tileMaps/testGroup/battle/Room2.tscn";
+ public const string resource_map_tileMaps_testGroup_battle_Room3_tscn = "res://resource/map/tileMaps/testGroup/battle/Room3.tscn";
+ public const string resource_map_tileMaps_testGroup_battle_Room4_tscn = "res://resource/map/tileMaps/testGroup/battle/Room4.tscn";
+ public const string resource_map_tileMaps_testGroup_battle_Room5_tscn = "res://resource/map/tileMaps/testGroup/battle/Room5.tscn";
+ public const string resource_map_tileMaps_testGroup_battle_Room6_tscn = "res://resource/map/tileMaps/testGroup/battle/Room6.tscn";
+ public const string resource_map_tileMaps_testGroup_inlet_Room1_tscn = "res://resource/map/tileMaps/testGroup/inlet/Room1.tscn";
+ public const string resource_map_tileMaps_testGroup_outlet_Room1_tscn = "res://resource/map/tileMaps/testGroup/outlet/Room1.tscn";
public const string resource_map_tileset_TileSet1_tres = "res://resource/map/tileset/TileSet1.tres";
public const string resource_materlal_Blend_gdshader = "res://resource/materlal/Blend.gdshader";
public const string resource_materlal_Blend_tres = "res://resource/materlal/Blend.tres";
@@ -277,5 +280,6 @@
public const string default_bus_layout_tres = "res://default_bus_layout.tres";
public const string default_env_tres = "res://default_env.tres";
public const string icon_png = "res://icon.png";
+ public const string Silver_ttf = "res://Silver.ttf";
public const string SourceHanSerifCNSemiBold_otf = "res://SourceHanSerifCN-SemiBold.otf";
}
\ No newline at end of file