diff --git "a/DungeonShooting_Document/\345\274\200\345\217\221\346\227\245\345\277\227.md" "b/DungeonShooting_Document/\345\274\200\345\217\221\346\227\245\345\277\227.md"
index e40e569..63f6444 100644
--- "a/DungeonShooting_Document/\345\274\200\345\217\221\346\227\245\345\277\227.md"
+++ "b/DungeonShooting_Document/\345\274\200\345\217\221\346\227\245\345\277\227.md"
@@ -1,5 +1,51 @@
---
+### 2024-2-25
+游戏正式起名为《枪火地牢》!
+项目从4.2升级到4.2.1, 本次更新大量内容, 地牢编辑器2.0, 游戏大厅, 奖励房间, 自定义地牢生成规则, 地牢装饰等, 所以开发周期来到了两个半月
+主要工作内容如下:
+* 地牢编辑器2.0正式支持47格Tile的平铺地形, 完整的新增功能:
+ * 新增TileSet编辑器, 功能如下:
+ * 导入外部图像, 并进行裁剪
+ * 编辑自动平铺地形(2x2, 3x3)
+ * 编辑图块组合
+ * 烘焙静态导航网格
+ * TileMap编辑器更新:
+ * 支持选择TileSet
+ * 支持在自定义层级绘制图块
+ * 支持自由绘制TileSet中的纹理图块
+ * 支持绘制TileSet中的自定义平铺地形(2x2, 3x3)
+ * 支持绘制TileSet中的组合图块
+ * 支持配置自动填充数据, 生成怪和奖励交给随机池控制
+ * 支持配置随机物体的标记
+ * 生成墙壁高度改为2格高
+ * 标记物体显示图标
+ * 地牢房间管理器更新:
+ * 支持删除地牢组
+ * 删除地牢组/地牢房间添加延时确定, 防止用户误删
+ * 创建房间添加默认预设
+ * 地牢生成器新功能
+ * 生成奖励/商店房间(商店目前只是占位)
+ * 支持自定义逻辑控制房间生成
+ * 随机池功能, 控制整个游戏奖惩
+* 新增5把武器(音效特性还没完全做完)
+ * P90: 射速高, 弹夹容量大
+ * (暂未起名): 发色彩虹子弹
+ * M1型热能狙击枪: 发射可反弹和穿透的子弹
+ * 左轮: 基础抢, 性能较弱
+ * 木质短弓: 蓄力拉弓射击, 箭会插在目标身上, 目标死亡时可回收箭
+* 击杀敌人掉落金币, 玩家会自动拾取金币, Ui血条下方显示金币数量
+* 将excel导出工具执行流程改为先动态编译工具源码在执行, 这样导出工具就不用再打包了
+* 将excel导出工具库依赖改为使用`Aspose.Cells`, 这个库在执行导出excel不会修改excel文件内容, 也就是不会被git侦测到修改
+* 新增`InputAction`, 用于控制用户输入行为
+* 更新门素材
+* 新增游戏大厅流程, 进入游戏首先进入大厅, 在通过大厅的地牢入口进入地牢
+* 修复`UiGrid`和部分Ui会产生游离节点的bug
+* 修复Mac运行游戏在敌人死亡时游戏会卡死的bug
+* 修复Mac运行游戏地上素材闪烁失帧的bug
+* 支持在编辑器中放置`ActivityObject`实例, 通过`ActivityInstance`节点实现
+
+---
### 2023-12-07
项目正式从Godot4.2beta升级到4.2, 这一个半月主要工作内容:
* 新增武器:
diff --git a/DungeonShooting_Godot/addons/dungeonShooting_plugin/Plugin.cs b/DungeonShooting_Godot/addons/dungeonShooting_plugin/Plugin.cs
index af4f4ec..6e9581b 100644
--- a/DungeonShooting_Godot/addons/dungeonShooting_plugin/Plugin.cs
+++ b/DungeonShooting_Godot/addons/dungeonShooting_plugin/Plugin.cs
@@ -42,18 +42,12 @@
//自定义节点
private CustomTypeInfo[] _customTypeInfos = new CustomTypeInfo[]
{
- // new CustomTypeInfo(
- // "ActivityMark",
- // "Node2D",
- // "res://src/framework/map/mark/ActivityMark.cs",
- // "res://addons/dungeonShooting_plugin/Mark.svg"
- // ),
- // new CustomTypeInfo(
- // "EnemyMark",
- // "Node2D",
- // "res://src/framework/map/mark/EnemyMark.cs",
- // "res://addons/dungeonShooting_plugin/Mark.svg"
- // ),
+ new CustomTypeInfo(
+ "ActivityInstance",
+ "Node2D",
+ "res://src/framework/activity/ActivityInstance.cs",
+ "res://addons/dungeonShooting_plugin/Mark.svg"
+ ),
};
public override void _Process(double delta)
diff --git a/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ExcelGenerator.cs b/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ExcelGenerator.cs
index 21df908..9be0e02 100644
--- a/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ExcelGenerator.cs
+++ b/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ExcelGenerator.cs
@@ -95,8 +95,18 @@
private static int compilerTool(string csProjectPath, string rid, string outputPath)
{
//dotnet publish excelTool -c Release -r win-x64 -o ./excelTool/publish/win-x64
+ //dotnet publish excelTool -c Release -r osx-x64 -o excelTool/publish/osx-x64
+ //dotnet publish excelTool -c Release -r osx-x64 --self-contained true -p:PublishSingleFile=true -o excelTool/publish/osx-x64
var outLog = new Array();
- var result = OS.Execute("dotnet", new string[] { "publish", csProjectPath, "-c", "Release", "-r", rid, "-o", outputPath }, outLog);
+ var result = OS.Execute("dotnet", new string[]
+ {
+ "publish", csProjectPath,
+ "-c", "Release", "-r", rid,
+ "--self-contained", "true",
+ "-p:PublishSingleFile=true",
+ "-o", outputPath
+ }, outLog);
+ //var result = OS.Execute("dotnet", new string[] { "publish", csProjectPath, "-c", "Release", "-r", rid, "-o", outputPath }, outLog);
foreach (var variant in outLog)
{
GD.Print(variant);
diff --git a/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ResourcePathGenerator.cs b/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ResourcePathGenerator.cs
index e0e6599..0cf335d 100644
--- a/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ResourcePathGenerator.cs
+++ b/DungeonShooting_Godot/addons/dungeonShooting_plugin/generator/ResourcePathGenerator.cs
@@ -45,7 +45,8 @@
"addons",
".godot",
".vs",
- "resource/map"
+ "resource/map",
+ "excelTool"
};
private static string resultStr = "";
diff --git a/DungeonShooting_Godot/excel/ActivityMaterial.xlsx b/DungeonShooting_Godot/excel/ActivityMaterial.xlsx
index b23fc4c..16e6778 100644
--- a/DungeonShooting_Godot/excel/ActivityMaterial.xlsx
+++ b/DungeonShooting_Godot/excel/ActivityMaterial.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/AiAttackAttr.xlsx b/DungeonShooting_Godot/excel/AiAttackAttr.xlsx
index 937aafc..b9daab6 100644
--- a/DungeonShooting_Godot/excel/AiAttackAttr.xlsx
+++ b/DungeonShooting_Godot/excel/AiAttackAttr.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/BulletBase.xlsx b/DungeonShooting_Godot/excel/BulletBase.xlsx
index 65ac36d..65f4af2 100644
--- a/DungeonShooting_Godot/excel/BulletBase.xlsx
+++ b/DungeonShooting_Godot/excel/BulletBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/EnemyBase.xlsx b/DungeonShooting_Godot/excel/EnemyBase.xlsx
index e54451e..362bdeb 100644
--- a/DungeonShooting_Godot/excel/EnemyBase.xlsx
+++ b/DungeonShooting_Godot/excel/EnemyBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/WeaponBase.xlsx b/DungeonShooting_Godot/excel/WeaponBase.xlsx
index 3d8473e..8f61a7a 100644
--- a/DungeonShooting_Godot/excel/WeaponBase.xlsx
+++ b/DungeonShooting_Godot/excel/WeaponBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/prefab/map/RoomDoor_E.tscn b/DungeonShooting_Godot/prefab/map/RoomDoor_E.tscn
index 7f97af2..e90e3fd 100644
--- a/DungeonShooting_Godot/prefab/map/RoomDoor_E.tscn
+++ b/DungeonShooting_Godot/prefab/map/RoomDoor_E.tscn
@@ -23,7 +23,7 @@
shader_parameter/blend = Color(1, 1, 1, 1)
shader_parameter/schedule = 0.0
shader_parameter/modulate = Color(1, 1, 1, 1)
-shader_parameter/show_outline = false
+shader_parameter/show_outline = true
shader_parameter/outline_color = Color(0, 0, 0, 1)
shader_parameter/outline_rainbow = false
shader_parameter/outline_use_blend = true
@@ -31,7 +31,7 @@
[sub_resource type="RectangleShape2D" id="RectangleShape2D_opsb6"]
resource_local_to_scene = true
-size = Vector2(14, 40)
+size = Vector2(16, 40)
[node name="RoomDoor_N" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
script = ExtResource("1_4c6sw")
@@ -42,25 +42,22 @@
[node name="ShadowSprite" type="Sprite2D" parent="."]
z_index = -1
material = SubResource("ShaderMaterial_yvwpk")
+position = Vector2(-8, 0)
[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
material = SubResource("ShaderMaterial_t4ayq")
-position = Vector2(9, -10)
+position = Vector2(13, 10)
sprite_frames = ExtResource("3_pjvd8")
-animation = &"openDoor"
+animation = &"closeDoor"
autoplay = "default"
-frame = 4
-frame_progress = 1.0
[node name="AnimatedSpriteDown" type="AnimatedSprite2D" parent="."]
material = SubResource("ShaderMaterial_t4ayq")
-position = Vector2(9, -10)
+position = Vector2(-9, 2)
sprite_frames = ExtResource("4_ln8k4")
-animation = &"openDoor"
autoplay = "default"
-frame = 4
-frame_progress = 1.0
+offset = Vector2(0.5, 2.08165e-12)
[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(0, 4)
+position = Vector2(-6, 13)
shape = SubResource("RectangleShape2D_opsb6")
diff --git a/DungeonShooting_Godot/prefab/map/RoomDoor_N.tscn b/DungeonShooting_Godot/prefab/map/RoomDoor_N.tscn
index 0c6565e..3f45c24 100644
--- a/DungeonShooting_Godot/prefab/map/RoomDoor_N.tscn
+++ b/DungeonShooting_Godot/prefab/map/RoomDoor_N.tscn
@@ -10,10 +10,11 @@
shader_parameter/blend = Color(0, 0, 0, 0.470588)
shader_parameter/schedule = 1.0
shader_parameter/modulate = Color(1, 1, 1, 1)
-shader_parameter/show_outline = false
+shader_parameter/show_outline = true
shader_parameter/outline_color = Color(0, 0, 0, 1)
shader_parameter/outline_rainbow = false
shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_t4ayq"]
resource_local_to_scene = true
@@ -21,14 +22,15 @@
shader_parameter/blend = Color(1, 1, 1, 1)
shader_parameter/schedule = 0.0
shader_parameter/modulate = Color(1, 1, 1, 1)
-shader_parameter/show_outline = false
+shader_parameter/show_outline = true
shader_parameter/outline_color = Color(0, 0, 0, 1)
shader_parameter/outline_rainbow = false
shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
[sub_resource type="RectangleShape2D" id="RectangleShape2D_opsb6"]
resource_local_to_scene = true
-size = Vector2(32, 23)
+size = Vector2(32, 16)
[node name="RoomDoor_N" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
script = ExtResource("1_220be")
@@ -42,13 +44,9 @@
[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
material = SubResource("ShaderMaterial_t4ayq")
-position = Vector2(0, -8)
sprite_frames = ExtResource("3_apluc")
-animation = &"closeDoor"
autoplay = "default"
-frame = 4
-frame_progress = 1.0
[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(0, -3.5)
+position = Vector2(0, 4)
shape = SubResource("RectangleShape2D_opsb6")
diff --git a/DungeonShooting_Godot/prefab/map/RoomDoor_S.tscn b/DungeonShooting_Godot/prefab/map/RoomDoor_S.tscn
index a2996d7..0c2f4ea 100644
--- a/DungeonShooting_Godot/prefab/map/RoomDoor_S.tscn
+++ b/DungeonShooting_Godot/prefab/map/RoomDoor_S.tscn
@@ -2,7 +2,7 @@
[ext_resource type="Script" path="res://src/game/room/RoomDoor.cs" id="1_f3qbq"]
[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_6vvcd"]
-[ext_resource type="SpriteFrames" uid="uid://ciqijjxup5356" path="res://resource/spriteFrames/other/RoomDoor_S.tres" id="3_hhmd5"]
+[ext_resource type="SpriteFrames" uid="uid://xs72aopsgpg6" path="res://resource/spriteFrames/other/RoomDoor_N.tres" id="3_vbbxp"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_yvwpk"]
resource_local_to_scene = true
@@ -14,6 +14,7 @@
shader_parameter/outline_color = Color(0, 0, 0, 1)
shader_parameter/outline_rainbow = false
shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_t4ayq"]
resource_local_to_scene = true
@@ -21,14 +22,15 @@
shader_parameter/blend = Color(1, 1, 1, 1)
shader_parameter/schedule = 0.0
shader_parameter/modulate = Color(1, 1, 1, 1)
-shader_parameter/show_outline = false
+shader_parameter/show_outline = true
shader_parameter/outline_color = Color(0, 0, 0, 1)
shader_parameter/outline_rainbow = false
shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
[sub_resource type="RectangleShape2D" id="RectangleShape2D_opsb6"]
resource_local_to_scene = true
-size = Vector2(32, 23)
+size = Vector2(32, 16)
[node name="RoomDoor_N" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
script = ExtResource("1_f3qbq")
@@ -42,13 +44,9 @@
[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
material = SubResource("ShaderMaterial_t4ayq")
-position = Vector2(0, -8)
-sprite_frames = ExtResource("3_hhmd5")
-animation = &"openDoor"
+sprite_frames = ExtResource("3_vbbxp")
autoplay = "default"
-frame = 4
-frame_progress = 1.0
[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(0, -3.5)
+position = Vector2(0, 9)
shape = SubResource("RectangleShape2D_opsb6")
diff --git a/DungeonShooting_Godot/prefab/map/RoomDoor_W.tscn b/DungeonShooting_Godot/prefab/map/RoomDoor_W.tscn
index f401bfb..8b50dba 100644
--- a/DungeonShooting_Godot/prefab/map/RoomDoor_W.tscn
+++ b/DungeonShooting_Godot/prefab/map/RoomDoor_W.tscn
@@ -2,8 +2,8 @@
[ext_resource type="Script" path="res://src/game/room/RoomDoor.cs" id="1_agux2"]
[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_wx2w3"]
-[ext_resource type="SpriteFrames" uid="uid://cpdt5ywrsruu3" path="res://resource/spriteFrames/other/RoomDoor_W_Up.tres" id="3_veggu"]
-[ext_resource type="SpriteFrames" uid="uid://qq3h0mh4r12i" path="res://resource/spriteFrames/other/RoomDoor_W_Down.tres" id="4_dnjb6"]
+[ext_resource type="SpriteFrames" uid="uid://3ps6h2f54qa5" path="res://resource/spriteFrames/other/RoomDoor_E_Up.tres" id="3_jquy0"]
+[ext_resource type="SpriteFrames" uid="uid://b34tddsmqnj8s" path="res://resource/spriteFrames/other/RoomDoor_E_Down.tres" id="4_6gcqk"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_yvwpk"]
resource_local_to_scene = true
@@ -23,7 +23,7 @@
shader_parameter/blend = Color(1, 1, 1, 1)
shader_parameter/schedule = 0.0
shader_parameter/modulate = Color(1, 1, 1, 1)
-shader_parameter/show_outline = false
+shader_parameter/show_outline = true
shader_parameter/outline_color = Color(0, 0, 0, 1)
shader_parameter/outline_rainbow = false
shader_parameter/outline_use_blend = true
@@ -31,7 +31,7 @@
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2ko2r"]
resource_local_to_scene = true
-size = Vector2(14, 40)
+size = Vector2(16, 40)
[node name="RoomDoor_N" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
script = ExtResource("1_agux2")
@@ -42,25 +42,24 @@
[node name="ShadowSprite" type="Sprite2D" parent="."]
z_index = -1
material = SubResource("ShaderMaterial_yvwpk")
+position = Vector2(8, 0)
[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
material = SubResource("ShaderMaterial_t4ayq")
-position = Vector2(-9, -10)
-sprite_frames = ExtResource("3_veggu")
-animation = &"openDoor"
+position = Vector2(-13, 10)
+scale = Vector2(-1, 1)
+sprite_frames = ExtResource("3_jquy0")
+animation = &"closeDoor"
autoplay = "default"
-frame = 4
-frame_progress = 1.0
[node name="AnimatedSpriteDown" type="AnimatedSprite2D" parent="."]
material = SubResource("ShaderMaterial_t4ayq")
-position = Vector2(-9, -10)
-sprite_frames = ExtResource("4_dnjb6")
-animation = &"openDoor"
+position = Vector2(8, 2)
+scale = Vector2(-1, 1)
+sprite_frames = ExtResource("4_6gcqk")
autoplay = "default"
-frame = 4
-frame_progress = 1.0
+offset = Vector2(-0.5, 2.08165e-12)
[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(0, 4)
+position = Vector2(6, 13)
shape = SubResource("RectangleShape2D_2ko2r")
diff --git a/DungeonShooting_Godot/prefab/role/template/EnemyTemplate.tscn b/DungeonShooting_Godot/prefab/role/template/EnemyTemplate.tscn
index 4247548..ae33b4a 100644
--- a/DungeonShooting_Godot/prefab/role/template/EnemyTemplate.tscn
+++ b/DungeonShooting_Godot/prefab/role/template/EnemyTemplate.tscn
@@ -21,6 +21,7 @@
[node name="EnemyTemplate" instance=ExtResource("1_5po38")]
collision_layer = 16
collision_mask = 25
+floor_stop_on_slope = false
[node name="AnimatedSprite" parent="." index="2"]
material = SubResource("ShaderMaterial_k8mt5")
@@ -35,7 +36,6 @@
[node name="FirePoint" type="Marker2D" parent="." index="8"]
[node name="NavigationPoint" type="Marker2D" parent="." index="9"]
-position = Vector2(0, -5)
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="NavigationPoint" index="0"]
path_desired_distance = 3.0
diff --git a/DungeonShooting_Godot/prefab/ui/Main.tscn b/DungeonShooting_Godot/prefab/ui/Main.tscn
index 364e28a..b3558c1 100644
--- a/DungeonShooting_Godot/prefab/ui/Main.tscn
+++ b/DungeonShooting_Godot/prefab/ui/Main.tscn
@@ -92,7 +92,7 @@
anchor_bottom = 1.0
offset_left = 23.0
offset_top = -100.0
-offset_right = 1943.0
+offset_right = 215.0
offset_bottom = -68.0
grow_vertical = 0
text = "b站:小李xlxl"
@@ -105,7 +105,7 @@
anchor_bottom = 1.0
offset_left = 23.0
offset_top = -55.0
-offset_right = 1943.0
+offset_right = 183.0
offset_bottom = -23.0
grow_vertical = 0
text = "GitHub源码"
diff --git a/DungeonShooting_Godot/prefab/ui/MapEditor.tscn b/DungeonShooting_Godot/prefab/ui/MapEditor.tscn
index 144e166..7af9347 100644
--- a/DungeonShooting_Godot/prefab/ui/MapEditor.tscn
+++ b/DungeonShooting_Godot/prefab/ui/MapEditor.tscn
@@ -10,14 +10,9 @@
[ext_resource type="PackedScene" uid="uid://b4u66mxndxbrg" path="res://prefab/ui/MapEditorTools.tscn" id="6_7pvgu"]
[ext_resource type="PackedScene" uid="uid://bb2ekkpxifd7g" path="res://prefab/ui/MapEditorMapLayer.tscn" id="7_ychtn"]
[ext_resource type="PackedScene" uid="uid://peo0n8bl15y5" path="res://prefab/ui/MapEditorMapMark.tscn" id="8_8tgeu"]
+[ext_resource type="NavigationPolygon" uid="uid://brpcle7mygiml" path="res://resource/navigation/NavigationPolygon.tres" id="8_t7nq5"]
[ext_resource type="PackedScene" uid="uid://tjbfj67t5akm" path="res://prefab/ui/MapEditorMapTile.tscn" id="10_4fu5v"]
-[sub_resource type="NavigationPolygon" id="NavigationPolygon_oidah"]
-resource_local_to_scene = true
-source_geometry_mode = 1
-source_geometry_group_name = &"navigation"
-cell_size = 4.0
-
[sub_resource type="Animation" id="Animation_o3btm"]
length = 0.001
tracks/0/type = "value"
@@ -217,6 +212,8 @@
[node name="SubViewport" type="SubViewport" parent="Bg/VBoxContainer/HSplitContainer/HSplitContainer2/HBoxContainer/Left/MarginContainer/MapView"]
handle_input_locally = false
+snap_2d_transforms_to_pixel = true
+snap_2d_vertices_to_pixel = true
canvas_item_default_texture_filter = 0
size = Vector2i(980, 1002)
render_target_update_mode = 4
@@ -230,7 +227,7 @@
[node name="NavigationRegion" type="NavigationRegion2D" parent="Bg/VBoxContainer/HSplitContainer/HSplitContainer2/HBoxContainer/Left/MarginContainer/MapView/SubViewport/TileMap"]
z_index = 10
-navigation_polygon = SubResource("NavigationPolygon_oidah")
+navigation_polygon = ExtResource("8_t7nq5")
[node name="ErrorCell" type="Sprite2D" parent="Bg/VBoxContainer/HSplitContainer/HSplitContainer2/HBoxContainer/Left/MarginContainer/MapView/SubViewport/TileMap"]
visible = false
@@ -285,7 +282,6 @@
[node name="MapEditorMapTile" parent="Bg/VBoxContainer/HSplitContainer/HSplitContainer2/Right/MarginContainer/TabContainer/MapTile" instance=ExtResource("10_4fu5v")]
layout_mode = 2
-Layer = 1
[node name="MapMark" type="MarginContainer" parent="Bg/VBoxContainer/HSplitContainer/HSplitContainer2/Right/MarginContainer/TabContainer"]
visible = false
diff --git a/DungeonShooting_Godot/prefab/ui/MapEditorMapTile.tscn b/DungeonShooting_Godot/prefab/ui/MapEditorMapTile.tscn
index 64027e4..49c7fd0 100644
--- a/DungeonShooting_Godot/prefab/ui/MapEditorMapTile.tscn
+++ b/DungeonShooting_Godot/prefab/ui/MapEditorMapTile.tscn
@@ -16,7 +16,6 @@
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_gtth6")
-Layer = null
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
diff --git a/DungeonShooting_Godot/prefab/ui/Setting.tscn b/DungeonShooting_Godot/prefab/ui/Setting.tscn
index d0eb890..1ecf5f0 100644
--- a/DungeonShooting_Godot/prefab/ui/Setting.tscn
+++ b/DungeonShooting_Godot/prefab/ui/Setting.tscn
@@ -1,7 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://bnwweusrc44xy"]
[ext_resource type="Script" path="res://src/game/ui/setting/SettingPanel.cs" id="1_ff0oi"]
-[ext_resource type="Texture2D" uid="uid://bd0kpqji660ta" path="res://resource/sprite/ui/commonIcon/Back.png" id="2_vgl60"]
+[ext_resource type="Texture2D" uid="uid://cajcnlimvoxk" path="res://resource/sprite/ui/commonIcon/Back.png" id="2_vgl60"]
[node name="Setting" type="Control"]
layout_mode = 3
@@ -315,7 +315,7 @@
[node name="Value" type="Label" parent="ScrollContainer/KeySetting/Key14"]
layout_mode = 2
-text = "Ctrl"
+text = "Shift"
[node name="Back" type="Button" parent="ScrollContainer/KeySetting"]
layout_mode = 2
diff --git a/DungeonShooting_Godot/prefab/ui/Settlement.tscn b/DungeonShooting_Godot/prefab/ui/Settlement.tscn
index a67e040..bc6b2ab 100644
--- a/DungeonShooting_Godot/prefab/ui/Settlement.tscn
+++ b/DungeonShooting_Godot/prefab/ui/Settlement.tscn
@@ -60,4 +60,4 @@
layout_mode = 2
focus_neighbor_bottom = NodePath("../Restart")
theme = ExtResource("2_63mpy")
-text = "回到主菜单"
+text = "回到大厅"
diff --git a/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn b/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn
index edf1550..9bb5cd2 100644
--- a/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn
+++ b/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn
@@ -194,7 +194,7 @@
layout_mode = 1
offset_top = 80.0
offset_right = 64.0
-offset_bottom = 96.0
+offset_bottom = 112.0
mouse_filter = 2
texture = ExtResource("5_xabgh")
diff --git a/DungeonShooting_Godot/project.godot b/DungeonShooting_Godot/project.godot
index 91ca834..7550fdd 100644
--- a/DungeonShooting_Godot/project.godot
+++ b/DungeonShooting_Godot/project.godot
@@ -24,7 +24,6 @@
window/size/viewport_width=1920
window/size/viewport_height=1080
window/stretch/aspect="keep_width"
-window/vsync/vsync_mode=0
[dotnet]
@@ -210,7 +209,7 @@
}
map={
"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":4,"axis_value":1.0,"script":null)
]
}
diff --git a/DungeonShooting_Godot/resource/config/AiAttackAttr.json b/DungeonShooting_Godot/resource/config/AiAttackAttr.json
index ebc5579..1d78577 100644
--- a/DungeonShooting_Godot/resource/config/AiAttackAttr.json
+++ b/DungeonShooting_Godot/resource/config/AiAttackAttr.json
@@ -5,10 +5,10 @@
"LockingStand": true,
"FiringStand": true,
"ShowSubline": false,
- "LockingTime": 1,
+ "LockingTime": 0.5,
"LockAngleTime": 0,
"AttackLockAngle": true,
- "BulletSpeedScale": 0.4,
+ "BulletSpeedScale": 0.3,
"AmmoConsumptionProbability": 0
},
{
@@ -17,10 +17,10 @@
"LockingStand": true,
"FiringStand": true,
"ShowSubline": false,
- "LockingTime": 2,
+ "LockingTime": 1,
"LockAngleTime": 0,
"AttackLockAngle": false,
- "BulletSpeedScale": 0.35,
+ "BulletSpeedScale": 0.25,
"AmmoConsumptionProbability": 0
},
{
@@ -29,10 +29,10 @@
"LockingStand": true,
"FiringStand": true,
"ShowSubline": false,
- "LockingTime": 1,
+ "LockingTime": 0.4,
"LockAngleTime": 0,
"AttackLockAngle": false,
- "BulletSpeedScale": 0.35,
+ "BulletSpeedScale": 0.3,
"AmmoConsumptionProbability": 0
},
{
@@ -41,10 +41,10 @@
"LockingStand": false,
"FiringStand": false,
"ShowSubline": false,
- "LockingTime": 0.7,
+ "LockingTime": 0.3,
"LockAngleTime": 0,
"AttackLockAngle": true,
- "BulletSpeedScale": 0.35,
+ "BulletSpeedScale": 0.3,
"AmmoConsumptionProbability": 0
},
{
@@ -53,22 +53,22 @@
"LockingStand": true,
"FiringStand": true,
"ShowSubline": true,
- "LockingTime": 1.5,
- "LockAngleTime": 0.5,
+ "LockingTime": 1,
+ "LockAngleTime": 0.3,
"AttackLockAngle": true,
- "BulletSpeedScale": 0.5,
+ "BulletSpeedScale": 0.9,
"AmmoConsumptionProbability": 0
},
{
"Id": "0006",
- "Remark": "",
+ "Remark": "\u6C64\u59C6\u900A",
"LockingStand": true,
"FiringStand": true,
"ShowSubline": false,
"LockingTime": 0.5,
- "LockAngleTime": 0.5,
+ "LockAngleTime": 0,
"AttackLockAngle": false,
- "BulletSpeedScale": 0.35,
+ "BulletSpeedScale": 0.25,
"AmmoConsumptionProbability": 0
},
{
@@ -77,7 +77,7 @@
"LockingStand": true,
"FiringStand": true,
"ShowSubline": true,
- "LockingTime": 1.5,
+ "LockingTime": 1.2,
"LockAngleTime": 0.5,
"AttackLockAngle": true,
"BulletSpeedScale": 1,
@@ -89,22 +89,22 @@
"LockingStand": true,
"FiringStand": true,
"ShowSubline": false,
- "LockingTime": 1.5,
- "LockAngleTime": 0.5,
+ "LockingTime": 0.6,
+ "LockAngleTime": 0.2,
"AttackLockAngle": true,
"BulletSpeedScale": 0.8,
"AmmoConsumptionProbability": 0
},
{
"Id": "0009",
- "Remark": "Weapon0010",
+ "Remark": "M1\u578B\u70ED\u80FD\u72D9\u51FB\u67AA",
"LockingStand": true,
"FiringStand": true,
"ShowSubline": false,
- "LockingTime": 1.5,
- "LockAngleTime": 0.5,
+ "LockingTime": 0.7,
+ "LockAngleTime": 0,
"AttackLockAngle": true,
- "BulletSpeedScale": 0.4,
+ "BulletSpeedScale": 0.3,
"AmmoConsumptionProbability": 0
}
]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/config/BulletBase.json b/DungeonShooting_Godot/resource/config/BulletBase.json
index de64482..6074533 100644
--- a/DungeonShooting_Godot/resource/config/BulletBase.json
+++ b/DungeonShooting_Godot/resource/config/BulletBase.json
@@ -330,15 +330,15 @@
0
],
"SpeedRange": [
- 450,
- 480
+ 400,
+ 400
],
"LifeTimeRange": [
-1
],
"DistanceRange": [
- 300,
- 350
+ 250,
+ 300
],
"VerticalSpeed": [
0
diff --git a/DungeonShooting_Godot/resource/config/EnemyBase.json b/DungeonShooting_Godot/resource/config/EnemyBase.json
index 657b2b7..054f597 100644
--- a/DungeonShooting_Godot/resource/config/EnemyBase.json
+++ b/DungeonShooting_Godot/resource/config/EnemyBase.json
@@ -7,6 +7,7 @@
"MoveSpeed": 80,
"Acceleration": 1500,
"Friction": 900,
+ "AttackInterval": 0,
"CanPickUpWeapon": true,
"ViewRange": 250,
"TailAfterViewRange": 400,
@@ -24,9 +25,10 @@
"MoveSpeed": 120,
"Acceleration": 1500,
"Friction": 900,
+ "AttackInterval": 2.2,
"CanPickUpWeapon": false,
- "ViewRange": 250,
- "TailAfterViewRange": 400,
+ "ViewRange": 200,
+ "TailAfterViewRange": 300,
"BackViewRange": 50,
"Gold": [
-2,
diff --git a/DungeonShooting_Godot/resource/config/WeaponBase.json b/DungeonShooting_Godot/resource/config/WeaponBase.json
index 6105f83..e8e4f61 100644
--- a/DungeonShooting_Godot/resource/config/WeaponBase.json
+++ b/DungeonShooting_Godot/resource/config/WeaponBase.json
@@ -102,7 +102,7 @@
"ContinuousCountRange": [
3
],
- "TriggerInterval": 2.5,
+ "TriggerInterval": 1.2,
"StartFiringSpeed": 480,
"FinalFiringSpeed": 480,
"FiringSpeedAddSpeed": 0,
@@ -254,7 +254,7 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 3,
+ "TriggerInterval": 1.4,
"StartFiringSpeed": 120,
"FinalFiringSpeed": 120,
"FiringSpeedAddSpeed": 0,
@@ -406,9 +406,9 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 1,
- "StartFiringSpeed": 300,
- "FinalFiringSpeed": 300,
+ "TriggerInterval": 0.55,
+ "StartFiringSpeed": 460,
+ "FinalFiringSpeed": 460,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
"FiringSpeedBackTime": 0,
@@ -557,7 +557,7 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 3,
+ "TriggerInterval": 2,
"StartFiringSpeed": 180,
"FinalFiringSpeed": 180,
"FiringSpeedAddSpeed": 0,
@@ -708,7 +708,7 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 4,
+ "TriggerInterval": 2.2,
"StartFiringSpeed": 150,
"FinalFiringSpeed": 150,
"FiringSpeedAddSpeed": 0,
@@ -860,7 +860,7 @@
"ContinuousCountRange": [
5
],
- "TriggerInterval": 3,
+ "TriggerInterval": 1.4,
"StartFiringSpeed": 700,
"FinalFiringSpeed": 700,
"FiringSpeedAddSpeed": 0,
@@ -1012,9 +1012,9 @@
"ContinuousCountRange": [
10
],
- "TriggerInterval": 4,
- "StartFiringSpeed": 200,
- "FinalFiringSpeed": 200,
+ "TriggerInterval": 2,
+ "StartFiringSpeed": 700,
+ "FinalFiringSpeed": 700,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
"FiringSpeedBackTime": 0,
@@ -1164,7 +1164,7 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 3,
+ "TriggerInterval": 1.8,
"StartFiringSpeed": 300,
"FinalFiringSpeed": 300,
"FiringSpeedAddSpeed": 0,
@@ -1316,7 +1316,7 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 4,
+ "TriggerInterval": 1.3,
"StartFiringSpeed": 180,
"FinalFiringSpeed": 180,
"FiringSpeedAddSpeed": 0,
@@ -1468,7 +1468,7 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 4,
+ "TriggerInterval": 1.5,
"StartFiringSpeed": 210,
"FinalFiringSpeed": 210,
"FiringSpeedAddSpeed": 0,
@@ -1620,9 +1620,9 @@
"ContinuousCountRange": [
5
],
- "TriggerInterval": 3,
- "StartFiringSpeed": 700,
- "FinalFiringSpeed": 700,
+ "TriggerInterval": 1.6,
+ "StartFiringSpeed": 350,
+ "FinalFiringSpeed": 350,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
"FiringSpeedBackTime": 0,
@@ -1772,9 +1772,9 @@
"ContinuousCountRange": [
25
],
- "TriggerInterval": 4,
- "StartFiringSpeed": 500,
- "FinalFiringSpeed": 500,
+ "TriggerInterval": 3,
+ "StartFiringSpeed": 900,
+ "FinalFiringSpeed": 900,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
"FiringSpeedBackTime": 0,
@@ -1924,7 +1924,7 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 0.8,
+ "TriggerInterval": 0.45,
"StartFiringSpeed": 300,
"FinalFiringSpeed": 300,
"FiringSpeedAddSpeed": 0,
@@ -1986,7 +1986,7 @@
"StandbyAmmoCapacity": 80,
"ShowReloadBar": false,
"AutoReload": true,
- "ReloadTime": 0.5,
+ "ReloadTime": 0.01,
"AloneReload": false,
"AloneReloadCount": 1,
"AloneReloadBeginIntervalTime": 0,
@@ -2076,9 +2076,9 @@
"ContinuousCountRange": [
1
],
- "TriggerInterval": 0.8,
- "StartFiringSpeed": 300,
- "FinalFiringSpeed": 300,
+ "TriggerInterval": 0.5,
+ "StartFiringSpeed": 600,
+ "FinalFiringSpeed": 600,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
"FiringSpeedBackTime": 0,
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/GroupConfig.json b/DungeonShooting_Godot/resource/map/tileMaps/GroupConfig.json
index b33aaeb..e6bcbed 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/GroupConfig.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/GroupConfig.json
@@ -58,7 +58,12 @@
"Path": "resource/map/tileMaps/Test1/shop/Shop1"
}
],
- "EventList": [],
+ "EventList": [
+ {
+ "ErrorType": 2,
+ "Path": "resource/map/tileMaps/Test1/event/\u6D4B\u8BD5\u623F\u95F4"
+ }
+ ],
"Remark": ""
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/Preinstall.json
index 7878b7d..a9f951a 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/Preinstall.json
@@ -1 +1 @@
-[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":true,"WaveList":[[{"Position":{"X":31,"Y":-17},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0013","CurrAmmon":"50","ResidueAmmo":"50"},"Altitude":0,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
+[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":true,"WaveList":[[]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/Preview.png
index 3eb065f..ce7fa71 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/RoomInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/RoomInfo.json
index 7930a66..b5e2972 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/RoomInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/RoomInfo.json
@@ -1 +1 @@
-{"Position":{"X":-4,"Y":-8},"Size":{"X":16,"Y":14},"DoorAreaInfos":[{"Direction":3,"Start":0,"End":128},{"Direction":1,"Start":0,"End":64},{"Direction":2,"Start":64,"End":192},{"Direction":0,"Start":16,"End":144}],"GroupName":"Test1","RoomType":1,"RoomName":"Battle1","Weight":100,"Remark":""}
\ No newline at end of file
+{"Position":{"X":-4,"Y":-13},"Size":{"X":16,"Y":19},"DoorAreaInfos":[{"Direction":3,"Start":16,"End":192},{"Direction":1,"Start":80,"End":144},{"Direction":2,"Start":64,"End":192},{"Direction":0,"Start":96,"End":224}],"GroupName":"Test1","RoomType":1,"RoomName":"Battle1","Weight":100,"Remark":""}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/TileInfo.json
index bbf43c6..62aca9a 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle1/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":154,"Y":-58},{"X":154,"Y":66},{"X":134,"Y":38},{"X":134,"Y":-30},{"X":90,"Y":-58},{"X":74,"Y":-30},{"X":74,"Y":38},{"X":38,"Y":66},{"X":38,"Y":50},{"X":-10,"Y":50},{"X":-10,"Y":-14},{"X":-26,"Y":-14},{"X":-26,"Y":-74},{"X":90,"Y":-74}],"NavigationPolygon":[[0,1,2,3],[4,0,3,5],[6,2,1,7,8],[8,9,10,5,6],[10,11,12,13,4,5]],"Floor":[-1,-1,0,3,3,-1,0,3,3,0,0,3,2,0,0,3,2,-1,0,3,1,-1,0,3,0,-1,0,3,0,0,0,3,-1,0,0,3,1,0,0,3,-1,1,0,3,0,1,0,3,1,1,0,3,2,1,0,3,3,1,0,3,4,1,0,3,4,2,0,3,3,2,0,3,2,2,0,3,1,2,0,3,0,2,0,3,-1,2,0,3,4,0,0,3,4,-1,0,3,4,-2,0,3,3,-2,0,3,2,-2,0,3,1,-2,0,3,0,-2,0,3,-1,-2,0,3,-1,-3,0,3,0,-3,0,3,1,-3,0,3,2,-3,0,3,3,-3,0,3,4,-3,0,3,5,-3,0,3,5,-4,0,3,5,-5,0,3,4,-5,0,3,3,-5,0,3,2,-5,0,3,1,-5,0,3,0,-5,0,3,-1,-5,0,3,-2,-5,0,3,-2,-4,0,3,-1,-4,0,3,0,-4,0,3,1,-4,0,3,2,-4,0,3,3,-4,0,3,4,-4,0,3,6,-4,0,3,7,-4,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,7,-3,0,3,6,-3,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,7,2,0,3,7,3,0,3,6,3,0,3,5,3,0,3,4,3,0,3,3,3,0,3,8,3,0,3,9,3,0,3,9,2,0,3,-2,-3,0,3,-2,-2,0,3,9,0,0,3,9,1,0,3,9,-1,0,3,9,-2,0,3,9,-3,0,3,9,-4,0,3,2,3,0,3,5,2,0,3,6,2,0,3],"Middle":[-2,-7,63,1,-2,-6,2,2,-1,-7,63,1,-1,-6,2,2,0,-7,63,1,0,-6,2,2,1,-7,63,1,1,-6,2,2,2,-7,63,1,2,-6,2,2,3,-7,63,1,3,-6,2,2,4,-7,63,1,4,-6,2,2,5,-7,63,1,5,-6,2,2,5,0,54,1,5,1,1,2,6,-6,54,1,6,-5,1,2,6,0,63,1,6,1,2,2,7,-6,63,1,7,-5,2,2,7,0,27,1,7,1,3,2,8,-6,63,1,8,-5,2,2,9,-6,63,1,9,-5,2,2],"Top":[-4,-8,511,1,-4,-7,511,1,-4,-6,511,1,-4,-5,511,1,-4,-4,511,1,-4,-3,511,1,-4,-2,511,1,-4,-1,511,1,-4,0,511,1,-3,-8,511,1,-3,-7,255,1,-3,-6,219,1,-3,-5,219,1,-3,-4,219,1,-3,-3,219,1,-3,-2,219,1,-3,-1,507,1,-3,0,511,1,-3,1,511,1,-3,2,511,1,-3,3,511,1,-3,4,511,1,-2,-8,511,1,-2,-1,216,1,-2,0,219,1,-2,1,219,1,-2,2,219,1,-2,3,507,1,-2,4,511,1,-1,-8,511,1,-1,3,504,1,-1,4,511,1,0,-8,511,1,0,3,504,1,0,4,511,1,0,5,511,1,1,-8,511,1,1,3,216,1,1,4,507,1,1,5,511,1,2,-8,511,1,2,4,504,1,2,5,511,1,3,-8,511,1,3,4,504,1,3,5,511,1,4,-8,511,1,4,4,504,1,4,5,511,1,5,-8,511,1,5,-2,432,1,5,-1,438,1,5,4,504,1,5,5,511,1,6,-8,511,1,6,-7,447,1,6,-2,504,1,6,-1,511,1,6,4,504,1,6,5,511,1,7,-8,511,1,7,-7,511,1,7,-2,216,1,7,-1,219,1,7,4,504,1,7,5,511,1,8,-7,511,1,8,4,504,1,8,5,511,1,9,-7,511,1,9,4,504,1,9,5,511,1,10,-7,511,1,10,-6,447,1,10,-5,438,1,10,-4,438,1,10,-3,438,1,10,-2,438,1,10,-1,438,1,10,0,438,1,10,1,438,1,10,2,438,1,10,3,438,1,10,4,510,1,10,5,511,1,11,-7,511,1,11,-6,511,1,11,-5,511,1,11,-4,511,1,11,-3,511,1,11,-2,511,1,11,-1,511,1,11,0,511,1,11,1,511,1,11,2,511,1,11,3,511,1,11,4,511,1,11,5,511,1],"CustomFloor1":[0,-4,2,2,6,0,-3,2,5,8,-1,-3,2,1,8,-1,-4,2,1,6,1,-4,2,2,6,1,-3,2,2,7,2,-4,2,2,6,2,-3,2,2,7,3,-4,2,2,6,3,-3,2,2,7,1,-2,2,2,7,0,-2,2,1,7,1,-1,2,2,7,0,-1,2,1,7,1,0,2,2,7,0,0,2,1,7,1,1,2,2,8,0,1,2,1,8,2,0,2,2,7,2,1,2,2,8,3,0,2,2,7,3,1,2,5,8,2,-1,2,2,7,2,-2,2,2,7,3,-2,2,2,7,3,-1,2,2,7,4,-4,2,2,6,4,-3,2,4,8,5,-4,2,2,6,5,-3,2,2,8,6,-4,2,2,6,6,-3,2,2,8,7,-4,2,2,6,7,-3,2,2,8,8,-4,2,2,6,8,-3,2,5,8,9,-4,2,3,6,9,-3,2,3,7,9,-2,2,3,7,8,-2,2,1,7,9,-1,2,3,7,8,-1,2,1,7,9,0,2,3,7,8,0,2,1,7,9,1,2,3,7,8,1,2,1,7,9,2,2,3,7,8,2,2,5,9,9,3,2,3,8,8,3,2,2,8,7,3,2,2,8,7,2,2,2,6,6,3,2,2,8,6,2,2,2,6,5,3,2,2,8,5,2,2,2,6,4,3,2,2,8,4,2,2,4,9,3,3,2,1,8,3,2,2,1,7,4,-2,2,3,7,4,-1,2,3,7,4,0,2,3,7,4,1,2,3,7],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":154,"Y":-58},{"X":154,"Y":74},{"X":134,"Y":38},{"X":134,"Y":-22},{"X":42,"Y":-58},{"X":74,"Y":-22},{"X":74,"Y":38},{"X":38,"Y":74},{"X":38,"Y":58},{"X":154,"Y":-154},{"X":154,"Y":-102},{"X":42,"Y":-102},{"X":-10,"Y":-154},{"X":-10,"Y":-74},{"X":-10,"Y":58},{"X":-10,"Y":-6},{"X":-26,"Y":-6},{"X":-26,"Y":-74}],"NavigationPolygon":[[0,1,2,3],[4,0,3,5],[6,2,1,7,8],[9,10,11,12],[13,12,11,4],[8,14,15,4,5,6],[15,16,17,13,4]],"Floor":[-1,-1,0,3,3,-1,0,3,3,0,0,3,2,0,0,3,2,-1,0,3,1,-1,0,3,0,-1,0,3,0,0,0,3,-1,0,0,3,1,0,0,3,-1,1,0,3,0,1,0,3,1,1,0,3,2,1,0,3,3,1,0,3,4,1,0,3,4,2,0,3,3,2,0,3,2,2,0,3,1,2,0,3,0,2,0,3,-1,2,0,3,4,0,0,3,4,-1,0,3,4,-2,0,3,3,-2,0,3,2,-2,0,3,1,-2,0,3,0,-2,0,3,-1,-2,0,3,-1,-3,0,3,0,-3,0,3,1,-3,0,3,2,-3,0,3,3,-3,0,3,4,-3,0,3,5,-3,0,3,2,-5,0,3,1,-5,0,3,0,-5,0,3,-1,-5,0,3,-2,-5,0,3,-2,-4,0,3,-1,-4,0,3,0,-4,0,3,1,-4,0,3,2,-4,0,3,3,-4,0,3,8,-3,0,3,8,-2,0,3,7,-3,0,3,6,-3,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,7,2,0,3,7,3,0,3,6,3,0,3,5,3,0,3,4,3,0,3,3,3,0,3,8,3,0,3,9,3,0,3,9,2,0,3,-2,-3,0,3,-2,-2,0,3,9,0,0,3,9,1,0,3,9,-1,0,3,9,-2,0,3,9,-3,0,3,2,3,0,3,5,2,0,3,6,2,0,3,-1,-9,0,3,0,-9,0,3,1,-9,0,3,2,-9,0,3,0,-10,0,3,1,-10,0,3,2,-10,0,3,-1,-8,0,3,-1,-7,0,3,-1,-6,0,3,0,-6,0,3,0,-7,0,3,1,-7,0,3,1,-8,0,3,0,-8,0,3,1,-6,0,3,2,-7,0,3,2,-8,0,3,2,-6,0,3,3,-10,0,3,4,-10,0,3,5,-10,0,3,6,-10,0,3,7,-10,0,3,8,-10,0,3,9,-10,0,3,9,-9,0,3,8,-9,0,3,7,-9,0,3,6,-9,0,3,5,-9,0,3,4,-9,0,3,3,-9,0,3,3,-8,0,3,4,-8,0,3,5,-8,0,3,6,-8,0,3,7,-8,0,3,8,-8,0,3,9,-8,0,3,-1,-10,0,3,7,-4,0,3,6,-4,0,3,5,-4,0,3,4,-4,0,3,8,-4,0,3,9,-4,0,3],"CustomFloor1":[0,-4,2,2,6,0,-3,2,5,8,-1,-3,2,1,8,-1,-4,2,1,6,1,-4,2,2,6,1,-3,2,2,7,2,-4,2,2,6,2,-3,2,2,7,3,-4,2,2,6,3,-3,2,2,7,1,-2,2,2,7,0,-2,2,1,7,1,-1,2,2,7,0,-1,2,1,7,1,0,2,2,7,0,0,2,1,7,1,1,2,2,8,0,1,2,1,8,2,0,2,2,7,2,1,2,2,8,3,0,2,2,7,3,1,2,5,8,2,-1,2,2,7,2,-2,2,2,7,3,-2,2,2,7,3,-1,2,2,7,4,-4,2,2,6,4,-3,2,4,8,5,-4,2,2,6,5,-3,2,2,8,6,-4,2,2,6,6,-3,2,2,8,7,-4,2,2,6,7,-3,2,2,8,8,-4,2,2,6,8,-3,2,5,8,9,-4,2,3,6,9,-3,2,3,7,9,-2,2,3,7,8,-2,2,1,7,9,-1,2,3,7,8,-1,2,1,7,9,0,2,3,7,8,0,2,1,7,9,1,2,3,7,8,1,2,1,7,9,2,2,3,7,8,2,2,5,9,9,3,2,3,8,8,3,2,2,8,7,3,2,2,8,7,2,2,2,6,6,3,2,2,8,6,2,2,2,6,5,3,2,2,8,5,2,2,2,6,4,3,2,2,8,4,2,2,4,9,3,3,2,1,8,3,2,2,1,7,4,-2,2,3,7,4,-1,2,3,7,4,0,2,3,7,4,1,2,3,7],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle2/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle2/Preview.png
index f77bbb8..a2253ad 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle2/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle2/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle2/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle2/TileInfo.json
index d1baf6b..822b3d6 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle2/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle2/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":-106,"Y":146},{"X":-26,"Y":54},{"X":154,"Y":6},{"X":198,"Y":6},{"X":250,"Y":146},{"X":198,"Y":-62},{"X":250,"Y":-106},{"X":-106,"Y":-106},{"X":154,"Y":-62},{"X":-70,"Y":54},{"X":-70,"Y":18},{"X":-26,"Y":18},{"X":-26,"Y":-10},{"X":-26,"Y":-46},{"X":-70,"Y":-46},{"X":-70,"Y":-10}],"NavigationPolygon":[[0,1,2,3,4],[3,5,6,4],[7,6,5,8],[9,1,0],[9,0,7,10],[2,1,11],[2,11,12,8],[8,12,13],[7,8,13,14],[15,12,11,10],[15,10,7],[15,7,14]],"Floor":[-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-7,6,0,3,-7,7,0,3,-7,8,0,3,-6,7,0,3,-6,8,0,3,-5,7,0,3,-5,8,0,3,-4,7,0,3,-4,8,0,3,-3,7,0,3,-3,8,0,3,-2,7,0,3,-2,8,0,3,-1,7,0,3,-1,8,0,3,0,7,0,3,0,8,0,3,1,7,0,3,1,8,0,3,2,7,0,3,2,8,0,3,3,7,0,3,3,8,0,3,4,7,0,3,4,8,0,3,5,7,0,3,5,8,0,3,6,7,0,3,6,8,0,3,7,7,0,3,7,8,0,3,8,7,0,3,8,8,0,3,9,7,0,3,9,8,0,3,10,7,0,3,10,8,0,3,11,7,0,3,11,8,0,3,12,7,0,3,12,8,0,3,13,7,0,3,13,8,0,3,14,7,0,3,14,8,0,3,15,-7,0,3,15,-6,0,3,15,-5,0,3,15,-4,0,3,15,-3,0,3,15,-2,0,3,15,-1,0,3,15,0,0,3,15,1,0,3,15,2,0,3,15,3,0,3,15,4,0,3,15,5,0,3,15,6,0,3,15,7,0,3,15,8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-6,6,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-5,6,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-4,0,3,-4,-1,0,3,-4,0,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-4,6,0,3,-3,-7,0,3,-3,-6,0,3,-3,-5,0,3,-3,-4,0,3,-3,-1,0,3,-3,0,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-3,6,0,3,-2,-7,0,3,-2,-6,0,3,-2,-5,0,3,-2,-4,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-2,6,0,3,-1,-7,0,3,-1,-6,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,-1,4,0,3,-1,5,0,3,-1,6,0,3,0,-7,0,3,0,-6,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,0,4,0,3,0,5,0,3,0,6,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,4,5,0,3,4,6,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,5,5,0,3,5,6,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,6,5,0,3,6,6,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,7,5,0,3,7,6,0,3,8,-7,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,8,5,0,3,8,6,0,3,9,-7,0,3,9,-6,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,0,0,3,9,1,0,3,9,2,0,3,9,3,0,3,9,4,0,3,9,5,0,3,9,6,0,3,10,-7,0,3,10,-6,0,3,10,-5,0,3,10,0,0,3,10,1,0,3,10,2,0,3,10,3,0,3,10,4,0,3,10,5,0,3,10,6,0,3,11,-7,0,3,11,-6,0,3,11,-5,0,3,11,0,0,3,11,1,0,3,11,2,0,3,11,3,0,3,11,4,0,3,11,5,0,3,11,6,0,3,12,-7,0,3,12,-6,0,3,12,-5,0,3,12,-4,0,3,12,-3,0,3,12,-2,0,3,12,-1,0,3,12,0,0,3,12,1,0,3,12,2,0,3,12,3,0,3,12,4,0,3,12,5,0,3,12,6,0,3,13,-7,0,3,13,-5,0,3,13,-4,0,3,13,-3,0,3,13,-2,0,3,13,-1,0,3,13,0,0,3,13,1,0,3,13,2,0,3,13,3,0,3,13,4,0,3,13,5,0,3,13,6,0,3,14,-7,0,3,14,-6,0,3,14,-5,0,3,14,-4,0,3,14,-3,0,3,14,-2,0,3,14,-1,0,3,14,0,0,3,14,1,0,3,14,2,0,3,14,3,0,3,14,4,0,3,14,5,0,3,14,6,0,3,13,-6,0,3],"Middle":[-7,-9,63,1,-7,-8,2,2,-6,-9,63,1,-6,-8,2,2,-5,-9,63,1,-5,-8,2,2,-4,-9,63,1,-4,-8,2,2,-4,-3,48,1,-4,-2,1,2,-4,1,48,1,-4,2,1,2,-3,-9,63,1,-3,-8,2,2,-3,-3,24,1,-3,-2,3,2,-3,1,24,1,-3,2,3,2,-2,-9,63,1,-2,-8,2,2,-1,-9,63,1,-1,-8,2,2,0,-9,63,1,0,-8,2,2,1,-9,63,1,1,-8,2,2,2,-9,63,1,2,-8,2,2,3,-9,63,1,3,-8,2,2,4,-9,63,1,4,-8,2,2,5,-9,63,1,5,-8,2,2,6,-9,63,1,6,-8,2,2,7,-9,63,1,7,-8,2,2,8,-9,63,1,8,-8,2,2,9,-9,63,1,9,-8,2,2,10,-9,63,1,10,-8,2,2,10,-2,54,1,10,-1,1,2,11,-9,63,1,11,-8,2,2,11,-2,27,1,11,-1,3,2,12,-9,63,1,12,-8,2,2,13,-9,63,1,13,-8,2,2,14,-9,63,1,14,-8,2,2,15,-9,63,1,15,-8,2,2],"Top":[-9,-10,511,1,-9,-9,511,1,-9,-8,511,1,-9,-7,511,1,-9,-6,511,1,-9,-5,511,1,-9,-4,511,1,-9,-3,511,1,-9,-2,511,1,-9,-1,511,1,-9,0,511,1,-9,1,511,1,-9,2,511,1,-9,3,511,1,-9,4,511,1,-9,5,511,1,-9,6,511,1,-9,7,511,1,-9,8,511,1,-9,9,511,1,-9,10,511,1,-8,-10,511,1,-8,-9,255,1,-8,-8,219,1,-8,-7,219,1,-8,-6,219,1,-8,-5,219,1,-8,-4,219,1,-8,-3,219,1,-8,-2,219,1,-8,-1,219,1,-8,0,219,1,-8,1,219,1,-8,2,219,1,-8,3,219,1,-8,4,219,1,-8,5,219,1,-8,6,219,1,-8,7,219,1,-8,8,219,1,-8,9,507,1,-8,10,511,1,-7,-10,511,1,-7,9,504,1,-7,10,511,1,-6,-10,511,1,-6,9,504,1,-6,10,511,1,-5,-10,511,1,-5,9,504,1,-5,10,511,1,-4,-10,511,1,-4,9,504,1,-4,10,511,1,-3,-10,511,1,-3,9,504,1,-3,10,511,1,-2,-10,511,1,-2,9,504,1,-2,10,511,1,-1,-10,511,1,-1,9,504,1,-1,10,511,1,0,-10,511,1,0,9,504,1,0,10,511,1,1,-10,511,1,1,9,504,1,1,10,511,1,2,-10,511,1,2,9,504,1,2,10,511,1,3,-10,511,1,3,9,504,1,3,10,511,1,4,-10,511,1,4,9,504,1,4,10,511,1,5,-10,511,1,5,9,504,1,5,10,511,1,6,-10,511,1,6,9,504,1,6,10,511,1,7,-10,511,1,7,9,504,1,7,10,511,1,8,-10,511,1,8,9,504,1,8,10,511,1,9,-10,511,1,9,9,504,1,9,10,511,1,10,-10,511,1,10,-4,432,1,10,-3,438,1,10,9,504,1,10,10,511,1,11,-10,511,1,11,-4,216,1,11,-3,219,1,11,9,504,1,11,10,511,1,12,-10,511,1,12,9,504,1,12,10,511,1,13,-10,511,1,13,9,504,1,13,10,511,1,14,-10,511,1,14,9,504,1,14,10,511,1,15,-10,511,1,15,9,504,1,15,10,511,1,16,-10,511,1,16,-9,447,1,16,-8,438,1,16,-7,438,1,16,-6,438,1,16,-5,438,1,16,-4,438,1,16,-3,438,1,16,-2,438,1,16,-1,438,1,16,0,438,1,16,1,438,1,16,2,438,1,16,3,438,1,16,4,438,1,16,5,438,1,16,6,438,1,16,7,438,1,16,8,438,1,16,9,510,1,16,10,511,1,17,-10,511,1,17,-9,511,1,17,-8,511,1,17,-7,511,1,17,-6,511,1,17,-5,511,1,17,-4,511,1,17,-3,511,1,17,-2,511,1,17,-1,511,1,17,0,511,1,17,1,511,1,17,2,511,1,17,3,511,1,17,4,511,1,17,5,511,1,17,6,511,1,17,7,511,1,17,8,511,1,17,9,511,1,17,10,511,1],"CustomFloor1":[3,3,2,2,7,2,3,2,2,7,3,4,2,2,7,2,4,2,2,7,3,5,2,2,7,2,5,2,2,7,1,5,2,2,7,1,4,2,2,7,2,6,2,2,7,1,6,2,2,7,3,6,2,2,7,4,5,2,2,7,4,6,2,2,7,5,5,2,2,7,5,6,2,2,7,10,4,2,2,7,9,4,2,2,7,11,4,2,2,7,11,3,2,2,7,10,3,2,2,7,11,2,2,2,7,10,2,2,2,7,10,1,2,2,7,10,0,2,2,6,8,4,2,2,7,5,4,2,2,7,4,4,2,2,7,4,3,2,2,7,5,3,2,2,7,8,2,2,2,7,8,3,2,2,7,9,2,2,2,7,9,3,2,2,7,9,1,2,2,7,5,-1,2,2,7,6,-1,2,2,7,8,-1,2,2,7,9,-1,2,3,7,9,0,2,4,9,-1,2,2,2,7,-2,2,2,1,7,-1,3,2,2,7,-2,3,2,5,9,-1,4,2,2,7,-2,4,2,2,7,-1,5,2,2,7,-2,5,2,2,7,0,4,2,2,7,0,5,2,2,7,0,6,2,2,7,-1,6,2,2,7,-2,6,2,2,7,0,2,2,2,7,0,3,2,2,7,1,3,2,2,7,4,-2,2,2,7,3,-2,2,2,7,4,-3,2,2,7,3,-3,2,2,7,4,-4,2,2,7,3,-4,2,2,7,5,-4,2,2,7,5,-3,2,2,7,6,-4,2,2,7,6,-3,2,2,7,7,-4,2,2,7,7,-3,2,2,7,8,-4,2,2,7,8,-3,2,2,7,9,-4,2,3,7,9,-3,2,3,7,8,-2,2,2,7,7,-2,2,2,7,6,-2,2,2,7,5,-2,2,2,7,2,-3,2,2,7,2,-4,2,2,7,-1,-3,2,2,7,-1,-4,2,2,7,-2,-3,2,1,7,-2,-4,2,5,8,-3,-4,2,2,8,-2,-2,2,1,7,-1,-2,2,2,7,0,-2,2,2,7,1,-2,2,2,7,2,-2,2,2,7,1,-1,2,2,7,0,-1,2,2,7,9,-2,2,3,7,12,-3,2,1,7,12,-2,2,1,7,12,2,2,2,7,12,3,2,2,7,12,4,2,2,7,13,5,2,2,7,13,4,2,2,7,14,4,2,2,7,14,5,2,2,7,14,3,2,2,7,13,3,2,2,7,14,2,2,2,7,13,2,2,2,7,15,1,2,3,7,15,2,2,3,7,14,1,2,2,7,15,0,2,3,7,14,0,2,2,7,15,-1,2,3,7,14,-1,2,2,7,15,-2,2,3,7,14,-2,2,2,7,15,-3,2,3,7,14,-3,2,2,7,13,-2,2,2,7,13,-3,2,2,7,14,-4,2,2,7,13,-4,2,2,7,15,3,2,3,7,15,4,2,3,7,-2,-6,2,2,7,-2,-5,2,2,7,-3,-5,2,2,7,-3,-6,2,2,7,9,-7,2,2,6,9,-6,2,2,7,8,-6,2,2,7,8,-7,2,2,6,7,-6,2,2,7,7,-7,2,2,6,6,-6,2,2,7,6,-7,2,2,6,5,-6,2,2,7,5,-7,2,2,6,4,-6,2,2,7,4,-7,2,2,6,-3,-7,2,2,6,-4,-6,2,2,7,-4,-7,2,2,6,-2,-7,2,2,6,-1,-7,2,2,6,-1,-6,2,2,7,0,-7,2,2,6,0,-6,2,2,7,1,-7,2,2,6,1,-6,2,2,7,2,-7,2,2,6,2,-6,2,2,7,3,-7,2,2,6,3,-6,2,2,7,-4,-5,2,2,7,-4,-4,2,2,8,-3,3,2,2,6,-4,3,2,2,6,-3,4,2,2,7,-4,4,2,2,7,-3,5,2,2,7,-4,5,2,2,7,-3,6,2,2,7,-5,5,2,2,7,-5,4,2,2,7,-6,5,2,2,7,-6,4,2,2,7,-5,0,2,4,8,-5,1,2,3,7,-6,1,2,2,7,-6,0,2,2,7,-5,2,2,3,7,-6,2,2,2,7,-5,3,2,4,9,-6,3,2,2,7,-1,1,2,2,7,-2,1,2,1,7,7,-1,2,2,7,6,2,2,2,7,7,2,2,2,7,7,3,2,2,7,6,3,2,2,7,7,4,2,2,7,6,4,2,2,7,7,5,2,2,7,6,5,2,2,7,7,6,2,2,7,6,6,2,2,7,8,5,2,2,7,8,6,2,2,7,9,5,2,2,7,9,6,2,2,7,10,5,2,2,7,10,6,2,2,7,11,5,2,2,7,11,6,2,2,7,12,5,2,2,7,12,6,2,2,7,13,6,2,2,7,-2,-1,2,5,9,-3,-1,2,2,6,-4,-1,2,2,6,-2,0,2,5,8,-3,0,2,2,8,-1,0,2,2,7,-1,-1,2,2,7,0,0,2,2,7,1,0,2,2,7,2,-1,2,2,7,2,0,2,2,7,4,-1,2,2,7,4,0,2,2,7,3,0,2,2,7,3,-1,2,2,7,5,0,2,2,7,6,0,2,2,7,7,0,2,2,7,8,0,2,2,7,11,0,2,2,6,12,-1,2,1,7,12,0,2,5,9,13,-1,2,2,7,13,0,2,2,7,13,1,2,2,7,12,1,2,2,7,11,1,2,2,7,8,1,2,2,7,7,1,2,2,7,6,1,2,2,7,5,1,2,2,7,4,1,2,2,7,3,1,2,2,7,2,1,2,2,7,1,1,2,2,7,0,1,2,2,7,1,2,2,2,7,2,2,2,2,7,3,2,2,2,7,4,2,2,2,7,5,2,2,2,7,-4,0,2,2,8,-5,-1,2,4,9,-6,-1,2,2,7,-6,-2,2,2,7,-6,-3,2,2,7,-5,-4,2,4,8,-6,-4,2,2,7,-5,-5,2,2,7,-6,-5,2,2,7,-5,-6,2,2,7,-6,-6,2,2,7,-1,-5,2,2,7,0,-5,2,2,7,1,-5,2,2,7,3,-5,2,2,7,2,-5,2,2,7,4,-5,2,2,7,5,-5,2,2,7,6,-5,2,2,7,7,-5,2,2,7,8,-5,2,2,7,9,-5,2,4,8,10,-5,2,2,8,11,-5,2,2,8,11,-6,2,2,7,10,-6,2,2,7,11,-7,2,2,6,10,-7,2,2,6,12,-7,2,2,6,12,-6,2,2,7,13,-7,2,2,6,13,-6,2,2,7,14,-7,2,2,6,14,-6,2,2,7,15,-7,2,3,6,15,-6,2,3,7,15,-5,2,3,7,14,-5,2,2,7,15,-4,2,3,7,13,-5,2,2,7,12,-4,2,1,7,12,-5,2,5,8,14,6,2,2,7,14,7,2,2,7,13,7,2,2,7,15,5,2,3,7,15,6,2,3,7,15,7,2,3,7,15,8,2,3,8,14,8,2,2,8,13,8,2,2,8,12,8,2,2,8,12,7,2,2,7,11,8,2,2,8,11,7,2,2,7,10,8,2,2,8,10,7,2,2,7,9,8,2,2,8,9,7,2,2,7,8,8,2,2,8,8,7,2,2,7,7,8,2,2,8,7,7,2,2,7,6,8,2,2,8,6,7,2,2,7,5,8,2,2,8,5,7,2,2,7,4,8,2,2,8,4,7,2,2,7,3,8,2,2,8,3,7,2,2,7,2,8,2,2,8,2,7,2,2,7,1,8,2,2,8,1,7,2,2,7,0,8,2,2,8,0,7,2,2,7,-1,7,2,2,7,-2,7,2,2,7,-3,7,2,2,7,-4,7,2,2,7,-4,6,2,2,7,-5,7,2,2,7,-5,6,2,2,7,-6,7,2,2,7,-6,6,2,2,7,-5,8,2,2,8,-6,8,2,2,8,-4,8,2,2,8,-3,8,2,2,8,-2,8,2,2,8,-1,8,2,2,8,-7,8,2,1,8,-7,7,2,1,7,-7,6,2,1,7,-7,5,2,1,7,-7,4,2,1,7,-7,3,2,1,7,-7,2,2,1,7,-7,1,2,1,7,-7,0,2,1,7,-7,-1,2,1,7,-7,-2,2,1,7,-7,-3,2,1,7,-7,-4,2,1,7,-7,-5,2,1,7,-5,-7,2,2,6,-6,-7,2,2,6,-7,-6,2,1,7,-7,-7,2,1,6,-5,-3,2,3,7,-5,-2,2,3,7,1,-4,2,2,7,1,-3,2,2,7,0,-3,2,2,7,0,-4,2,2,7],"CustomFloor2":[4,-1,1,8,11,3,4,1,8,11,8,5,1,6,14,9,5,1,7,14,10,5,1,8,14,10,6,1,8,15,9,6,1,7,15,8,6,1,6,15,1,2,1,12,11,-2,6,1,0,15,0,-6,1,0,15,7,-5,1,3,5],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":-106,"Y":154},{"X":-26,"Y":70},{"X":154,"Y":6},{"X":198,"Y":6},{"X":250,"Y":154},{"X":198,"Y":-54},{"X":250,"Y":-106},{"X":-106,"Y":-106},{"X":154,"Y":-54},{"X":-26,"Y":26},{"X":-26,"Y":-10},{"X":-70,"Y":70},{"X":-70,"Y":26},{"X":-26,"Y":-54},{"X":-70,"Y":-54},{"X":-70,"Y":-10}],"NavigationPolygon":[[0,1,2,3,4],[3,5,6,4],[7,6,5,8],[2,1,9],[2,9,10,8],[11,1,0],[11,0,7,12],[8,10,13],[7,8,13],[7,13,14],[15,10,9,12],[15,12,7],[15,7,14]],"Floor":[-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-7,6,0,3,-7,7,0,3,-7,8,0,3,-6,7,0,3,-6,8,0,3,-5,7,0,3,-5,8,0,3,-4,7,0,3,-4,8,0,3,-3,7,0,3,-3,8,0,3,-2,7,0,3,-2,8,0,3,-1,7,0,3,-1,8,0,3,0,7,0,3,0,8,0,3,1,7,0,3,1,8,0,3,2,7,0,3,2,8,0,3,3,7,0,3,3,8,0,3,4,7,0,3,4,8,0,3,5,7,0,3,5,8,0,3,6,7,0,3,6,8,0,3,7,7,0,3,7,8,0,3,8,7,0,3,8,8,0,3,9,7,0,3,9,8,0,3,10,7,0,3,10,8,0,3,11,7,0,3,11,8,0,3,12,7,0,3,12,8,0,3,13,7,0,3,13,8,0,3,14,7,0,3,14,8,0,3,15,-7,0,3,15,-6,0,3,15,-5,0,3,15,-4,0,3,15,-3,0,3,15,-2,0,3,15,-1,0,3,15,0,0,3,15,1,0,3,15,2,0,3,15,3,0,3,15,4,0,3,15,5,0,3,15,6,0,3,15,7,0,3,15,8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-6,6,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-5,6,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-1,0,3,-4,0,0,3,-4,4,0,3,-4,5,0,3,-4,6,0,3,-3,-7,0,3,-3,-6,0,3,-3,-5,0,3,-3,-1,0,3,-3,0,0,3,-3,4,0,3,-3,5,0,3,-3,6,0,3,-2,-7,0,3,-2,-6,0,3,-2,-5,0,3,-2,-4,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-2,6,0,3,-1,-7,0,3,-1,-6,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,-1,4,0,3,-1,5,0,3,-1,6,0,3,0,-7,0,3,0,-6,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,0,4,0,3,0,5,0,3,0,6,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,4,5,0,3,4,6,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,5,5,0,3,5,6,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,6,5,0,3,6,6,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,7,5,0,3,7,6,0,3,8,-7,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,8,5,0,3,8,6,0,3,9,-7,0,3,9,-6,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,0,0,3,9,1,0,3,9,2,0,3,9,3,0,3,9,4,0,3,9,5,0,3,9,6,0,3,10,-7,0,3,10,-6,0,3,10,0,0,3,10,1,0,3,10,2,0,3,10,3,0,3,10,4,0,3,10,5,0,3,10,6,0,3,11,-7,0,3,11,-6,0,3,11,0,0,3,11,1,0,3,11,2,0,3,11,3,0,3,11,4,0,3,11,5,0,3,11,6,0,3,12,-7,0,3,12,-6,0,3,12,-5,0,3,12,-4,0,3,12,-3,0,3,12,-2,0,3,12,-1,0,3,12,0,0,3,12,1,0,3,12,2,0,3,12,3,0,3,12,4,0,3,12,5,0,3,12,6,0,3,13,-7,0,3,13,-5,0,3,13,-4,0,3,13,-3,0,3,13,-2,0,3,13,-1,0,3,13,0,0,3,13,1,0,3,13,2,0,3,13,3,0,3,13,4,0,3,13,5,0,3,13,6,0,3,14,-7,0,3,14,-6,0,3,14,-5,0,3,14,-4,0,3,14,-3,0,3,14,-2,0,3,14,-1,0,3,14,0,0,3,14,1,0,3,14,2,0,3,14,3,0,3,14,4,0,3,14,5,0,3,14,6,0,3,13,-6,0,3,11,-5,0,3,10,-5,0,3],"CustomFloor1":[3,3,2,2,7,2,3,2,2,7,3,4,2,2,7,2,4,2,2,7,3,5,2,2,7,2,5,2,2,7,1,5,2,2,7,1,4,2,2,7,2,6,2,2,7,1,6,2,2,7,3,6,2,2,7,4,5,2,2,7,4,6,2,2,7,5,5,2,2,7,5,6,2,2,7,10,4,2,2,7,9,4,2,2,7,11,4,2,2,7,11,3,2,2,7,10,3,2,2,7,11,2,2,2,7,10,2,2,2,7,10,1,2,2,7,10,0,2,2,6,8,4,2,2,7,5,4,2,2,7,4,4,2,2,7,4,3,2,2,7,5,3,2,2,7,8,2,2,2,7,8,3,2,2,7,9,2,2,2,7,9,3,2,2,7,9,1,2,2,7,5,-1,2,2,7,6,-1,2,2,7,8,-1,2,2,7,9,-1,2,3,7,9,0,2,4,9,-1,2,2,2,7,-2,2,2,1,7,-1,3,2,2,7,-2,3,2,1,7,-1,4,2,2,7,-2,4,2,5,9,-1,5,2,2,7,-2,5,2,2,7,0,4,2,2,7,0,5,2,2,7,0,6,2,2,7,-1,6,2,2,7,-2,6,2,2,7,0,2,2,2,7,0,3,2,2,7,1,3,2,2,7,4,-2,2,2,7,3,-2,2,2,7,4,-3,2,2,7,3,-3,2,2,7,4,-4,2,2,7,3,-4,2,2,7,5,-4,2,2,7,5,-3,2,2,7,6,-4,2,2,7,6,-3,2,2,7,7,-4,2,2,7,7,-3,2,2,7,8,-4,2,2,7,8,-3,2,2,7,9,-4,2,3,7,9,-3,2,3,7,8,-2,2,2,7,7,-2,2,2,7,6,-2,2,2,7,5,-2,2,2,7,2,-3,2,2,7,2,-4,2,2,7,-1,-3,2,2,7,-1,-4,2,2,7,-2,-3,2,1,7,-2,-4,2,1,7,-2,-2,2,1,7,-1,-2,2,2,7,0,-2,2,2,7,1,-2,2,2,7,2,-2,2,2,7,1,-1,2,2,7,0,-1,2,2,7,9,-2,2,3,7,12,-3,2,1,7,12,-2,2,1,7,12,2,2,2,7,12,3,2,2,7,12,4,2,2,7,13,5,2,2,7,13,4,2,2,7,14,4,2,2,7,14,5,2,2,7,14,3,2,2,7,13,3,2,2,7,14,2,2,2,7,13,2,2,2,7,15,1,2,3,7,15,2,2,3,7,14,1,2,2,7,15,0,2,3,7,14,0,2,2,7,15,-1,2,3,7,14,-1,2,2,7,15,-2,2,3,7,14,-2,2,2,7,15,-3,2,3,7,14,-3,2,2,7,13,-2,2,2,7,13,-3,2,2,7,14,-4,2,2,7,13,-4,2,2,7,15,3,2,3,7,15,4,2,3,7,-2,-6,2,2,7,-2,-5,2,5,8,-3,-5,2,2,8,-3,-6,2,2,7,9,-7,2,2,6,9,-6,2,2,7,8,-6,2,2,7,8,-7,2,2,6,7,-6,2,2,7,7,-7,2,2,6,6,-6,2,2,7,6,-7,2,2,6,5,-6,2,2,7,5,-7,2,2,6,4,-6,2,2,7,4,-7,2,2,6,-3,-7,2,2,6,-4,-6,2,2,7,-4,-7,2,2,6,-2,-7,2,2,6,-1,-7,2,2,6,-1,-6,2,2,7,0,-7,2,2,6,0,-6,2,2,7,1,-7,2,2,6,1,-6,2,2,7,2,-7,2,2,6,2,-6,2,2,7,3,-7,2,2,6,3,-6,2,2,7,-4,-5,2,2,8,-3,4,2,2,6,-4,4,2,2,6,-3,5,2,2,7,-4,5,2,2,7,-3,6,2,2,7,-5,5,2,2,7,-5,4,2,4,9,-6,5,2,2,7,-6,4,2,2,7,-5,0,2,4,8,-5,1,2,3,7,-6,1,2,2,7,-6,0,2,2,7,-5,2,2,3,7,-6,2,2,2,7,-5,3,2,3,7,-6,3,2,2,7,-1,1,2,2,7,-2,1,2,1,7,7,-1,2,2,7,6,2,2,2,7,7,2,2,2,7,7,3,2,2,7,6,3,2,2,7,7,4,2,2,7,6,4,2,2,7,7,5,2,2,7,6,5,2,2,7,7,6,2,2,7,6,6,2,2,7,8,5,2,2,7,8,6,2,2,7,9,5,2,2,7,9,6,2,2,7,10,5,2,2,7,10,6,2,2,7,11,5,2,2,7,11,6,2,2,7,12,5,2,2,7,12,6,2,2,7,13,6,2,2,7,-2,-1,2,5,9,-3,-1,2,2,6,-4,-1,2,2,6,-2,0,2,5,8,-3,0,2,2,8,-1,0,2,2,7,-1,-1,2,2,7,0,0,2,2,7,1,0,2,2,7,2,-1,2,2,7,2,0,2,2,7,4,-1,2,2,7,4,0,2,2,7,3,0,2,2,7,3,-1,2,2,7,5,0,2,2,7,6,0,2,2,7,7,0,2,2,7,8,0,2,2,7,11,0,2,2,6,12,-1,2,1,7,12,0,2,5,9,13,-1,2,2,7,13,0,2,2,7,13,1,2,2,7,12,1,2,2,7,11,1,2,2,7,8,1,2,2,7,7,1,2,2,7,6,1,2,2,7,5,1,2,2,7,4,1,2,2,7,3,1,2,2,7,2,1,2,2,7,1,1,2,2,7,0,1,2,2,7,1,2,2,2,7,2,2,2,2,7,3,2,2,2,7,4,2,2,2,7,5,2,2,2,7,-4,0,2,2,8,-5,-1,2,4,9,-6,-1,2,2,7,-6,-2,2,2,7,-6,-3,2,2,7,-5,-4,2,3,7,-6,-4,2,2,7,-5,-5,2,4,8,-6,-5,2,2,7,-5,-6,2,2,7,-6,-6,2,2,7,-1,-5,2,2,7,0,-5,2,2,7,1,-5,2,2,7,3,-5,2,2,7,2,-5,2,2,7,4,-5,2,2,7,5,-5,2,2,7,6,-5,2,2,7,7,-5,2,2,7,8,-5,2,2,7,9,-5,2,4,8,10,-5,2,2,8,11,-5,2,2,8,11,-6,2,2,7,10,-6,2,2,7,11,-7,2,2,6,10,-7,2,2,6,12,-7,2,2,6,12,-6,2,2,7,13,-7,2,2,6,13,-6,2,2,7,14,-7,2,2,6,14,-6,2,2,7,15,-7,2,3,6,15,-6,2,3,7,15,-5,2,3,7,14,-5,2,2,7,15,-4,2,3,7,13,-5,2,2,7,12,-4,2,1,7,12,-5,2,5,8,14,6,2,2,7,14,7,2,2,7,13,7,2,2,7,15,5,2,3,7,15,6,2,3,7,15,7,2,3,7,15,8,2,3,8,14,8,2,2,8,13,8,2,2,8,12,8,2,2,8,12,7,2,2,7,11,8,2,2,8,11,7,2,2,7,10,8,2,2,8,10,7,2,2,7,9,8,2,2,8,9,7,2,2,7,8,8,2,2,8,8,7,2,2,7,7,8,2,2,8,7,7,2,2,7,6,8,2,2,8,6,7,2,2,7,5,8,2,2,8,5,7,2,2,7,4,8,2,2,8,4,7,2,2,7,3,8,2,2,8,3,7,2,2,7,2,8,2,2,8,2,7,2,2,7,1,8,2,2,8,1,7,2,2,7,0,8,2,2,8,0,7,2,2,7,-1,7,2,2,7,-2,7,2,2,7,-3,7,2,2,7,-4,7,2,2,7,-4,6,2,2,7,-5,7,2,2,7,-5,6,2,2,7,-6,7,2,2,7,-6,6,2,2,7,-5,8,2,2,8,-6,8,2,2,8,-4,8,2,2,8,-3,8,2,2,8,-2,8,2,2,8,-1,8,2,2,8,-7,8,2,1,8,-7,7,2,1,7,-7,6,2,1,7,-7,5,2,1,7,-7,4,2,1,7,-7,3,2,1,7,-7,2,2,1,7,-7,1,2,1,7,-7,0,2,1,7,-7,-1,2,1,7,-7,-2,2,1,7,-7,-3,2,1,7,-7,-4,2,1,7,-7,-5,2,1,7,-5,-7,2,2,6,-6,-7,2,2,6,-7,-6,2,1,7,-7,-7,2,1,6,-5,-3,2,3,7,-5,-2,2,3,7,1,-4,2,2,7,1,-3,2,2,7,0,-3,2,2,7,0,-4,2,2,7],"CustomFloor2":[4,-1,1,8,11,3,4,1,8,11,8,5,1,6,14,9,5,1,7,14,10,5,1,8,14,10,6,1,8,15,9,6,1,7,15,8,6,1,6,15,1,2,1,12,11,-2,6,1,0,15,0,-6,1,0,15,7,-5,1,3,5],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle3/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle3/Preview.png
index 0885a05..a7ad03b 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle3/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle3/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle3/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle3/TileInfo.json
index 6e8cc90..7954779 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle3/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle3/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":134,"Y":-74},{"X":134,"Y":-138},{"X":250,"Y":-138},{"X":250,"Y":130},{"X":134,"Y":130},{"X":134,"Y":82},{"X":-6,"Y":-74},{"X":-6,"Y":82},{"X":-122,"Y":-138},{"X":-6,"Y":130},{"X":-122,"Y":130},{"X":-6,"Y":-138}],"NavigationPolygon":[[0,1,2,3],[3,4,5],[0,3,5,6],[6,5,7,8],[7,9,10,8],[11,6,8]],"Floor":[-3,-5,0,3,-3,-4,0,3,-3,-3,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-2,-5,0,3,-2,-4,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,-1,4,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,0,4,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,0,0,3,9,1,0,3,9,2,0,3,9,3,0,3,9,4,0,3,10,-5,0,3,10,-4,0,3,10,-3,0,3,10,-2,0,3,10,-1,0,3,10,0,0,3,10,1,0,3,10,2,0,3,10,3,0,3,10,4,0,3,-8,-9,0,3,-8,-8,0,3,-8,-7,0,3,-8,-6,0,3,-8,-5,0,3,-8,-4,0,3,-8,-3,0,3,-8,-2,0,3,-8,-1,0,3,-8,0,0,3,-8,1,0,3,-8,2,0,3,-8,3,0,3,-8,4,0,3,-8,5,0,3,-8,6,0,3,-8,7,0,3,-7,-9,0,3,-7,-8,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-7,6,0,3,-7,7,0,3,-6,-9,0,3,-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-6,6,0,3,-6,7,0,3,-5,-9,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-5,6,0,3,-5,7,0,3,-4,-9,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-4,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-4,6,0,3,-4,7,0,3,-3,-9,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-3,5,0,3,-3,6,0,3,-3,7,0,3,-2,-9,0,3,-2,-8,0,3,-2,-7,0,3,-2,-6,0,3,-2,5,0,3,-2,6,0,3,-2,7,0,3,-1,-9,0,3,-1,-8,0,3,-1,-7,0,3,-1,-6,0,3,-1,5,0,3,-1,6,0,3,-1,7,0,3,8,-9,0,3,8,-8,0,3,8,-7,0,3,8,-6,0,3,8,5,0,3,8,6,0,3,8,7,0,3,9,-9,0,3,9,-8,0,3,9,-7,0,3,9,-6,0,3,9,5,0,3,9,6,0,3,9,7,0,3,10,-9,0,3,10,-8,0,3,10,-7,0,3,10,-6,0,3,10,5,0,3,10,6,0,3,10,7,0,3,11,-9,0,3,11,-8,0,3,11,-7,0,3,11,-6,0,3,11,-5,0,3,11,-4,0,3,11,-3,0,3,11,-2,0,3,11,-1,0,3,11,0,0,3,11,1,0,3,11,2,0,3,11,3,0,3,11,4,0,3,11,5,0,3,11,6,0,3,11,7,0,3,12,-9,0,3,12,-8,0,3,12,-7,0,3,12,-6,0,3,12,-5,0,3,12,-4,0,3,12,-3,0,3,12,-2,0,3,12,-1,0,3,12,0,0,3,12,1,0,3,12,2,0,3,12,3,0,3,12,4,0,3,12,5,0,3,12,6,0,3,12,7,0,3,13,-9,0,3,13,-8,0,3,13,-7,0,3,13,-6,0,3,13,-5,0,3,13,-4,0,3,13,-3,0,3,13,-2,0,3,13,-1,0,3,13,0,0,3,13,1,0,3,13,2,0,3,13,3,0,3,13,4,0,3,13,5,0,3,13,6,0,3,13,7,0,3,14,-9,0,3,14,-8,0,3,14,-7,0,3,14,-6,0,3,14,-5,0,3,14,-4,0,3,14,-3,0,3,14,-2,0,3,14,-1,0,3,14,0,0,3,14,1,0,3,14,2,0,3,14,3,0,3,14,4,0,3,14,5,0,3,14,6,0,3,14,7,0,3,15,-9,0,3,15,-8,0,3,15,-7,0,3,15,-6,0,3,15,-5,0,3,15,-4,0,3,15,-3,0,3,15,-2,0,3,15,-1,0,3,15,0,0,3,15,1,0,3,15,2,0,3,15,3,0,3,15,4,0,3,15,5,0,3,15,6,0,3,15,7,0,3],"Middle":[-8,-11,63,1,-8,-10,2,2,-7,-11,63,1,-7,-10,2,2,-6,-11,63,1,-6,-10,2,2,-5,-11,63,1,-5,-10,2,2,-4,-11,63,1,-4,-10,2,2,-3,-11,63,1,-3,-10,2,2,-2,-11,63,1,-2,-10,2,2,-1,-11,63,1,-1,-10,2,2,0,-7,54,1,0,-6,1,2,1,-7,63,1,1,-6,2,2,2,-7,63,1,2,-6,2,2,3,-7,63,1,3,-6,2,2,4,-7,63,1,4,-6,2,2,5,-7,63,1,5,-6,2,2,6,-7,63,1,6,-6,2,2,7,-7,27,1,7,-6,3,2,8,-11,63,1,8,-10,2,2,9,-11,63,1,9,-10,2,2,10,-11,63,1,10,-10,2,2,11,-11,63,1,11,-10,2,2,12,-11,63,1,12,-10,2,2,13,-11,63,1,13,-10,2,2,14,-11,63,1,14,-10,2,2,15,-11,63,1,15,-10,2,2],"Top":[-10,-12,511,1,-10,-11,511,1,-10,-10,511,1,-10,-9,511,1,-10,-8,511,1,-10,-7,511,1,-10,-6,511,1,-10,-5,511,1,-10,-4,511,1,-10,-3,511,1,-10,-2,511,1,-10,-1,511,1,-10,0,511,1,-10,1,511,1,-10,2,511,1,-10,3,511,1,-10,4,511,1,-10,5,511,1,-10,6,511,1,-10,7,511,1,-10,8,511,1,-10,9,511,1,-9,-12,511,1,-9,-11,255,1,-9,-10,219,1,-9,-9,219,1,-9,-8,219,1,-9,-7,219,1,-9,-6,219,1,-9,-5,219,1,-9,-4,219,1,-9,-3,219,1,-9,-2,219,1,-9,-1,219,1,-9,0,219,1,-9,1,219,1,-9,2,219,1,-9,3,219,1,-9,4,219,1,-9,5,219,1,-9,6,219,1,-9,7,219,1,-9,8,507,1,-9,9,511,1,-8,-12,511,1,-8,8,504,1,-8,9,511,1,-7,-12,511,1,-7,8,504,1,-7,9,511,1,-6,-12,511,1,-6,8,504,1,-6,9,511,1,-5,-12,511,1,-5,8,504,1,-5,9,511,1,-4,-12,511,1,-4,8,504,1,-4,9,511,1,-3,-12,511,1,-3,8,504,1,-3,9,511,1,-2,-12,511,1,-2,8,504,1,-2,9,511,1,-1,-12,511,1,-1,8,504,1,-1,9,511,1,0,-12,511,1,0,-11,447,1,0,-10,438,1,0,-9,438,1,0,-8,438,1,0,5,432,1,0,6,438,1,0,7,438,1,0,8,510,1,0,9,511,1,1,-12,511,1,1,-11,511,1,1,-10,511,1,1,-9,511,1,1,-8,511,1,1,5,504,1,1,6,511,1,1,7,511,1,1,8,511,1,1,9,511,1,2,-8,511,1,2,5,504,1,2,6,511,1,3,-8,511,1,3,5,504,1,3,6,511,1,4,-8,511,1,4,5,504,1,4,6,511,1,5,-8,511,1,5,5,504,1,5,6,511,1,6,-12,511,1,6,-11,511,1,6,-10,511,1,6,-9,511,1,6,-8,511,1,6,5,504,1,6,6,511,1,6,7,511,1,6,8,511,1,6,9,511,1,7,-12,511,1,7,-11,255,1,7,-10,219,1,7,-9,219,1,7,-8,219,1,7,5,216,1,7,6,219,1,7,7,219,1,7,8,507,1,7,9,511,1,8,-12,511,1,8,8,504,1,8,9,511,1,9,-12,511,1,9,8,504,1,9,9,511,1,10,-12,511,1,10,8,504,1,10,9,511,1,11,-12,511,1,11,8,504,1,11,9,511,1,12,-12,511,1,12,8,504,1,12,9,511,1,13,-12,511,1,13,8,504,1,13,9,511,1,14,-12,511,1,14,8,504,1,14,9,511,1,15,-12,511,1,15,8,504,1,15,9,511,1,16,-12,511,1,16,-11,447,1,16,-10,438,1,16,-9,438,1,16,-8,438,1,16,-7,438,1,16,-6,438,1,16,-5,438,1,16,-4,438,1,16,-3,438,1,16,-2,438,1,16,-1,438,1,16,0,438,1,16,1,438,1,16,2,438,1,16,3,438,1,16,4,438,1,16,5,438,1,16,6,438,1,16,7,438,1,16,8,510,1,16,9,511,1,17,-12,511,1,17,-11,511,1,17,-10,511,1,17,-9,511,1,17,-8,511,1,17,-7,511,1,17,-6,511,1,17,-5,511,1,17,-4,511,1,17,-3,511,1,17,-2,511,1,17,-1,511,1,17,0,511,1,17,1,511,1,17,2,511,1,17,3,511,1,17,4,511,1,17,5,511,1,17,6,511,1,17,7,511,1,17,8,511,1,17,9,511,1],"CustomFloor1":[-6,-8,2,2,6,-6,-7,2,2,7,-7,-7,2,1,7,-7,-8,2,1,6,-5,-8,2,2,6,-5,-7,2,2,7,-4,-8,2,2,6,-4,-7,2,2,7,-3,-8,2,2,6,-3,-7,2,2,7,-2,-8,2,3,6,-2,-7,2,3,7,-2,-6,2,3,7,-3,-6,2,2,7,-2,-5,2,3,7,-3,-5,2,2,7,-2,-4,2,4,9,-3,-4,2,2,7,-2,-3,2,2,7,-3,-3,2,2,7,-4,-3,2,2,7,-4,-4,2,2,7,-3,-2,2,2,7,-4,-2,2,2,7,-3,-1,2,2,7,-4,-1,2,2,7,-3,0,2,2,7,-4,0,2,2,7,-6,-6,2,2,7,-7,-6,2,1,7,-6,-5,2,2,7,-7,-5,2,1,7,-6,-4,2,2,7,-7,-4,2,1,7,-6,-3,2,2,7,-7,-3,2,1,7,-6,-2,2,2,7,-7,-2,2,1,7,-6,-1,2,2,7,-7,-1,2,1,7,-6,0,2,2,7,-7,0,2,1,7,-6,1,2,2,7,-7,1,2,1,7,-6,2,2,2,7,-7,2,2,1,7,-6,3,2,2,7,-7,3,2,1,7,-6,4,2,2,7,-7,4,2,1,7,-6,5,2,2,7,-7,5,2,1,7,-6,6,2,2,8,-7,6,2,1,8,-5,5,2,2,7,-5,6,2,2,8,-4,5,2,2,7,-4,6,2,2,8,-3,5,2,2,7,-3,6,2,2,8,-2,5,2,3,7,-2,6,2,3,8,-2,4,2,3,7,-3,4,2,2,7,-2,3,2,4,8,-3,3,2,2,7,-2,2,2,2,7,-3,2,2,2,7,-2,1,2,2,7,-3,1,2,2,7,-2,0,2,2,7,-2,-1,2,2,7,-2,-2,2,2,7,-4,-6,2,2,7,-4,-5,2,2,7,-5,-5,2,2,7,-5,-6,2,2,7,-5,-4,2,2,7,-5,-3,2,2,7,-5,-2,2,2,7,-5,-1,2,2,7,-5,0,2,2,7,-4,1,2,2,7,-5,1,2,2,7,-4,2,2,2,7,-5,2,2,2,7,-4,3,2,2,7,-5,3,2,2,7,-4,4,2,2,7,-5,4,2,2,7,0,-4,2,2,6,0,-3,2,2,7,-1,-3,2,2,7,-1,-4,2,2,6,1,-4,2,2,6,1,-3,2,2,7,2,-4,2,2,6,2,-3,2,2,7,3,-4,2,2,6,3,-3,2,2,7,4,-4,2,2,6,4,-3,2,2,7,5,-4,2,2,6,5,-3,2,2,7,6,-4,2,2,6,6,-3,2,2,7,7,-4,2,2,6,7,-3,2,2,7,8,-4,2,2,6,8,-3,2,2,7,-1,2,2,2,7,-1,3,2,2,8,0,2,2,2,7,0,3,2,2,8,1,2,2,2,7,1,3,2,2,8,2,2,2,2,7,2,3,2,2,8,3,2,2,2,7,3,3,2,2,8,4,2,2,2,7,4,3,2,2,8,5,2,2,2,7,5,3,2,2,8,6,2,2,2,7,6,3,2,2,8,7,2,2,2,7,7,3,2,2,8,8,2,2,2,7,8,3,2,2,8,9,2,2,2,7,9,3,2,5,8,10,2,2,2,7,10,3,2,2,7,11,2,2,2,7,11,3,2,2,7,11,1,2,2,7,10,1,2,2,7,11,0,2,2,7,10,0,2,2,7,9,1,2,2,7,9,0,2,2,7,10,-1,2,2,7,9,-1,2,2,7,10,-2,2,2,7,9,-2,2,2,7,8,-1,2,2,7,8,-2,2,2,7,7,-1,2,2,7,7,-2,2,2,7,6,-1,2,2,7,6,-2,2,2,7,5,-1,2,2,7,5,-2,2,2,7,4,-1,2,2,7,4,-2,2,2,7,3,-1,2,2,7,3,-2,2,2,7,2,-1,2,2,7,2,-2,2,2,7,1,-1,2,2,7,1,-2,2,2,7,0,-1,2,2,7,0,-2,2,2,7,-1,-1,2,2,7,-1,-2,2,2,7,-1,0,2,2,7,-1,1,2,2,7,0,1,2,2,7,1,1,2,2,7,2,1,2,2,7,3,1,2,2,7,4,1,2,2,7,5,1,2,2,7,6,1,2,2,7,7,1,2,2,7,7,0,2,2,7,6,0,2,2,7,5,0,2,2,7,4,0,2,2,7,3,0,2,2,7,2,0,2,2,7,1,0,2,2,7,0,0,2,2,7,8,0,2,2,7,8,1,2,2,7,10,4,2,2,7,9,4,2,1,7,10,5,2,2,7,9,5,2,1,7,10,6,2,2,8,9,6,2,1,8,11,5,2,2,7,11,6,2,2,8,12,5,2,2,7,12,6,2,2,8,13,5,2,2,7,13,6,2,2,8,14,5,2,3,7,14,6,2,3,8,14,4,2,3,7,13,4,2,2,7,14,3,2,3,7,13,3,2,2,7,14,2,2,3,7,13,2,2,2,7,14,1,2,3,7,13,1,2,2,7,14,0,2,3,7,13,0,2,2,7,14,-1,2,3,7,14,-2,2,3,7,14,-3,2,3,7,14,-4,2,3,7,14,-5,2,3,7,14,-6,2,3,7,14,-7,2,3,7,13,-1,2,2,7,13,-2,2,2,7,13,-3,2,2,7,13,-4,2,2,7,13,-5,2,2,7,13,-6,2,2,7,13,-7,2,2,7,12,4,2,2,7,12,3,2,2,7,12,2,2,2,7,12,1,2,2,7,12,0,2,2,7,12,-1,2,2,7,12,-2,2,2,7,12,-3,2,2,7,12,-4,2,2,7,12,-5,2,2,7,12,-6,2,2,7,12,-7,2,2,7,11,4,2,2,7,11,-1,2,2,7,11,-2,2,2,7,11,-3,2,2,7,11,-4,2,2,7,11,-5,2,2,7,11,-6,2,2,7,11,-7,2,2,7,10,-3,2,2,7,10,-4,2,2,7,10,-5,2,2,7,10,-6,2,2,7,10,-7,2,2,7,9,-3,2,2,7,9,-4,2,5,9,9,-5,2,1,7,9,-6,2,1,7,9,-7,2,1,7,14,-8,2,3,6,13,-8,2,2,6,12,-8,2,2,6,11,-8,2,2,6,10,-8,2,2,6,9,-8,2,1,6],"CustomFloor2":[-5,-1,1,12,4,-4,-1,1,13,4,-2,1,1,14,6,11,3,1,13,6,12,-5,1,13,5,-6,-7,1,8,11,8,0,1,6,14,8,1,1,6,15,9,1,1,7,15,10,1,1,8,15,10,0,1,8,14,9,0,1,7,14,2,-3,1,6,14,2,-2,1,6,15,3,-2,1,7,15,4,-2,1,8,15,4,-3,1,8,14,3,-3,1,7,14,10,-3,1,7,12,10,-2,1,7,13,11,-2,1,8,13,11,-3,1,8,12],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":134,"Y":-74},{"X":134,"Y":-138},{"X":250,"Y":-138},{"X":250,"Y":138},{"X":134,"Y":138},{"X":134,"Y":90},{"X":-6,"Y":-74},{"X":-6,"Y":90},{"X":-122,"Y":-138},{"X":-6,"Y":138},{"X":-122,"Y":138},{"X":-6,"Y":-138}],"NavigationPolygon":[[0,1,2,3],[3,4,5],[0,3,5,6],[6,5,7,8],[7,9,10,8],[11,6,8]],"Floor":[-3,-5,0,3,-3,-4,0,3,-3,-3,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-2,-5,0,3,-2,-4,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,-1,4,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,0,4,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,0,0,3,9,1,0,3,9,2,0,3,9,3,0,3,9,4,0,3,10,-5,0,3,10,-4,0,3,10,-3,0,3,10,-2,0,3,10,-1,0,3,10,0,0,3,10,1,0,3,10,2,0,3,10,3,0,3,10,4,0,3,-8,-9,0,3,-8,-8,0,3,-8,-7,0,3,-8,-6,0,3,-8,-5,0,3,-8,-4,0,3,-8,-3,0,3,-8,-2,0,3,-8,-1,0,3,-8,0,0,3,-8,1,0,3,-8,2,0,3,-8,3,0,3,-8,4,0,3,-8,5,0,3,-8,6,0,3,-8,7,0,3,-7,-9,0,3,-7,-8,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-7,6,0,3,-7,7,0,3,-6,-9,0,3,-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-6,6,0,3,-6,7,0,3,-5,-9,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-5,6,0,3,-5,7,0,3,-4,-9,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-4,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-4,6,0,3,-4,7,0,3,-3,-9,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-3,5,0,3,-3,6,0,3,-3,7,0,3,-2,-9,0,3,-2,-8,0,3,-2,-7,0,3,-2,-6,0,3,-2,5,0,3,-2,6,0,3,-2,7,0,3,-1,-9,0,3,-1,-8,0,3,-1,-7,0,3,-1,-6,0,3,-1,5,0,3,-1,6,0,3,-1,7,0,3,8,-9,0,3,8,-8,0,3,8,-7,0,3,8,-6,0,3,8,5,0,3,8,6,0,3,8,7,0,3,9,-9,0,3,9,-8,0,3,9,-7,0,3,9,-6,0,3,9,5,0,3,9,6,0,3,9,7,0,3,10,-9,0,3,10,-8,0,3,10,-7,0,3,10,-6,0,3,10,5,0,3,10,6,0,3,10,7,0,3,11,-9,0,3,11,-8,0,3,11,-7,0,3,11,-6,0,3,11,-5,0,3,11,-4,0,3,11,-3,0,3,11,-2,0,3,11,-1,0,3,11,0,0,3,11,1,0,3,11,2,0,3,11,3,0,3,11,4,0,3,11,5,0,3,11,6,0,3,11,7,0,3,12,-9,0,3,12,-8,0,3,12,-7,0,3,12,-6,0,3,12,-5,0,3,12,-4,0,3,12,-3,0,3,12,-2,0,3,12,-1,0,3,12,0,0,3,12,1,0,3,12,2,0,3,12,3,0,3,12,4,0,3,12,5,0,3,12,6,0,3,12,7,0,3,13,-9,0,3,13,-8,0,3,13,-7,0,3,13,-6,0,3,13,-5,0,3,13,-4,0,3,13,-3,0,3,13,-2,0,3,13,-1,0,3,13,0,0,3,13,1,0,3,13,2,0,3,13,3,0,3,13,4,0,3,13,5,0,3,13,6,0,3,13,7,0,3,14,-9,0,3,14,-8,0,3,14,-7,0,3,14,-6,0,3,14,-5,0,3,14,-4,0,3,14,-3,0,3,14,-2,0,3,14,-1,0,3,14,0,0,3,14,1,0,3,14,2,0,3,14,3,0,3,14,4,0,3,14,5,0,3,14,6,0,3,14,7,0,3,15,-9,0,3,15,-8,0,3,15,-7,0,3,15,-6,0,3,15,-5,0,3,15,-4,0,3,15,-3,0,3,15,-2,0,3,15,-1,0,3,15,0,0,3,15,1,0,3,15,2,0,3,15,3,0,3,15,4,0,3,15,5,0,3,15,6,0,3,15,7,0,3],"CustomFloor1":[-6,-8,2,2,6,-6,-7,2,2,7,-7,-7,2,1,7,-7,-8,2,1,6,-5,-8,2,2,6,-5,-7,2,2,7,-4,-8,2,2,6,-4,-7,2,2,7,-3,-8,2,2,6,-3,-7,2,2,7,-2,-8,2,3,6,-2,-7,2,3,7,-2,-6,2,3,7,-3,-6,2,2,7,-2,-5,2,3,7,-3,-5,2,2,7,-2,-4,2,4,9,-3,-4,2,2,7,-2,-3,2,2,7,-3,-3,2,2,7,-4,-3,2,2,7,-4,-4,2,2,7,-3,-2,2,2,7,-4,-2,2,2,7,-3,-1,2,2,7,-4,-1,2,2,7,-3,0,2,2,7,-4,0,2,2,7,-6,-6,2,2,7,-7,-6,2,1,7,-6,-5,2,2,7,-7,-5,2,1,7,-6,-4,2,2,7,-7,-4,2,1,7,-6,-3,2,2,7,-7,-3,2,1,7,-6,-2,2,2,7,-7,-2,2,1,7,-6,-1,2,2,7,-7,-1,2,1,7,-6,0,2,2,7,-7,0,2,1,7,-6,1,2,2,7,-7,1,2,1,7,-6,2,2,2,7,-7,2,2,1,7,-6,3,2,2,7,-7,3,2,1,7,-6,4,2,2,7,-7,4,2,1,7,-6,5,2,2,7,-7,5,2,1,7,-6,6,2,2,8,-7,6,2,1,8,-5,5,2,2,7,-5,6,2,2,8,-4,5,2,2,7,-4,6,2,2,8,-3,5,2,2,7,-3,6,2,2,8,-2,5,2,3,7,-2,6,2,3,8,-2,4,2,3,7,-3,4,2,2,7,-2,3,2,4,8,-3,3,2,2,7,-2,2,2,2,7,-3,2,2,2,7,-2,1,2,2,7,-3,1,2,2,7,-2,0,2,2,7,-2,-1,2,2,7,-2,-2,2,2,7,-4,-6,2,2,7,-4,-5,2,2,7,-5,-5,2,2,7,-5,-6,2,2,7,-5,-4,2,2,7,-5,-3,2,2,7,-5,-2,2,2,7,-5,-1,2,2,7,-5,0,2,2,7,-4,1,2,2,7,-5,1,2,2,7,-4,2,2,2,7,-5,2,2,2,7,-4,3,2,2,7,-5,3,2,2,7,-4,4,2,2,7,-5,4,2,2,7,0,-4,2,2,6,0,-3,2,2,7,-1,-3,2,2,7,-1,-4,2,2,6,1,-4,2,2,6,1,-3,2,2,7,2,-4,2,2,6,2,-3,2,2,7,3,-4,2,2,6,3,-3,2,2,7,4,-4,2,2,6,4,-3,2,2,7,5,-4,2,2,6,5,-3,2,2,7,6,-4,2,2,6,6,-3,2,2,7,7,-4,2,2,6,7,-3,2,2,7,8,-4,2,2,6,8,-3,2,2,7,-1,2,2,2,7,-1,3,2,2,8,0,2,2,2,7,0,3,2,2,8,1,2,2,2,7,1,3,2,2,8,2,2,2,2,7,2,3,2,2,8,3,2,2,2,7,3,3,2,2,8,4,2,2,2,7,4,3,2,2,8,5,2,2,2,7,5,3,2,2,8,6,2,2,2,7,6,3,2,2,8,7,2,2,2,7,7,3,2,2,8,8,2,2,2,7,8,3,2,2,8,9,2,2,2,7,9,3,2,5,8,10,2,2,2,7,10,3,2,2,7,11,2,2,2,7,11,3,2,2,7,11,1,2,2,7,10,1,2,2,7,11,0,2,2,7,10,0,2,2,7,9,1,2,2,7,9,0,2,2,7,10,-1,2,2,7,9,-1,2,2,7,10,-2,2,2,7,9,-2,2,2,7,8,-1,2,2,7,8,-2,2,2,7,7,-1,2,2,7,7,-2,2,2,7,6,-1,2,2,7,6,-2,2,2,7,5,-1,2,2,7,5,-2,2,2,7,4,-1,2,2,7,4,-2,2,2,7,3,-1,2,2,7,3,-2,2,2,7,2,-1,2,2,7,2,-2,2,2,7,1,-1,2,2,7,1,-2,2,2,7,0,-1,2,2,7,0,-2,2,2,7,-1,-1,2,2,7,-1,-2,2,2,7,-1,0,2,2,7,-1,1,2,2,7,0,1,2,2,7,1,1,2,2,7,2,1,2,2,7,3,1,2,2,7,4,1,2,2,7,5,1,2,2,7,6,1,2,2,7,7,1,2,2,7,7,0,2,2,7,6,0,2,2,7,5,0,2,2,7,4,0,2,2,7,3,0,2,2,7,2,0,2,2,7,1,0,2,2,7,0,0,2,2,7,8,0,2,2,7,8,1,2,2,7,10,4,2,2,7,9,4,2,1,7,10,5,2,2,7,9,5,2,1,7,10,6,2,2,8,9,6,2,1,8,11,5,2,2,7,11,6,2,2,8,12,5,2,2,7,12,6,2,2,8,13,5,2,2,7,13,6,2,2,8,14,5,2,3,7,14,6,2,3,8,14,4,2,3,7,13,4,2,2,7,14,3,2,3,7,13,3,2,2,7,14,2,2,3,7,13,2,2,2,7,14,1,2,3,7,13,1,2,2,7,14,0,2,3,7,13,0,2,2,7,14,-1,2,3,7,14,-2,2,3,7,14,-3,2,3,7,14,-4,2,3,7,14,-5,2,3,7,14,-6,2,3,7,14,-7,2,3,7,13,-1,2,2,7,13,-2,2,2,7,13,-3,2,2,7,13,-4,2,2,7,13,-5,2,2,7,13,-6,2,2,7,13,-7,2,2,7,12,4,2,2,7,12,3,2,2,7,12,2,2,2,7,12,1,2,2,7,12,0,2,2,7,12,-1,2,2,7,12,-2,2,2,7,12,-3,2,2,7,12,-4,2,2,7,12,-5,2,2,7,12,-6,2,2,7,12,-7,2,2,7,11,4,2,2,7,11,-1,2,2,7,11,-2,2,2,7,11,-3,2,2,7,11,-4,2,2,7,11,-5,2,2,7,11,-6,2,2,7,11,-7,2,2,7,10,-3,2,2,7,10,-4,2,2,7,10,-5,2,2,7,10,-6,2,2,7,10,-7,2,2,7,9,-3,2,2,7,9,-4,2,5,9,9,-5,2,1,7,9,-6,2,1,7,9,-7,2,1,7,14,-8,2,3,6,13,-8,2,2,6,12,-8,2,2,6,11,-8,2,2,6,10,-8,2,2,6,9,-8,2,1,6],"CustomFloor2":[-5,-1,1,12,4,-4,-1,1,13,4,-2,1,1,14,6,11,3,1,13,6,12,-5,1,13,5,-6,-7,1,8,11,8,0,1,6,14,8,1,1,6,15,9,1,1,7,15,10,1,1,8,15,10,0,1,8,14,9,0,1,7,14,2,-3,1,6,14,2,-2,1,6,15,3,-2,1,7,15,4,-2,1,8,15,4,-3,1,8,14,3,-3,1,7,14,10,-3,1,7,12,10,-2,1,7,13,11,-2,1,8,13,11,-3,1,8,12],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle4/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle4/Preview.png
index 782fcd0..7f7b4b5 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle4/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle4/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle4/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle4/TileInfo.json
index 3b4762a..81d2236 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle4/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle4/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":278,"Y":-218},{"X":278,"Y":-302},{"X":330,"Y":-362},{"X":330,"Y":82},{"X":-170,"Y":-362},{"X":186,"Y":-302},{"X":278,"Y":6},{"X":-170,"Y":82},{"X":186,"Y":6},{"X":-10,"Y":6},{"X":186,"Y":-78},{"X":-102,"Y":6},{"X":-102,"Y":-78},{"X":-10,"Y":-78},{"X":186,"Y":-218},{"X":-10,"Y":-218},{"X":-10,"Y":-302},{"X":-102,"Y":-302},{"X":-102,"Y":-218},{"X":278,"Y":-78}],"NavigationPolygon":[[0,1,2,3],[4,2,1,5],[6,3,7,8],[8,7,9,10],[11,9,7],[11,7,4,12],[10,9,13],[5,14,15,16],[4,5,16],[4,16,17],[4,17,18],[12,4,18],[13,12,18,15],[10,13,15,14],[19,10,14,0],[19,0,3],[19,3,6]],"Floor":[-11,-23,0,3,-11,-22,0,3,-11,-21,0,3,-11,-20,0,3,-11,-19,0,3,-11,-18,0,3,-11,-17,0,3,-11,-16,0,3,-11,-15,0,3,-11,-14,0,3,-11,-13,0,3,-11,-12,0,3,-11,-11,0,3,-11,-10,0,3,-11,-9,0,3,-11,-8,0,3,-11,-7,0,3,-11,-6,0,3,-11,-5,0,3,-11,-4,0,3,-11,-3,0,3,-11,-2,0,3,-11,-1,0,3,-11,0,0,3,-11,1,0,3,-11,2,0,3,-11,3,0,3,-11,4,0,3,-10,-23,0,3,-10,-22,0,3,-10,-21,0,3,-10,-20,0,3,-10,-19,0,3,-10,-18,0,3,-10,-17,0,3,-10,-16,0,3,-10,-15,0,3,-10,-14,0,3,-10,-13,0,3,-10,-12,0,3,-10,-11,0,3,-10,-10,0,3,-10,-9,0,3,-10,-8,0,3,-10,-7,0,3,-10,-6,0,3,-10,-5,0,3,-10,-4,0,3,-10,-3,0,3,-10,-2,0,3,-10,-1,0,3,-10,0,0,3,-10,1,0,3,-10,2,0,3,-10,3,0,3,-10,4,0,3,-9,-23,0,3,-9,-22,0,3,-9,-21,0,3,-9,-20,0,3,-9,-19,0,3,-9,-18,0,3,-9,-17,0,3,-9,-16,0,3,-9,-15,0,3,-9,-14,0,3,-9,-13,0,3,-9,-12,0,3,-9,-11,0,3,-9,-10,0,3,-9,-9,0,3,-9,-8,0,3,-9,-7,0,3,-9,-6,0,3,-9,-5,0,3,-9,-4,0,3,-9,-3,0,3,-9,-2,0,3,-9,-1,0,3,-9,0,0,3,-9,1,0,3,-9,2,0,3,-9,3,0,3,-9,4,0,3,-8,-23,0,3,-8,-22,0,3,-8,-21,0,3,-8,-20,0,3,-8,-19,0,3,-8,-18,0,3,-8,-17,0,3,-8,-16,0,3,-8,-15,0,3,-8,-14,0,3,-8,-13,0,3,-8,-12,0,3,-8,-11,0,3,-8,-10,0,3,-8,-9,0,3,-8,-8,0,3,-8,-7,0,3,-8,-6,0,3,-8,-5,0,3,-8,-4,0,3,-8,-3,0,3,-8,-2,0,3,-8,-1,0,3,-8,0,0,3,-8,1,0,3,-8,2,0,3,-8,3,0,3,-8,4,0,3,-7,-23,0,3,-7,-22,0,3,-7,-21,0,3,-7,-20,0,3,-7,-19,0,3,-7,-18,0,3,-7,-17,0,3,-7,-16,0,3,-7,-15,0,3,-7,-14,0,3,-7,-13,0,3,-7,-12,0,3,-7,-11,0,3,-7,-10,0,3,-7,-9,0,3,-7,-8,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-6,-23,0,3,-6,-22,0,3,-6,-21,0,3,-6,-20,0,3,-6,-14,0,3,-6,-13,0,3,-6,-12,0,3,-6,-11,0,3,-6,-10,0,3,-6,-9,0,3,-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-5,-23,0,3,-5,-22,0,3,-5,-21,0,3,-5,-20,0,3,-5,-14,0,3,-5,-13,0,3,-5,-12,0,3,-5,-11,0,3,-5,-10,0,3,-5,-9,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-4,-23,0,3,-4,-22,0,3,-4,-21,0,3,-4,-20,0,3,-4,-14,0,3,-4,-13,0,3,-4,-12,0,3,-4,-11,0,3,-4,-10,0,3,-4,-9,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-3,-23,0,3,-3,-22,0,3,-3,-21,0,3,-3,-20,0,3,-3,-14,0,3,-3,-13,0,3,-3,-12,0,3,-3,-11,0,3,-3,-10,0,3,-3,-9,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-2,-23,0,3,-2,-22,0,3,-2,-21,0,3,-2,-20,0,3,-2,-14,0,3,-2,-13,0,3,-2,-12,0,3,-2,-11,0,3,-2,-10,0,3,-2,-9,0,3,-2,-8,0,3,-2,-7,0,3,-2,-6,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-1,-23,0,3,-1,-22,0,3,-1,-21,0,3,-1,-20,0,3,-1,-19,0,3,-1,-18,0,3,-1,-17,0,3,-1,-16,0,3,-1,-15,0,3,-1,-14,0,3,-1,-13,0,3,-1,-12,0,3,-1,-11,0,3,-1,-10,0,3,-1,-9,0,3,-1,-8,0,3,-1,-7,0,3,-1,-6,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,-1,4,0,3,0,-23,0,3,0,-22,0,3,0,-21,0,3,0,-20,0,3,0,-19,0,3,0,-18,0,3,0,-17,0,3,0,-16,0,3,0,-15,0,3,0,-14,0,3,0,-13,0,3,0,-12,0,3,0,-11,0,3,0,-10,0,3,0,-9,0,3,0,-8,0,3,0,-7,0,3,0,-6,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,0,4,0,3,1,-23,0,3,1,-22,0,3,1,-21,0,3,1,-20,0,3,1,-19,0,3,1,-18,0,3,1,-17,0,3,1,-16,0,3,1,-15,0,3,1,-14,0,3,1,-13,0,3,1,-12,0,3,1,-11,0,3,1,-10,0,3,1,-9,0,3,1,-8,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,2,-23,0,3,2,-22,0,3,2,-21,0,3,2,-20,0,3,2,-19,0,3,2,-18,0,3,2,-17,0,3,2,-16,0,3,2,-15,0,3,2,-14,0,3,2,-13,0,3,2,-12,0,3,2,-11,0,3,2,-10,0,3,2,-9,0,3,2,-8,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,3,-23,0,3,3,-22,0,3,3,-21,0,3,3,-20,0,3,3,-19,0,3,3,-18,0,3,3,-17,0,3,3,-16,0,3,3,-15,0,3,3,-14,0,3,3,-13,0,3,3,-12,0,3,3,-11,0,3,3,-10,0,3,3,-9,0,3,3,-8,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,4,-23,0,3,4,-22,0,3,4,-21,0,3,4,-20,0,3,4,-19,0,3,4,-18,0,3,4,-17,0,3,4,-16,0,3,4,-15,0,3,4,-14,0,3,4,-13,0,3,4,-12,0,3,4,-11,0,3,4,-10,0,3,4,-9,0,3,4,-8,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,5,-23,0,3,5,-22,0,3,5,-21,0,3,5,-20,0,3,5,-19,0,3,5,-18,0,3,5,-17,0,3,5,-16,0,3,5,-15,0,3,5,-14,0,3,5,-13,0,3,5,-12,0,3,5,-11,0,3,5,-10,0,3,5,-9,0,3,5,-8,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,6,-23,0,3,6,-22,0,3,6,-21,0,3,6,-20,0,3,6,-19,0,3,6,-18,0,3,6,-17,0,3,6,-16,0,3,6,-15,0,3,6,-14,0,3,6,-13,0,3,6,-12,0,3,6,-11,0,3,6,-10,0,3,6,-9,0,3,6,-8,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,7,-23,0,3,7,-22,0,3,7,-21,0,3,7,-20,0,3,7,-19,0,3,7,-18,0,3,7,-17,0,3,7,-16,0,3,7,-15,0,3,7,-14,0,3,7,-13,0,3,7,-12,0,3,7,-11,0,3,7,-10,0,3,7,-9,0,3,7,-8,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,8,-23,0,3,8,-22,0,3,8,-21,0,3,8,-20,0,3,8,-19,0,3,8,-18,0,3,8,-17,0,3,8,-16,0,3,8,-15,0,3,8,-14,0,3,8,-13,0,3,8,-12,0,3,8,-11,0,3,8,-10,0,3,8,-9,0,3,8,-8,0,3,8,-7,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,9,-23,0,3,9,-22,0,3,9,-21,0,3,9,-20,0,3,9,-19,0,3,9,-18,0,3,9,-17,0,3,9,-16,0,3,9,-15,0,3,9,-14,0,3,9,-13,0,3,9,-12,0,3,9,-11,0,3,9,-10,0,3,9,-9,0,3,9,-8,0,3,9,-7,0,3,9,-6,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,0,0,3,9,1,0,3,9,2,0,3,9,3,0,3,9,4,0,3,10,-23,0,3,10,-22,0,3,10,-21,0,3,10,-20,0,3,10,-19,0,3,10,-18,0,3,10,-17,0,3,10,-16,0,3,10,-15,0,3,10,-14,0,3,10,-13,0,3,10,-12,0,3,10,-11,0,3,10,-10,0,3,10,-9,0,3,10,-8,0,3,10,-7,0,3,10,-6,0,3,10,-5,0,3,10,-4,0,3,10,-3,0,3,10,-2,0,3,10,-1,0,3,10,0,0,3,10,1,0,3,10,2,0,3,10,3,0,3,10,4,0,3,11,-23,0,3,11,-22,0,3,11,-21,0,3,11,-20,0,3,11,-19,0,3,11,-18,0,3,11,-17,0,3,11,-16,0,3,11,-15,0,3,11,-14,0,3,11,-13,0,3,11,-12,0,3,11,-11,0,3,11,-10,0,3,11,-9,0,3,11,-8,0,3,11,-7,0,3,11,-6,0,3,11,-5,0,3,11,-4,0,3,11,-3,0,3,11,-2,0,3,11,-1,0,3,11,0,0,3,11,1,0,3,11,2,0,3,11,3,0,3,11,4,0,3,12,-23,0,3,12,-22,0,3,12,-21,0,3,12,-20,0,3,12,-14,0,3,12,-13,0,3,12,-12,0,3,12,-11,0,3,12,-10,0,3,12,-9,0,3,12,-8,0,3,12,-7,0,3,12,-6,0,3,12,0,0,3,12,1,0,3,12,2,0,3,12,3,0,3,12,4,0,3,13,-23,0,3,13,-22,0,3,13,-21,0,3,13,-20,0,3,13,-14,0,3,13,-13,0,3,13,-12,0,3,13,-11,0,3,13,-10,0,3,13,-9,0,3,13,-8,0,3,13,-7,0,3,13,-6,0,3,13,0,0,3,13,1,0,3,13,2,0,3,13,3,0,3,13,4,0,3,14,-23,0,3,14,-22,0,3,14,-21,0,3,14,-20,0,3,14,-14,0,3,14,-13,0,3,14,-12,0,3,14,-11,0,3,14,-10,0,3,14,-9,0,3,14,-8,0,3,14,-7,0,3,14,-6,0,3,14,0,0,3,14,1,0,3,14,2,0,3,14,3,0,3,14,4,0,3,15,-23,0,3,15,-22,0,3,15,-21,0,3,15,-20,0,3,15,-14,0,3,15,-13,0,3,15,-12,0,3,15,-11,0,3,15,-10,0,3,15,-9,0,3,15,-8,0,3,15,-7,0,3,15,-6,0,3,15,0,0,3,15,1,0,3,15,2,0,3,15,3,0,3,15,4,0,3,16,-23,0,3,16,-22,0,3,16,-21,0,3,16,-20,0,3,16,-14,0,3,16,-13,0,3,16,-12,0,3,16,-11,0,3,16,-10,0,3,16,-9,0,3,16,-8,0,3,16,-7,0,3,16,-6,0,3,16,0,0,3,16,1,0,3,16,2,0,3,16,3,0,3,16,4,0,3,17,-23,0,3,17,-22,0,3,17,-21,0,3,17,-20,0,3,17,-19,0,3,17,-18,0,3,17,-17,0,3,17,-16,0,3,17,-15,0,3,17,-14,0,3,17,-13,0,3,17,-12,0,3,17,-11,0,3,17,-10,0,3,17,-9,0,3,17,-8,0,3,17,-7,0,3,17,-6,0,3,17,-5,0,3,17,-4,0,3,17,-3,0,3,17,-2,0,3,17,-1,0,3,17,0,0,3,17,1,0,3,17,2,0,3,17,3,0,3,17,4,0,3,18,-23,0,3,18,-22,0,3,18,-21,0,3,18,-20,0,3,18,-19,0,3,18,-18,0,3,18,-17,0,3,18,-16,0,3,18,-15,0,3,18,-14,0,3,18,-13,0,3,18,-12,0,3,18,-11,0,3,18,-10,0,3,18,-9,0,3,18,-8,0,3,18,-7,0,3,18,-6,0,3,18,-5,0,3,18,-4,0,3,18,-3,0,3,18,-2,0,3,18,-1,0,3,18,0,0,3,18,1,0,3,18,2,0,3,18,3,0,3,18,4,0,3,19,-23,0,3,19,-22,0,3,19,-21,0,3,19,-20,0,3,19,-19,0,3,19,-18,0,3,19,-17,0,3,19,-16,0,3,19,-15,0,3,19,-14,0,3,19,-13,0,3,19,-12,0,3,19,-11,0,3,19,-10,0,3,19,-9,0,3,19,-8,0,3,19,-7,0,3,19,-6,0,3,19,-5,0,3,19,-4,0,3,19,-3,0,3,19,-2,0,3,19,-1,0,3,19,0,0,3,19,1,0,3,19,2,0,3,19,3,0,3,19,4,0,3,20,-23,0,3,20,-22,0,3,20,-21,0,3,20,-20,0,3,20,-19,0,3,20,-18,0,3,20,-17,0,3,20,-16,0,3,20,-15,0,3,20,-14,0,3,20,-13,0,3,20,-12,0,3,20,-11,0,3,20,-10,0,3,20,-9,0,3,20,-8,0,3,20,-7,0,3,20,-6,0,3,20,-5,0,3,20,-4,0,3,20,-3,0,3,20,-2,0,3,20,-1,0,3,20,0,0,3,20,1,0,3,20,2,0,3,20,3,0,3,20,4,0,3],"Middle":[-11,-25,63,1,-11,-24,2,2,-10,-25,63,1,-10,-24,2,2,-9,-25,63,1,-9,-24,2,2,-8,-25,63,1,-8,-24,2,2,-7,-25,63,1,-7,-24,2,2,-6,-25,63,1,-6,-24,2,2,-6,-16,54,1,-6,-15,1,2,-6,-2,54,1,-6,-1,1,2,-5,-25,63,1,-5,-24,2,2,-5,-16,63,1,-5,-15,2,2,-5,-2,63,1,-5,-1,2,2,-4,-25,63,1,-4,-24,2,2,-4,-16,63,1,-4,-15,2,2,-4,-2,63,1,-4,-1,2,2,-3,-25,63,1,-3,-24,2,2,-3,-16,63,1,-3,-15,2,2,-3,-2,63,1,-3,-1,2,2,-2,-25,63,1,-2,-24,2,2,-2,-16,27,1,-2,-15,3,2,-2,-2,27,1,-2,-1,3,2,-1,-25,63,1,-1,-24,2,2,0,-25,63,1,0,-24,2,2,1,-25,63,1,1,-24,2,2,2,-25,63,1,2,-24,2,2,3,-25,63,1,3,-24,2,2,4,-25,63,1,4,-24,2,2,5,-25,63,1,5,-24,2,2,6,-25,63,1,6,-24,2,2,7,-25,63,1,7,-24,2,2,8,-25,63,1,8,-24,2,2,9,-25,63,1,9,-24,2,2,10,-25,63,1,10,-24,2,2,11,-25,63,1,11,-24,2,2,12,-25,63,1,12,-24,2,2,12,-16,54,1,12,-15,1,2,12,-2,54,1,12,-1,1,2,13,-25,63,1,13,-24,2,2,13,-16,63,1,13,-15,2,2,13,-2,63,1,13,-1,2,2,14,-25,63,1,14,-24,2,2,14,-16,63,1,14,-15,2,2,14,-2,63,1,14,-1,2,2,15,-25,63,1,15,-24,2,2,15,-16,63,1,15,-15,2,2,15,-2,63,1,15,-1,2,2,16,-25,63,1,16,-24,2,2,16,-16,27,1,16,-15,3,2,16,-2,27,1,16,-1,3,2,17,-25,63,1,17,-24,2,2,18,-25,63,1,18,-24,2,2,19,-25,63,1,19,-24,2,2,20,-25,63,1,20,-24,2,2],"Top":[-13,-26,511,1,-13,-25,511,1,-13,-24,511,1,-13,-23,511,1,-13,-22,511,1,-13,-21,511,1,-13,-20,511,1,-13,-19,511,1,-13,-18,511,1,-13,-17,511,1,-13,-16,511,1,-13,-15,511,1,-13,-14,511,1,-13,-13,511,1,-13,-12,511,1,-13,-11,511,1,-13,-10,511,1,-13,-9,511,1,-13,-8,511,1,-13,-7,511,1,-13,-6,511,1,-13,-5,511,1,-13,-4,511,1,-13,-3,511,1,-13,-2,511,1,-13,-1,511,1,-13,0,511,1,-13,1,511,1,-13,2,511,1,-13,3,511,1,-13,4,511,1,-13,5,511,1,-13,6,511,1,-12,-26,511,1,-12,-25,255,1,-12,-24,219,1,-12,-23,219,1,-12,-22,219,1,-12,-21,219,1,-12,-20,219,1,-12,-19,219,1,-12,-18,219,1,-12,-17,219,1,-12,-16,219,1,-12,-15,219,1,-12,-14,219,1,-12,-13,219,1,-12,-12,219,1,-12,-11,219,1,-12,-10,219,1,-12,-9,219,1,-12,-8,219,1,-12,-7,219,1,-12,-6,219,1,-12,-5,219,1,-12,-4,219,1,-12,-3,219,1,-12,-2,219,1,-12,-1,219,1,-12,0,219,1,-12,1,219,1,-12,2,219,1,-12,3,219,1,-12,4,219,1,-12,5,507,1,-12,6,511,1,-11,-26,511,1,-11,5,504,1,-11,6,511,1,-10,-26,511,1,-10,5,504,1,-10,6,511,1,-9,-26,511,1,-9,5,504,1,-9,6,511,1,-8,-26,511,1,-8,5,504,1,-8,6,511,1,-7,-26,511,1,-7,5,504,1,-7,6,511,1,-6,-26,511,1,-6,-19,432,1,-6,-18,438,1,-6,-17,438,1,-6,-5,432,1,-6,-4,438,1,-6,-3,438,1,-6,5,504,1,-6,6,511,1,-5,-26,511,1,-5,-19,504,1,-5,-18,511,1,-5,-17,511,1,-5,-5,504,1,-5,-4,511,1,-5,-3,511,1,-5,5,504,1,-5,6,511,1,-4,-26,511,1,-4,-19,504,1,-4,-18,511,1,-4,-17,511,1,-4,-5,504,1,-4,-4,511,1,-4,-3,511,1,-4,5,504,1,-4,6,511,1,-3,-26,511,1,-3,-19,504,1,-3,-18,511,1,-3,-17,511,1,-3,-5,504,1,-3,-4,511,1,-3,-3,511,1,-3,5,504,1,-3,6,511,1,-2,-26,511,1,-2,-19,216,1,-2,-18,219,1,-2,-17,219,1,-2,-5,216,1,-2,-4,219,1,-2,-3,219,1,-2,5,504,1,-2,6,511,1,-1,-26,511,1,-1,5,504,1,-1,6,511,1,0,-26,511,1,0,5,504,1,0,6,511,1,1,-26,511,1,1,5,504,1,1,6,511,1,2,-26,511,1,2,5,504,1,2,6,511,1,3,-26,511,1,3,5,504,1,3,6,511,1,4,-26,511,1,4,5,504,1,4,6,511,1,5,-26,511,1,5,5,504,1,5,6,511,1,6,-26,511,1,6,5,504,1,6,6,511,1,7,-26,511,1,7,5,504,1,7,6,511,1,8,-26,511,1,8,5,504,1,8,6,511,1,9,-26,511,1,9,5,504,1,9,6,511,1,10,-26,511,1,10,5,504,1,10,6,511,1,11,-26,511,1,11,5,504,1,11,6,511,1,12,-26,511,1,12,-19,432,1,12,-18,438,1,12,-17,438,1,12,-5,432,1,12,-4,438,1,12,-3,438,1,12,5,504,1,12,6,511,1,13,-26,511,1,13,-19,504,1,13,-18,511,1,13,-17,511,1,13,-5,504,1,13,-4,511,1,13,-3,511,1,13,5,504,1,13,6,511,1,14,-26,511,1,14,-19,504,1,14,-18,511,1,14,-17,511,1,14,-5,504,1,14,-4,511,1,14,-3,511,1,14,5,504,1,14,6,511,1,15,-26,511,1,15,-19,504,1,15,-18,511,1,15,-17,511,1,15,-5,504,1,15,-4,511,1,15,-3,511,1,15,5,504,1,15,6,511,1,16,-26,511,1,16,-19,216,1,16,-18,219,1,16,-17,219,1,16,-5,216,1,16,-4,219,1,16,-3,219,1,16,5,504,1,16,6,511,1,17,-26,511,1,17,5,504,1,17,6,511,1,18,-26,511,1,18,5,504,1,18,6,511,1,19,-26,511,1,19,5,504,1,19,6,511,1,20,-26,511,1,20,5,504,1,20,6,511,1,21,-26,511,1,21,-25,447,1,21,-24,438,1,21,-23,438,1,21,-22,438,1,21,-21,438,1,21,-20,438,1,21,-19,438,1,21,-18,438,1,21,-17,438,1,21,-16,438,1,21,-15,438,1,21,-14,438,1,21,-13,438,1,21,-12,438,1,21,-11,438,1,21,-10,438,1,21,-9,438,1,21,-8,438,1,21,-7,438,1,21,-6,438,1,21,-5,438,1,21,-4,438,1,21,-3,438,1,21,-2,438,1,21,-1,438,1,21,0,438,1,21,1,438,1,21,2,438,1,21,3,438,1,21,4,438,1,21,5,510,1,21,6,511,1,22,-26,511,1,22,-25,511,1,22,-24,511,1,22,-23,511,1,22,-22,511,1,22,-21,511,1,22,-20,511,1,22,-19,511,1,22,-18,511,1,22,-17,511,1,22,-16,511,1,22,-15,511,1,22,-14,511,1,22,-13,511,1,22,-12,511,1,22,-11,511,1,22,-10,511,1,22,-9,511,1,22,-8,511,1,22,-7,511,1,22,-6,511,1,22,-5,511,1,22,-4,511,1,22,-3,511,1,22,-2,511,1,22,-1,511,1,22,0,511,1,22,1,511,1,22,2,511,1,22,3,511,1,22,4,511,1,22,5,511,1,22,6,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":278,"Y":-218},{"X":278,"Y":-302},{"X":330,"Y":-362},{"X":330,"Y":82},{"X":-170,"Y":-362},{"X":186,"Y":-302},{"X":278,"Y":6},{"X":-170,"Y":82},{"X":186,"Y":6},{"X":-10,"Y":6},{"X":186,"Y":-78},{"X":-102,"Y":6},{"X":-102,"Y":-78},{"X":-10,"Y":-78},{"X":186,"Y":-218},{"X":-10,"Y":-218},{"X":-10,"Y":-302},{"X":-102,"Y":-302},{"X":-102,"Y":-218},{"X":278,"Y":-78}],"NavigationPolygon":[[0,1,2,3],[4,2,1,5],[6,3,7,8],[8,7,9,10],[11,9,7],[11,7,4,12],[10,9,13],[5,14,15,16],[4,5,16],[4,16,17],[4,17,18],[12,4,18],[13,12,18,15],[10,13,15,14],[19,10,14,0],[19,0,3],[19,3,6]],"Floor":[-11,-23,0,3,-11,-22,0,3,-11,-21,0,3,-11,-20,0,3,-11,-19,0,3,-11,-18,0,3,-11,-17,0,3,-11,-16,0,3,-11,-15,0,3,-11,-14,0,3,-11,-13,0,3,-11,-12,0,3,-11,-11,0,3,-11,-10,0,3,-11,-9,0,3,-11,-8,0,3,-11,-7,0,3,-11,-6,0,3,-11,-5,0,3,-11,-4,0,3,-11,-3,0,3,-11,-2,0,3,-11,-1,0,3,-11,0,0,3,-11,1,0,3,-11,2,0,3,-11,3,0,3,-11,4,0,3,-10,-23,0,3,-10,-22,0,3,-10,-21,0,3,-10,-20,0,3,-10,-19,0,3,-10,-18,0,3,-10,-17,0,3,-10,-16,0,3,-10,-15,0,3,-10,-14,0,3,-10,-13,0,3,-10,-12,0,3,-10,-11,0,3,-10,-10,0,3,-10,-9,0,3,-10,-8,0,3,-10,-7,0,3,-10,-6,0,3,-10,-5,0,3,-10,-4,0,3,-10,-3,0,3,-10,-2,0,3,-10,-1,0,3,-10,0,0,3,-10,1,0,3,-10,2,0,3,-10,3,0,3,-10,4,0,3,-9,-23,0,3,-9,-22,0,3,-9,-21,0,3,-9,-20,0,3,-9,-19,0,3,-9,-18,0,3,-9,-17,0,3,-9,-16,0,3,-9,-15,0,3,-9,-14,0,3,-9,-13,0,3,-9,-12,0,3,-9,-11,0,3,-9,-10,0,3,-9,-9,0,3,-9,-8,0,3,-9,-7,0,3,-9,-6,0,3,-9,-5,0,3,-9,-4,0,3,-9,-3,0,3,-9,-2,0,3,-9,-1,0,3,-9,0,0,3,-9,1,0,3,-9,2,0,3,-9,3,0,3,-9,4,0,3,-8,-23,0,3,-8,-22,0,3,-8,-21,0,3,-8,-20,0,3,-8,-19,0,3,-8,-18,0,3,-8,-17,0,3,-8,-16,0,3,-8,-15,0,3,-8,-14,0,3,-8,-13,0,3,-8,-12,0,3,-8,-11,0,3,-8,-10,0,3,-8,-9,0,3,-8,-8,0,3,-8,-7,0,3,-8,-6,0,3,-8,-5,0,3,-8,-4,0,3,-8,-3,0,3,-8,-2,0,3,-8,-1,0,3,-8,0,0,3,-8,1,0,3,-8,2,0,3,-8,3,0,3,-8,4,0,3,-7,-23,0,3,-7,-22,0,3,-7,-21,0,3,-7,-20,0,3,-7,-19,0,3,-7,-18,0,3,-7,-17,0,3,-7,-16,0,3,-7,-15,0,3,-7,-14,0,3,-7,-13,0,3,-7,-12,0,3,-7,-11,0,3,-7,-10,0,3,-7,-9,0,3,-7,-8,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-6,-23,0,3,-6,-22,0,3,-6,-21,0,3,-6,-20,0,3,-6,-14,0,3,-6,-13,0,3,-6,-12,0,3,-6,-11,0,3,-6,-10,0,3,-6,-9,0,3,-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-5,-23,0,3,-5,-22,0,3,-5,-21,0,3,-5,-20,0,3,-5,-14,0,3,-5,-13,0,3,-5,-12,0,3,-5,-11,0,3,-5,-10,0,3,-5,-9,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-4,-23,0,3,-4,-22,0,3,-4,-21,0,3,-4,-20,0,3,-4,-14,0,3,-4,-13,0,3,-4,-12,0,3,-4,-11,0,3,-4,-10,0,3,-4,-9,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-3,-23,0,3,-3,-22,0,3,-3,-21,0,3,-3,-20,0,3,-3,-14,0,3,-3,-13,0,3,-3,-12,0,3,-3,-11,0,3,-3,-10,0,3,-3,-9,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-2,-23,0,3,-2,-22,0,3,-2,-21,0,3,-2,-20,0,3,-2,-14,0,3,-2,-13,0,3,-2,-12,0,3,-2,-11,0,3,-2,-10,0,3,-2,-9,0,3,-2,-8,0,3,-2,-7,0,3,-2,-6,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-1,-23,0,3,-1,-22,0,3,-1,-21,0,3,-1,-20,0,3,-1,-19,0,3,-1,-18,0,3,-1,-17,0,3,-1,-16,0,3,-1,-15,0,3,-1,-14,0,3,-1,-13,0,3,-1,-12,0,3,-1,-11,0,3,-1,-10,0,3,-1,-9,0,3,-1,-8,0,3,-1,-7,0,3,-1,-6,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,-1,4,0,3,0,-23,0,3,0,-22,0,3,0,-21,0,3,0,-20,0,3,0,-19,0,3,0,-18,0,3,0,-17,0,3,0,-16,0,3,0,-15,0,3,0,-14,0,3,0,-13,0,3,0,-12,0,3,0,-11,0,3,0,-10,0,3,0,-9,0,3,0,-8,0,3,0,-7,0,3,0,-6,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,0,4,0,3,1,-23,0,3,1,-22,0,3,1,-21,0,3,1,-20,0,3,1,-19,0,3,1,-18,0,3,1,-17,0,3,1,-16,0,3,1,-15,0,3,1,-14,0,3,1,-13,0,3,1,-12,0,3,1,-11,0,3,1,-10,0,3,1,-9,0,3,1,-8,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,2,-23,0,3,2,-22,0,3,2,-21,0,3,2,-20,0,3,2,-19,0,3,2,-18,0,3,2,-17,0,3,2,-16,0,3,2,-15,0,3,2,-14,0,3,2,-13,0,3,2,-12,0,3,2,-11,0,3,2,-10,0,3,2,-9,0,3,2,-8,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,3,-23,0,3,3,-22,0,3,3,-21,0,3,3,-20,0,3,3,-19,0,3,3,-18,0,3,3,-17,0,3,3,-16,0,3,3,-15,0,3,3,-14,0,3,3,-13,0,3,3,-12,0,3,3,-11,0,3,3,-10,0,3,3,-9,0,3,3,-8,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,4,-23,0,3,4,-22,0,3,4,-21,0,3,4,-20,0,3,4,-19,0,3,4,-18,0,3,4,-17,0,3,4,-16,0,3,4,-15,0,3,4,-14,0,3,4,-13,0,3,4,-12,0,3,4,-11,0,3,4,-10,0,3,4,-9,0,3,4,-8,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,5,-23,0,3,5,-22,0,3,5,-21,0,3,5,-20,0,3,5,-19,0,3,5,-18,0,3,5,-17,0,3,5,-16,0,3,5,-15,0,3,5,-14,0,3,5,-13,0,3,5,-12,0,3,5,-11,0,3,5,-10,0,3,5,-9,0,3,5,-8,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,6,-23,0,3,6,-22,0,3,6,-21,0,3,6,-20,0,3,6,-19,0,3,6,-18,0,3,6,-17,0,3,6,-16,0,3,6,-15,0,3,6,-14,0,3,6,-13,0,3,6,-12,0,3,6,-11,0,3,6,-10,0,3,6,-9,0,3,6,-8,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,7,-23,0,3,7,-22,0,3,7,-21,0,3,7,-20,0,3,7,-19,0,3,7,-18,0,3,7,-17,0,3,7,-16,0,3,7,-15,0,3,7,-14,0,3,7,-13,0,3,7,-12,0,3,7,-11,0,3,7,-10,0,3,7,-9,0,3,7,-8,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,8,-23,0,3,8,-22,0,3,8,-21,0,3,8,-20,0,3,8,-19,0,3,8,-18,0,3,8,-17,0,3,8,-16,0,3,8,-15,0,3,8,-14,0,3,8,-13,0,3,8,-12,0,3,8,-11,0,3,8,-10,0,3,8,-9,0,3,8,-8,0,3,8,-7,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,9,-23,0,3,9,-22,0,3,9,-21,0,3,9,-20,0,3,9,-19,0,3,9,-18,0,3,9,-17,0,3,9,-16,0,3,9,-15,0,3,9,-14,0,3,9,-13,0,3,9,-12,0,3,9,-11,0,3,9,-10,0,3,9,-9,0,3,9,-8,0,3,9,-7,0,3,9,-6,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,0,0,3,9,1,0,3,9,2,0,3,9,3,0,3,9,4,0,3,10,-23,0,3,10,-22,0,3,10,-21,0,3,10,-20,0,3,10,-19,0,3,10,-18,0,3,10,-17,0,3,10,-16,0,3,10,-15,0,3,10,-14,0,3,10,-13,0,3,10,-12,0,3,10,-11,0,3,10,-10,0,3,10,-9,0,3,10,-8,0,3,10,-7,0,3,10,-6,0,3,10,-5,0,3,10,-4,0,3,10,-3,0,3,10,-2,0,3,10,-1,0,3,10,0,0,3,10,1,0,3,10,2,0,3,10,3,0,3,10,4,0,3,11,-23,0,3,11,-22,0,3,11,-21,0,3,11,-20,0,3,11,-19,0,3,11,-18,0,3,11,-17,0,3,11,-16,0,3,11,-15,0,3,11,-14,0,3,11,-13,0,3,11,-12,0,3,11,-11,0,3,11,-10,0,3,11,-9,0,3,11,-8,0,3,11,-7,0,3,11,-6,0,3,11,-5,0,3,11,-4,0,3,11,-3,0,3,11,-2,0,3,11,-1,0,3,11,0,0,3,11,1,0,3,11,2,0,3,11,3,0,3,11,4,0,3,12,-23,0,3,12,-22,0,3,12,-21,0,3,12,-20,0,3,12,-14,0,3,12,-13,0,3,12,-12,0,3,12,-11,0,3,12,-10,0,3,12,-9,0,3,12,-8,0,3,12,-7,0,3,12,-6,0,3,12,0,0,3,12,1,0,3,12,2,0,3,12,3,0,3,12,4,0,3,13,-23,0,3,13,-22,0,3,13,-21,0,3,13,-20,0,3,13,-14,0,3,13,-13,0,3,13,-12,0,3,13,-11,0,3,13,-10,0,3,13,-9,0,3,13,-8,0,3,13,-7,0,3,13,-6,0,3,13,0,0,3,13,1,0,3,13,2,0,3,13,3,0,3,13,4,0,3,14,-23,0,3,14,-22,0,3,14,-21,0,3,14,-20,0,3,14,-14,0,3,14,-13,0,3,14,-12,0,3,14,-11,0,3,14,-10,0,3,14,-9,0,3,14,-8,0,3,14,-7,0,3,14,-6,0,3,14,0,0,3,14,1,0,3,14,2,0,3,14,3,0,3,14,4,0,3,15,-23,0,3,15,-22,0,3,15,-21,0,3,15,-20,0,3,15,-14,0,3,15,-13,0,3,15,-12,0,3,15,-11,0,3,15,-10,0,3,15,-9,0,3,15,-8,0,3,15,-7,0,3,15,-6,0,3,15,0,0,3,15,1,0,3,15,2,0,3,15,3,0,3,15,4,0,3,16,-23,0,3,16,-22,0,3,16,-21,0,3,16,-20,0,3,16,-14,0,3,16,-13,0,3,16,-12,0,3,16,-11,0,3,16,-10,0,3,16,-9,0,3,16,-8,0,3,16,-7,0,3,16,-6,0,3,16,0,0,3,16,1,0,3,16,2,0,3,16,3,0,3,16,4,0,3,17,-23,0,3,17,-22,0,3,17,-21,0,3,17,-20,0,3,17,-19,0,3,17,-18,0,3,17,-17,0,3,17,-16,0,3,17,-15,0,3,17,-14,0,3,17,-13,0,3,17,-12,0,3,17,-11,0,3,17,-10,0,3,17,-9,0,3,17,-8,0,3,17,-7,0,3,17,-6,0,3,17,-5,0,3,17,-4,0,3,17,-3,0,3,17,-2,0,3,17,-1,0,3,17,0,0,3,17,1,0,3,17,2,0,3,17,3,0,3,17,4,0,3,18,-23,0,3,18,-22,0,3,18,-21,0,3,18,-20,0,3,18,-19,0,3,18,-18,0,3,18,-17,0,3,18,-16,0,3,18,-15,0,3,18,-14,0,3,18,-13,0,3,18,-12,0,3,18,-11,0,3,18,-10,0,3,18,-9,0,3,18,-8,0,3,18,-7,0,3,18,-6,0,3,18,-5,0,3,18,-4,0,3,18,-3,0,3,18,-2,0,3,18,-1,0,3,18,0,0,3,18,1,0,3,18,2,0,3,18,3,0,3,18,4,0,3,19,-23,0,3,19,-22,0,3,19,-21,0,3,19,-20,0,3,19,-19,0,3,19,-18,0,3,19,-17,0,3,19,-16,0,3,19,-15,0,3,19,-14,0,3,19,-13,0,3,19,-12,0,3,19,-11,0,3,19,-10,0,3,19,-9,0,3,19,-8,0,3,19,-7,0,3,19,-6,0,3,19,-5,0,3,19,-4,0,3,19,-3,0,3,19,-2,0,3,19,-1,0,3,19,0,0,3,19,1,0,3,19,2,0,3,19,3,0,3,19,4,0,3,20,-23,0,3,20,-22,0,3,20,-21,0,3,20,-20,0,3,20,-19,0,3,20,-18,0,3,20,-17,0,3,20,-16,0,3,20,-15,0,3,20,-14,0,3,20,-13,0,3,20,-12,0,3,20,-11,0,3,20,-10,0,3,20,-9,0,3,20,-8,0,3,20,-7,0,3,20,-6,0,3,20,-5,0,3,20,-4,0,3,20,-3,0,3,20,-2,0,3,20,-1,0,3,20,0,0,3,20,1,0,3,20,2,0,3,20,3,0,3,20,4,0,3],"Middle":[-11,-26,63,1,-11,-25,2,2,-11,-24,6,2,-10,-26,63,1,-10,-25,2,2,-10,-24,6,2,-9,-26,63,1,-9,-25,2,2,-9,-24,6,2,-8,-26,63,1,-8,-25,2,2,-8,-24,6,2,-7,-26,63,1,-7,-25,2,2,-7,-24,6,2,-6,-26,63,1,-6,-25,2,2,-6,-24,6,2,-6,-17,54,1,-6,-16,1,2,-6,-15,5,2,-6,-3,54,1,-6,-2,1,2,-6,-1,5,2,-5,-26,63,1,-5,-25,2,2,-5,-24,6,2,-5,-17,63,1,-5,-16,2,2,-5,-15,6,2,-5,-3,63,1,-5,-2,2,2,-5,-1,6,2,-4,-26,63,1,-4,-25,2,2,-4,-24,6,2,-4,-17,63,1,-4,-16,2,2,-4,-15,6,2,-4,-3,63,1,-4,-2,2,2,-4,-1,6,2,-3,-26,63,1,-3,-25,2,2,-3,-24,6,2,-3,-17,63,1,-3,-16,2,2,-3,-15,6,2,-3,-3,63,1,-3,-2,2,2,-3,-1,6,2,-2,-26,63,1,-2,-25,2,2,-2,-24,6,2,-2,-17,27,1,-2,-16,3,2,-2,-15,7,2,-2,-3,27,1,-2,-2,3,2,-2,-1,7,2,-1,-26,63,1,-1,-25,2,2,-1,-24,6,2,0,-26,63,1,0,-25,2,2,0,-24,6,2,1,-26,63,1,1,-25,2,2,1,-24,6,2,2,-26,63,1,2,-25,2,2,2,-24,6,2,3,-26,63,1,3,-25,2,2,3,-24,6,2,4,-26,63,1,4,-25,2,2,4,-24,6,2,5,-26,63,1,5,-25,2,2,5,-24,6,2,6,-26,63,1,6,-25,2,2,6,-24,6,2,7,-26,63,1,7,-25,2,2,7,-24,6,2,8,-26,63,1,8,-25,2,2,8,-24,6,2,9,-26,63,1,9,-25,2,2,9,-24,6,2,10,-26,63,1,10,-25,2,2,10,-24,6,2,11,-26,63,1,11,-25,2,2,11,-24,6,2,12,-26,63,1,12,-25,2,2,12,-24,6,2,12,-17,54,1,12,-16,1,2,12,-15,5,2,12,-3,54,1,12,-2,1,2,12,-1,5,2,13,-26,63,1,13,-25,2,2,13,-24,6,2,13,-17,63,1,13,-16,2,2,13,-15,6,2,13,-3,63,1,13,-2,2,2,13,-1,6,2,14,-26,63,1,14,-25,2,2,14,-24,6,2,14,-17,63,1,14,-16,2,2,14,-15,6,2,14,-3,63,1,14,-2,2,2,14,-1,6,2,15,-26,63,1,15,-25,2,2,15,-24,6,2,15,-17,63,1,15,-16,2,2,15,-15,6,2,15,-3,63,1,15,-2,2,2,15,-1,6,2,16,-26,63,1,16,-25,2,2,16,-24,6,2,16,-17,27,1,16,-16,3,2,16,-15,7,2,16,-3,27,1,16,-2,3,2,16,-1,7,2,17,-26,63,1,17,-25,2,2,17,-24,6,2,18,-26,63,1,18,-25,2,2,18,-24,6,2,19,-26,63,1,19,-25,2,2,19,-24,6,2,20,-26,63,1,20,-25,2,2,20,-24,6,2],"Top":[-13,-27,511,1,-13,-26,511,1,-13,-25,511,1,-13,-24,511,1,-13,-23,511,1,-13,-22,511,1,-13,-21,511,1,-13,-20,511,1,-13,-19,511,1,-13,-18,511,1,-13,-17,511,1,-13,-16,511,1,-13,-15,511,1,-13,-14,511,1,-13,-13,511,1,-13,-12,511,1,-13,-11,511,1,-13,-10,511,1,-13,-9,511,1,-13,-8,511,1,-13,-7,511,1,-13,-6,511,1,-13,-5,511,1,-13,-4,511,1,-13,-3,511,1,-13,-2,511,1,-13,-1,511,1,-13,0,511,1,-13,1,511,1,-13,2,511,1,-13,3,511,1,-13,4,511,1,-13,5,511,1,-13,6,511,1,-12,-27,511,1,-12,-26,255,1,-12,-25,219,1,-12,-24,219,1,-12,-23,219,1,-12,-22,219,1,-12,-21,219,1,-12,-20,219,1,-12,-19,219,1,-12,-18,219,1,-12,-17,219,1,-12,-16,219,1,-12,-15,219,1,-12,-14,219,1,-12,-13,219,1,-12,-12,219,1,-12,-11,219,1,-12,-10,219,1,-12,-9,219,1,-12,-8,219,1,-12,-7,219,1,-12,-6,219,1,-12,-5,219,1,-12,-4,219,1,-12,-3,219,1,-12,-2,219,1,-12,-1,219,1,-12,0,219,1,-12,1,219,1,-12,2,219,1,-12,3,219,1,-12,4,219,1,-12,5,507,1,-12,6,511,1,-11,-27,511,1,-11,5,504,1,-11,6,511,1,-10,-27,511,1,-10,5,504,1,-10,6,511,1,-9,-27,511,1,-9,5,504,1,-9,6,511,1,-8,-27,511,1,-8,5,504,1,-8,6,511,1,-7,-27,511,1,-7,5,504,1,-7,6,511,1,-6,-27,511,1,-6,-19,432,1,-6,-18,438,1,-6,-5,432,1,-6,-4,438,1,-6,5,504,1,-6,6,511,1,-5,-27,511,1,-5,-19,504,1,-5,-18,511,1,-5,-5,504,1,-5,-4,511,1,-5,5,504,1,-5,6,511,1,-4,-27,511,1,-4,-19,504,1,-4,-18,511,1,-4,-5,504,1,-4,-4,511,1,-4,5,504,1,-4,6,511,1,-3,-27,511,1,-3,-19,504,1,-3,-18,511,1,-3,-5,504,1,-3,-4,511,1,-3,5,504,1,-3,6,511,1,-2,-27,511,1,-2,-19,216,1,-2,-18,219,1,-2,-5,216,1,-2,-4,219,1,-2,5,504,1,-2,6,511,1,-1,-27,511,1,-1,5,504,1,-1,6,511,1,0,-27,511,1,0,5,504,1,0,6,511,1,1,-27,511,1,1,5,504,1,1,6,511,1,2,-27,511,1,2,5,504,1,2,6,511,1,3,-27,511,1,3,5,504,1,3,6,511,1,4,-27,511,1,4,5,504,1,4,6,511,1,5,-27,511,1,5,5,504,1,5,6,511,1,6,-27,511,1,6,5,504,1,6,6,511,1,7,-27,511,1,7,5,504,1,7,6,511,1,8,-27,511,1,8,5,504,1,8,6,511,1,9,-27,511,1,9,5,504,1,9,6,511,1,10,-27,511,1,10,5,504,1,10,6,511,1,11,-27,511,1,11,5,504,1,11,6,511,1,12,-27,511,1,12,-19,432,1,12,-18,438,1,12,-5,432,1,12,-4,438,1,12,5,504,1,12,6,511,1,13,-27,511,1,13,-19,504,1,13,-18,511,1,13,-5,504,1,13,-4,511,1,13,5,504,1,13,6,511,1,14,-27,511,1,14,-19,504,1,14,-18,511,1,14,-5,504,1,14,-4,511,1,14,5,504,1,14,6,511,1,15,-27,511,1,15,-19,504,1,15,-18,511,1,15,-5,504,1,15,-4,511,1,15,5,504,1,15,6,511,1,16,-27,511,1,16,-19,216,1,16,-18,219,1,16,-5,216,1,16,-4,219,1,16,5,504,1,16,6,511,1,17,-27,511,1,17,5,504,1,17,6,511,1,18,-27,511,1,18,5,504,1,18,6,511,1,19,-27,511,1,19,5,504,1,19,6,511,1,20,-27,511,1,20,5,504,1,20,6,511,1,21,-27,511,1,21,-26,447,1,21,-25,438,1,21,-24,438,1,21,-23,438,1,21,-22,438,1,21,-21,438,1,21,-20,438,1,21,-19,438,1,21,-18,438,1,21,-17,438,1,21,-16,438,1,21,-15,438,1,21,-14,438,1,21,-13,438,1,21,-12,438,1,21,-11,438,1,21,-10,438,1,21,-9,438,1,21,-8,438,1,21,-7,438,1,21,-6,438,1,21,-5,438,1,21,-4,438,1,21,-3,438,1,21,-2,438,1,21,-1,438,1,21,0,438,1,21,1,438,1,21,2,438,1,21,3,438,1,21,4,438,1,21,5,510,1,21,6,511,1,22,-27,511,1,22,-26,511,1,22,-25,511,1,22,-24,511,1,22,-23,511,1,22,-22,511,1,22,-21,511,1,22,-20,511,1,22,-19,511,1,22,-18,511,1,22,-17,511,1,22,-16,511,1,22,-15,511,1,22,-14,511,1,22,-13,511,1,22,-12,511,1,22,-11,511,1,22,-10,511,1,22,-9,511,1,22,-8,511,1,22,-7,511,1,22,-6,511,1,22,-5,511,1,22,-4,511,1,22,-3,511,1,22,-2,511,1,22,-1,511,1,22,0,511,1,22,1,511,1,22,2,511,1,22,3,511,1,22,4,511,1,22,5,511,1,22,6,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle5/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle5/Preview.png
index 8c2568d..d47180e 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle5/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle5/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle5/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle5/TileInfo.json
index d10141a..37b48eb 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle5/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle5/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":10,"Y":-186},{"X":42,"Y":-186},{"X":42,"Y":-154},{"X":-26,"Y":-78},{"X":-70,"Y":-78},{"X":74,"Y":-154},{"X":74,"Y":-106},{"X":6,"Y":-14},{"X":-26,"Y":-14},{"X":106,"Y":-106},{"X":106,"Y":-74},{"X":122,"Y":-74},{"X":122,"Y":-42},{"X":6,"Y":66},{"X":138,"Y":-42},{"X":138,"Y":66},{"X":-70,"Y":66},{"X":-122,"Y":66},{"X":-122,"Y":-234},{"X":10,"Y":-234}],"NavigationPolygon":[[0,1,2,3,4],[3,2,5,6,7,8],[6,9,10,7],[7,10,11,12,13],[12,14,15,13],[4,16,17,18],[4,18,19,0]],"Floor":[-8,-15,0,3,-8,-14,0,3,-8,-13,0,3,-8,-12,0,3,-8,-11,0,3,-8,-10,0,3,-7,-15,0,3,-7,-14,0,3,-7,-13,0,3,-7,-12,0,3,-7,-11,0,3,-7,-10,0,3,-6,-15,0,3,-6,-14,0,3,-6,-13,0,3,-6,-12,0,3,-6,-11,0,3,-6,-10,0,3,-5,-15,0,3,-5,-14,0,3,-5,-13,0,3,-5,-12,0,3,-5,-11,0,3,-5,-10,0,3,-4,-15,0,3,-4,-14,0,3,-4,-13,0,3,-4,-12,0,3,-4,-11,0,3,-4,-10,0,3,-4,-9,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-3,-15,0,3,-3,-14,0,3,-3,-13,0,3,-3,-12,0,3,-3,-11,0,3,-3,-10,0,3,-3,-9,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-2,-15,0,3,-2,-14,0,3,-2,-13,0,3,-2,-12,0,3,-2,-11,0,3,-2,-10,0,3,-2,-9,0,3,-2,-8,0,3,-2,-7,0,3,-2,-6,0,3,-2,-5,0,3,-2,-4,0,3,-2,-3,0,3,-2,-2,0,3,-1,-15,0,3,-1,-14,0,3,-1,-13,0,3,-1,-12,0,3,-1,-11,0,3,-1,-10,0,3,-1,-9,0,3,-1,-8,0,3,-1,-7,0,3,-1,-6,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,0,-15,0,3,0,-14,0,3,0,-13,0,3,0,-12,0,3,0,-11,0,3,0,-10,0,3,0,-9,0,3,0,-8,0,3,0,-7,0,3,0,-6,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,1,-12,0,3,1,-11,0,3,1,-10,0,3,1,-9,0,3,1,-8,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,2,-12,0,3,2,-11,0,3,2,-10,0,3,2,-9,0,3,2,-8,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,3,-10,0,3,3,-9,0,3,3,-8,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,4,-10,0,3,4,-9,0,3,4,-8,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,-8,-9,0,3,-8,-8,0,3,-8,-7,0,3,-8,-6,0,3,-8,-5,0,3,-8,-4,0,3,-8,-3,0,3,-8,-2,0,3,-8,-1,0,3,-8,0,0,3,-8,1,0,3,-8,2,0,3,-8,3,0,3,-7,-9,0,3,-7,-8,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-6,-9,0,3,-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-5,-9,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,0,3,0,3,1,3,0,3,2,3,0,3,3,3,0,3,4,3,0,3,5,3,0,3,6,3,0,3,7,3,0,3,8,3,0,3],"Middle":[-8,-17,63,1,-8,-16,2,2,-7,-17,63,1,-7,-16,2,2,-6,-17,63,1,-6,-16,2,2,-5,-17,63,1,-5,-16,2,2,-4,-17,63,1,-4,-16,2,2,-3,-17,63,1,-3,-16,2,2,-2,-17,63,1,-2,-16,2,2,-1,-17,63,1,-1,-16,2,2,0,-17,63,1,0,-16,2,2,1,-14,54,1,1,-13,1,2,2,-14,63,1,2,-13,2,2,3,-12,54,1,3,-11,1,2,4,-12,63,1,4,-11,2,2,5,-9,54,1,5,-8,1,2,6,-9,63,1,6,-8,2,2,7,-7,54,1,7,-6,1,2,8,-5,54,1,8,-4,1,2],"Top":[-10,-18,511,1,-10,-17,511,1,-10,-16,511,1,-10,-15,511,1,-10,-14,511,1,-10,-13,511,1,-10,-12,511,1,-10,-11,511,1,-10,-10,511,1,-10,-9,511,1,-10,-8,511,1,-10,-7,511,1,-10,-6,511,1,-10,-5,511,1,-10,-4,511,1,-10,-3,511,1,-10,-2,511,1,-10,-1,511,1,-10,0,511,1,-10,1,511,1,-10,2,511,1,-10,3,511,1,-10,4,511,1,-10,5,511,1,-9,-18,511,1,-9,-17,255,1,-9,-16,219,1,-9,-15,219,1,-9,-14,219,1,-9,-13,219,1,-9,-12,219,1,-9,-11,219,1,-9,-10,219,1,-9,-9,219,1,-9,-8,219,1,-9,-7,219,1,-9,-6,219,1,-9,-5,219,1,-9,-4,219,1,-9,-3,219,1,-9,-2,219,1,-9,-1,219,1,-9,0,219,1,-9,1,219,1,-9,2,219,1,-9,3,219,1,-9,4,507,1,-9,5,511,1,-8,-18,511,1,-8,4,504,1,-8,5,511,1,-7,-18,511,1,-7,4,504,1,-7,5,511,1,-6,-18,511,1,-6,4,504,1,-6,5,511,1,-5,-18,511,1,-5,4,504,1,-5,5,511,1,-4,-18,511,1,-4,-5,432,1,-4,-4,438,1,-4,-3,438,1,-4,-2,438,1,-4,-1,438,1,-4,0,438,1,-4,1,438,1,-4,2,438,1,-4,3,438,1,-4,4,510,1,-4,5,511,1,-3,-18,511,1,-3,-5,216,1,-3,-4,219,1,-3,-3,219,1,-3,-2,219,1,-3,-1,507,1,-3,0,511,1,-3,1,511,1,-3,2,511,1,-3,3,511,1,-3,4,511,1,-3,5,511,1,-2,-18,511,1,-2,-1,504,1,-2,0,511,1,-2,1,511,1,-2,2,511,1,-2,3,511,1,-2,4,511,1,-2,5,511,1,-1,-18,511,1,-1,-1,216,1,-1,0,219,1,-1,1,219,1,-1,2,219,1,-1,3,219,1,-1,4,507,1,-1,5,511,1,0,-18,511,1,0,4,504,1,0,5,511,1,1,-18,511,1,1,-17,447,1,1,-16,438,1,1,-15,438,1,1,4,504,1,1,5,511,1,2,-18,511,1,2,-17,511,1,2,-16,511,1,2,-15,511,1,2,4,504,1,2,5,511,1,3,-15,511,1,3,-14,447,1,3,-13,438,1,3,4,504,1,3,5,511,1,4,-15,511,1,4,-14,511,1,4,-13,511,1,4,4,504,1,4,5,511,1,5,-13,511,1,5,-12,447,1,5,-11,438,1,5,-10,438,1,5,4,504,1,5,5,511,1,6,-13,511,1,6,-12,511,1,6,-11,511,1,6,-10,511,1,6,4,504,1,6,5,511,1,7,-10,511,1,7,-9,447,1,7,-8,438,1,7,4,504,1,7,5,511,1,8,-10,511,1,8,-9,511,1,8,-8,511,1,8,-7,447,1,8,-6,438,1,8,4,504,1,8,5,511,1,9,-8,511,1,9,-7,511,1,9,-6,511,1,9,-5,447,1,9,-4,438,1,9,-3,438,1,9,-2,438,1,9,-1,438,1,9,0,438,1,9,1,438,1,9,2,438,1,9,3,438,1,9,4,510,1,9,5,511,1,10,-6,511,1,10,-5,511,1,10,-4,511,1,10,-3,511,1,10,-2,511,1,10,-1,511,1,10,0,511,1,10,1,511,1,10,2,511,1,10,3,511,1,10,4,511,1,10,5,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":10,"Y":-186},{"X":42,"Y":-186},{"X":42,"Y":-154},{"X":-26,"Y":-78},{"X":-70,"Y":-78},{"X":74,"Y":-154},{"X":74,"Y":-106},{"X":6,"Y":-14},{"X":-26,"Y":-14},{"X":106,"Y":-106},{"X":106,"Y":-74},{"X":122,"Y":-74},{"X":122,"Y":-42},{"X":6,"Y":66},{"X":138,"Y":-42},{"X":138,"Y":66},{"X":-70,"Y":66},{"X":-122,"Y":66},{"X":-122,"Y":-234},{"X":10,"Y":-234}],"NavigationPolygon":[[0,1,2,3,4],[3,2,5,6,7,8],[6,9,10,7],[7,10,11,12,13],[12,14,15,13],[4,16,17,18],[4,18,19,0]],"Floor":[-8,-15,0,3,-8,-14,0,3,-8,-13,0,3,-8,-12,0,3,-8,-11,0,3,-8,-10,0,3,-7,-15,0,3,-7,-14,0,3,-7,-13,0,3,-7,-12,0,3,-7,-11,0,3,-7,-10,0,3,-6,-15,0,3,-6,-14,0,3,-6,-13,0,3,-6,-12,0,3,-6,-11,0,3,-6,-10,0,3,-5,-15,0,3,-5,-14,0,3,-5,-13,0,3,-5,-12,0,3,-5,-11,0,3,-5,-10,0,3,-4,-15,0,3,-4,-14,0,3,-4,-13,0,3,-4,-12,0,3,-4,-11,0,3,-4,-10,0,3,-4,-9,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-3,-15,0,3,-3,-14,0,3,-3,-13,0,3,-3,-12,0,3,-3,-11,0,3,-3,-10,0,3,-3,-9,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-2,-15,0,3,-2,-14,0,3,-2,-13,0,3,-2,-12,0,3,-2,-11,0,3,-2,-10,0,3,-2,-9,0,3,-2,-8,0,3,-2,-7,0,3,-2,-6,0,3,-2,-5,0,3,-2,-4,0,3,-2,-3,0,3,-2,-2,0,3,-1,-15,0,3,-1,-14,0,3,-1,-13,0,3,-1,-12,0,3,-1,-11,0,3,-1,-10,0,3,-1,-9,0,3,-1,-8,0,3,-1,-7,0,3,-1,-6,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,0,-15,0,3,0,-14,0,3,0,-13,0,3,0,-12,0,3,0,-11,0,3,0,-10,0,3,0,-9,0,3,0,-8,0,3,0,-7,0,3,0,-6,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,1,-12,0,3,1,-11,0,3,1,-10,0,3,1,-9,0,3,1,-8,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,2,-12,0,3,2,-11,0,3,2,-10,0,3,2,-9,0,3,2,-8,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,3,-10,0,3,3,-9,0,3,3,-8,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,4,-10,0,3,4,-9,0,3,4,-8,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,-8,-9,0,3,-8,-8,0,3,-8,-7,0,3,-8,-6,0,3,-8,-5,0,3,-8,-4,0,3,-8,-3,0,3,-8,-2,0,3,-8,-1,0,3,-8,0,0,3,-8,1,0,3,-8,2,0,3,-8,3,0,3,-7,-9,0,3,-7,-8,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-6,-9,0,3,-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-5,-9,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,0,3,0,3,1,3,0,3,2,3,0,3,3,3,0,3,4,3,0,3,5,3,0,3,6,3,0,3,7,3,0,3,8,3,0,3],"Middle":[-8,-18,63,1,-8,-17,2,2,-8,-16,6,2,-7,-18,63,1,-7,-17,2,2,-7,-16,6,2,-6,-18,63,1,-6,-17,2,2,-6,-16,6,2,-5,-18,63,1,-5,-17,2,2,-5,-16,6,2,-4,-18,63,1,-4,-17,2,2,-4,-16,6,2,-3,-18,63,1,-3,-17,2,2,-3,-16,6,2,-2,-18,63,1,-2,-17,2,2,-2,-16,6,2,-1,-18,63,1,-1,-17,2,2,-1,-16,6,2,0,-18,63,1,0,-17,2,2,0,-16,6,2,1,-15,54,1,1,-14,1,2,1,-13,5,2,2,-15,63,1,2,-14,2,2,2,-13,6,2,3,-13,54,1,3,-12,1,2,3,-11,5,2,4,-13,63,1,4,-12,2,2,4,-11,6,2,5,-10,54,1,5,-9,1,2,5,-8,5,2,6,-10,63,1,6,-9,2,2,6,-8,6,2,7,-8,54,1,7,-7,1,2,7,-6,5,2,8,-6,54,1,8,-5,1,2,8,-4,5,2],"Top":[-10,-19,511,1,-10,-18,511,1,-10,-17,511,1,-10,-16,511,1,-10,-15,511,1,-10,-14,511,1,-10,-13,511,1,-10,-12,511,1,-10,-11,511,1,-10,-10,511,1,-10,-9,511,1,-10,-8,511,1,-10,-7,511,1,-10,-6,511,1,-10,-5,511,1,-10,-4,511,1,-10,-3,511,1,-10,-2,511,1,-10,-1,511,1,-10,0,511,1,-10,1,511,1,-10,2,511,1,-10,3,511,1,-10,4,511,1,-10,5,511,1,-9,-19,511,1,-9,-18,255,1,-9,-17,219,1,-9,-16,219,1,-9,-15,219,1,-9,-14,219,1,-9,-13,219,1,-9,-12,219,1,-9,-11,219,1,-9,-10,219,1,-9,-9,219,1,-9,-8,219,1,-9,-7,219,1,-9,-6,219,1,-9,-5,219,1,-9,-4,219,1,-9,-3,219,1,-9,-2,219,1,-9,-1,219,1,-9,0,219,1,-9,1,219,1,-9,2,219,1,-9,3,219,1,-9,4,507,1,-9,5,511,1,-8,-19,511,1,-8,4,504,1,-8,5,511,1,-7,-19,511,1,-7,4,504,1,-7,5,511,1,-6,-19,511,1,-6,4,504,1,-6,5,511,1,-5,-19,511,1,-5,4,504,1,-5,5,511,1,-4,-19,511,1,-4,-5,432,1,-4,-4,438,1,-4,-3,438,1,-4,-2,438,1,-4,-1,438,1,-4,0,438,1,-4,1,438,1,-4,2,438,1,-4,3,438,1,-4,4,510,1,-4,5,511,1,-3,-19,511,1,-3,-5,216,1,-3,-4,219,1,-3,-3,219,1,-3,-2,219,1,-3,-1,507,1,-3,0,511,1,-3,1,511,1,-3,2,511,1,-3,3,511,1,-3,4,511,1,-3,5,511,1,-2,-19,511,1,-2,-1,504,1,-2,0,511,1,-2,1,511,1,-2,2,511,1,-2,3,511,1,-2,4,511,1,-2,5,511,1,-1,-19,511,1,-1,-1,216,1,-1,0,219,1,-1,1,219,1,-1,2,219,1,-1,3,219,1,-1,4,507,1,-1,5,511,1,0,-19,511,1,0,4,504,1,0,5,511,1,1,-19,511,1,1,-18,447,1,1,-17,438,1,1,-16,438,1,1,4,504,1,1,5,511,1,2,-19,511,1,2,-18,511,1,2,-17,511,1,2,-16,511,1,2,4,504,1,2,5,511,1,3,-16,511,1,3,-15,447,1,3,-14,438,1,3,4,504,1,3,5,511,1,4,-16,511,1,4,-15,511,1,4,-14,511,1,4,4,504,1,4,5,511,1,5,-14,511,1,5,-13,447,1,5,-12,438,1,5,-11,438,1,5,4,504,1,5,5,511,1,6,-14,511,1,6,-13,511,1,6,-12,511,1,6,-11,511,1,6,4,504,1,6,5,511,1,7,-11,511,1,7,-10,447,1,7,-9,438,1,7,4,504,1,7,5,511,1,8,-11,511,1,8,-10,511,1,8,-9,511,1,8,-8,447,1,8,-7,438,1,8,4,504,1,8,5,511,1,9,-9,511,1,9,-8,511,1,9,-7,511,1,9,-6,447,1,9,-5,438,1,9,-4,438,1,9,-3,438,1,9,-2,438,1,9,-1,438,1,9,0,438,1,9,1,438,1,9,2,438,1,9,3,438,1,9,4,510,1,9,5,511,1,10,-7,511,1,10,-6,511,1,10,-5,511,1,10,-4,511,1,10,-3,511,1,10,-2,511,1,10,-1,511,1,10,0,511,1,10,1,511,1,10,2,511,1,10,3,511,1,10,4,511,1,10,5,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/Preview.png
index 700179b..aa0623d 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/RoomInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/RoomInfo.json
index 42faf7c..6d58834 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/RoomInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/RoomInfo.json
@@ -1 +1 @@
-{"Position":{"X":-8,"Y":-7},"Size":{"X":15,"Y":18},"DoorAreaInfos":[],"GroupName":"Test1","RoomType":1,"RoomName":"Battle6","Weight":100,"Remark":""}
\ No newline at end of file
+{"Position":{"X":-8,"Y":-7},"Size":{"X":15,"Y":18},"DoorAreaInfos":[{"Direction":3,"Start":32,"End":176},{"Direction":0,"Start":80,"End":160},{"Direction":2,"Start":48,"End":128},{"Direction":1,"Start":96,"End":192}],"GroupName":"Test1","RoomType":1,"RoomName":"Battle6","Weight":100,"Remark":""}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/TileInfo.json
index d8a80d4..5979864 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/battle/Battle6/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":74,"Y":6},{"X":74,"Y":98},{"X":26,"Y":98},{"X":22,"Y":70},{"X":22,"Y":34},{"X":10,"Y":6},{"X":-38,"Y":34},{"X":-58,"Y":-58},{"X":74,"Y":-58},{"X":74,"Y":-30},{"X":10,"Y":-30},{"X":-58,"Y":-42},{"X":26,"Y":146},{"X":-42,"Y":146},{"X":-42,"Y":130},{"X":-38,"Y":70},{"X":-90,"Y":130},{"X":-90,"Y":38},{"X":-74,"Y":38},{"X":-74,"Y":-42}],"NavigationPolygon":[[0,1,2,3,4],[5,0,4,6],[7,8,9,10,11],[2,12,13,14,15,3],[14,16,17,18],[18,19,11,10,5,6],[14,18,6,15]],"Floor":[-4,-4,0,3,-3,-4,0,3,-2,-4,0,3,-1,-4,0,3,0,-4,0,3,1,-4,0,3,2,-4,0,3,3,-4,0,3,4,-4,0,3,4,-3,0,3,3,-3,0,3,2,-3,0,3,1,-3,0,3,0,-3,0,3,-1,-3,0,3,-2,-3,0,3,-3,-3,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,4,0,3,0,5,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,1,5,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,2,5,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,3,5,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,4,5,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-2,4,0,3,-2,5,0,3,-1,4,0,3,-1,5,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-6,6,0,3,-6,7,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-5,6,0,3,-5,7,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-4,6,0,3,-4,7,0,3,-3,6,0,3,-3,7,0,3,-3,8,0,3,-2,6,0,3,-2,7,0,3,-2,8,0,3,-1,6,0,3,-1,7,0,3,-1,8,0,3,0,6,0,3,0,7,0,3,0,8,0,3,1,6,0,3,1,7,0,3,1,8,0,3],"Middle":[-6,0,27,1,-6,1,3,2,-5,-5,27,1,-5,-4,3,2,-4,-6,63,1,-4,-5,2,2,-3,-6,63,1,-3,-5,2,2,-2,-6,63,1,-2,-5,2,2,-2,2,48,1,-2,3,1,2,-1,-6,63,1,-1,-5,2,2,-1,2,56,1,-1,3,2,2,0,-6,63,1,0,-5,2,2,0,2,24,1,0,3,3,2,1,-6,63,1,1,-5,2,2,1,-2,48,1,1,-1,1,2,2,-6,63,1,2,-5,2,2,2,-2,56,1,2,-1,2,2,3,-6,63,1,3,-5,2,2,3,-2,56,1,3,-1,2,2,4,-6,63,1,4,-5,2,2,4,-2,56,1,4,-1,2,2],"Top":[-8,-1,511,1,-8,0,511,1,-8,1,511,1,-8,2,511,1,-8,3,511,1,-8,4,511,1,-8,5,511,1,-8,6,511,1,-8,7,511,1,-8,8,511,1,-8,9,511,1,-7,-6,511,1,-7,-5,511,1,-7,-4,511,1,-7,-3,511,1,-7,-2,511,1,-7,-1,511,1,-7,0,255,1,-7,1,219,1,-7,2,219,1,-7,3,219,1,-7,4,219,1,-7,5,219,1,-7,6,219,1,-7,7,219,1,-7,8,507,1,-7,9,511,1,-6,-7,511,1,-6,-6,511,1,-6,-5,255,1,-6,-4,219,1,-6,-3,219,1,-6,-2,219,1,-6,-1,219,1,-6,8,504,1,-6,9,511,1,-5,-7,511,1,-5,-6,255,1,-5,8,504,1,-5,9,511,1,-5,10,511,1,-4,-7,511,1,-4,8,216,1,-4,9,507,1,-4,10,511,1,-3,-7,511,1,-3,9,504,1,-3,10,511,1,-2,-7,511,1,-2,9,504,1,-2,10,511,1,-1,-7,511,1,-1,9,504,1,-1,10,511,1,0,-7,511,1,0,9,504,1,0,10,511,1,1,-7,511,1,1,9,504,1,1,10,511,1,2,-7,511,1,2,6,432,1,2,7,438,1,2,8,438,1,2,9,510,1,2,10,511,1,3,-7,511,1,3,6,504,1,3,7,511,1,3,8,511,1,3,9,511,1,3,10,511,1,4,-7,511,1,4,6,504,1,4,7,511,1,5,-7,511,1,5,-6,447,1,5,-5,438,1,5,-4,438,1,5,-3,438,1,5,-2,446,1,5,-1,438,1,5,0,438,1,5,1,438,1,5,2,438,1,5,3,438,1,5,4,438,1,5,5,438,1,5,6,510,1,5,7,511,1,6,-7,511,1,6,-6,511,1,6,-5,511,1,6,-4,511,1,6,-3,511,1,6,-2,511,1,6,-1,511,1,6,0,511,1,6,1,511,1,6,2,511,1,6,3,511,1,6,4,511,1,6,5,511,1,6,6,511,1,6,7,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":74,"Y":22},{"X":74,"Y":106},{"X":26,"Y":106},{"X":22,"Y":86},{"X":22,"Y":42},{"X":10,"Y":22},{"X":-38,"Y":42},{"X":-74,"Y":38},{"X":-58,"Y":-58},{"X":74,"Y":-58},{"X":74,"Y":-22},{"X":10,"Y":-22},{"X":-58,"Y":-42},{"X":26,"Y":154},{"X":-42,"Y":154},{"X":-42,"Y":138},{"X":-38,"Y":86},{"X":-90,"Y":138},{"X":-90,"Y":38},{"X":-74,"Y":-42}],"NavigationPolygon":[[0,1,2,3,4],[5,0,4,6,7],[8,9,10,11,12],[2,13,14,15,16,3],[15,17,18,7,6,16],[7,19,12,11,5]],"Floor":[-4,-4,0,3,-3,-4,0,3,-2,-4,0,3,-1,-4,0,3,0,-4,0,3,1,-4,0,3,2,-4,0,3,3,-4,0,3,4,-4,0,3,4,-3,0,3,3,-3,0,3,2,-3,0,3,1,-3,0,3,0,-3,0,3,-1,-3,0,3,-2,-3,0,3,-3,-3,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,5,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,1,5,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,2,5,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,3,5,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,4,5,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-2,5,0,3,-1,5,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-6,6,0,3,-6,7,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-5,6,0,3,-5,7,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-4,6,0,3,-4,7,0,3,-3,6,0,3,-3,7,0,3,-3,8,0,3,-2,6,0,3,-2,7,0,3,-2,8,0,3,-1,6,0,3,-1,7,0,3,-1,8,0,3,0,6,0,3,0,7,0,3,0,8,0,3,1,6,0,3,1,7,0,3,1,8,0,3],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/boss/Boss1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/boss/Boss1/Preview.png
index 7a6c9c2..478b35a 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/boss/Boss1/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/boss/Boss1/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/boss/Boss1/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/boss/Boss1/TileInfo.json
index 59630cf..29ba246 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/boss/Boss1/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/boss/Boss1/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":198,"Y":-30},{"X":170,"Y":-30},{"X":22,"Y":-42},{"X":22,"Y":-78},{"X":234,"Y":-154},{"X":234,"Y":82},{"X":198,"Y":38},{"X":-74,"Y":82},{"X":138,"Y":38},{"X":-74,"Y":-154},{"X":-10,"Y":-110},{"X":-10,"Y":-78},{"X":170,"Y":2},{"X":138,"Y":2},{"X":-38,"Y":-42},{"X":-38,"Y":-110}],"NavigationPolygon":[[0,1,2,3],[4,5,6,0],[6,5,7,8],[9,4,0,10],[3,11,10],[1,12,13,2],[2,13,8,7,14],[14,7,9,15],[10,15,9],[10,0,3]],"Floor":[-5,-10,0,3,-5,-9,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-4,-10,0,3,-4,-9,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-4,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-4,3,0,3,-3,-10,0,3,-3,-9,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-3,-5,0,3,-3,-4,0,3,-3,-3,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-2,-10,0,3,-2,-9,0,3,-2,-8,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-1,-10,0,3,-1,-9,0,3,-1,-8,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,0,-10,0,3,0,-9,0,3,0,-8,0,3,0,-7,0,3,0,-6,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,1,-10,0,3,1,-9,0,3,1,-8,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,2,-10,0,3,2,-9,0,3,2,-8,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,3,-10,0,3,3,-9,0,3,3,-8,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,4,-10,0,3,4,-9,0,3,4,-8,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,5,-10,0,3,5,-9,0,3,5,-8,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,6,-10,0,3,6,-9,0,3,6,-8,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,7,-10,0,3,7,-9,0,3,7,-8,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,2,0,3,7,3,0,3,8,-10,0,3,8,-9,0,3,8,-8,0,3,8,-7,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,2,0,3,8,3,0,3,9,-10,0,3,9,-9,0,3,9,-8,0,3,9,-7,0,3,9,-6,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,2,0,3,9,3,0,3,10,-10,0,3,10,-9,0,3,10,-8,0,3,10,-7,0,3,10,-6,0,3,10,-5,0,3,10,-4,0,3,10,-3,0,3,10,2,0,3,10,3,0,3,11,-10,0,3,11,-9,0,3,11,-8,0,3,11,-7,0,3,11,-6,0,3,11,-5,0,3,11,-4,0,3,11,-3,0,3,11,2,0,3,11,3,0,3,12,-10,0,3,12,-9,0,3,12,-8,0,3,12,-7,0,3,12,-6,0,3,12,-5,0,3,12,-4,0,3,12,-3,0,3,12,-2,0,3,12,-1,0,3,12,0,0,3,12,1,0,3,12,2,0,3,12,3,0,3,13,-10,0,3,13,-9,0,3,13,-8,0,3,13,-7,0,3,13,-6,0,3,13,-5,0,3,13,-4,0,3,13,-3,0,3,13,-2,0,3,13,-1,0,3,13,0,0,3,13,1,0,3,13,2,0,3,13,3,0,3,7,0,0,3,7,1,0,3,-5,4,0,3,-4,4,0,3,-3,4,0,3,-2,4,0,3,-1,4,0,3,0,4,0,3,1,4,0,3,2,4,0,3,3,4,0,3,4,4,0,3,5,4,0,3,6,4,0,3,7,4,0,3,8,4,0,3,9,4,0,3,10,4,0,3,11,4,0,3,12,4,0,3,13,4,0,3,14,-10,0,3,14,-9,0,3,14,-8,0,3,14,-7,0,3,14,-6,0,3,14,-5,0,3,14,-4,0,3,14,-3,0,3,14,-2,0,3,14,-1,0,3,14,0,0,3,14,1,0,3,14,2,0,3,14,3,0,3,14,4,0,3,10,-2,0,3,10,-1,0,3,-1,-7,0,3,-1,-6,0,3,8,0,0,3,8,1,0,3],"Middle":[-5,-12,63,1,-5,-11,2,2,-4,-12,63,1,-4,-11,2,2,-3,-12,63,1,-3,-11,2,2,-2,-12,63,1,-2,-11,2,2,-2,-5,50,1,-2,-4,1,2,-1,-12,63,1,-1,-11,2,2,-1,-5,56,1,-1,-4,2,2,0,-12,63,1,0,-11,2,2,0,-5,24,1,0,-4,3,2,1,-12,63,1,1,-11,2,2,2,-12,63,1,2,-11,2,2,3,-12,63,1,3,-11,2,2,4,-12,63,1,4,-11,2,2,5,-12,63,1,5,-11,2,2,6,-12,63,1,6,-11,2,2,7,-12,63,1,7,-11,2,2,8,-12,63,1,8,-11,2,2,9,-12,63,1,9,-11,2,2,9,0,48,1,9,1,1,2,10,-12,63,1,10,-11,2,2,10,0,56,1,10,1,2,2,11,-12,63,1,11,-11,2,2,11,0,26,1,11,1,3,2,12,-12,63,1,12,-11,2,2,13,-12,63,1,13,-11,2,2,14,-12,63,1,14,-11,2,2],"Top":[-7,-13,511,1,-7,-12,511,1,-7,-11,511,1,-7,-10,511,1,-7,-9,511,1,-7,-8,511,1,-7,-7,511,1,-7,-6,511,1,-7,-5,511,1,-7,-4,511,1,-7,-3,511,1,-7,-2,511,1,-7,-1,511,1,-7,0,511,1,-7,1,511,1,-7,2,511,1,-7,3,511,1,-7,4,511,1,-7,5,511,1,-7,6,511,1,-6,-13,511,1,-6,-12,255,1,-6,-11,219,1,-6,-10,219,1,-6,-9,219,1,-6,-8,219,1,-6,-7,219,1,-6,-6,219,1,-6,-5,219,1,-6,-4,219,1,-6,-3,219,1,-6,-2,219,1,-6,-1,219,1,-6,0,219,1,-6,1,219,1,-6,2,219,1,-6,3,219,1,-6,4,219,1,-6,5,507,1,-6,6,511,1,-5,-13,511,1,-5,5,504,1,-5,6,511,1,-4,-13,511,1,-4,5,504,1,-4,6,511,1,-3,-13,511,1,-3,5,504,1,-3,6,511,1,-2,-13,511,1,-2,-7,144,1,-2,-6,146,1,-2,5,504,1,-2,6,511,1,-1,-13,511,1,-1,5,504,1,-1,6,511,1,0,-13,511,1,0,5,504,1,0,6,511,1,1,-13,511,1,1,5,504,1,1,6,511,1,2,-13,511,1,2,5,504,1,2,6,511,1,3,-13,511,1,3,5,504,1,3,6,511,1,4,-13,511,1,4,5,504,1,4,6,511,1,5,-13,511,1,5,5,504,1,5,6,511,1,6,-13,511,1,6,5,504,1,6,6,511,1,7,-13,511,1,7,5,504,1,7,6,511,1,8,-13,511,1,8,5,504,1,8,6,511,1,9,-13,511,1,9,5,504,1,9,6,511,1,10,-13,511,1,10,5,504,1,10,6,511,1,11,-13,511,1,11,-2,144,1,11,-1,146,1,11,5,504,1,11,6,511,1,12,-13,511,1,12,5,504,1,12,6,511,1,13,-13,511,1,13,5,504,1,13,6,511,1,14,-13,511,1,14,5,504,1,14,6,511,1,15,-13,511,1,15,-12,447,1,15,-11,438,1,15,-10,438,1,15,-9,438,1,15,-8,438,1,15,-7,438,1,15,-6,438,1,15,-5,438,1,15,-4,438,1,15,-3,438,1,15,-2,438,1,15,-1,438,1,15,0,438,1,15,1,438,1,15,2,438,1,15,3,438,1,15,4,438,1,15,5,510,1,15,6,511,1,16,-13,511,1,16,-12,511,1,16,-11,511,1,16,-10,511,1,16,-9,511,1,16,-8,511,1,16,-7,511,1,16,-6,511,1,16,-5,511,1,16,-4,511,1,16,-3,511,1,16,-2,511,1,16,-1,511,1,16,0,511,1,16,1,511,1,16,2,511,1,16,3,511,1,16,4,511,1,16,5,511,1,16,6,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":198,"Y":54},{"X":234,"Y":82},{"X":-74,"Y":82},{"X":138,"Y":54},{"X":234,"Y":-154},{"X":198,"Y":-30},{"X":-74,"Y":-154},{"X":170,"Y":-30},{"X":-10,"Y":-110},{"X":22,"Y":-26},{"X":22,"Y":-78},{"X":170,"Y":2},{"X":138,"Y":2},{"X":-10,"Y":-78},{"X":-38,"Y":-26},{"X":-38,"Y":-110}],"NavigationPolygon":[[0,1,2,3],[4,1,0,5],[6,4,5,7,8],[9,10,7,11,12],[10,13,8],[9,12,3,2,14],[14,2,6,15],[8,15,6],[8,7,10]],"Floor":[-5,-10,0,3,-5,-9,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-4,-10,0,3,-4,-9,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-4,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-4,3,0,3,-3,-10,0,3,-3,-9,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-3,-5,0,3,-3,-4,0,3,-3,-3,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-2,-10,0,3,-2,-9,0,3,-2,-8,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-1,-10,0,3,-1,-9,0,3,-1,-8,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,0,-10,0,3,0,-9,0,3,0,-8,0,3,0,-7,0,3,0,-6,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,1,-10,0,3,1,-9,0,3,1,-8,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,2,-10,0,3,2,-9,0,3,2,-8,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,3,-10,0,3,3,-9,0,3,3,-8,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,4,-10,0,3,4,-9,0,3,4,-8,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,5,-10,0,3,5,-9,0,3,5,-8,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,6,-10,0,3,6,-9,0,3,6,-8,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,7,-10,0,3,7,-9,0,3,7,-8,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,2,0,3,7,3,0,3,8,-10,0,3,8,-9,0,3,8,-8,0,3,8,-7,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,2,0,3,8,3,0,3,9,-10,0,3,9,-9,0,3,9,-8,0,3,9,-7,0,3,9,-6,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,3,0,3,10,-10,0,3,10,-9,0,3,10,-8,0,3,10,-7,0,3,10,-6,0,3,10,-5,0,3,10,-4,0,3,10,-3,0,3,10,3,0,3,11,-10,0,3,11,-9,0,3,11,-8,0,3,11,-7,0,3,11,-6,0,3,11,-5,0,3,11,-4,0,3,11,-3,0,3,11,3,0,3,12,-10,0,3,12,-9,0,3,12,-8,0,3,12,-7,0,3,12,-6,0,3,12,-5,0,3,12,-4,0,3,12,-3,0,3,12,-2,0,3,12,-1,0,3,12,0,0,3,12,1,0,3,12,2,0,3,12,3,0,3,13,-10,0,3,13,-9,0,3,13,-8,0,3,13,-7,0,3,13,-6,0,3,13,-5,0,3,13,-4,0,3,13,-3,0,3,13,-2,0,3,13,-1,0,3,13,0,0,3,13,1,0,3,13,2,0,3,13,3,0,3,7,0,0,3,7,1,0,3,-5,4,0,3,-4,4,0,3,-3,4,0,3,-2,4,0,3,-1,4,0,3,0,4,0,3,1,4,0,3,2,4,0,3,3,4,0,3,4,4,0,3,5,4,0,3,6,4,0,3,7,4,0,3,8,4,0,3,9,4,0,3,10,4,0,3,11,4,0,3,12,4,0,3,13,4,0,3,14,-10,0,3,14,-9,0,3,14,-8,0,3,14,-7,0,3,14,-6,0,3,14,-5,0,3,14,-4,0,3,14,-3,0,3,14,-2,0,3,14,-1,0,3,14,0,0,3,14,1,0,3,14,2,0,3,14,3,0,3,14,4,0,3,10,-2,0,3,10,-1,0,3,-1,-7,0,3,-1,-6,0,3,8,0,0,3,8,1,0,3],"Middle":[-5,-13,63,1,-5,-12,2,2,-5,-11,6,2,-4,-13,63,1,-4,-12,2,2,-4,-11,6,2,-3,-13,63,1,-3,-12,2,2,-3,-11,6,2,-2,-13,63,1,-2,-12,2,2,-2,-11,6,2,-2,-5,50,1,-2,-4,1,2,-2,-3,5,2,-1,-13,63,1,-1,-12,2,2,-1,-11,6,2,-1,-5,56,1,-1,-4,2,2,-1,-3,6,2,0,-13,63,1,0,-12,2,2,0,-11,6,2,0,-5,24,1,0,-4,3,2,0,-3,7,2,1,-13,63,1,1,-12,2,2,1,-11,6,2,2,-13,63,1,2,-12,2,2,2,-11,6,2,3,-13,63,1,3,-12,2,2,3,-11,6,2,4,-13,63,1,4,-12,2,2,4,-11,6,2,5,-13,63,1,5,-12,2,2,5,-11,6,2,6,-13,63,1,6,-12,2,2,6,-11,6,2,7,-13,63,1,7,-12,2,2,7,-11,6,2,8,-13,63,1,8,-12,2,2,8,-11,6,2,9,-13,63,1,9,-12,2,2,9,-11,6,2,9,0,48,1,9,1,1,2,9,2,5,2,10,-13,63,1,10,-12,2,2,10,-11,6,2,10,0,56,1,10,1,2,2,10,2,6,2,11,-13,63,1,11,-12,2,2,11,-11,6,2,11,0,26,1,11,1,3,2,11,2,7,2,12,-13,63,1,12,-12,2,2,12,-11,6,2,13,-13,63,1,13,-12,2,2,13,-11,6,2,14,-13,63,1,14,-12,2,2,14,-11,6,2],"Top":[-7,-14,511,1,-7,-13,511,1,-7,-12,511,1,-7,-11,511,1,-7,-10,511,1,-7,-9,511,1,-7,-8,511,1,-7,-7,511,1,-7,-6,511,1,-7,-5,511,1,-7,-4,511,1,-7,-3,511,1,-7,-2,511,1,-7,-1,511,1,-7,0,511,1,-7,1,511,1,-7,2,511,1,-7,3,511,1,-7,4,511,1,-7,5,511,1,-7,6,511,1,-6,-14,511,1,-6,-13,255,1,-6,-12,219,1,-6,-11,219,1,-6,-10,219,1,-6,-9,219,1,-6,-8,219,1,-6,-7,219,1,-6,-6,219,1,-6,-5,219,1,-6,-4,219,1,-6,-3,219,1,-6,-2,219,1,-6,-1,219,1,-6,0,219,1,-6,1,219,1,-6,2,219,1,-6,3,219,1,-6,4,219,1,-6,5,507,1,-6,6,511,1,-5,-14,511,1,-5,5,504,1,-5,6,511,1,-4,-14,511,1,-4,5,504,1,-4,6,511,1,-3,-14,511,1,-3,5,504,1,-3,6,511,1,-2,-14,511,1,-2,-7,144,1,-2,-6,146,1,-2,5,504,1,-2,6,511,1,-1,-14,511,1,-1,5,504,1,-1,6,511,1,0,-14,511,1,0,5,504,1,0,6,511,1,1,-14,511,1,1,5,504,1,1,6,511,1,2,-14,511,1,2,5,504,1,2,6,511,1,3,-14,511,1,3,5,504,1,3,6,511,1,4,-14,511,1,4,5,504,1,4,6,511,1,5,-14,511,1,5,5,504,1,5,6,511,1,6,-14,511,1,6,5,504,1,6,6,511,1,7,-14,511,1,7,5,504,1,7,6,511,1,8,-14,511,1,8,5,504,1,8,6,511,1,9,-14,511,1,9,5,504,1,9,6,511,1,10,-14,511,1,10,5,504,1,10,6,511,1,11,-14,511,1,11,-2,144,1,11,-1,146,1,11,5,504,1,11,6,511,1,12,-14,511,1,12,5,504,1,12,6,511,1,13,-14,511,1,13,5,504,1,13,6,511,1,14,-14,511,1,14,5,504,1,14,6,511,1,15,-14,511,1,15,-13,447,1,15,-12,438,1,15,-11,438,1,15,-10,438,1,15,-9,438,1,15,-8,438,1,15,-7,438,1,15,-6,438,1,15,-5,438,1,15,-4,438,1,15,-3,438,1,15,-2,438,1,15,-1,438,1,15,0,438,1,15,1,438,1,15,2,438,1,15,3,438,1,15,4,438,1,15,5,510,1,15,6,511,1,16,-14,511,1,16,-13,511,1,16,-12,511,1,16,-11,511,1,16,-10,511,1,16,-9,511,1,16,-8,511,1,16,-7,511,1,16,-6,511,1,16,-5,511,1,16,-4,511,1,16,-3,511,1,16,-2,511,1,16,-1,511,1,16,0,511,1,16,1,511,1,16,2,511,1,16,3,511,1,16,4,511,1,16,5,511,1,16,6,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git "a/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preinstall.json" "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preinstall.json"
new file mode 100644
index 0000000..a9f951a
--- /dev/null
+++ "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preinstall.json"
@@ -0,0 +1 @@
+[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":true,"WaveList":[[]]}]
\ No newline at end of file
diff --git "a/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preview.png" "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preview.png"
new file mode 100644
index 0000000..d2ad303
--- /dev/null
+++ "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preview.png"
Binary files differ
diff --git "a/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preview.png.import" "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preview.png.import"
new file mode 100644
index 0000000..e9f48d4
--- /dev/null
+++ "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/Preview.png.import"
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://co5xect35y824"
+path="res://.godot/imported/Preview.png-fc7bb7c2dfd4b0a1ba5ea4ee2d5b8746.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/map/tileMaps/Test1/event/测试房间/Preview.png"
+dest_files=["res://.godot/imported/Preview.png-fc7bb7c2dfd4b0a1ba5ea4ee2d5b8746.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git "a/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/RoomInfo.json" "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/RoomInfo.json"
new file mode 100644
index 0000000..3e904a7
--- /dev/null
+++ "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/RoomInfo.json"
@@ -0,0 +1 @@
+{"Position":{"X":-20,"Y":-11},"Size":{"X":29,"Y":29},"DoorAreaInfos":[],"GroupName":"Test1","RoomType":64,"RoomName":"\u6D4B\u8BD5\u623F\u95F4","Weight":100,"Remark":""}
\ No newline at end of file
diff --git "a/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/TileInfo.json" "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/TileInfo.json"
new file mode 100644
index 0000000..e33c38d
--- /dev/null
+++ "b/DungeonShooting_Godot/resource/map/tileMaps/Test1/event/\346\265\213\350\257\225\346\210\277\351\227\264/TileInfo.json"
@@ -0,0 +1 @@
+{"NavigationVertices":[{"X":-26,"Y":-26},{"X":-26,"Y":-58},{"X":90,"Y":-58},{"X":90,"Y":36},{"X":42,"Y":36},{"X":42,"Y":150},{"X":22,"Y":150},{"X":22,"Y":36},{"X":-26,"Y":-12},{"X":-26,"Y":36},{"X":-166,"Y":-26},{"X":-166,"Y":-12},{"X":-166,"Y":52},{"X":-182,"Y":52},{"X":-26,"Y":166},{"X":-26,"Y":150},{"X":90,"Y":150},{"X":90,"Y":244},{"X":-26,"Y":244},{"X":-26,"Y":180},{"X":-182,"Y":166},{"X":-202,"Y":180},{"X":-202,"Y":52},{"X":-266,"Y":52},{"X":-266,"Y":-106},{"X":-166,"Y":-106}],"NavigationPolygon":[[0,1,2,3,4],[4,5,6,7],[0,4,7,8],[7,9,8],[10,0,8,11],[11,12,13],[14,15,6],[5,16,17,18,19],[6,5,19,14],[20,14,19,21],[20,21,22,13],[22,23,24,25,10],[22,10,11,13]],"Floor":[-2,-4,0,3,-1,-4,0,3,-1,-3,0,3,0,-2,0,3,1,-2,0,3,1,-1,0,3,2,-1,0,3,3,-1,0,3,3,0,0,3,4,0,0,3,5,0,0,3,5,1,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,0,-4,0,3,0,-3,0,3,0,-1,0,3,0,0,0,3,1,-4,0,3,1,-3,0,3,1,0,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,0,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,-2,1,0,3,-1,1,0,3,0,1,0,3,1,1,0,3,2,1,0,3,3,1,0,3,4,1,0,3,1,2,0,3,2,2,0,3,-2,9,0,3,-2,10,0,3,-2,11,0,3,-2,12,0,3,-2,13,0,3,-2,14,0,3,-1,9,0,3,-1,10,0,3,-1,11,0,3,-1,12,0,3,-1,13,0,3,-1,14,0,3,0,9,0,3,0,10,0,3,0,11,0,3,0,12,0,3,0,13,0,3,0,14,0,3,1,9,0,3,1,10,0,3,1,11,0,3,1,12,0,3,1,13,0,3,1,14,0,3,2,9,0,3,2,10,0,3,2,11,0,3,2,12,0,3,2,13,0,3,2,14,0,3,3,9,0,3,3,10,0,3,3,11,0,3,3,12,0,3,3,13,0,3,3,14,0,3,4,9,0,3,4,10,0,3,4,11,0,3,4,12,0,3,4,13,0,3,4,14,0,3,5,9,0,3,5,10,0,3,5,11,0,3,5,12,0,3,5,13,0,3,5,14,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,1,7,0,3,1,8,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,2,7,0,3,2,8,0,3,-17,-7,0,3,-17,-6,0,3,-16,-6,0,3,-16,-5,0,3,-15,-5,0,3,-15,-4,0,3,-14,-3,0,3,-14,-2,0,3,-13,-2,0,3,-13,-1,0,3,-12,-1,0,3,-12,0,0,3,-11,0,0,3,-11,1,0,3,-17,-5,0,3,-17,-4,0,3,-17,-3,0,3,-17,-2,0,3,-17,-1,0,3,-17,0,0,3,-17,1,0,3,-17,2,0,3,-16,-7,0,3,-16,-4,0,3,-16,-3,0,3,-16,-2,0,3,-16,-1,0,3,-16,0,0,3,-16,1,0,3,-16,2,0,3,-15,-7,0,3,-15,-6,0,3,-15,-3,0,3,-15,-2,0,3,-15,-1,0,3,-15,0,0,3,-15,1,0,3,-15,2,0,3,-14,-7,0,3,-14,-6,0,3,-14,-5,0,3,-14,-4,0,3,-14,-1,0,3,-14,0,0,3,-14,1,0,3,-14,2,0,3,-13,-7,0,3,-13,-6,0,3,-13,-5,0,3,-13,-4,0,3,-13,-3,0,3,-13,0,0,3,-13,1,0,3,-13,2,0,3,-12,-7,0,3,-12,-6,0,3,-12,-5,0,3,-12,-4,0,3,-12,-3,0,3,-12,-2,0,3,-12,1,0,3,-12,2,0,3,-11,-7,0,3,-11,-6,0,3,-11,-5,0,3,-11,-4,0,3,-11,-3,0,3,-11,-2,0,3,-11,-1,0,3,-11,2,0,3,-10,-2,0,3,-9,-2,0,3,-8,-2,0,3,-7,-2,0,3,-6,-2,0,3,-5,-2,0,3,-4,-2,0,3,-3,-2,0,3,-13,3,0,3,-13,4,0,3,-13,5,0,3,-13,6,0,3,-13,7,0,3,-13,8,0,3,-13,9,0,3,-13,10,0,3,-12,3,0,3,-12,4,0,3,-12,5,0,3,-12,6,0,3,-12,7,0,3,-12,8,0,3,-12,9,0,3,-12,10,0,3,-11,10,0,3,-10,10,0,3,-9,10,0,3,-8,10,0,3,-7,10,0,3,-6,10,0,3,-5,10,0,3,-4,10,0,3,-3,10,0,3,-11,5,0,3],"Middle":[],"Top":[],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preview.png
index a47be3d..bf23f36 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/RoomInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/RoomInfo.json
index d6fd35d..dedff1f 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/RoomInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/RoomInfo.json
@@ -1 +1 @@
-{"Position":{"X":-9,"Y":-7},"Size":{"X":20,"Y":17},"DoorAreaInfos":[{"Direction":3,"Start":64,"End":208},{"Direction":0,"Start":16,"End":144},{"Direction":2,"Start":48,"End":176},{"Direction":1,"Start":16,"End":160}],"GroupName":"Test1","RoomType":2,"RoomName":"Start","Weight":100,"Remark":""}
\ No newline at end of file
+{"Position":{"X":-9,"Y":-7},"Size":{"X":20,"Y":17},"DoorAreaInfos":[{"Direction":3,"Start":32,"End":176},{"Direction":2,"Start":16,"End":144}],"GroupName":"Test1","RoomType":2,"RoomName":"Start","Weight":100,"Remark":""}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/TileInfo.json
index 30500bf..bfa5964 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":138,"Y":-42},{"X":138,"Y":82},{"X":134,"Y":22},{"X":134,"Y":-14},{"X":74,"Y":2},{"X":74,"Y":38},{"X":58,"Y":82},{"X":-26,"Y":22},{"X":-26,"Y":-14},{"X":90,"Y":-42},{"X":90,"Y":-14},{"X":90,"Y":2},{"X":118,"Y":38},{"X":118,"Y":22},{"X":58,"Y":130},{"X":-58,"Y":130},{"X":-58,"Y":98},{"X":-86,"Y":22},{"X":-106,"Y":98},{"X":-106,"Y":-42},{"X":-86,"Y":-14},{"X":-42,"Y":-42},{"X":-42,"Y":-58},{"X":90,"Y":-58}],"NavigationPolygon":[[0,1,2,3],[4,5,6,7,8],[9,0,3,10],[10,11,4],[12,13,2,1],[12,1,6,5],[7,6,14,15,16],[17,7,16,18],[17,18,19,20],[20,19,21,8],[4,8,21,22,23,9],[4,9,10]],"Floor":[-3,-4,0,3,-2,-4,0,3,-2,-3,0,3,-3,-3,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-5,-3,0,3,-5,-2,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-4,-3,0,3,-4,-2,0,3,-4,1,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-3,-2,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-4,6,0,3,-4,7,0,3,-3,6,0,3,-3,7,0,3,-2,6,0,3,-2,7,0,3,-1,3,0,3,-1,4,0,3,-1,7,0,3,0,3,0,3,0,4,0,3,0,7,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,1,7,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,2,7,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,3,7,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,3,1,0,3,3,2,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,5,2,0,3,5,3,0,3,5,4,0,3,6,2,0,3,6,3,0,3,6,4,0,3,6,-3,0,3,6,-2,0,3,7,-3,0,3,7,-2,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,-1,2,0,3,0,2,0,3,1,2,0,3,2,2,0,3,2,1,0,3,1,1,0,3,0,1,0,3,-1,1,0,3,-1,5,0,3,0,5,0,3,0,6,0,3,-1,6,0,3],"Middle":[-7,-5,63,1,-7,-4,2,2,-6,-5,63,1,-6,-4,2,2,-5,-5,63,1,-5,-4,2,2,-5,-1,48,1,-5,0,1,2,-4,-5,27,1,-4,-4,3,2,-4,-1,56,1,-4,0,2,2,-3,-6,63,1,-3,-5,2,2,-3,-1,24,1,-3,0,3,2,-2,-6,63,1,-2,-5,2,2,-1,-6,63,1,-1,-5,2,2,0,-6,63,1,0,-5,2,2,1,-6,63,1,1,-5,2,2,2,-6,63,1,2,-5,2,2,3,-6,63,1,3,-5,2,2,4,-6,63,1,4,-5,2,2,5,-6,63,1,5,-5,2,2,5,0,48,1,5,1,1,2,6,-5,54,1,6,-4,1,2,6,0,26,1,6,1,3,2,7,-5,63,1,7,-4,2,2,7,-1,24,1,7,0,3,2,8,-5,63,1,8,-4,2,2],"Top":[-9,-6,511,1,-9,-5,511,1,-9,-4,511,1,-9,-3,511,1,-9,-2,511,1,-9,-1,511,1,-9,0,511,1,-9,1,511,1,-9,2,511,1,-9,3,511,1,-9,4,511,1,-9,5,511,1,-9,6,511,1,-9,7,511,1,-8,-6,511,1,-8,-5,255,1,-8,-4,219,1,-8,-3,219,1,-8,-2,219,1,-8,-1,219,1,-8,0,219,1,-8,1,219,1,-8,2,219,1,-8,3,219,1,-8,4,219,1,-8,5,219,1,-8,6,507,1,-8,7,511,1,-7,-6,511,1,-7,6,504,1,-7,7,511,1,-6,-6,511,1,-6,6,504,1,-6,7,511,1,-6,8,511,1,-6,9,511,1,-5,-7,511,1,-5,-6,511,1,-5,6,216,1,-5,7,219,1,-5,8,507,1,-5,9,511,1,-4,-7,511,1,-4,-6,255,1,-4,8,504,1,-4,9,511,1,-3,-7,511,1,-3,8,504,1,-3,9,511,1,-2,-7,511,1,-2,8,504,1,-2,9,511,1,-1,-7,511,1,-1,8,504,1,-1,9,511,1,0,-7,511,1,0,8,504,1,0,9,511,1,1,-7,511,1,1,8,504,1,1,9,511,1,2,-7,511,1,2,8,504,1,2,9,511,1,3,-7,511,1,3,8,504,1,3,9,511,1,4,-7,511,1,4,5,432,1,4,6,438,1,4,7,438,1,4,8,510,1,4,9,511,1,5,-7,511,1,5,5,504,1,5,6,511,1,5,7,511,1,5,8,511,1,5,9,511,1,6,-7,511,1,6,-6,447,1,6,-1,176,1,6,5,504,1,6,6,511,1,7,-7,511,1,7,-6,511,1,7,5,504,1,7,6,511,1,8,-6,511,1,8,5,504,1,8,6,511,1,9,-6,511,1,9,-5,447,1,9,-4,438,1,9,-3,438,1,9,-2,438,1,9,-1,438,1,9,0,438,1,9,1,438,1,9,2,438,1,9,3,438,1,9,4,438,1,9,5,510,1,9,6,511,1,10,-6,511,1,10,-5,511,1,10,-4,511,1,10,-3,511,1,10,-2,511,1,10,-1,511,1,10,0,511,1,10,1,511,1,10,2,511,1,10,3,511,1,10,4,511,1,10,5,511,1,10,6,511,1],"CustomFloor1":[-4,2,1,7,14,-3,3,1,8,15,-4,3,1,7,15,-5,3,1,6,15,6,4,1,8,15,5,4,1,7,15,-14,-6,0,24,7,-14,-5,0,24,7,-13,-5,0,24,7,-13,-6,0,25,7,-14,-4,0,24,8,-13,-4,0,24,8,-12,-4,0,24,8,-12,-5,0,24,7,-11,-4,0,24,8,-11,-5,0,24,7,-10,-4,0,24,7,-10,-5,0,24,7,-9,-4,0,24,7,-9,-5,0,25,7,-10,-3,0,24,8,-9,-3,0,24,8,-5,2,1,6,14,4,3,1,6,14,4,4,1,6,15,6,3,1,8,14,5,3,1,7,14,-3,2,1,8,14],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[-3,4,1,10,5,-3,5,1,10,6,2,4,1,10,5,2,5,1,10,6],"CustomMiddle2":[5,-4,1,6,0,5,-3,1,6,1,-2,-1,1,5,0,-2,0,1,5,1],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":138,"Y":-42},{"X":138,"Y":90},{"X":134,"Y":38},{"X":134,"Y":-6},{"X":74,"Y":10},{"X":74,"Y":54},{"X":58,"Y":90},{"X":-26,"Y":38},{"X":-26,"Y":-6},{"X":90,"Y":-42},{"X":90,"Y":-6},{"X":90,"Y":10},{"X":118,"Y":54},{"X":118,"Y":38},{"X":58,"Y":138},{"X":-58,"Y":138},{"X":-58,"Y":106},{"X":-86,"Y":38},{"X":-106,"Y":106},{"X":-106,"Y":-42},{"X":-86,"Y":-6},{"X":-42,"Y":-42},{"X":-42,"Y":-58},{"X":90,"Y":-58}],"NavigationPolygon":[[0,1,2,3],[4,5,6,7,8],[9,0,3,10],[10,11,4],[12,13,2,1],[12,1,6,5],[7,6,14,15,16],[17,7,16,18],[17,18,19,20],[20,19,21,8],[4,8,21,22,23,9],[4,9,10]],"Floor":[-3,-4,0,3,-2,-4,0,3,-2,-3,0,3,-3,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-5,-3,0,3,-5,-2,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-4,-3,0,3,-4,-2,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-3,-2,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-4,6,0,3,-4,7,0,3,-3,6,0,3,-3,7,0,3,-2,6,0,3,-2,7,0,3,-1,3,0,3,-1,4,0,3,-1,7,0,3,0,3,0,3,0,4,0,3,0,7,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,1,7,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,2,7,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,3,7,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,5,-4,0,3,5,-3,0,3,5,-1,0,3,3,1,0,3,3,2,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,5,3,0,3,5,4,0,3,6,3,0,3,6,4,0,3,6,-3,0,3,7,-3,0,3,7,-2,0,3,7,2,0,3,7,3,0,3,7,4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,-1,2,0,3,0,2,0,3,1,2,0,3,2,2,0,3,2,1,0,3,1,1,0,3,0,1,0,3,-1,1,0,3,-1,5,0,3,0,5,0,3,0,6,0,3,-1,6,0,3,-7,-3,0,3,6,-2,0,3,5,-2,0,3],"CustomFloor1":[-4,2,1,7,14,-3,3,1,8,15,-4,3,1,7,15,-5,3,1,6,15,6,4,1,8,15,5,4,1,7,15,-5,2,1,6,14,4,3,1,6,14,4,4,1,6,15,6,3,1,8,14,5,3,1,7,14,-3,2,1,8,14],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[-3,4,1,10,5,-3,5,1,10,6,2,4,1,10,5,2,5,1,10,6],"CustomMiddle2":[5,-4,1,6,0,5,-3,1,6,1,-2,-1,1,5,0,-2,0,1,5,1],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/Preinstall.json
index a9f951a..cc0f6ed 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/Preinstall.json
@@ -1 +1 @@
-[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":true,"WaveList":[[]]}]
\ No newline at end of file
+[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":true,"WaveList":[[{"Position":{"X":8,"Y":-8},"Size":{"X":14,"Y":14},"SpecialMarkType":2,"DelayTime":0,"MarkList":[]}]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/Preview.png
index 3a075c0..fcbb563 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/RoomInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/RoomInfo.json
index c75a9d0..6881d9b 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/RoomInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/RoomInfo.json
@@ -1 +1 @@
-{"Position":{"X":-4,"Y":-6},"Size":{"X":9,"Y":10},"DoorAreaInfos":[],"GroupName":"Test1","RoomType":4,"RoomName":"End1","Weight":100,"Remark":""}
\ No newline at end of file
+{"Position":{"X":-5,"Y":-7},"Size":{"X":11,"Y":12},"DoorAreaInfos":[],"GroupName":"Test1","RoomType":4,"RoomName":"End1","Weight":100,"Remark":""}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/TileInfo.json
index e59f6a9..3880d49 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/outlet/End1/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":42,"Y":-42},{"X":42,"Y":34},{"X":22,"Y":6},{"X":22,"Y":-30},{"X":-26,"Y":-42},{"X":-6,"Y":-30},{"X":-26,"Y":34},{"X":-6,"Y":6}],"NavigationPolygon":[[0,1,2,3],[4,0,3,5],[2,1,6,7],[7,6,4,5]],"Floor":[-2,-1,0,3,-2,-2,0,3,-1,-2,0,3,1,-2,0,3,1,-1,0,3,2,-1,0,3,-1,-1,0,3,-2,0,0,3,-2,1,0,3,-1,1,0,3,0,1,0,3,1,1,0,3,2,1,0,3,2,0,0,3,1,0,0,3,0,0,0,3,-1,0,0,3,2,-2,0,3,2,-3,0,3,1,-3,0,3,0,-3,0,3,-1,-3,0,3,-2,-3,0,3],"Middle":[-2,-5,63,1,-2,-4,2,2,-1,-5,63,1,-1,-4,2,2,0,-5,63,1,0,-4,2,2,0,-2,16,1,0,-1,0,2,1,-5,63,1,1,-4,2,2,2,-5,63,1,2,-4,2,2],"Top":[-4,-6,511,1,-4,-5,511,1,-4,-4,511,1,-4,-3,511,1,-4,-2,511,1,-4,-1,511,1,-4,0,511,1,-4,1,511,1,-4,2,511,1,-4,3,511,1,-3,-6,511,1,-3,-5,255,1,-3,-4,219,1,-3,-3,219,1,-3,-2,219,1,-3,-1,219,1,-3,0,219,1,-3,1,219,1,-3,2,507,1,-3,3,511,1,-2,-6,511,1,-2,2,504,1,-2,3,511,1,-1,-6,511,1,-1,2,504,1,-1,3,511,1,0,-6,511,1,0,2,504,1,0,3,511,1,1,-6,511,1,1,2,504,1,1,3,511,1,2,-6,511,1,2,2,504,1,2,3,511,1,3,-6,511,1,3,-5,447,1,3,-4,438,1,3,-3,438,1,3,-2,438,1,3,-1,438,1,3,0,438,1,3,1,438,1,3,2,510,1,3,3,511,1,4,-6,511,1,4,-5,511,1,4,-4,511,1,4,-3,511,1,4,-2,511,1,4,-1,511,1,4,0,511,1,4,1,511,1,4,2,511,1,4,3,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":58,"Y":-58},{"X":58,"Y":58},{"X":-42,"Y":58},{"X":-26,"Y":-42},{"X":-42,"Y":-42},{"X":-26,"Y":-58}],"NavigationPolygon":[[0,1,2,3],[2,4,3],[0,3,5]],"Floor":[-2,-1,0,3,-2,-2,0,3,-1,-2,0,3,1,-2,0,3,1,-1,0,3,2,-1,0,3,-1,-1,0,3,-2,0,0,3,-2,1,0,3,-1,1,0,3,0,1,0,3,1,1,0,3,2,1,0,3,2,0,0,3,1,0,0,3,-1,0,0,3,2,-2,0,3,2,-3,0,3,1,-3,0,3,0,-3,0,3,-1,-3,0,3,-2,-3,0,3,-2,2,0,3,-1,2,0,3,0,2,0,3,1,2,0,3,2,2,0,3,3,2,0,3,3,1,0,3,3,0,0,3,3,-1,0,3,3,-2,0,3,3,-3,0,3,3,-4,0,3,2,-4,0,3,1,-4,0,3,0,-4,0,3,-1,-4,0,3,-2,-4,0,3,-3,-3,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,0,0,0,3,0,-2,0,3,0,-1,0,3],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/reward/Award1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/reward/Award1/Preview.png
index ca7df8c..7b62434 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/reward/Award1/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/reward/Award1/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/reward/Award1/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/reward/Award1/TileInfo.json
index ce0c2b2..7c17a71 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/reward/Award1/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/reward/Award1/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":26,"Y":66},{"X":-74,"Y":66},{"X":-74,"Y":-42},{"X":26,"Y":-42}],"NavigationPolygon":[[0,1,2,3]],"Floor":[-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-3,-3,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,-5,3,0,3,-4,3,0,3,-3,3,0,3,-2,3,0,3,-1,3,0,3,0,3,0,3,1,3,0,3,-3,-2,0,3],"Middle":[-5,-5,63,1,-5,-4,2,2,-4,-5,63,1,-4,-4,2,2,-3,-5,63,1,-3,-4,2,2,-2,-5,63,1,-2,-4,2,2,-1,-5,63,1,-1,-4,2,2,0,-5,63,1,0,-4,2,2,1,-5,63,1,1,-4,2,2],"Top":[-7,-6,511,1,-7,-5,511,1,-7,-4,511,1,-7,-3,511,1,-7,-2,511,1,-7,-1,511,1,-7,0,511,1,-7,1,511,1,-7,2,511,1,-7,3,511,1,-7,4,511,1,-7,5,511,1,-6,-6,511,1,-6,-5,255,1,-6,-4,219,1,-6,-3,219,1,-6,-2,219,1,-6,-1,219,1,-6,0,219,1,-6,1,219,1,-6,2,219,1,-6,3,219,1,-6,4,507,1,-6,5,511,1,-5,-6,511,1,-5,4,504,1,-5,5,511,1,-4,-6,511,1,-4,4,504,1,-4,5,511,1,-3,-6,511,1,-3,4,504,1,-3,5,511,1,-2,-6,511,1,-2,4,504,1,-2,5,511,1,-1,-6,511,1,-1,4,504,1,-1,5,511,1,0,-6,511,1,0,4,504,1,0,5,511,1,1,-6,511,1,1,4,504,1,1,5,511,1,2,-6,511,1,2,-5,447,1,2,-4,438,1,2,-3,438,1,2,-2,438,1,2,-1,438,1,2,0,438,1,2,1,438,1,2,2,438,1,2,3,438,1,2,4,510,1,2,5,511,1,3,-6,511,1,3,-5,511,1,3,-4,511,1,3,-3,511,1,3,-2,511,1,3,-1,511,1,3,0,511,1,3,1,511,1,3,2,511,1,3,3,511,1,3,4,511,1,3,5,511,1],"CustomFloor1":[-3,-1,1,18,8,-3,0,1,18,8,-3,1,1,18,8,-2,-1,1,18,8,-2,0,1,18,8,-2,1,1,18,8,-1,-1,1,18,8,-1,0,1,18,8,-1,1,1,18,8,-4,-2,2,4,8,-4,-3,2,2,6,-1,-2,2,2,8,-1,-3,2,2,6,-2,-2,2,2,8,-2,-3,2,2,6,-3,-2,2,2,8,-3,-3,2,2,6,0,-3,2,2,6,0,-2,2,5,8,1,-3,2,3,6,1,-2,2,3,7,1,-1,2,3,7,0,-1,2,1,7,1,0,2,3,7,0,0,2,1,7,1,1,2,3,7,0,1,2,1,7,1,2,2,3,7,0,2,2,5,9,1,3,2,3,8,0,3,2,2,8,-1,3,2,2,8,-1,2,2,2,6,-2,3,2,2,8,-2,2,2,2,6,-3,3,2,2,8,-3,2,2,2,6,-4,3,2,2,8,-4,2,2,4,9,-5,3,2,1,8,-5,2,2,1,7,-4,1,2,3,7,-5,1,2,1,7,-4,0,2,3,7,-5,0,2,1,7,-4,-1,2,3,7,-5,-1,2,1,7,-5,-2,2,1,7,-5,-3,2,1,6],"CustomFloor2":[-4,-2,1,13,5,0,-2,1,13,5,-4,2,1,13,6,0,2,1,13,6],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":26,"Y":66},{"X":-74,"Y":66},{"X":-74,"Y":-42},{"X":26,"Y":-42}],"NavigationPolygon":[[0,1,2,3]],"Floor":[-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-3,-3,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,-5,3,0,3,-4,3,0,3,-3,3,0,3,-2,3,0,3,-1,3,0,3,0,3,0,3,1,3,0,3,-3,-2,0,3,-5,-3,0,3],"Middle":[-5,-6,63,1,-5,-5,2,2,-5,-4,6,2,-4,-6,63,1,-4,-5,2,2,-4,-4,6,2,-3,-6,63,1,-3,-5,2,2,-3,-4,6,2,-2,-6,63,1,-2,-5,2,2,-2,-4,6,2,-1,-6,63,1,-1,-5,2,2,-1,-4,6,2,0,-6,63,1,0,-5,2,2,0,-4,6,2,1,-6,63,1,1,-5,2,2,1,-4,6,2],"Top":[-7,-7,511,1,-7,-6,511,1,-7,-5,511,1,-7,-4,511,1,-7,-3,511,1,-7,-2,511,1,-7,-1,511,1,-7,0,511,1,-7,1,511,1,-7,2,511,1,-7,3,511,1,-7,4,511,1,-7,5,511,1,-6,-7,511,1,-6,-6,255,1,-6,-5,219,1,-6,-4,219,1,-6,-3,219,1,-6,-2,219,1,-6,-1,219,1,-6,0,219,1,-6,1,219,1,-6,2,219,1,-6,3,219,1,-6,4,507,1,-6,5,511,1,-5,-7,511,1,-5,4,504,1,-5,5,511,1,-4,-7,511,1,-4,4,504,1,-4,5,511,1,-3,-7,511,1,-3,4,504,1,-3,5,511,1,-2,-7,511,1,-2,4,504,1,-2,5,511,1,-1,-7,511,1,-1,4,504,1,-1,5,511,1,0,-7,511,1,0,4,504,1,0,5,511,1,1,-7,511,1,1,4,504,1,1,5,511,1,2,-7,511,1,2,-6,447,1,2,-5,438,1,2,-4,438,1,2,-3,438,1,2,-2,438,1,2,-1,438,1,2,0,438,1,2,1,438,1,2,2,438,1,2,3,438,1,2,4,510,1,2,5,511,1,3,-7,511,1,3,-6,511,1,3,-5,511,1,3,-4,511,1,3,-3,511,1,3,-2,511,1,3,-1,511,1,3,0,511,1,3,1,511,1,3,2,511,1,3,3,511,1,3,4,511,1,3,5,511,1],"CustomFloor1":[-3,-1,1,18,8,-3,0,1,18,8,-3,1,1,18,8,-2,-1,1,18,8,-2,0,1,18,8,-2,1,1,18,8,-1,-1,1,18,8,-1,0,1,18,8,-1,1,1,18,8,-4,-2,2,4,8,-4,-3,2,2,6,-1,-2,2,2,8,-1,-3,2,2,6,-2,-2,2,2,8,-2,-3,2,2,6,-3,-2,2,2,8,-3,-3,2,2,6,0,-3,2,2,6,0,-2,2,5,8,1,-3,2,3,6,1,-2,2,3,7,1,-1,2,3,7,0,-1,2,1,7,1,0,2,3,7,0,0,2,1,7,1,1,2,3,7,0,1,2,1,7,1,2,2,3,7,0,2,2,5,9,1,3,2,3,8,0,3,2,2,8,-1,3,2,2,8,-1,2,2,2,6,-2,3,2,2,8,-2,2,2,2,6,-3,3,2,2,8,-3,2,2,2,6,-4,3,2,2,8,-4,2,2,4,9,-5,3,2,1,8,-5,2,2,1,7,-4,1,2,3,7,-5,1,2,1,7,-4,0,2,3,7,-5,0,2,1,7,-4,-1,2,3,7,-5,-1,2,1,7,-5,-2,2,1,7,-5,-3,2,1,6],"CustomFloor2":[-4,-2,1,13,5,0,-2,1,13,5,-4,2,1,13,6,0,2,1,13,6],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/Preview.png
index 6ca318e..0f9e9f7 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/Preview.png.import b/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/Preview.png.import
index 8ac948a..d98c705 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/Preview.png.import
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/Preview.png.import
@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://b8sw1xi6iosg4"
+uid="uid://dnmnf23aj6hki"
path="res://.godot/imported/Preview.png-a6cb6d2603055a6ca060f3ff00e023de.ctex"
metadata={
"vram_texture": false
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/RoomInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/RoomInfo.json
index 083719b..88ad7e7 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/RoomInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/RoomInfo.json
@@ -1 +1 @@
-{"Position":{"X":-12,"Y":-8},"Size":{"X":21,"Y":22},"DoorAreaInfos":[{"Direction":3,"Start":48,"End":224},{"Direction":0,"Start":48,"End":208},{"Direction":2,"Start":80,"End":208},{"Direction":1,"Start":48,"End":208}],"GroupName":"Test1","RoomType":82,"RoomName":"Shop1","Weight":100,"Remark":""}
\ No newline at end of file
+{"Position":{"X":-11,"Y":-14},"Size":{"X":24,"Y":26},"DoorAreaInfos":[{"Direction":3,"Start":96,"End":224},{"Direction":1,"Start":96,"End":240},{"Direction":2,"Start":96,"End":224},{"Direction":0,"Start":96,"End":240}],"GroupName":"Test1","RoomType":32,"RoomName":"Shop1","Weight":100,"Remark":""}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/TileInfo.json
index dd6a0b7..68563a0 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/shop/Shop1/TileInfo.json
@@ -1 +1 @@
-{"NavigationVertices":[{"X":58,"Y":-58},{"X":74,"Y":-58},{"X":74,"Y":-42},{"X":90,"Y":-42},{"X":90,"Y":-26},{"X":106,"Y":-26},{"X":106,"Y":130},{"X":90,"Y":130},{"X":90,"Y":146},{"X":74,"Y":146},{"X":-122,"Y":-42},{"X":-138,"Y":130},{"X":-138,"Y":-26},{"X":74,"Y":162},{"X":58,"Y":162},{"X":-122,"Y":146},{"X":58,"Y":178},{"X":42,"Y":178},{"X":-90,"Y":162},{"X":42,"Y":194},{"X":-74,"Y":194},{"X":-74,"Y":178},{"X":-90,"Y":178},{"X":-122,"Y":162},{"X":-138,"Y":146},{"X":-154,"Y":130},{"X":-154,"Y":-26},{"X":-138,"Y":-42},{"X":-122,"Y":-58},{"X":-106,"Y":-58},{"X":-106,"Y":-74},{"X":58,"Y":-74}],"NavigationPolygon":[[0,1,2],[2,3,4],[4,5,6,7],[7,8,9,10],[11,12,10,9,13,14,15],[14,16,17,18,15],[17,19,20,21],[21,22,18],[18,23,15],[15,24,11],[11,25,26,12],[12,27,10],[10,28,29,2,4,7],[29,30,31,0],[29,0,2],[18,17,21]],"Floor":[-4,-4,0,3,-3,-3,0,3,-2,-2,0,3,-1,-1,0,3,0,0,0,3,1,0,0,3,2,1,0,3,3,1,0,3,3,2,0,3,4,2,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-3,-4,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-2,-4,0,3,-2,-3,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,1,0,3,0,2,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,1,0,3,1,2,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,2,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,-1,3,0,3,-1,4,0,3,-1,5,0,3,-1,6,0,3,-1,7,0,3,0,3,0,3,0,4,0,3,0,5,0,3,0,6,0,3,0,7,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,1,7,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,2,7,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,3,7,0,3,4,3,0,3,4,4,0,3,4,5,0,3,4,6,0,3,4,7,0,3,-8,-4,0,3,-8,-3,0,3,-8,-2,0,3,-8,-1,0,3,-8,0,0,3,-8,1,0,3,-8,2,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-6,-4,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-1,8,0,3,-1,9,0,3,0,8,0,3,0,9,0,3,1,8,0,3,1,9,0,3,2,8,0,3,2,9,0,3,3,8,0,3,3,9,0,3,4,8,0,3,4,9,0,3,-8,3,0,3,-8,4,0,3,-8,5,0,3,-8,6,0,3,-8,7,0,3,-8,8,0,3,-8,9,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-7,6,0,3,-7,7,0,3,-7,8,0,3,-7,9,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-6,6,0,3,-6,7,0,3,-6,8,0,3,-6,9,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-5,6,0,3,-5,7,0,3,-5,8,0,3,-5,9,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-4,6,0,3,-4,7,0,3,-4,8,0,3,-4,9,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-3,6,0,3,-3,7,0,3,-3,8,0,3,-3,9,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-2,6,0,3,-2,7,0,3,-2,8,0,3,-2,9,0,3,-6,10,0,3,-5,10,0,3,-4,10,0,3,-3,10,0,3,-2,10,0,3,-1,10,0,3,0,10,0,3,1,10,0,3,2,10,0,3,3,10,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,5,5,0,3,5,6,0,3,5,7,0,3,5,8,0,3,-9,-2,0,3,-9,-1,0,3,-9,0,0,3,-9,1,0,3,-9,2,0,3,-9,3,0,3,-9,4,0,3,-9,5,0,3,-9,6,0,3,-9,7,0,3,-9,8,0,3,-9,-3,0,3,-10,-2,0,3,-10,-1,0,3,-10,0,0,3,-10,1,0,3,-10,2,0,3,-10,3,0,3,-10,4,0,3,-10,5,0,3,-10,6,0,3,-10,7,0,3,-5,11,0,3,-4,11,0,3,-3,11,0,3,-2,11,0,3,-1,11,0,3,0,11,0,3,1,11,0,3,2,11,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,6,5,0,3,6,6,0,3,6,7,0,3,-7,-5,0,3,-6,-5,0,3,-5,-5,0,3,-4,-5,0,3,-3,-5,0,3,-2,-5,0,3,-1,-5,0,3,0,-5,0,3,1,-5,0,3,2,-5,0,3,3,-5,0,3],"Middle":[-10,-4,27,1,-10,-3,3,2,-9,-5,27,1,-9,-4,3,2,-8,-6,27,1,-8,-5,3,2,-7,-7,63,1,-7,-6,2,2,-6,-7,63,1,-6,-6,2,2,-5,-7,63,1,-5,-6,2,2,-4,-7,63,1,-4,-6,2,2,-3,-7,63,1,-3,-6,2,2,-2,-7,63,1,-2,-6,2,2,-1,-7,63,1,-1,-6,2,2,0,-7,63,1,0,-6,2,2,1,-7,63,1,1,-6,2,2,2,-7,63,1,2,-6,2,2,3,-7,63,1,3,-6,2,2,4,-6,54,1,4,-5,1,2,5,-5,54,1,5,-4,1,2,6,-4,54,1,6,-3,1,2],"Top":[-12,-5,511,1,-12,-4,511,1,-12,-3,511,1,-12,-2,511,1,-12,-1,511,1,-12,0,511,1,-12,1,511,1,-12,2,511,1,-12,3,511,1,-12,4,511,1,-12,5,511,1,-12,6,511,1,-12,7,511,1,-12,8,511,1,-12,9,511,1,-11,-6,511,1,-11,-5,511,1,-11,-4,255,1,-11,-3,219,1,-11,-2,219,1,-11,-1,219,1,-11,0,219,1,-11,1,219,1,-11,2,219,1,-11,3,219,1,-11,4,219,1,-11,5,219,1,-11,6,219,1,-11,7,219,1,-11,8,507,1,-11,9,511,1,-11,10,511,1,-10,-7,511,1,-10,-6,511,1,-10,-5,255,1,-10,8,216,1,-10,9,507,1,-10,10,511,1,-10,11,511,1,-9,-8,511,1,-9,-7,511,1,-9,-6,255,1,-9,9,216,1,-9,10,507,1,-9,11,511,1,-8,-8,511,1,-8,-7,255,1,-8,10,504,1,-8,11,511,1,-8,12,511,1,-7,-8,511,1,-7,10,216,1,-7,11,507,1,-7,12,511,1,-7,13,511,1,-6,-8,511,1,-6,11,216,1,-6,12,507,1,-6,13,511,1,-5,-8,511,1,-5,12,504,1,-5,13,511,1,-4,-8,511,1,-4,12,504,1,-4,13,511,1,-3,-8,511,1,-3,12,504,1,-3,13,511,1,-2,-8,511,1,-2,12,504,1,-2,13,511,1,-1,-8,511,1,-1,12,504,1,-1,13,511,1,0,-8,511,1,0,12,504,1,0,13,511,1,1,-8,511,1,1,12,504,1,1,13,511,1,2,-8,511,1,2,12,504,1,2,13,511,1,3,-8,511,1,3,11,432,1,3,12,510,1,3,13,511,1,4,-8,511,1,4,-7,447,1,4,10,432,1,4,11,510,1,4,12,511,1,4,13,511,1,5,-8,511,1,5,-7,511,1,5,-6,447,1,5,9,432,1,5,10,510,1,5,11,511,1,5,12,511,1,6,-7,511,1,6,-6,511,1,6,-5,447,1,6,8,432,1,6,9,510,1,6,10,511,1,6,11,511,1,7,-6,511,1,7,-5,511,1,7,-4,447,1,7,-3,438,1,7,-2,438,1,7,-1,438,1,7,0,438,1,7,1,438,1,7,2,438,1,7,3,438,1,7,4,438,1,7,5,438,1,7,6,438,1,7,7,438,1,7,8,510,1,7,9,511,1,7,10,511,1,8,-5,511,1,8,-4,511,1,8,-3,511,1,8,-2,511,1,8,-1,511,1,8,0,511,1,8,1,511,1,8,2,511,1,8,3,511,1,8,4,511,1,8,5,511,1,8,6,511,1,8,7,511,1,8,8,511,1,8,9,511,1],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
+{"NavigationVertices":[{"X":74,"Y":-154},{"X":90,"Y":-154},{"X":90,"Y":-138},{"X":106,"Y":-138},{"X":106,"Y":-122},{"X":122,"Y":-122},{"X":122,"Y":-106},{"X":138,"Y":-106},{"X":138,"Y":-90},{"X":154,"Y":-90},{"X":154,"Y":-74},{"X":170,"Y":-74},{"X":170,"Y":74},{"X":154,"Y":74},{"X":154,"Y":90},{"X":138,"Y":90},{"X":-106,"Y":-90},{"X":138,"Y":106},{"X":122,"Y":106},{"X":122,"Y":122},{"X":106,"Y":122},{"X":-122,"Y":74},{"X":-122,"Y":-74},{"X":106,"Y":138},{"X":90,"Y":138},{"X":-106,"Y":90},{"X":90,"Y":154},{"X":74,"Y":154},{"X":-58,"Y":138},{"X":-74,"Y":122},{"X":74,"Y":170},{"X":-42,"Y":170},{"X":-42,"Y":154},{"X":-58,"Y":154},{"X":-74,"Y":138},{"X":-90,"Y":122},{"X":-90,"Y":106},{"X":-106,"Y":106},{"X":-122,"Y":90},{"X":-138,"Y":74},{"X":-138,"Y":-74},{"X":-122,"Y":-90},{"X":-106,"Y":-106},{"X":-90,"Y":-106},{"X":-90,"Y":-122},{"X":-74,"Y":-122},{"X":-74,"Y":-138},{"X":-58,"Y":-138},{"X":-58,"Y":-154},{"X":-42,"Y":-154},{"X":-42,"Y":-170},{"X":74,"Y":-170}],"NavigationPolygon":[[0,1,2],[2,3,4],[4,5,6],[6,7,8],[8,9,10],[10,11,12,13],[13,14,15,16],[15,17,18,16],[18,19,20,16],[21,22,16,20,23,24,25],[24,26,27,28,29],[27,30,31,32],[32,33,28],[28,34,29],[29,35,36],[36,37,25],[25,38,21],[21,39,40,22],[22,41,16],[16,42,43,8,10,13],[43,44,45,6,8],[45,46,47,4,6],[47,48,49,2,4],[49,50,51,0],[49,0,2],[36,25,24],[29,36,24],[28,27,32]],"Floor":[-6,-8,0,3,-6,-7,0,3,-6,-6,0,3,-6,-5,0,3,-6,-4,0,3,-6,-3,0,3,-6,-2,0,3,-6,-1,0,3,-6,0,0,3,-6,1,0,3,-6,2,0,3,-6,3,0,3,-6,4,0,3,-6,5,0,3,-6,6,0,3,-5,-8,0,3,-5,-7,0,3,-5,-6,0,3,-5,-5,0,3,-5,-4,0,3,-5,-3,0,3,-5,-2,0,3,-5,-1,0,3,-5,0,0,3,-5,1,0,3,-5,2,0,3,-5,3,0,3,-5,4,0,3,-5,5,0,3,-5,6,0,3,-4,-8,0,3,-4,-7,0,3,-4,-6,0,3,-4,-5,0,3,-4,-4,0,3,-4,-3,0,3,-4,-2,0,3,-4,-1,0,3,-4,0,0,3,-4,1,0,3,-4,2,0,3,-4,3,0,3,-4,4,0,3,-4,5,0,3,-4,6,0,3,-3,-8,0,3,-3,-7,0,3,-3,-6,0,3,-3,-5,0,3,-3,-4,0,3,-3,-3,0,3,-3,-2,0,3,-3,-1,0,3,-3,0,0,3,-3,1,0,3,-3,2,0,3,-3,3,0,3,-3,4,0,3,-3,5,0,3,-3,6,0,3,-2,-8,0,3,-2,-7,0,3,-2,-6,0,3,-2,-5,0,3,-2,-4,0,3,-2,-3,0,3,-2,-2,0,3,-2,-1,0,3,-2,0,0,3,-2,1,0,3,-2,2,0,3,-2,3,0,3,-2,4,0,3,-2,5,0,3,-2,6,0,3,-1,-8,0,3,-1,-7,0,3,-1,-6,0,3,-1,-5,0,3,-1,-4,0,3,-1,-3,0,3,-1,-2,0,3,-1,-1,0,3,-1,0,0,3,-1,1,0,3,-1,2,0,3,-1,3,0,3,-1,4,0,3,-1,5,0,3,-1,6,0,3,0,-8,0,3,0,-7,0,3,0,-6,0,3,0,-5,0,3,0,-4,0,3,0,-3,0,3,0,-2,0,3,0,-1,0,3,0,0,0,3,0,1,0,3,0,2,0,3,0,3,0,3,0,4,0,3,0,5,0,3,0,6,0,3,1,-8,0,3,1,-7,0,3,1,-6,0,3,1,-5,0,3,1,-4,0,3,1,-3,0,3,1,-2,0,3,1,-1,0,3,1,0,0,3,1,1,0,3,1,2,0,3,1,3,0,3,1,4,0,3,1,5,0,3,1,6,0,3,2,-8,0,3,2,-7,0,3,2,-6,0,3,2,-5,0,3,2,-4,0,3,2,-3,0,3,2,-2,0,3,2,-1,0,3,2,0,0,3,2,1,0,3,2,2,0,3,2,3,0,3,2,4,0,3,2,5,0,3,2,6,0,3,3,-8,0,3,3,-7,0,3,3,-6,0,3,3,-5,0,3,3,-4,0,3,3,-3,0,3,3,-2,0,3,3,-1,0,3,3,0,0,3,3,1,0,3,3,2,0,3,3,3,0,3,3,4,0,3,3,5,0,3,3,6,0,3,4,-8,0,3,4,-7,0,3,4,-6,0,3,4,-5,0,3,4,-4,0,3,4,-3,0,3,4,-2,0,3,4,-1,0,3,4,0,0,3,4,1,0,3,4,2,0,3,4,3,0,3,4,4,0,3,4,5,0,3,4,6,0,3,5,-8,0,3,5,-7,0,3,5,-6,0,3,5,-5,0,3,5,-4,0,3,5,-3,0,3,5,-2,0,3,5,-1,0,3,5,0,0,3,5,1,0,3,5,2,0,3,5,3,0,3,5,4,0,3,5,5,0,3,5,6,0,3,6,-8,0,3,6,-7,0,3,6,-6,0,3,6,-5,0,3,6,-4,0,3,6,-3,0,3,6,-2,0,3,6,-1,0,3,6,0,0,3,6,1,0,3,6,2,0,3,6,3,0,3,6,4,0,3,6,5,0,3,6,6,0,3,7,-8,0,3,7,-7,0,3,7,-6,0,3,7,-5,0,3,7,-4,0,3,7,-3,0,3,7,-2,0,3,7,-1,0,3,7,0,0,3,7,1,0,3,7,2,0,3,7,3,0,3,7,4,0,3,7,5,0,3,7,6,0,3,-5,-9,0,3,-4,-9,0,3,-3,-9,0,3,-2,-9,0,3,-1,-9,0,3,0,-9,0,3,1,-9,0,3,2,-9,0,3,3,-9,0,3,4,-9,0,3,5,-9,0,3,6,-9,0,3,-3,-10,0,3,-2,-10,0,3,-1,-10,0,3,0,-10,0,3,1,-10,0,3,2,-10,0,3,3,-10,0,3,4,-10,0,3,5,-10,0,3,-4,-10,0,3,-3,-11,0,3,-2,-11,0,3,-1,-11,0,3,0,-11,0,3,1,-11,0,3,2,-11,0,3,3,-11,0,3,4,-11,0,3,-7,-7,0,3,-7,-6,0,3,-7,-5,0,3,-7,-4,0,3,-7,-3,0,3,-7,-2,0,3,-7,-1,0,3,-7,0,0,3,-7,1,0,3,-7,2,0,3,-7,3,0,3,-7,4,0,3,-7,5,0,3,-8,-6,0,3,-8,-5,0,3,-8,-4,0,3,-8,-3,0,3,-8,-2,0,3,-8,-1,0,3,-8,0,0,3,-8,1,0,3,-8,2,0,3,-8,3,0,3,-8,4,0,3,-9,-5,0,3,-9,-4,0,3,-9,-3,0,3,-9,-2,0,3,-9,-1,0,3,-9,0,0,3,-9,1,0,3,-9,2,0,3,-9,3,0,3,-5,7,0,3,-4,7,0,3,-3,7,0,3,-2,7,0,3,-1,7,0,3,0,7,0,3,1,7,0,3,2,7,0,3,3,7,0,3,4,7,0,3,5,7,0,3,6,7,0,3,-4,8,0,3,-3,8,0,3,-2,8,0,3,-1,8,0,3,0,8,0,3,1,8,0,3,2,8,0,3,3,8,0,3,4,8,0,3,5,8,0,3,-3,9,0,3,-2,9,0,3,-1,9,0,3,0,9,0,3,1,9,0,3,2,9,0,3,3,9,0,3,4,9,0,3,8,-6,0,3,8,-5,0,3,8,-4,0,3,8,-3,0,3,8,-2,0,3,8,-1,0,3,8,0,0,3,8,1,0,3,8,2,0,3,8,3,0,3,8,4,0,3,8,5,0,3,8,-7,0,3,9,-5,0,3,9,-4,0,3,9,-3,0,3,9,-2,0,3,9,-1,0,3,9,0,0,3,9,1,0,3,9,2,0,3,9,3,0,3,9,4,0,3,9,-6,0,3,10,-5,0,3,10,-4,0,3,10,-3,0,3,10,-2,0,3,10,-1,0,3,10,0,0,3,10,1,0,3,10,2,0,3,10,3,0,3],"CustomFloor1":[],"CustomFloor2":[],"CustomFloor3":[],"CustomMiddle1":[],"CustomMiddle2":[],"CustomTop":[]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileSet/TileSet1/Main.png b/DungeonShooting_Godot/resource/map/tileSet/TileSet1/Main.png
index c3cbdb1..193d030 100644
--- a/DungeonShooting_Godot/resource/map/tileSet/TileSet1/Main.png
+++ b/DungeonShooting_Godot/resource/map/tileSet/TileSet1/Main.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileSet/TileSet1/TileSet.json b/DungeonShooting_Godot/resource/map/tileSet/TileSet1/TileSet.json
index 31e1b00..b8042c2 100644
--- a/DungeonShooting_Godot/resource/map/tileSet/TileSet1/TileSet.json
+++ b/DungeonShooting_Godot/resource/map/tileSet/TileSet1/TileSet.json
@@ -29,6 +29,22 @@
"0": [
64,
64
+ ],
+ "5": [
+ 16,
+ 80
+ ],
+ "6": [
+ 32,
+ 80
+ ],
+ "7": [
+ 48,
+ 80
+ ],
+ "4": [
+ 64,
+ 80
]
},
"T": {
diff --git a/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json b/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json
index 3631e29..dfcd90e 100644
--- a/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json
+++ b/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json
@@ -222,7 +222,7 @@
]
},
"TerrainType": 0,
- "Ready": true
+ "Ready": false
},
{
"Name": "Test2",
diff --git a/DungeonShooting_Godot/resource/navigation/NavigationPolygon.tres b/DungeonShooting_Godot/resource/navigation/NavigationPolygon.tres
new file mode 100644
index 0000000..2027580
--- /dev/null
+++ b/DungeonShooting_Godot/resource/navigation/NavigationPolygon.tres
@@ -0,0 +1,7 @@
+[gd_resource type="NavigationPolygon" format=3 uid="uid://brpcle7mygiml"]
+
+[resource]
+resource_local_to_scene = true
+source_geometry_mode = 1
+source_geometry_group_name = &"navigation"
+cell_size = 4.0
diff --git a/DungeonShooting_Godot/resource/sprite/hall/HallBg.png b/DungeonShooting_Godot/resource/sprite/hall/HallBg.png
new file mode 100644
index 0000000..d6e14ba
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/hall/HallBg.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/hall/HallBg.png.import b/DungeonShooting_Godot/resource/sprite/hall/HallBg.png.import
new file mode 100644
index 0000000..e2aae09
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/hall/HallBg.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b2j5mkqm3uv6w"
+path="res://.godot/imported/HallBg.png-89bef7b6572850afc3924a9f7262187d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/hall/HallBg.png"
+dest_files=["res://.godot/imported/HallBg.png-89bef7b6572850afc3924a9f7262187d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/map/PreviewTransition3.png b/DungeonShooting_Godot/resource/sprite/map/PreviewTransition3.png
index 1980ba0..8c11d7d 100644
--- a/DungeonShooting_Godot/resource/sprite/map/PreviewTransition3.png
+++ b/DungeonShooting_Godot/resource/sprite/map/PreviewTransition3.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/PreviewTransition6.png b/DungeonShooting_Godot/resource/sprite/map/PreviewTransition6.png
new file mode 100644
index 0000000..2f3df49
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/PreviewTransition6.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/PreviewTransition6.png.import b/DungeonShooting_Godot/resource/sprite/map/PreviewTransition6.png.import
new file mode 100644
index 0000000..ce59fce
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/PreviewTransition6.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cofij3ar8uyar"
+path="res://.godot/imported/PreviewTransition6.png-0b6b35a233f1e280f49eef4313432187.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/map/PreviewTransition6.png"
+dest_files=["res://.godot/imported/PreviewTransition6.png-0b6b35a233f1e280f49eef4313432187.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/map/TerrainMask2.png b/DungeonShooting_Godot/resource/sprite/map/TerrainMask2.png
index 0653e77..c45bc4d 100644
--- a/DungeonShooting_Godot/resource/sprite/map/TerrainMask2.png
+++ b/DungeonShooting_Godot/resource/sprite/map/TerrainMask2.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/door.png b/DungeonShooting_Godot/resource/sprite/map/door.png
deleted file mode 100644
index 5a02887..0000000
--- a/DungeonShooting_Godot/resource/sprite/map/door.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/door.png.import b/DungeonShooting_Godot/resource/sprite/map/door.png.import
deleted file mode 100644
index d2fa145..0000000
--- a/DungeonShooting_Godot/resource/sprite/map/door.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://f7d7qsdxqx28"
-path="res://.godot/imported/door.png-df89cda31b3be3b13dd6a96afcb773e6.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/map/door.png"
-dest_files=["res://.godot/imported/door.png-df89cda31b3be3b13dd6a96afcb773e6.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/map/door1_down.png b/DungeonShooting_Godot/resource/sprite/map/door1_down.png
deleted file mode 100644
index faeba59..0000000
--- a/DungeonShooting_Godot/resource/sprite/map/door1_down.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/door1_down.png.import b/DungeonShooting_Godot/resource/sprite/map/door1_down.png.import
deleted file mode 100644
index de95af2..0000000
--- a/DungeonShooting_Godot/resource/sprite/map/door1_down.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dviv44fhwvkb1"
-path="res://.godot/imported/door1_down.png-59ffc0993731fd627318f9402b22d199.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/map/door1_down.png"
-dest_files=["res://.godot/imported/door1_down.png-59ffc0993731fd627318f9402b22d199.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_close.png b/DungeonShooting_Godot/resource/sprite/map/door_close.png
new file mode 100644
index 0000000..02be975
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_close.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_close.png.import b/DungeonShooting_Godot/resource/sprite/map/door_close.png.import
new file mode 100644
index 0000000..017050f
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_close.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dem4b762asjry"
+path="res://.godot/imported/door_close.png-1ecc9b3d8e11bebd90ca6a7c4e421947.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/map/door_close.png"
+dest_files=["res://.godot/imported/door_close.png-1ecc9b3d8e11bebd90ca6a7c4e421947.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_open.png b/DungeonShooting_Godot/resource/sprite/map/door_open.png
new file mode 100644
index 0000000..349313d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_open.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_open.png.import b/DungeonShooting_Godot/resource/sprite/map/door_open.png.import
new file mode 100644
index 0000000..a51bb11
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_open.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dv63neggj3xtl"
+path="res://.godot/imported/door_open.png-c046225698fe76d75f5eca3b5c10f1b6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/map/door_open.png"
+dest_files=["res://.godot/imported/door_open.png-c046225698fe76d75f5eca3b5c10f1b6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_open2.png b/DungeonShooting_Godot/resource/sprite/map/door_open2.png
new file mode 100644
index 0000000..c0780f0
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_open2.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_open2.png.import b/DungeonShooting_Godot/resource/sprite/map/door_open2.png.import
new file mode 100644
index 0000000..5983c8e
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_open2.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://qhkn265gpa5w"
+path="res://.godot/imported/door_open2.png-73c5521e780280f61d4d40d025e4f229.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/map/door_open2.png"
+dest_files=["res://.godot/imported/door_open2.png-73c5521e780280f61d4d40d025e4f229.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_open3.png b/DungeonShooting_Godot/resource/sprite/map/door_open3.png
new file mode 100644
index 0000000..929b7f2
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_open3.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_open3.png.import b/DungeonShooting_Godot/resource/sprite/map/door_open3.png.import
new file mode 100644
index 0000000..eb02d15
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_open3.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ddl5cjv08f7i1"
+path="res://.godot/imported/door_open3.png-0e6d51f809ebb5d34bf8caf6c9972fdd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/map/door_open3.png"
+dest_files=["res://.godot/imported/door_open3.png-0e6d51f809ebb5d34bf8caf6c9972fdd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_up.png b/DungeonShooting_Godot/resource/sprite/map/door_up.png
new file mode 100644
index 0000000..9ff2ee4
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_up.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/map/door_up.png.import b/DungeonShooting_Godot/resource/sprite/map/door_up.png.import
new file mode 100644
index 0000000..b018503
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/map/door_up.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://gf8wefrp284o"
+path="res://.godot/imported/door_up.png-259e579b5cfa6c19dca2feec2294583b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/map/door_up.png"
+dest_files=["res://.godot/imported/door_up.png-259e579b5cfa6c19dca2feec2294583b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_E_Down.tres b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_E_Down.tres
index 9669b44..fbcb708 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_E_Down.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_E_Down.tres
@@ -1,98 +1,14 @@
-[gd_resource type="SpriteFrames" load_steps=13 format=3 uid="uid://b34tddsmqnj8s"]
+[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://b34tddsmqnj8s"]
-[ext_resource type="Texture2D" uid="uid://f7d7qsdxqx28" path="res://resource/sprite/map/door.png" id="1_nc77d"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_4o2e1"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(128, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_d1gjl"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(96, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_g4rm7"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(64, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_5d5bq"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(32, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ekma7"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(0, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_7y01b"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(128, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_jm1e2"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(0, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_1bb60"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(32, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_oylje"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(64, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_truep"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(96, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_lfr82"]
-atlas = ExtResource("1_nc77d")
-region = Rect2(128, 104, 32, 52)
+[ext_resource type="Texture2D" uid="uid://gf8wefrp284o" path="res://resource/sprite/map/door_up.png" id="1_vlsx2"]
[resource]
animations = [{
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_4o2e1")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_d1gjl")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_g4rm7")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_5d5bq")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_ekma7")
-}],
-"loop": false,
-"name": &"closeDoor",
-"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_7y01b")
+"texture": ExtResource("1_vlsx2")
}],
"loop": false,
"name": &"default",
"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_jm1e2")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_1bb60")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_oylje")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_truep")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_lfr82")
-}],
-"loop": false,
-"name": &"openDoor",
-"speed": 10.0
}]
diff --git a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_E_Up.tres b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_E_Up.tres
index 8e74aa6..3085acb 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_E_Up.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_E_Up.tres
@@ -1,68 +1,197 @@
-[gd_resource type="SpriteFrames" load_steps=13 format=3 uid="uid://3ps6h2f54qa5"]
+[gd_resource type="SpriteFrames" load_steps=34 format=3 uid="uid://3ps6h2f54qa5"]
-[ext_resource type="Texture2D" uid="uid://f7d7qsdxqx28" path="res://resource/sprite/map/door.png" id="2_u3fum"]
+[ext_resource type="Texture2D" uid="uid://dem4b762asjry" path="res://resource/sprite/map/door_close.png" id="1_5ymra"]
+[ext_resource type="Texture2D" uid="uid://dv63neggj3xtl" path="res://resource/sprite/map/door_open.png" id="2_niclj"]
-[sub_resource type="AtlasTexture" id="AtlasTexture_8f67t"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(128, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_6i65d"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(64, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_qlja2"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(96, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_gvd0a"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(192, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_glno6"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(64, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_kbtel"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(320, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_frnbt"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(32, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_4o7p2"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(448, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_2ytfc"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(0, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_2urqt"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(576, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_oyi3c"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(128, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_pcxt2"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(64, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_e68us"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(0, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_vuqy3"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(192, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_e7wqp"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(32, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_abxng"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(320, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_qcket"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(64, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_lstal"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(448, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_genp5"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(96, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_0l1oe"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(576, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_krdph"]
-atlas = ExtResource("2_u3fum")
-region = Rect2(128, 52, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_rxxco"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(64, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_bbdxx"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(192, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0ig2j"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(320, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_y6ht0"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(448, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_7b7xb"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(576, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_yxxxi"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(64, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_g75mr"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(192, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_1467k"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(320, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_2o7eb"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(448, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_yobme"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(576, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ylcxs"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(64, 320, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ohx3w"]
+atlas = ExtResource("1_5ymra")
+region = Rect2(64, 0, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_edun5"]
+atlas = ExtResource("2_niclj")
+region = Rect2(64, 0, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_udxe4"]
+atlas = ExtResource("2_niclj")
+region = Rect2(192, 0, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_knqv5"]
+atlas = ExtResource("2_niclj")
+region = Rect2(320, 0, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_1d1rp"]
+atlas = ExtResource("2_niclj")
+region = Rect2(64, 80, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ki550"]
+atlas = ExtResource("2_niclj")
+region = Rect2(192, 80, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_8tfix"]
+atlas = ExtResource("2_niclj")
+region = Rect2(320, 80, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_jvsmj"]
+atlas = ExtResource("2_niclj")
+region = Rect2(64, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_mk01a"]
+atlas = ExtResource("2_niclj")
+region = Rect2(192, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_j6b5g"]
+atlas = ExtResource("2_niclj")
+region = Rect2(320, 160, 64, 80)
[resource]
animations = [{
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_8f67t")
+"texture": SubResource("AtlasTexture_6i65d")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_qlja2")
+"texture": SubResource("AtlasTexture_gvd0a")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_glno6")
+"texture": SubResource("AtlasTexture_kbtel")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_frnbt")
+"texture": SubResource("AtlasTexture_4o7p2")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_2ytfc")
+"texture": SubResource("AtlasTexture_2urqt")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_pcxt2")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_vuqy3")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_abxng")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_lstal")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0l1oe")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_rxxco")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_bbdxx")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0ig2j")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_y6ht0")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_7b7xb")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_yxxxi")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_g75mr")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_1467k")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_2o7eb")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_yobme")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ylcxs")
}],
"loop": false,
"name": &"closeDoor",
@@ -70,7 +199,7 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_oyi3c")
+"texture": SubResource("AtlasTexture_ohx3w")
}],
"loop": false,
"name": &"default",
@@ -78,19 +207,31 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_e68us")
+"texture": SubResource("AtlasTexture_edun5")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_e7wqp")
+"texture": SubResource("AtlasTexture_udxe4")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_qcket")
+"texture": SubResource("AtlasTexture_knqv5")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_genp5")
+"texture": SubResource("AtlasTexture_1d1rp")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_krdph")
+"texture": SubResource("AtlasTexture_ki550")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_8tfix")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_jvsmj")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_mk01a")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_j6b5g")
}],
"loop": false,
"name": &"openDoor",
diff --git a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_N.tres b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_N.tres
index 1d7086c..91599bd 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_N.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_N.tres
@@ -1,68 +1,197 @@
-[gd_resource type="SpriteFrames" load_steps=13 format=3 uid="uid://xs72aopsgpg6"]
+[gd_resource type="SpriteFrames" load_steps=34 format=3 uid="uid://xs72aopsgpg6"]
-[ext_resource type="Texture2D" uid="uid://f7d7qsdxqx28" path="res://resource/sprite/map/door.png" id="1_6mlq3"]
+[ext_resource type="Texture2D" uid="uid://dem4b762asjry" path="res://resource/sprite/map/door_close.png" id="1_ei0vs"]
+[ext_resource type="Texture2D" uid="uid://dv63neggj3xtl" path="res://resource/sprite/map/door_open.png" id="2_jmlqx"]
-[sub_resource type="AtlasTexture" id="AtlasTexture_jiqrp"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(288, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_4ljkw"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(0, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_id4d1"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(256, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_gsbr3"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(128, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_dun04"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(224, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_3xyad"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(256, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_1rfr2"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(192, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_3rhje"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(384, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_c8ka5"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(160, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_scmwd"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(512, 0, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_3jbbr"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(288, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_yahdi"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(0, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_xuwj8"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(160, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_b3qcg"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(128, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_xx0rn"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(192, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_btbte"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(256, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_5h1on"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(224, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_0b28w"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(384, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_rwd5l"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(256, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_6ukg1"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(512, 80, 64, 80)
-[sub_resource type="AtlasTexture" id="AtlasTexture_wov8g"]
-atlas = ExtResource("1_6mlq3")
-region = Rect2(288, 0, 32, 52)
+[sub_resource type="AtlasTexture" id="AtlasTexture_jiet8"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(0, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_r28tm"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(128, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_jkf57"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(256, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_frdgf"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(384, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_573yg"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(512, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_xafye"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(0, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_tsxiw"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(128, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_67ks6"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(256, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_plgh2"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(384, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_68xl6"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(512, 240, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_40vaw"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(0, 320, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_4cyi6"]
+atlas = ExtResource("1_ei0vs")
+region = Rect2(0, 0, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_y1j0t"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(0, 0, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0lg71"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(128, 0, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_al4vf"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(256, 0, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_odhj1"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(0, 80, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ammds"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(128, 80, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_rt3bg"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(256, 80, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_3qiys"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(0, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_smh0c"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(128, 160, 64, 80)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ewvdi"]
+atlas = ExtResource("2_jmlqx")
+region = Rect2(256, 160, 64, 80)
[resource]
animations = [{
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_jiqrp")
+"texture": SubResource("AtlasTexture_4ljkw")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_id4d1")
+"texture": SubResource("AtlasTexture_gsbr3")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_dun04")
+"texture": SubResource("AtlasTexture_3xyad")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_1rfr2")
+"texture": SubResource("AtlasTexture_3rhje")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_c8ka5")
+"texture": SubResource("AtlasTexture_scmwd")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_yahdi")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_b3qcg")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_btbte")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0b28w")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_6ukg1")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_jiet8")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_r28tm")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_jkf57")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_frdgf")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_573yg")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_xafye")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_tsxiw")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_67ks6")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_plgh2")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_68xl6")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_40vaw")
}],
"loop": false,
"name": &"closeDoor",
@@ -70,7 +199,7 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_3jbbr")
+"texture": SubResource("AtlasTexture_4cyi6")
}],
"loop": false,
"name": &"default",
@@ -78,19 +207,31 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_xuwj8")
+"texture": SubResource("AtlasTexture_y1j0t")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_xx0rn")
+"texture": SubResource("AtlasTexture_0lg71")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_5h1on")
+"texture": SubResource("AtlasTexture_al4vf")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_rwd5l")
+"texture": SubResource("AtlasTexture_odhj1")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_wov8g")
+"texture": SubResource("AtlasTexture_ammds")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_rt3bg")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_3qiys")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_smh0c")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ewvdi")
}],
"loop": false,
"name": &"openDoor",
diff --git a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_S.tres b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_S.tres
deleted file mode 100644
index 5988cc3..0000000
--- a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_S.tres
+++ /dev/null
@@ -1,98 +0,0 @@
-[gd_resource type="SpriteFrames" load_steps=13 format=3 uid="uid://ciqijjxup5356"]
-
-[ext_resource type="Texture2D" uid="uid://f7d7qsdxqx28" path="res://resource/sprite/map/door.png" id="1_46oik"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_w2vr1"]
-atlas = ExtResource("1_46oik")
-region = Rect2(128, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_3akio"]
-atlas = ExtResource("1_46oik")
-region = Rect2(96, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_xxpwm"]
-atlas = ExtResource("1_46oik")
-region = Rect2(64, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vjx8u"]
-atlas = ExtResource("1_46oik")
-region = Rect2(32, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_clyvp"]
-atlas = ExtResource("1_46oik")
-region = Rect2(0, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_1vfst"]
-atlas = ExtResource("1_46oik")
-region = Rect2(128, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_8wrb5"]
-atlas = ExtResource("1_46oik")
-region = Rect2(0, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_nwt0b"]
-atlas = ExtResource("1_46oik")
-region = Rect2(32, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ohokj"]
-atlas = ExtResource("1_46oik")
-region = Rect2(64, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_wqsd1"]
-atlas = ExtResource("1_46oik")
-region = Rect2(96, 0, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_i6sro"]
-atlas = ExtResource("1_46oik")
-region = Rect2(128, 0, 32, 52)
-
-[resource]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_w2vr1")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_3akio")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_xxpwm")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_vjx8u")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_clyvp")
-}],
-"loop": false,
-"name": &"closeDoor",
-"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_1vfst")
-}],
-"loop": false,
-"name": &"default",
-"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_8wrb5")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_nwt0b")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_ohokj")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_wqsd1")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_i6sro")
-}],
-"loop": false,
-"name": &"openDoor",
-"speed": 10.0
-}]
diff --git a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_W_Down.tres b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_W_Down.tres
deleted file mode 100644
index 86fc6ad..0000000
--- a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_W_Down.tres
+++ /dev/null
@@ -1,98 +0,0 @@
-[gd_resource type="SpriteFrames" load_steps=13 format=3 uid="uid://qq3h0mh4r12i"]
-
-[ext_resource type="Texture2D" uid="uid://f7d7qsdxqx28" path="res://resource/sprite/map/door.png" id="1_b4js3"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_526no"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(288, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_84kmd"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(256, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_km4i6"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(224, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_wtul1"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(192, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vbu5n"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(160, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_yxx5v"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(288, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_4ncdo"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(160, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_bxfu1"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(192, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_8082a"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(224, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_mjuqg"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(256, 104, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_rc634"]
-atlas = ExtResource("1_b4js3")
-region = Rect2(288, 104, 32, 52)
-
-[resource]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_526no")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_84kmd")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_km4i6")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_wtul1")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_vbu5n")
-}],
-"loop": false,
-"name": &"closeDoor",
-"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_yxx5v")
-}],
-"loop": false,
-"name": &"default",
-"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_4ncdo")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_bxfu1")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_8082a")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_mjuqg")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_rc634")
-}],
-"loop": false,
-"name": &"openDoor",
-"speed": 10.0
-}]
diff --git a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_W_Up.tres b/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_W_Up.tres
deleted file mode 100644
index 6c18e9e..0000000
--- a/DungeonShooting_Godot/resource/spriteFrames/other/RoomDoor_W_Up.tres
+++ /dev/null
@@ -1,98 +0,0 @@
-[gd_resource type="SpriteFrames" load_steps=13 format=3 uid="uid://cpdt5ywrsruu3"]
-
-[ext_resource type="Texture2D" uid="uid://f7d7qsdxqx28" path="res://resource/sprite/map/door.png" id="2_klr41"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_skb20"]
-atlas = ExtResource("2_klr41")
-region = Rect2(288, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_dk55p"]
-atlas = ExtResource("2_klr41")
-region = Rect2(256, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_78qdb"]
-atlas = ExtResource("2_klr41")
-region = Rect2(224, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_sqirq"]
-atlas = ExtResource("2_klr41")
-region = Rect2(192, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_c65nc"]
-atlas = ExtResource("2_klr41")
-region = Rect2(160, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_6tswf"]
-atlas = ExtResource("2_klr41")
-region = Rect2(288, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_hg8wo"]
-atlas = ExtResource("2_klr41")
-region = Rect2(160, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_qkhur"]
-atlas = ExtResource("2_klr41")
-region = Rect2(192, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_6rqcm"]
-atlas = ExtResource("2_klr41")
-region = Rect2(224, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_y0tub"]
-atlas = ExtResource("2_klr41")
-region = Rect2(256, 52, 32, 52)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_w8xe5"]
-atlas = ExtResource("2_klr41")
-region = Rect2(288, 52, 32, 52)
-
-[resource]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_skb20")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_dk55p")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_78qdb")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_sqirq")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_c65nc")
-}],
-"loop": false,
-"name": &"closeDoor",
-"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_6tswf")
-}],
-"loop": false,
-"name": &"default",
-"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_hg8wo")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_qkhur")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_6rqcm")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_y0tub")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_w8xe5")
-}],
-"loop": false,
-"name": &"openDoor",
-"speed": 10.0
-}]
diff --git a/DungeonShooting_Godot/scene/Dungeon.tscn b/DungeonShooting_Godot/scene/Dungeon.tscn
new file mode 100644
index 0000000..8944b1e
--- /dev/null
+++ b/DungeonShooting_Godot/scene/Dungeon.tscn
@@ -0,0 +1,38 @@
+[gd_scene load_steps=3 format=3 uid="uid://bqf2vks5ggnsp"]
+
+[ext_resource type="Script" path="res://src/game/room/Dungeon.cs" id="1_txiyv"]
+
+[sub_resource type="Environment" id="Environment_g06jj"]
+background_mode = 3
+glow_enabled = true
+glow_normalized = true
+glow_strength = 1.05
+glow_blend_mode = 1
+
+[node name="Dungeon" type="CanvasModulate"]
+script = ExtResource("1_txiyv")
+metadata/_edit_vertical_guides_ = []
+
+[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
+environment = SubResource("Environment_g06jj")
+
+[node name="TileRoot" type="TileMap" parent="." groups=["navigation"]]
+y_sort_enabled = true
+format = 2
+
+[node name="NavigationRoot" type="Node2D" parent="TileRoot"]
+z_index = -2
+
+[node name="StaticSpriteRoot" type="Node2D" parent="TileRoot"]
+z_index = -2
+
+[node name="NormalLayer" type="Node2D" parent="TileRoot"]
+z_index = -1
+
+[node name="YSortLayer" type="Node2D" parent="TileRoot"]
+z_index = 2
+y_sort_enabled = true
+
+[node name="AffiliationAreaRoot" type="Node2D" parent="TileRoot"]
+
+[node name="FogMaskRoot" type="Node2D" parent="TileRoot"]
diff --git a/DungeonShooting_Godot/scene/Hall.tscn b/DungeonShooting_Godot/scene/Hall.tscn
new file mode 100644
index 0000000..30dfa28
--- /dev/null
+++ b/DungeonShooting_Godot/scene/Hall.tscn
@@ -0,0 +1,75 @@
+[gd_scene load_steps=11 format=3 uid="uid://c2hynqudkykxl"]
+
+[ext_resource type="PackedScene" path="res://scene/Dungeon.tscn" id="1_31od0"]
+[ext_resource type="Script" path="res://src/game/hall/Hall.cs" id="2_43fdu"]
+[ext_resource type="Texture2D" uid="uid://b2j5mkqm3uv6w" path="res://resource/sprite/hall/HallBg.png" id="3_p8v6p"]
+[ext_resource type="Script" path="res://src/game/hall/DungeonEntrance.cs" id="3_t3my6"]
+[ext_resource type="Script" path="res://src/framework/activity/ActivityInstance.cs" id="5_lowqi"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_ru8u4"]
+size = Vector2(66, 32)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_l0mok"]
+size = Vector2(91, 434)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_ch1xw"]
+size = Vector2(1024.5, 65.5)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_ea4u5"]
+size = Vector2(448, 110)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_o0n0h"]
+size = Vector2(1023, 110)
+
+[node name="Hall" node_paths=PackedStringArray("BirthMark", "BgSprite") instance=ExtResource("1_31od0")]
+script = ExtResource("2_43fdu")
+BirthMark = NodePath("BirthMark")
+BgSprite = NodePath("HallBg")
+metadata/_edit_horizontal_guides_ = [666.0, -210.0]
+
+[node name="HallBg" type="Sprite2D" parent="." index="1"]
+z_index = -5
+texture = ExtResource("3_p8v6p")
+centered = false
+
+[node name="BirthMark" type="Marker2D" parent="." index="2"]
+position = Vector2(553, 320)
+
+[node name="DungeonEntrance" type="Area2D" parent="." index="3"]
+position = Vector2(537, 209)
+collision_layer = 0
+collision_mask = 8
+monitorable = false
+script = ExtResource("3_t3my6")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="DungeonEntrance" index="0"]
+shape = SubResource("RectangleShape2D_ru8u4")
+
+[node name="ActivityInstance" type="Node2D" parent="." index="4"]
+position = Vector2(533, 317)
+script = ExtResource("5_lowqi")
+Id = "weapon0002"
+CollisionVisible = false
+
+[node name="StaticBody2D" type="StaticBody2D" parent="." index="5"]
+collision_mask = 0
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D" index="0"]
+position = Vector2(-47, 296)
+shape = SubResource("RectangleShape2D_l0mok")
+
+[node name="CollisionShape2D5" type="CollisionShape2D" parent="StaticBody2D" index="1"]
+position = Vector2(1070, 306)
+shape = SubResource("RectangleShape2D_l0mok")
+
+[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D" index="2"]
+position = Vector2(511.75, 481.25)
+shape = SubResource("RectangleShape2D_ch1xw")
+
+[node name="CollisionShape2D3" type="CollisionShape2D" parent="StaticBody2D" index="3"]
+position = Vector2(528, 393)
+shape = SubResource("RectangleShape2D_ea4u5")
+
+[node name="CollisionShape2D4" type="CollisionShape2D" parent="StaticBody2D" index="4"]
+position = Vector2(512.5, 148)
+shape = SubResource("RectangleShape2D_o0n0h")
diff --git a/DungeonShooting_Godot/scene/Main.tscn b/DungeonShooting_Godot/scene/Main.tscn
index a604cad..b55999a 100644
--- a/DungeonShooting_Godot/scene/Main.tscn
+++ b/DungeonShooting_Godot/scene/Main.tscn
@@ -24,6 +24,8 @@
[node name="SubViewport" type="SubViewport" parent="ViewCanvas/SubViewportContainer"]
disable_3d = true
handle_input_locally = false
+snap_2d_transforms_to_pixel = true
+snap_2d_vertices_to_pixel = true
use_hdr_2d = true
canvas_item_default_texture_filter = 0
size = Vector2i(320, 180)
diff --git a/DungeonShooting_Godot/scene/World.tscn b/DungeonShooting_Godot/scene/World.tscn
deleted file mode 100644
index 0a055fc..0000000
--- a/DungeonShooting_Godot/scene/World.tscn
+++ /dev/null
@@ -1,38 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://bqf2vks5ggnsp"]
-
-[ext_resource type="Script" path="res://src/game/room/World.cs" id="1_kt3mm"]
-
-[sub_resource type="Environment" id="Environment_g06jj"]
-background_mode = 3
-glow_enabled = true
-glow_normalized = true
-glow_strength = 1.05
-glow_blend_mode = 1
-
-[node name="World" type="CanvasModulate"]
-script = ExtResource("1_kt3mm")
-metadata/_edit_vertical_guides_ = []
-
-[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
-environment = SubResource("Environment_g06jj")
-
-[node name="TileRoot" type="TileMap" parent="." groups=["navigation"]]
-y_sort_enabled = true
-format = 2
-
-[node name="NavigationRoot" type="Node2D" parent="TileRoot"]
-z_index = -2
-
-[node name="StaticSpriteRoot" type="Node2D" parent="TileRoot"]
-z_index = -2
-
-[node name="NormalLayer" type="Node2D" parent="TileRoot"]
-z_index = -1
-
-[node name="YSortLayer" type="Node2D" parent="TileRoot"]
-z_index = 2
-y_sort_enabled = true
-
-[node name="AffiliationAreaRoot" type="Node2D" parent="TileRoot"]
-
-[node name="FogMaskRoot" type="Node2D" parent="TileRoot"]
diff --git a/DungeonShooting_Godot/src/config/ExcelConfig.cs b/DungeonShooting_Godot/src/config/ExcelConfig.cs
index 0f3fe56..8bb7fd3 100644
--- a/DungeonShooting_Godot/src/config/ExcelConfig.cs
+++ b/DungeonShooting_Godot/src/config/ExcelConfig.cs
@@ -8,13 +8,22 @@
public static partial class ExcelConfig
{
///
- /// ActivityBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同
+ /// Sound.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同
///
- public static List ActivityBase_List { get; private set; }
+ public static List Sound_List { get; private set; }
///
- /// ActivityBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id
+ /// Sound.xlsx表数据集合, 里 Map 形式存储, key 为 Id
///
- public static Dictionary ActivityBase_Map { get; private set; }
+ public static Dictionary Sound_Map { get; private set; }
+
+ ///
+ /// WeaponBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同
+ ///
+ public static List WeaponBase_List { get; private set; }
+ ///
+ /// WeaponBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id
+ ///
+ public static Dictionary WeaponBase_Map { get; private set; }
///
/// ActivityMaterial.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同
@@ -53,6 +62,15 @@
public static Dictionary EnemyBase_Map { get; private set; }
///
+ /// ActivityBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同
+ ///
+ public static List ActivityBase_List { get; private set; }
+ ///
+ /// ActivityBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id
+ ///
+ public static Dictionary ActivityBase_Map { get; private set; }
+
+ ///
/// LiquidMaterial.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同
///
public static List LiquidMaterial_List { get; private set; }
@@ -61,24 +79,6 @@
///
public static Dictionary LiquidMaterial_Map { get; private set; }
- ///
- /// Sound.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同
- ///
- public static List Sound_List { get; private set; }
- ///
- /// Sound.xlsx表数据集合, 里 Map 形式存储, key 为 Id
- ///
- public static Dictionary Sound_Map { get; private set; }
-
- ///
- /// WeaponBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同
- ///
- public static List WeaponBase_List { get; private set; }
- ///
- /// WeaponBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id
- ///
- public static Dictionary WeaponBase_Map { get; private set; }
-
private static bool _init = false;
///
@@ -89,35 +89,53 @@
if (_init) return;
_init = true;
- _InitActivityBaseConfig();
+ _InitSoundConfig();
+ _InitWeaponBaseConfig();
_InitActivityMaterialConfig();
_InitAiAttackAttrConfig();
_InitBulletBaseConfig();
_InitEnemyBaseConfig();
+ _InitActivityBaseConfig();
_InitLiquidMaterialConfig();
- _InitSoundConfig();
- _InitWeaponBaseConfig();
- _InitActivityBaseRef();
- _InitEnemyBaseRef();
_InitWeaponBaseRef();
+ _InitEnemyBaseRef();
+ _InitActivityBaseRef();
}
- private static void _InitActivityBaseConfig()
+ private static void _InitSoundConfig()
{
try
{
- var text = _ReadConfigAsText("res://resource/config/ActivityBase.json");
- ActivityBase_List = new List(JsonSerializer.Deserialize>(text));
- ActivityBase_Map = new Dictionary();
- foreach (var item in ActivityBase_List)
+ var text = _ReadConfigAsText("res://resource/config/Sound.json");
+ Sound_List = JsonSerializer.Deserialize>(text);
+ Sound_Map = new Dictionary();
+ foreach (var item in Sound_List)
{
- ActivityBase_Map.Add(item.Id, item);
+ Sound_Map.Add(item.Id, item);
}
}
catch (Exception e)
{
GD.PrintErr(e.ToString());
- throw new Exception("初始化表'ActivityBase'失败!");
+ throw new Exception("初始化表'Sound'失败!");
+ }
+ }
+ private static void _InitWeaponBaseConfig()
+ {
+ try
+ {
+ var text = _ReadConfigAsText("res://resource/config/WeaponBase.json");
+ WeaponBase_List = new List(JsonSerializer.Deserialize>(text));
+ WeaponBase_Map = new Dictionary();
+ foreach (var item in WeaponBase_List)
+ {
+ WeaponBase_Map.Add(item.Id, item);
+ }
+ }
+ catch (Exception e)
+ {
+ GD.PrintErr(e.ToString());
+ throw new Exception("初始化表'WeaponBase'失败!");
}
}
private static void _InitActivityMaterialConfig()
@@ -192,6 +210,24 @@
throw new Exception("初始化表'EnemyBase'失败!");
}
}
+ private static void _InitActivityBaseConfig()
+ {
+ try
+ {
+ var text = _ReadConfigAsText("res://resource/config/ActivityBase.json");
+ ActivityBase_List = new List(JsonSerializer.Deserialize>(text));
+ ActivityBase_Map = new Dictionary();
+ foreach (var item in ActivityBase_List)
+ {
+ ActivityBase_Map.Add(item.Id, item);
+ }
+ }
+ catch (Exception e)
+ {
+ GD.PrintErr(e.ToString());
+ throw new Exception("初始化表'ActivityBase'失败!");
+ }
+ }
private static void _InitLiquidMaterialConfig()
{
try
@@ -210,81 +246,7 @@
throw new Exception("初始化表'LiquidMaterial'失败!");
}
}
- private static void _InitSoundConfig()
- {
- try
- {
- var text = _ReadConfigAsText("res://resource/config/Sound.json");
- Sound_List = JsonSerializer.Deserialize>(text);
- Sound_Map = new Dictionary();
- foreach (var item in Sound_List)
- {
- Sound_Map.Add(item.Id, item);
- }
- }
- catch (Exception e)
- {
- GD.PrintErr(e.ToString());
- throw new Exception("初始化表'Sound'失败!");
- }
- }
- private static void _InitWeaponBaseConfig()
- {
- try
- {
- var text = _ReadConfigAsText("res://resource/config/WeaponBase.json");
- WeaponBase_List = new List(JsonSerializer.Deserialize>(text));
- WeaponBase_Map = new Dictionary();
- foreach (var item in WeaponBase_List)
- {
- WeaponBase_Map.Add(item.Id, item);
- }
- }
- catch (Exception e)
- {
- GD.PrintErr(e.ToString());
- throw new Exception("初始化表'WeaponBase'失败!");
- }
- }
- private static void _InitActivityBaseRef()
- {
- foreach (Ref_ActivityBase item in ActivityBase_List)
- {
- try
- {
- if (!string.IsNullOrEmpty(item.__Material))
- {
- item.Material = ActivityMaterial_Map[item.__Material];
- }
-
- }
- catch (Exception e)
- {
- GD.PrintErr(e.ToString());
- throw new Exception("初始化'ActivityBase'引用其他表数据失败, 当前行id: " + item.Id);
- }
- }
- }
- private static void _InitEnemyBaseRef()
- {
- foreach (Ref_EnemyBase item in EnemyBase_List)
- {
- try
- {
- if (!string.IsNullOrEmpty(item.__Activity))
- {
- item.Activity = ActivityBase_Map[item.__Activity];
- }
-
- }
- catch (Exception e)
- {
- GD.PrintErr(e.ToString());
- throw new Exception("初始化'EnemyBase'引用其他表数据失败, 当前行id: " + item.Id);
- }
- }
- }
private static void _InitWeaponBaseRef()
{
foreach (Ref_WeaponBase item in WeaponBase_List)
@@ -353,6 +315,44 @@
}
}
}
+ private static void _InitEnemyBaseRef()
+ {
+ foreach (Ref_EnemyBase item in EnemyBase_List)
+ {
+ try
+ {
+ if (!string.IsNullOrEmpty(item.__Activity))
+ {
+ item.Activity = ActivityBase_Map[item.__Activity];
+ }
+
+ }
+ catch (Exception e)
+ {
+ GD.PrintErr(e.ToString());
+ throw new Exception("初始化'EnemyBase'引用其他表数据失败, 当前行id: " + item.Id);
+ }
+ }
+ }
+ private static void _InitActivityBaseRef()
+ {
+ foreach (Ref_ActivityBase item in ActivityBase_List)
+ {
+ try
+ {
+ if (!string.IsNullOrEmpty(item.__Material))
+ {
+ item.Material = ActivityMaterial_Map[item.__Material];
+ }
+
+ }
+ catch (Exception e)
+ {
+ GD.PrintErr(e.ToString());
+ throw new Exception("初始化'ActivityBase'引用其他表数据失败, 当前行id: " + item.Id);
+ }
+ }
+ }
private static string _ReadConfigAsText(string path)
{
var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);
diff --git a/DungeonShooting_Godot/src/config/ExcelConfig_ActivityMaterial.cs b/DungeonShooting_Godot/src/config/ExcelConfig_ActivityMaterial.cs
index f3fa9c6..fe76940 100644
--- a/DungeonShooting_Godot/src/config/ExcelConfig_ActivityMaterial.cs
+++ b/DungeonShooting_Godot/src/config/ExcelConfig_ActivityMaterial.cs
@@ -77,7 +77,7 @@
public float FallBounceRotation;
///
- /// 动态开关碰撞器,在物体高度大于16时是否关闭碰撞检测
+ /// 动态开关碰撞器,在物体高度大于32时是否关闭碰撞检测
///
[JsonInclude]
public bool DynamicCollision;
diff --git a/DungeonShooting_Godot/src/config/ExcelConfig_EnemyBase.cs b/DungeonShooting_Godot/src/config/ExcelConfig_EnemyBase.cs
index 182c7e1..99bf73c 100644
--- a/DungeonShooting_Godot/src/config/ExcelConfig_EnemyBase.cs
+++ b/DungeonShooting_Godot/src/config/ExcelConfig_EnemyBase.cs
@@ -49,6 +49,13 @@
public float Friction;
///
+ /// 单次攻击间隔时间, 秒
+ /// 注意, 敌人攻击后计算间隔时间会使用当前字段值与武器上的TriggerInterval叠加
+ ///
+ [JsonInclude]
+ public float AttackInterval;
+
+ ///
/// 是否可以拾起武器
///
[JsonInclude]
@@ -92,6 +99,7 @@
inst.MoveSpeed = MoveSpeed;
inst.Acceleration = Acceleration;
inst.Friction = Friction;
+ inst.AttackInterval = AttackInterval;
inst.CanPickUpWeapon = CanPickUpWeapon;
inst.ViewRange = ViewRange;
inst.TailAfterViewRange = TailAfterViewRange;
diff --git a/DungeonShooting_Godot/src/framework/InfiniteGrid.cs b/DungeonShooting_Godot/src/framework/InfiniteGrid.cs
index 32c73ba..85713a4 100644
--- a/DungeonShooting_Godot/src/framework/InfiniteGrid.cs
+++ b/DungeonShooting_Godot/src/framework/InfiniteGrid.cs
@@ -94,8 +94,11 @@
{
if (_map.TryGetValue(x, out var value))
{
- _isDirty = true;
- return value.Remove(y);
+ if (value.Remove(y))
+ {
+ _isDirty = true;
+ return true;
+ }
}
return false;
@@ -145,11 +148,14 @@
{
if (_map.TryGetValue(x + i, out var value))
{
- value.Remove(y + j);
+ if (value.Remove(y + j))
+ {
+ _isDirty = true;
+ }
+
if (value.Count == 0)
{
_map.Remove(x + i);
- _isDirty = true;
}
}
}
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityInstance.cs b/DungeonShooting_Godot/src/framework/activity/ActivityInstance.cs
new file mode 100644
index 0000000..4fad3a7
--- /dev/null
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityInstance.cs
@@ -0,0 +1,325 @@
+
+using System;
+using System.IO;
+using Godot;
+
+///
+/// 用于在预制场景中创建 ActivityObject
+///
+[Tool]
+public partial class ActivityInstance : Node2D
+{
+ ///
+ /// 物体Id
+ ///
+ [Export]
+ public string Id
+ {
+ get => _id;
+ set
+ {
+ _id = value;
+ _dirty = true;
+ }
+ }
+
+ ///
+ /// 默认所在层级
+ ///
+ [Export]
+ public RoomLayerEnum DefaultLayer { get; set; } = RoomLayerEnum.NormalLayer;
+
+ ///
+ /// 是否显示阴影
+ ///
+ [Export]
+ public bool ShowShadow
+ {
+ get => _showShadow;
+ set
+ {
+ _showShadow = value;
+ if (_activityObject != null)
+ {
+ if (value)
+ {
+ _activityObject.ShowShadowSprite();
+ }
+ else
+ {
+ _activityObject.HideShadowSprite();
+ }
+ }
+ }
+ }
+
+ ///
+ /// 阴影偏移
+ ///
+ [Export]
+ public Vector2 ShowOffset
+ {
+ get => _showOffset;
+ set
+ {
+ _showOffset = value;
+ if (_activityObject != null)
+ {
+ _activityObject.ShadowOffset = value;
+ }
+ }
+ }
+
+ ///
+ /// 初始海拔高度
+ ///
+ [Export]
+ public float Altitude
+ {
+ get => _altitude;
+ set
+ {
+ _altitude = value;
+ if (_activityObject != null)
+ {
+ _activityObject.Altitude = value;
+ _activityObject.Collision.Position = _collPos;
+ _activityObject.UpdateShadowSprite((float)GetProcessDeltaTime());
+ _activityObject.CalcThrowAnimatedPosition();
+ }
+ }
+ }
+
+ ///
+ /// 是否启用垂直运动模拟
+ ///
+ [Export]
+ public bool VerticalMotion { get; private set; } = true;
+
+ ///
+ /// 编辑器属性, 物体子碰撞器在编辑器中是否可见
+ ///
+ [Export]
+ public bool CollisionVisible
+ {
+ get => _collisionVisible;
+ set
+ {
+ _collisionVisible = value;
+ OnChangeCollisionVisible();
+ }
+ }
+
+ private bool _dirty = false;
+ private bool _collisionVisible = true;
+ private string _prevId;
+ private string _id;
+ private ActivityObject _activityObject;
+ private Sprite2D _errorSprite;
+ private bool _showShadow = true;
+ private Vector2 _showOffset = new Vector2(0, 2);
+ private float _altitude;
+
+ private Vector2 _collPos;
+ private bool _createFlag = false;
+
+ private static string _jsonText;
+
+ public override void _Ready()
+ {
+#if TOOLS
+ if (!Engine.IsEditorHint())
+ {
+#endif
+ var world = World.Current;
+ if (world != null && world.YSortLayer != null && world.NormalLayer != null)
+ {
+ DoCreateObject();
+ }
+#if TOOLS
+ }
+#endif
+ }
+
+ public override void _Process(double delta)
+ {
+#if TOOLS
+ if (Engine.IsEditorHint())
+ {
+ if (_dirty || (_activityObject != null && _activityObject.GetParent() != this))
+ {
+ _dirty = false;
+
+ if (_prevId != _id)
+ {
+ OnChangeActivityId(_id);
+ }
+ else if (string.IsNullOrEmpty(_id))
+ {
+ ShowErrorSprite();
+ }
+
+ OnChangeCollisionVisible();
+ }
+
+ if (_activityObject != null)
+ {
+ _activityObject.Collision.Position = _collPos;
+ _activityObject.UpdateShadowSprite((float)delta);
+ _activityObject.CalcThrowAnimatedPosition();
+ }
+ }
+ else
+ {
+#endif
+ var world = World.Current;
+ if (world != null && world.YSortLayer != null && world.NormalLayer != null)
+ {
+ DoCreateObject();
+ }
+#if TOOLS
+ }
+#endif
+ }
+
+ public override void _EnterTree()
+ {
+#if TOOLS
+ if (Engine.IsEditorHint())
+ {
+ var children = GetChildren();
+ foreach (var child in children)
+ {
+ child.QueueFree();
+ }
+ _dirty = true;
+ _activityObject = null;
+ _prevId = null;
+ }
+#endif
+ }
+
+ public override void _ExitTree()
+ {
+#if TOOLS
+ if (Engine.IsEditorHint() && _activityObject != null)
+ {
+ _activityObject.QueueFree();
+ _activityObject = null;
+ }
+#endif
+ }
+
+ private void DoCreateObject()
+ {
+ if (_createFlag)
+ {
+ return;
+ }
+
+ _createFlag = true;
+ var activityObject = ActivityObject.Create(Id);
+ activityObject.Position = GlobalPosition;
+ activityObject.Scale = GlobalScale;
+ activityObject.Rotation = GlobalRotation;
+ activityObject.Name = Name;
+ activityObject.Visible = Visible;
+ activityObject.ShadowOffset = _showOffset;
+ activityObject.Altitude = _altitude;
+ activityObject.EnableVerticalMotion = VerticalMotion;
+ activityObject.PutDown(DefaultLayer, _showShadow);
+ QueueFree();
+ }
+
+ private void OnChangeActivityId(string id)
+ {
+ _prevId = id;
+
+ if (_activityObject != null)
+ {
+ _activityObject.QueueFree();
+ _activityObject = null;
+ }
+
+ if (string.IsNullOrEmpty(id))
+ {
+ GD.Print("删除物体");
+ ShowErrorSprite();
+ return;
+ }
+
+ if (_jsonText == null)
+ {
+ _jsonText = File.ReadAllText("resource/config/ActivityBase.json");
+ }
+ var str = $"\"Id\": \"{id}\",";
+ var index = _jsonText.IndexOf(str, StringComparison.Ordinal);
+ if (index > -1)
+ {
+ const string s = "\"Prefab\": \"";
+ var startIndex = _jsonText.IndexOf(s, index, StringComparison.Ordinal);
+ if (startIndex > -1)
+ {
+ var endIndex = _jsonText.IndexOf('"', startIndex + s.Length + 1);
+ if (endIndex > -1)
+ {
+ var prefab = _jsonText.Substring(startIndex + s.Length, endIndex - (startIndex + s.Length));
+ GD.Print("创建物体: " + id);
+ var instance = ResourceManager.LoadAndInstantiate(prefab);
+ _activityObject = instance;
+ _collPos = instance.Collision.Position - instance.AnimatedSprite.Position - instance.AnimatedSprite.Offset;
+ Debug.Log("_collPos: " + _collPos);
+ instance.IsCustomShadowSprite = instance.ShadowSprite.Texture != null;
+ instance.Altitude = _altitude;
+ instance.ShadowOffset = _showOffset;
+ if (_showShadow)
+ {
+ instance.ShowShadowSprite();
+ }
+ AddChild(instance);
+ HideErrorSprite();
+ return;
+ }
+ }
+ }
+ GD.PrintErr($"未找到Id为'{id}'的物体!");
+ ShowErrorSprite();
+ }
+
+ private void OnChangeCollisionVisible()
+ {
+ if (_activityObject != null)
+ {
+ Utils.EachNode(_activityObject, node =>
+ {
+ if (node is CollisionShape2D collisionShape2D)
+ {
+ collisionShape2D.Visible = _collisionVisible;
+ }
+ else if (node is CollisionPolygon2D collisionPolygon2D)
+ {
+ collisionPolygon2D.Visible = _collisionVisible;
+ }
+ });
+ }
+ }
+
+ private void ShowErrorSprite()
+ {
+ if (_errorSprite == null)
+ {
+ _errorSprite = new Sprite2D();
+ _errorSprite.Texture = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Error_mini_png);
+ AddChild(_errorSprite);
+ }
+ }
+
+ private void HideErrorSprite()
+ {
+ if (_errorSprite != null)
+ {
+ _errorSprite.QueueFree();
+ _errorSprite = null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index 50a975c..e5b5a58 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -126,6 +126,11 @@
}
///
+ /// 下坠逻辑是否执行完成
+ ///
+ public bool IsFallOver => _isFallOver;
+
+ ///
/// 是否正在投抛过程中
///
public bool IsThrowing => VerticalSpeed != 0 && !_isFallOver;
@@ -200,11 +205,11 @@
/// 物体材质数据
///
public ExcelConfig.ActivityMaterial ActivityMaterial { get; private set; }
-
+
///
/// 所在的 World 对象
///
- public World World { get; private set; }
+ public World World { get; set; }
///
/// 是否开启描边
@@ -240,7 +245,7 @@
///
/// 是否是自定义阴影纹理
///
- public bool IsCustomShadowSprite { get; private set; }
+ public bool IsCustomShadowSprite { get; set; }
///
/// 记录绘制液体的笔刷上一次绘制的位置
@@ -656,7 +661,7 @@
{
DefaultLayer = layer;
var parent = GetParent();
- var root = GameApplication.Instance.World.GetRoomLayer(layer);
+ var root = World.Current.GetRoomLayer(layer);
if (parent != root)
{
if (parent != null)
@@ -1111,8 +1116,8 @@
_altitude += VerticalSpeed * delta;
_verticalSpeed -= GameConfig.G * ActivityMaterial.GravityScale * delta;
- //当高度大于16时, 显示在所有物体上, 并且关闭碰撞
- if (Altitude >= 16)
+ //当高度大于32时, 显示在所有物体上, 并且关闭碰撞
+ if (Altitude >= 32)
{
AnimatedSprite.ZIndex = 20;
}
@@ -1123,7 +1128,7 @@
//动态开关碰撞器
if (ActivityMaterial.DynamicCollision)
{
- Collision.Disabled = Altitude >= 16;
+ Collision.Disabled = Altitude >= 32;
}
//达到最高点
@@ -1356,8 +1361,10 @@
ShadowSprite.GlobalPosition = new Vector2(pos.X + ShadowOffset.X, pos.Y + ShadowOffset.Y + Altitude);
}
- //计算位置
- private void CalcThrowAnimatedPosition()
+ ///
+ /// 计算物体精灵和阴影位置
+ ///
+ public void CalcThrowAnimatedPosition()
{
if (Scale.Y < 0)
{
@@ -1443,6 +1450,19 @@
}
///
+ /// 获取投抛该物体时所产生的数据, 只在 IsFallOver 为 false 时有效
+ ///
+ public ActivityFallData GetFallData()
+ {
+ if (!IsFallOver && !_fallData.UseOrigin)
+ {
+ return _fallData;
+ }
+
+ return null;
+ }
+
+ ///
/// 触发投抛动作
///
private void Throw()
@@ -1453,9 +1473,9 @@
{
this.AddToActivityRoot(RoomLayerEnum.YSortLayer);
}
- else if (parent != GameApplication.Instance.World.YSortLayer)
+ else if (parent != World.Current.YSortLayer)
{
- Reparent(GameApplication.Instance.World.YSortLayer);
+ Reparent(World.Current.YSortLayer);
}
CalcThrowAnimatedPosition();
@@ -1473,7 +1493,7 @@
///
private void SetFallCollision()
{
- if (_fallData != null && _fallData.UseOrigin)
+ if (_fallData.UseOrigin)
{
_fallData.OriginShape = Collision.Shape;
_fallData.OriginPosition = Collision.Position;
@@ -1507,7 +1527,7 @@
///
private void RestoreCollision()
{
- if (_fallData != null && !_fallData.UseOrigin)
+ if (!_fallData.UseOrigin)
{
Collision.Shape = _fallData.OriginShape;
Collision.Position = _fallData.OriginPosition;
@@ -1532,7 +1552,7 @@
private void ThrowOver()
{
var parent = GetParent();
- var roomLayer = GameApplication.Instance.World.GetRoomLayer(DefaultLayer);
+ var roomLayer = World.Current.GetRoomLayer(DefaultLayer);
if (parent != roomLayer)
{
parent.RemoveChild(this);
@@ -1849,7 +1869,7 @@
///
/// 绑定可销毁对象, 绑定的物体会在当前物体销毁时触发销毁
///
- public void BindDestroyObject(IDestroy destroy)
+ public void AddDestroyObject(IDestroy destroy)
{
if (_destroySet == null)
{
@@ -1875,7 +1895,7 @@
///
/// 绑定挂载对象, 绑定的物体会在当前物体销毁时触发扔出
///
- public void BindMountObject(IMountItem target)
+ public void AddMountObject(IMountItem target)
{
if (_mountObjects == null)
{
@@ -1903,4 +1923,25 @@
target.OnUnmount(this);
}
}
+
+ ///
+ /// 设置是否启用碰撞层, 该函数是设置下载状态下原碰撞层
+ ///
+ public void SetOriginCollisionLayerValue(uint layer, bool vale)
+ {
+ if (vale)
+ {
+ if (!Utils.CollisionMaskWithLayer(_fallData.OriginCollisionLayer, layer))
+ {
+ _fallData.OriginCollisionLayer |= layer;
+ }
+ }
+ else
+ {
+ if (Utils.CollisionMaskWithLayer(_fallData.OriginCollisionLayer, layer))
+ {
+ _fallData.OriginCollisionLayer ^= layer;
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Create.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Create.cs
index ebc901a..3805d0f 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Create.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Create.cs
@@ -9,10 +9,10 @@
///
public static ActivityObject Create(ExcelConfig.ActivityBase config)
{
- var world = GameApplication.Instance.World;
+ var world = World.Current;
if (world == null)
{
- throw new Exception("实例化 ActivityObject 前请先调用 'GameApplication.Instance.CreateNewWorld()' 初始化 World 对象");
+ throw new Exception("实例化 ActivityObject 前请先调用 'GameApplication.Instance.DungeonManager.CreateNewWorld()' 初始化 World 对象");
}
var instance = ResourceManager.LoadAndInstantiate(config.Prefab);
instance._InitNode(config, world);
diff --git a/DungeonShooting_Godot/src/framework/common/NodeExtend.cs b/DungeonShooting_Godot/src/framework/common/NodeExtend.cs
index 4c3151a..e04437d 100644
--- a/DungeonShooting_Godot/src/framework/common/NodeExtend.cs
+++ b/DungeonShooting_Godot/src/framework/common/NodeExtend.cs
@@ -52,7 +52,7 @@
/// 放入的层
public static void AddToActivityRoot(this Node2D node, RoomLayerEnum layer)
{
- GameApplication.Instance.World.GetRoomLayer(layer).AddChild(node);
+ GameApplication.Instance.DungeonManager.CurrWorld.GetRoomLayer(layer).AddChild(node);
}
///
@@ -62,7 +62,7 @@
/// 放入的层
public static void AddToActivityRootDeferred(this Node2D node, RoomLayerEnum layer)
{
- GameApplication.Instance.World.GetRoomLayer(layer).CallDeferred(Node.MethodName.AddChild, node);
+ World.Current.GetRoomLayer(layer).CallDeferred(Node.MethodName.AddChild, node);
}
///
diff --git a/DungeonShooting_Godot/src/framework/common/Utils.cs b/DungeonShooting_Godot/src/framework/common/Utils.cs
index 4302194..07b4751 100644
--- a/DungeonShooting_Godot/src/framework/common/Utils.cs
+++ b/DungeonShooting_Godot/src/framework/common/Utils.cs
@@ -1,4 +1,6 @@
+using System;
using System.Collections.Generic;
+using System.Linq;
using Godot;
using UI.TileSetEditorCombination;
@@ -50,36 +52,6 @@
{
return (mask & layer) != 0;
}
-
- ///
- /// 使用定的 canvasItem 绘制导航区域, 注意, 该函数只能在 draw 函数中调用
- ///
- public static void DrawNavigationPolygon(CanvasItem canvasItem, NavigationPolygonData[] polygonData, float width = 1)
- {
- for (var i = 0; i < polygonData.Length; i++)
- {
- var item = polygonData[i];
- var points = item.GetPoints();
- if (points.Length>= 2)
- {
- var array = new Vector2[points.Length + 1];
- for (var j = 0; j < points.Length; j++)
- {
- array[j] = points[j];
- }
-
- array[array.Length - 1] = points[0];
- if (item.Type == NavigationPolygonType.In)
- {
- canvasItem.DrawPolyline(points, Colors.Orange, width);
- }
- else
- {
- canvasItem.DrawPolyline(points, Colors.Orange, width);
- }
- }
- }
- }
///
/// 将一个任意角度转为0到360度
@@ -369,6 +341,38 @@
}
///
+ /// 计算Vector2点所占用的区域
+ ///
+ public static Rect2I CalcRect(IEnumerable cells)
+ {
+ var count = cells.Count();
+ if (count == 0)
+ {
+ return new Rect2I();
+ }
+ //单位: 像素
+ var canvasXStart = int.MaxValue;
+ var canvasYStart = int.MaxValue;
+ var canvasXEnd = int.MinValue;
+ var canvasYEnd = int.MinValue;
+
+ foreach (var pos in cells)
+ {
+ canvasXStart = Mathf.Min(pos.X, canvasXStart);
+ canvasYStart = Mathf.Min(pos.Y, canvasYStart);
+ canvasXEnd = Mathf.Max(pos.X + 1, canvasXEnd);
+ canvasYEnd = Mathf.Max(pos.Y + 1, canvasYEnd);
+ }
+
+ return new Rect2I(
+ canvasXStart,
+ canvasYStart,
+ canvasXEnd - canvasXStart,
+ canvasYEnd - canvasYStart
+ );
+ }
+
+ ///
/// 计算TileSet Cell所占用的区域
///
public static Rect2I CalcTileRect(IEnumerable cells)
@@ -557,4 +561,17 @@
}
return list.ToArray();
}
+
+ ///
+ /// 遍历节点树
+ ///
+ public static void EachNode(Node node, Action action)
+ {
+ action(node);
+ var childCount = node.GetChildCount();
+ for (var i = 0; i < childCount; i++)
+ {
+ EachNode(node.GetChild(i), action);
+ }
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/coroutine/ProxyCoroutineHandler.cs b/DungeonShooting_Godot/src/framework/coroutine/ProxyCoroutineHandler.cs
index 18371c0..e463ddf 100644
--- a/DungeonShooting_Godot/src/framework/coroutine/ProxyCoroutineHandler.cs
+++ b/DungeonShooting_Godot/src/framework/coroutine/ProxyCoroutineHandler.cs
@@ -23,8 +23,8 @@
for (var i = 0; i < pairs.Length; i++)
{
var item = pairs[i];
- try
- {
+ // try
+ // {
var canNext = true;
if (item.WaitState == CoroutineData.WaitTypeEnum.WaitForSeconds) //等待秒数
@@ -130,12 +130,12 @@
}
}
}
- }
- catch (Exception e)
- {
- Debug.LogError("执行协程发生异常: \n" + e);
- ProxyStopCoroutine(ref coroutineList, item.Id);
- }
+ // }
+ // catch (Exception e)
+ // {
+ // Debug.LogError("执行协程发生异常: \n" + e);
+ // ProxyStopCoroutine(ref coroutineList, item.Id);
+ // }
}
}
diff --git a/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs b/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs
index d943e6a..0ebce39 100644
--- a/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs
+++ b/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs
@@ -85,12 +85,13 @@
activityObject.AffiliationArea._includeItems.Remove(activityObject);
}
activityObject.AffiliationArea = this;
- _includeItems.Add(activityObject);
-
- //如果是玩家
- if (activityObject == Player.Current)
+ if (_includeItems.Add(activityObject))
{
- CallDeferred(nameof(OnPlayerInsertRoom));
+ //如果是玩家
+ if (activityObject == Player.Current)
+ {
+ CallDeferred(nameof(OnPlayerInsertRoom));
+ }
}
}
diff --git a/DungeonShooting_Godot/src/framework/map/DoorNavigationInfo.cs b/DungeonShooting_Godot/src/framework/map/DoorNavigationInfo.cs
deleted file mode 100644
index 21651c2..0000000
--- a/DungeonShooting_Godot/src/framework/map/DoorNavigationInfo.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-
-using Godot;
-
-///
-/// 房间连接门的站位导航数据
-///
-public class DoorNavigationInfo
-{
- public DoorNavigationInfo(RoomDoorInfo doorInfo, NavigationPolygonData openNavigationData, NavigationPolygonData closeNavigationData)
- {
- DoorInfo = doorInfo;
- OpenNavigationData = openNavigationData;
- CloseNavigationData = closeNavigationData;
- }
-
- ///
- /// 绑定的门对象
- ///
- public RoomDoorInfo DoorInfo;
-
- ///
- /// 门开启时导航区域节点
- ///
- public NavigationRegion2D OpenNavigationNode;
-
- ///
- /// 门关闭时导航区域节点
- ///
- public NavigationRegion2D CloseNavigationNode;
-
- ///
- /// 门开启时导航形状数据
- ///
- public NavigationPolygonData OpenNavigationData;
-
- ///
- /// 门关闭时导航形状数据
- ///
- public NavigationPolygonData CloseNavigationData;
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/DungeonConfig.cs b/DungeonShooting_Godot/src/framework/map/DungeonConfig.cs
index f05f144..2fc4437 100644
--- a/DungeonShooting_Godot/src/framework/map/DungeonConfig.cs
+++ b/DungeonShooting_Godot/src/framework/map/DungeonConfig.cs
@@ -7,6 +7,11 @@
public class DungeonConfig
{
///
+ /// 地牢使用的随机种子
+ ///
+ public int? RandomSeed = null;
+
+ ///
/// 地牢组名称
///
public string GroupName;
@@ -54,7 +59,7 @@
///
/// 房间最大间隔
///
- public int RoomMaxInterval = 5;
+ public int RoomMaxInterval = 2;
///
/// 房间横轴最小分散程度
diff --git a/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs b/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
index cba1da9..feb8ca2 100644
--- a/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
+++ b/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs
@@ -158,7 +158,7 @@
_rule = rule;
//最大尝试次数
- var maxTryCount = 2000;
+ var maxTryCount = 1000;
//当前尝试次数
var currTryCount = 0;
@@ -298,10 +298,6 @@
var direction = _rule.GetNextRoomDoorDirection(prevRoom, roomType);
//房间间隔
var space = _rule.GetNextRoomInterval(prevRoom, roomType, direction);
- if (direction == RoomDirection.Up || direction == RoomDirection.Down)
- {
- space += 1;
- }
//中心偏移
var offset = _rule.GetNextRoomOffset(prevRoom, roomType, direction);
@@ -340,7 +336,7 @@
}
//是否碰到其他房间或者过道
- if (_roomGrid.RectCollision(room.Position - Vector2I.One, room.Size + new Vector2I(2, 2)))
+ if (_roomGrid.RectCollision(room.Position - new Vector2I(2, 2), room.Size + new Vector2I(4, 5)))
{
//碰到其他墙壁, 再一次尝试
continue;
@@ -586,15 +582,6 @@
//先寻找直通门
if (Random.RandomBoolean())
{
- //直行通道, 优先横轴
- if (TryConnectHorizontalDoor(roomInfo, roomDoor, nextRoomInfo, nextRoomDoor)
- || TryConnectVerticalDoor(roomInfo, roomDoor, nextRoomInfo, nextRoomDoor))
- {
- return true;
- }
- }
- else
- {
//直行通道, 优先纵轴
if (TryConnectVerticalDoor(roomInfo, roomDoor, nextRoomInfo, nextRoomDoor)
|| TryConnectHorizontalDoor(roomInfo, roomDoor, nextRoomInfo, nextRoomDoor))
@@ -602,21 +589,34 @@
return true;
}
}
-
- //包含拐角的通道
+ else
+ {
+ //直行通道, 优先横轴
+ if (TryConnectHorizontalDoor(roomInfo, roomDoor, nextRoomInfo, nextRoomDoor)
+ || TryConnectVerticalDoor(roomInfo, roomDoor, nextRoomInfo, nextRoomDoor))
+ {
+ return true;
+ }
+ }
+
+ //包含1个拐角的通道
return TryConnectCrossDoor(roomInfo, roomDoor, nextRoomInfo, nextRoomDoor);
+ //包含2个拐角的通道 (后面再开发)
}
///
- /// 尝试寻找横轴方向上两个房间的连通的门, 只查找直线通道, 返回是否找到
+ /// 尝试寻找纵轴方向上两个房间的连通的门, 只查找直线通道, 返回是否找到
///
- private bool TryConnectHorizontalDoor(RoomInfo roomInfo, RoomDoorInfo roomDoor, RoomInfo nextRoomInfo, RoomDoorInfo nextRoomDoor)
+ private bool TryConnectVerticalDoor(RoomInfo roomInfo, RoomDoorInfo roomDoor, RoomInfo nextRoomInfo, RoomDoorInfo nextRoomDoor)
{
var overlapX = Mathf.Min(roomInfo.GetHorizontalEnd(), nextRoomInfo.GetHorizontalEnd()) -
Mathf.Max(roomInfo.GetHorizontalStart(), nextRoomInfo.GetHorizontalStart());
//这种情况下x轴有重叠
if (overlapX >= 6)
{
+ //填充通通道地板格子
+ var floorCell = new HashSet();
+
//找到重叠区域
var rangeList = FindPassage(roomInfo, nextRoomInfo,
roomInfo.GetVerticalStart() < nextRoomInfo.GetVerticalStart() ? DoorDirection.S : DoorDirection.N);
@@ -633,6 +633,14 @@
nextRoomDoor.Direction = DoorDirection.N;
roomDoor.OriginPosition = new Vector2I(x, roomInfo.GetVerticalDoorEnd());
nextRoomDoor.OriginPosition = new Vector2I(x, nextRoomInfo.GetVerticalDoorStart());
+
+ var sv = roomInfo.GetVerticalDoorEnd() - 1;
+ var ev = nextRoomInfo.GetVerticalDoorStart() + 1;
+ for (var i = sv; i < ev; i++)
+ {
+ floorCell.Add(new Vector2I(x + 1, i));
+ floorCell.Add(new Vector2I(x + 2, i));
+ }
}
else //room在下, nextRoom在上
{
@@ -640,18 +648,32 @@
nextRoomDoor.Direction = DoorDirection.S;
roomDoor.OriginPosition = new Vector2I(x, roomInfo.GetVerticalDoorStart());
nextRoomDoor.OriginPosition = new Vector2I(x, nextRoomInfo.GetVerticalDoorEnd());
+
+ var sv = nextRoomInfo.GetVerticalDoorEnd() - 1;
+ var ev = roomInfo.GetVerticalDoorStart() + 1;
+ for (var i = sv; i < ev; i++)
+ {
+ floorCell.Add(new Vector2I(x + 1, i));
+ floorCell.Add(new Vector2I(x + 2, i));
+ }
}
//判断门之间的通道是否有物体碰到
if (!AddCorridorToGridRange(roomDoor, nextRoomDoor))
{
//此门不能连通
+ floorCell.Clear();
continue;
}
//没有撞到物体
roomInfo.Doors.Add(roomDoor);
nextRoomInfo.Doors.Add(nextRoomDoor);
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);;
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
}
@@ -660,15 +682,18 @@
}
///
- /// 尝试寻找纵轴方向上两个房间的连通的门, 只查找直线通道, 返回是否找到
+ /// 尝试寻找横轴方向上两个房间的连通的门, 只查找直线通道, 返回是否找到
///
- private bool TryConnectVerticalDoor(RoomInfo roomInfo, RoomDoorInfo roomDoor, RoomInfo nextRoomInfo, RoomDoorInfo nextRoomDoor)
+ private bool TryConnectHorizontalDoor(RoomInfo roomInfo, RoomDoorInfo roomDoor, RoomInfo nextRoomInfo, RoomDoorInfo nextRoomDoor)
{
var overlapY = Mathf.Min(roomInfo.GetVerticalEnd(), nextRoomInfo.GetVerticalEnd()) -
Mathf.Max(roomInfo.GetVerticalStart(), nextRoomInfo.GetVerticalStart());
//这种情况下y轴有重叠
if (overlapY >= 6)
{
+ //填充通通道地板格子
+ var floorCell = new HashSet();
+
//找到重叠区域
var rangeList = FindPassage(roomInfo, nextRoomInfo,
roomInfo.GetHorizontalStart() < nextRoomInfo.GetHorizontalStart() ? DoorDirection.E : DoorDirection.W);
@@ -685,6 +710,13 @@
nextRoomDoor.Direction = DoorDirection.W;
roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorEnd(), y);
nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart(), y);
+
+ var sv = roomInfo.GetHorizontalDoorEnd() - 1;
+ var ev = nextRoomInfo.GetHorizontalDoorStart() + 1;
+ for (var i = sv; i < ev; i++)
+ {
+ floorCell.Add(new Vector2I(i, y + 2));
+ }
}
else //room在右, nextRoom在左
{
@@ -692,18 +724,31 @@
nextRoomDoor.Direction = DoorDirection.E;
roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorStart(), y);
nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorEnd(), y);
+
+ var sv = nextRoomInfo.GetHorizontalDoorEnd() - 1;
+ var ev = roomInfo.GetHorizontalDoorStart() + 1;
+ for (var i = sv; i < ev; i++)
+ {
+ floorCell.Add(new Vector2I(i, y + 2));
+ }
}
//判断门之间的通道是否有物体碰到
if (!AddCorridorToGridRange(roomDoor, nextRoomDoor))
{
//此门不能连通
+ floorCell.Clear();
continue;
}
//没有撞到物体
roomInfo.Doors.Add(roomDoor);
nextRoomInfo.Doors.Add(nextRoomDoor);
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);;
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
}
@@ -963,15 +1008,35 @@
offset1 += 1;
offset2 += 1;
roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorStart() + offset1, roomInfo.GetVerticalDoorStart());
- nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorEnd(),
- nextRoomInfo.GetVerticalDoorStart() + offset2);
+ nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorEnd(), nextRoomInfo.GetVerticalDoorStart() + offset2);
cross = new Vector2I(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y);
+
+ var floorCell = new HashSet();
+
+ //纵轴地板
+ for (var y = cross.Y + 3; y <= roomDoor.OriginPosition.Y; y++)
+ {
+ floorCell.Add(new Vector2I(roomDoor.OriginPosition.X + 1, y));
+ floorCell.Add(new Vector2I(roomDoor.OriginPosition.X + 2, y));
+ }
+ //横轴地板
+ for (var x = nextRoomDoor.OriginPosition.X - 1; x <= cross.X; x++)
+ {
+ floorCell.Add(new Vector2I(x, nextRoomDoor.OriginPosition.Y + 2));
+ }
+ //交叉点地板
+ floorCell.Add(new Vector2I(cross.X + 1, cross.Y + 2));
+ floorCell.Add(new Vector2I(cross.X + 2, cross.Y + 2));
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
private bool TryConnect_WS_Door(RoomInfo roomInfo, RoomInfo nextRoomInfo, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross)
{
- //ok
var offset1 = 0;
var offset2 = 0;
roomDoor.Direction = DoorDirection.W; //←
@@ -987,6 +1052,29 @@
roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorStart(), roomInfo.GetVerticalDoorStart() + offset1);
nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart() + offset2, nextRoomInfo.GetVerticalDoorEnd());
cross = new Vector2I(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y);
+
+ var floorCell = new HashSet();
+
+ //横轴地板
+ for (var x = cross.X + 3; x <= roomDoor.OriginPosition.X; x++)
+ {
+ floorCell.Add(new Vector2I(x, roomDoor.OriginPosition.Y + 2));
+ }
+ //纵轴地板
+ for (var y = nextRoomDoor.OriginPosition.Y - 1; y <= cross.Y + 1; y++)
+ {
+ floorCell.Add(new Vector2I(nextRoomDoor.OriginPosition.X + 1, y));
+ floorCell.Add(new Vector2I(nextRoomDoor.OriginPosition.X + 2, y));
+ }
+
+ //交叉点地板
+ floorCell.Add(new Vector2I(cross.X + 1, cross.Y + 2));
+ floorCell.Add(new Vector2I(cross.X + 2, cross.Y + 2));
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
@@ -1005,9 +1093,32 @@
offset1 += 1;
offset2 += 1;
roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorStart() + offset1, roomInfo.GetVerticalDoorEnd());
- nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorEnd(),
- nextRoomInfo.GetVerticalDoorStart() + offset2);
+ nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorEnd(), nextRoomInfo.GetVerticalDoorStart() + offset2);
cross = new Vector2I(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y);
+
+ var floorCell = new HashSet();
+
+ //纵轴地板
+ for (var y = roomDoor.OriginPosition.Y - 1; y <= cross.Y + 1; y++)
+ {
+ floorCell.Add(new Vector2I(roomDoor.OriginPosition.X + 1, y));
+ floorCell.Add(new Vector2I(roomDoor.OriginPosition.X + 2, y));
+ }
+
+ //横轴地板
+ for (var x = nextRoomDoor.OriginPosition.X - 1; x <= cross.X; x++)
+ {
+ floorCell.Add(new Vector2I(x, nextRoomDoor.OriginPosition.Y + 2));
+ }
+
+ //交叉点地板
+ floorCell.Add(new Vector2I(cross.X + 1, cross.Y + 2));
+ floorCell.Add(new Vector2I(cross.X + 2, cross.Y + 2));
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
@@ -1025,11 +1136,33 @@
offset1 += 1;
offset2 += 1;
- roomDoor.OriginPosition =
- new Vector2I(roomInfo.GetHorizontalDoorStart(), roomInfo.GetVerticalDoorStart() + offset1); //
- nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart() + offset2,
- nextRoomInfo.GetVerticalDoorStart());
+ roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorStart(), roomInfo.GetVerticalDoorStart() + offset1); //
+ nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart() + offset2, nextRoomInfo.GetVerticalDoorStart());
cross = new Vector2I(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y);
+
+ var floorCell = new HashSet();
+
+ //横轴地板
+ for (var x = cross.X + 3; x <= roomDoor.OriginPosition.X; x++)
+ {
+ floorCell.Add(new Vector2I(x, roomDoor.OriginPosition.Y + 2));
+ }
+
+ //纵轴地板
+ for (var y = cross.Y + 3; y <= nextRoomDoor.OriginPosition.Y; y++)
+ {
+ floorCell.Add(new Vector2I(nextRoomDoor.OriginPosition.X + 1, y));
+ floorCell.Add(new Vector2I(nextRoomDoor.OriginPosition.X + 2, y));
+ }
+
+ //交叉点地板
+ floorCell.Add(new Vector2I(cross.X + 1, cross.Y + 2));
+ floorCell.Add(new Vector2I(cross.X + 2, cross.Y + 2));
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
@@ -1048,9 +1181,32 @@
offset1 += 1;
offset2 += 1;
roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorEnd(), roomInfo.GetVerticalDoorStart() + offset1);
- nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart() + offset2,
- nextRoomInfo.GetVerticalDoorEnd());
+ nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart() + offset2, nextRoomInfo.GetVerticalDoorEnd());
cross = new Vector2I(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y);
+
+ var floorCell = new HashSet();
+
+ //横轴地板
+ for (var x = roomDoor.OriginPosition.X - 1; x <= cross.X; x++)
+ {
+ floorCell.Add(new Vector2I(x, roomDoor.OriginPosition.Y + 2));
+ }
+
+ //纵轴地板
+ for (var y = nextRoomDoor.OriginPosition.Y - 1; y <= cross.Y + 1; y++)
+ {
+ floorCell.Add(new Vector2I(nextRoomDoor.OriginPosition.X + 1, y));
+ floorCell.Add(new Vector2I(nextRoomDoor.OriginPosition.X + 2, y));
+ }
+
+ //交叉点地板
+ floorCell.Add(new Vector2I(cross.X + 1, cross.Y + 2));
+ floorCell.Add(new Vector2I(cross.X + 2, cross.Y + 2));
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
@@ -1069,9 +1225,32 @@
offset1 += 1;
offset2 += 1;
roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorStart() + offset1, roomInfo.GetVerticalDoorStart());
- nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart(),
- nextRoomInfo.GetVerticalDoorStart() + offset2);
+ nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart(), nextRoomInfo.GetVerticalDoorStart() + offset2);
cross = new Vector2I(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y);
+
+ var floorCell = new HashSet();
+
+ //纵轴地板
+ for (var y = cross.Y + 3; y <= roomDoor.OriginPosition.Y; y++)
+ {
+ floorCell.Add(new Vector2I(roomDoor.OriginPosition.X + 1, y));
+ floorCell.Add(new Vector2I(roomDoor.OriginPosition.X + 2, y));
+ }
+
+ //横轴地板
+ for (var x = cross.X + 3; x <= nextRoomDoor.OriginPosition.X; x++)
+ {
+ floorCell.Add(new Vector2I(x, nextRoomDoor.OriginPosition.Y + 2));
+ }
+
+ //交叉点地板
+ floorCell.Add(new Vector2I(cross.X + 1, cross.Y + 2));
+ floorCell.Add(new Vector2I(cross.X + 2, cross.Y + 2));
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
@@ -1089,10 +1268,33 @@
offset1 += 1;
offset2 += 2;
- roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorEnd(),
- roomInfo.GetVerticalDoorStart() + offset1);
+ roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorEnd(), roomInfo.GetVerticalDoorStart() + offset1);
nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalStart() + offset2, nextRoomInfo.GetVerticalDoorStart());
cross = new Vector2I(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y);
+
+ var floorCell = new HashSet();
+
+ //横轴地板
+ for (var x = roomDoor.OriginPosition.X - 1; x <= cross.X; x++)
+ {
+ floorCell.Add(new Vector2I(x, roomDoor.OriginPosition.Y + 2));
+ }
+
+ //纵轴地板
+ for (var y = cross.Y + 3; y <= nextRoomDoor.OriginPosition.Y; y++)
+ {
+ floorCell.Add(new Vector2I(nextRoomDoor.OriginPosition.X + 1, y));
+ floorCell.Add(new Vector2I(nextRoomDoor.OriginPosition.X + 2, y));
+ }
+
+ //交叉点地板
+ floorCell.Add(new Vector2I(cross.X + 1, cross.Y + 2));
+ floorCell.Add(new Vector2I(cross.X + 2, cross.Y + 2));
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
@@ -1110,10 +1312,33 @@
offset1 += 1;
offset2 += 1;
- roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorStart() + offset1,
- roomInfo.GetVerticalDoorEnd());
+ roomDoor.OriginPosition = new Vector2I(roomInfo.GetHorizontalDoorStart() + offset1, roomInfo.GetVerticalDoorEnd());
nextRoomDoor.OriginPosition = new Vector2I(nextRoomInfo.GetHorizontalDoorStart(), nextRoomInfo.GetVerticalDoorStart() + offset2);
cross = new Vector2I(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y);
+
+ var floorCell = new HashSet();
+
+ //纵轴地板
+ for (var y = roomDoor.OriginPosition.Y - 1; y <= cross.Y + 1; y++)
+ {
+ floorCell.Add(new Vector2I(roomDoor.OriginPosition.X + 1, y));
+ floorCell.Add(new Vector2I(roomDoor.OriginPosition.X + 2, y));
+ }
+
+ //横轴地板
+ for (var x = cross.X + 3; x <= nextRoomDoor.OriginPosition.X; x++)
+ {
+ floorCell.Add(new Vector2I(x, nextRoomDoor.OriginPosition.Y + 2));
+ }
+
+ //交叉点地板
+ floorCell.Add(new Vector2I(cross.X + 1, cross.Y + 2));
+ floorCell.Add(new Vector2I(cross.X + 2, cross.Y + 2));
+
+ roomDoor.AisleFloorCell = floorCell;
+ nextRoomDoor.AisleFloorCell = floorCell;
+ roomDoor.AisleFloorRect = Utils.CalcRect(floorCell);
+ nextRoomDoor.AisleFloorRect = roomDoor.AisleFloorRect;
return true;
}
diff --git a/DungeonShooting_Godot/src/framework/map/DungeonTileMap.cs b/DungeonShooting_Godot/src/framework/map/DungeonTileMap.cs
index c5bbaa4..1b59921 100644
--- a/DungeonShooting_Godot/src/framework/map/DungeonTileMap.cs
+++ b/DungeonShooting_Godot/src/framework/map/DungeonTileMap.cs
@@ -9,26 +9,10 @@
///
public class DungeonTileMap
{
- //--------------------- 导航 -------------------------
-
- //已经标记过的点
- private readonly HashSet _usePoints = new HashSet();
-
- //导航区域数据
- private readonly List _polygonDataList = new List();
-
- //连接门的导航区域
- private readonly List _connectNavigationItemList = new List();
//----------------------------------------------------
private TileMap _tileRoot;
- //地面地砖在 Atlas 的位置
- private List _floorAtlasCoords;
- //生成导航的结果
- private GenerateNavigationResult _generateNavigationResult;
-
- private InfiniteGrid _tempAisleFloorGrid = new InfiniteGrid();
public DungeonTileMap(TileMap tileRoot)
{
@@ -36,14 +20,21 @@
}
///
- /// 根据 startRoom 和 config 数据自动填充 tileMap 参数中的地图数据, 该函数为协程函数
+ /// 根据 startRoom 和 config 数据自动填充 tileMap 参数中的房间数据, 该函数为协程函数
///
public IEnumerator AutoFillRoomTile(AutoTileConfig config, RoomInfo startRoomInfo, World world)
{
- _connectNavigationItemList.Clear();
yield return _AutoFillRoomTile(config, startRoomInfo, world);
}
+ ///
+ /// 根据 startRoom 和 config 数据自动填充 tileMap 参数中的过道数据, 该函数为协程函数
+ ///
+ public IEnumerator AutoFillAisleTile(AutoTileConfig config, RoomInfo roomInfo, World world)
+ {
+ yield return _AutoFillAisleTile(config, roomInfo, world);
+ }
+
private IEnumerator _AutoFillRoomTile(AutoTileConfig config, RoomInfo roomInfo, World world)
{
foreach (var info in roomInfo.Next)
@@ -52,114 +43,96 @@
}
//铺房间
- if (roomInfo.RoomSplit == null) //自动填充的矩形房间, 现已经弃用
+ var rectPos = roomInfo.RoomSplit.RoomInfo.Position.AsVector2I();
+ var tileInfo = roomInfo.RoomSplit.TileInfo;
+
+ //---------------------- 生成房间小地图预览 ----------------------
+ //先计算范围
+ var x = int.MaxValue;
+ var y = int.MaxValue;
+ var x2 = int.MinValue;
+ var y2 = int.MinValue;
+ for (var i = 0; i < tileInfo.Floor.Count; i += 4)
{
- FillRect(MapLayer.AutoFloorLayer, config.Floor, roomInfo.Position + Vector2.One,
- roomInfo.Size - new Vector2(2, 2));
-
- FillRect(MapLayer.AutoTopLayer, config.Wall_In_LT, roomInfo.Position, Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_Left, roomInfo.Position + new Vector2(0, 1),
- new Vector2(1, roomInfo.Size.Y - 2));
- FillRect(MapLayer.AutoTopLayer, config.Wall_In_LB, roomInfo.Position + new Vector2(0, roomInfo.Size.Y - 1),
- new Vector2(1, 1));
- FillRect(MapLayer.AutoTopLayer, config.Wall_Bottom, roomInfo.Position + new Vector2(1, roomInfo.Size.Y - 1),
- new Vector2(roomInfo.Size.X - 2, 1));
- FillRect(MapLayer.AutoTopLayer, config.Wall_In_RB,
- roomInfo.Position + new Vector2(roomInfo.Size.X - 1, roomInfo.Size.Y - 1),
- Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_Right, roomInfo.Position + new Vector2(roomInfo.Size.X - 1, 1),
- new Vector2(1, roomInfo.Size.Y - 2));
- FillRect(MapLayer.AutoTopLayer, config.Wall_In_RT, roomInfo.Position + new Vector2(roomInfo.Size.X - 1, 0),
- Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Top, roomInfo.Position + Vector2.Right,
- new Vector2(roomInfo.Size.X - 2, 1));
+ var posX = tileInfo.Floor[i];
+ var posY = tileInfo.Floor[i + 1];
+ x = Mathf.Min(x, posX);
+ x2 = Mathf.Max(x2, posX);
+ y = Mathf.Min(y, posY);
+ y2 = Mathf.Max(y2, posY);
}
- else
+ //创建image, 这里留两个像素宽高用于描边
+ var image = Image.Create(x2 - x + 3, y2 - y + 3, false, Image.Format.Rgba8);
+ //image.Fill(Colors.Green);
+ //填充像素点
+ for (var i = 0; i < tileInfo.Floor.Count; i += 4)
{
- var rectPos = roomInfo.RoomSplit.RoomInfo.Position.AsVector2I();
- var tileInfo = roomInfo.RoomSplit.TileInfo;
-
- //---------------------- 生成房间小地图预览 ----------------------
- //先计算范围
- var x = int.MaxValue;
- var y = int.MaxValue;
- var x2 = int.MinValue;
- var y2 = int.MinValue;
- for (var i = 0; i < tileInfo.Floor.Count; i += 4)
- {
- var posX = tileInfo.Floor[i];
- var posY = tileInfo.Floor[i + 1];
- x = Mathf.Min(x, posX);
- x2 = Mathf.Max(x2, posX);
- y = Mathf.Min(y, posY);
- y2 = Mathf.Max(y2, posY);
- }
- //创建image, 这里留两个像素宽高用于描边
- var image = Image.Create(x2 - x + 3, y2 - y + 3, false, Image.Format.Rgba8);
- //image.Fill(Colors.Green);
- //填充像素点
- for (var i = 0; i < tileInfo.Floor.Count; i += 4)
- {
- var posX = tileInfo.Floor[i] - x + 1;
- var posY = tileInfo.Floor[i + 1] - y + 1;
- image.SetPixel(posX, posY, new Color(0, 0, 0, 0.5882353F));
- }
- //创建texture
- var imageTexture = ImageTexture.CreateFromImage(image);
- roomInfo.PreviewTexture = imageTexture;
-
- //---------------------- 填充tile操作 ----------------------
- var terrainInfo = config.TerrainInfo;
-
- SetAutoLayerDataFromList(MapLayer.AutoFloorLayer, config.SourceId, roomInfo, tileInfo.Floor, rectPos, terrainInfo);
- SetCustomLayerDataFromList(MapLayer.CustomFloorLayer1, roomInfo, tileInfo.CustomFloor1, rectPos);
- SetCustomLayerDataFromList(MapLayer.CustomFloorLayer2, roomInfo, tileInfo.CustomFloor2, rectPos);
- SetCustomLayerDataFromList(MapLayer.CustomFloorLayer3, roomInfo, tileInfo.CustomFloor3, rectPos);
- SetAutoLayerDataFromList(MapLayer.AutoMiddleLayer, config.SourceId, roomInfo, tileInfo.Middle, rectPos, terrainInfo);
- SetCustomLayerDataFromList(MapLayer.CustomMiddleLayer1, roomInfo, tileInfo.CustomMiddle1, rectPos);
- SetCustomLayerDataFromList(MapLayer.CustomMiddleLayer2, roomInfo, tileInfo.CustomMiddle2, rectPos);
- SetAutoLayerDataFromList(MapLayer.AutoTopLayer, config.SourceId, roomInfo, tileInfo.Top, rectPos, terrainInfo);
- SetCustomLayerDataFromList(MapLayer.CustomTopLayer, roomInfo, tileInfo.CustomTop, rectPos);
-
- //寻找可用传送点
- var maxCount = (roomInfo.Size.X - 2) * (roomInfo.Size.Y - 2);
- var startPosition = roomInfo.Position + roomInfo.Size / 2;
- for (int i = 0; i < maxCount; i++)
- {
- var pos = SpiralUtil.Screw(i) + startPosition;
- if (IsWayTile(MapLayer.AutoFloorLayer, pos.X, pos.Y))
- {
- roomInfo.Waypoints = pos;
- break;
- }
- }
-
- //---------------------- 随机选择预设 ----------------------
- RoomPreinstallInfo preinstallInfo;
- if (EditorPlayManager.IsPlay && roomInfo.RoomType == GameApplication.Instance.DungeonManager.CurrConfig.DesignatedType) //编辑器模式, 指定预设
- {
- preinstallInfo = EditorTileMapManager.SelectPreinstall;
- }
- else //普通模式
- {
- if (roomInfo.RoomSplit.Preinstall.Count == 1)
- {
- preinstallInfo = roomInfo.RoomSplit.Preinstall[0];
- }
- else
- {
- var weights = roomInfo.RoomSplit.Preinstall.Select(info => info.Weight).ToArray();
- var index = world.Random.RandomWeight(weights);
- preinstallInfo = roomInfo.RoomSplit.Preinstall[index];
- }
- }
-
- var roomPreinstall = new RoomPreinstall(roomInfo, preinstallInfo);
- roomInfo.RoomPreinstall = roomPreinstall;
- //执行预处理操作
- roomPreinstall.Pretreatment(world);
+ var posX = tileInfo.Floor[i] - x + 1;
+ var posY = tileInfo.Floor[i + 1] - y + 1;
+ image.SetPixel(posX, posY, new Color(0, 0, 0, 0.5882353F));
}
+ //创建texture
+ var imageTexture = ImageTexture.CreateFromImage(image);
+ roomInfo.PreviewTexture = imageTexture;
+ //---------------------- 填充tile操作 ----------------------
+ var terrainInfo = config.TerrainInfo;
+
+ SetAutoLayerDataFromList(MapLayer.AutoFloorLayer, config.SourceId, roomInfo, tileInfo.Floor, rectPos, terrainInfo);
+ SetCustomLayerDataFromList(MapLayer.CustomFloorLayer1, roomInfo, tileInfo.CustomFloor1, rectPos);
+ SetCustomLayerDataFromList(MapLayer.CustomFloorLayer2, roomInfo, tileInfo.CustomFloor2, rectPos);
+ SetCustomLayerDataFromList(MapLayer.CustomFloorLayer3, roomInfo, tileInfo.CustomFloor3, rectPos);
+ SetCustomLayerDataFromList(MapLayer.CustomMiddleLayer1, roomInfo, tileInfo.CustomMiddle1, rectPos);
+ SetCustomLayerDataFromList(MapLayer.CustomMiddleLayer2, roomInfo, tileInfo.CustomMiddle2, rectPos);
+ SetCustomLayerDataFromList(MapLayer.CustomTopLayer, roomInfo, tileInfo.CustomTop, rectPos);
+
+ //寻找可用传送点
+ var maxCount = (roomInfo.Size.X - 2) * (roomInfo.Size.Y - 2);
+ var startPosition = roomInfo.Position + roomInfo.Size / 2;
+ for (int i = 0; i < maxCount; i++)
+ {
+ var pos = SpiralUtil.Screw(i) + startPosition;
+ if (IsWayTile(MapLayer.AutoFloorLayer, pos.X, pos.Y))
+ {
+ roomInfo.Waypoints = pos;
+ break;
+ }
+ }
+
+ //---------------------- 随机选择预设 ----------------------
+ RoomPreinstallInfo preinstallInfo;
+ if (EditorPlayManager.IsPlay && roomInfo.RoomType == GameApplication.Instance.DungeonManager.CurrConfig.DesignatedType) //编辑器模式, 指定预设
+ {
+ preinstallInfo = EditorTileMapManager.SelectPreinstall;
+ }
+ else //普通模式
+ {
+ if (roomInfo.RoomSplit.Preinstall.Count == 1)
+ {
+ preinstallInfo = roomInfo.RoomSplit.Preinstall[0];
+ }
+ else
+ {
+ var weights = roomInfo.RoomSplit.Preinstall.Select(info => info.Weight).ToArray();
+ var index = world.Random.RandomWeight(weights);
+ preinstallInfo = roomInfo.RoomSplit.Preinstall[index];
+ }
+ }
+
+ var roomPreinstall = new RoomPreinstall(roomInfo, preinstallInfo);
+ roomInfo.RoomPreinstall = roomPreinstall;
+ //执行预处理操作
+ roomPreinstall.Pretreatment(world);
+ }
+
+
+ private IEnumerator _AutoFillAisleTile(AutoTileConfig config, RoomInfo roomInfo, World world)
+ {
+ foreach (var info in roomInfo.Next)
+ {
+ yield return _AutoFillAisleTile(config, info, world);
+ }
+
// yield break;
//铺过道
foreach (var doorInfo in roomInfo.Doors)
@@ -169,163 +142,39 @@
{
continue;
}
-
- //普通的直线连接
- var doorDir1 = doorInfo.Direction;
- var doorDir2 = doorInfo.ConnectDoor.Direction;
- if (!doorInfo.HasCross)
- {
- var rect = doorInfo.GetAisleRect();
- switch (doorDir1)
- {
- case DoorDirection.E:
- FullHorizontalAisle(config, rect);
- FullHorizontalAisleLeft(config, rect, doorInfo);
- FullHorizontalAisleRight(config, rect, doorInfo.ConnectDoor);
- break;
- case DoorDirection.W:
- FullHorizontalAisle(config, rect);
- FullHorizontalAisleLeft(config, rect, doorInfo.ConnectDoor);
- FullHorizontalAisleRight(config, rect, doorInfo);
- break;
-
- case DoorDirection.S:
- FullVerticalAisle(config, rect);
- FullVerticalAisleUp(config, rect, doorInfo);
- FullVerticalAisleDown(config, rect, doorInfo.ConnectDoor);
- break;
- case DoorDirection.N:
- FullVerticalAisle(config, rect);
- FullVerticalAisleUp(config, rect, doorInfo.ConnectDoor);
- FullVerticalAisleDown(config, rect, doorInfo);
- break;
- }
- }
- else //带交叉点
- {
- //方向, 0横向, 1纵向
- var dir1 = (doorDir1 == DoorDirection.S || doorDir1 == DoorDirection.N) ? 1 : 0;
- var dir2 = (doorDir2 == DoorDirection.S || doorDir2 == DoorDirection.N) ? 1 : 0;
- var aisleRect = doorInfo.GetCrossAisleRect();
- var rect = aisleRect.Rect1;
- var rect2 = aisleRect.Rect2;
-
- //填充交叉点
- FillRect(MapLayer.AutoAisleFloorLayer, config.Floor, aisleRect.Cross.Position, aisleRect.Cross.Size);
+ //铺过道
+ if (doorInfo.AisleFloorCell != null)
+ {
+ yield return 0;
- //墙壁, 0横向, 1纵向
- if (dir1 == 0)
+ //创建image, 这里留两个像素宽高用于描边
+ var aisleImage = Image.Create(doorInfo.AisleFloorRect.Size.X, doorInfo.AisleFloorRect.Size.Y, false, Image.Format.Rgba8);
+ //image.Fill(new Color(0, 1, 0, 0.2f));
+ //填充像素点
+ foreach (var p in doorInfo.AisleFloorCell)
{
- FullHorizontalAisle(config, rect);
- FullHorizontalAisleLeft(config, rect, doorDir1 == DoorDirection.E ? doorInfo : null);
- FullHorizontalAisleRight(config, rect, doorDir1 == DoorDirection.W ? doorInfo : null);
+ _tileRoot.SetCell(MapLayer.AutoFloorLayer, p, config.Floor.SourceId, config.Floor.AutoTileCoords);
+ //_tileRoot.SetCell(MapLayer.CustomTopLayer, p, config.Auto_000_010_000.SourceId, config.Auto_000_010_000.AutoTileCoords);
+ aisleImage.SetPixel(p.X - doorInfo.AisleFloorRect.Position.X, p.Y - doorInfo.AisleFloorRect.Position.Y, new Color(1, 1, 1, 0.5882353F));
}
- else
- {
- FullVerticalAisle(config, rect);
- FullVerticalAisleUp(config, rect, doorDir1 == DoorDirection.S ? doorInfo : null);
- FullVerticalAisleDown(config, rect, doorDir1 == DoorDirection.N ? doorInfo : null);
- }
-
- //墙壁, 0横向, 1纵向
- if (dir2 == 0)
- {
- FullHorizontalAisle(config, rect2);
- FullHorizontalAisleLeft(config, rect2, doorDir2 == DoorDirection.E ? doorInfo.ConnectDoor : null);
- FullHorizontalAisleRight(config, rect2, doorDir2 == DoorDirection.W ? doorInfo.ConnectDoor : null);
- }
- else
- {
- FullVerticalAisle(config, rect2);
- FullVerticalAisleUp(config, rect2, doorDir2 == DoorDirection.S ? doorInfo.ConnectDoor : null);
- FullVerticalAisleDown(config, rect2, doorDir2 == DoorDirection.N ? doorInfo.ConnectDoor : null);
- }
-
- if ((doorDir1 == DoorDirection.N && doorDir2 == DoorDirection.E) || //↑→
- (doorDir2 == DoorDirection.N && doorDir1 == DoorDirection.E))
- {
- FillRect(MapLayer.AutoTopLayer, config.Wall_Out_RT, doorInfo.Cross + new Vector2(0, GameConfig.CorridorWidth - 1), Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_In_RT, doorInfo.Cross + new Vector2(GameConfig.CorridorWidth - 1, -1), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Top, doorInfo.Cross + new Vector2I(0, -1), new Vector2(GameConfig.CorridorWidth - 1, 1));
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Center, doorInfo.Cross, new Vector2(GameConfig.CorridorWidth - 1, 1));
- FillRect(MapLayer.AutoTopLayer, config.Wall_Right, doorInfo.Cross + new Vector2(GameConfig.CorridorWidth - 1, 0), new Vector2(1, GameConfig.CorridorWidth));
-
- FillRect(MapLayer.AutoTopLayer, config.TopMask, doorInfo.Cross - new Vector2I(0, 2), new Vector2(GameConfig.CorridorWidth + 1, 1));
- FillRect(MapLayer.AutoTopLayer, config.TopMask, doorInfo.Cross + new Vector2I(GameConfig.CorridorWidth, -1), new Vector2(1, GameConfig.CorridorWidth + 1));
- }
- else if ((doorDir1 == DoorDirection.E && doorDir2 == DoorDirection.S) || //→↓
- (doorDir2 == DoorDirection.E && doorDir1 == DoorDirection.S))
- {
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Out_RB, doorInfo.Cross + new Vector2I(0, -1), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Right, doorInfo.Cross, Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_In_RB, doorInfo.Cross + new Vector2(GameConfig.CorridorWidth - 1, GameConfig.CorridorWidth - 1), Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_Right, doorInfo.Cross + new Vector2(GameConfig.CorridorWidth - 1, -1), new Vector2(1, GameConfig.CorridorWidth));
- FillRect(MapLayer.AutoTopLayer, config.Wall_Bottom, doorInfo.Cross + new Vector2(0, GameConfig.CorridorWidth - 1), new Vector2(GameConfig.CorridorWidth - 1, 1));
-
- FillRect(MapLayer.AutoTopLayer, config.TopMask, doorInfo.Cross + new Vector2I(GameConfig.CorridorWidth, -1), new Vector2(1, GameConfig.CorridorWidth + 1));
- FillRect(MapLayer.AutoTopLayer, config.TopMask, doorInfo.Cross + new Vector2I(0, GameConfig.CorridorWidth), new Vector2(GameConfig.CorridorWidth + 1, 1));
- }
- else if ((doorDir1 == DoorDirection.S && doorDir2 == DoorDirection.W) || //↓←
- (doorDir2 == DoorDirection.S && doorDir1 == DoorDirection.W))
- {
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Out_LB, doorInfo.Cross + new Vector2(GameConfig.CorridorWidth - 1, -1), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Left, doorInfo.Cross + new Vector2(GameConfig.CorridorWidth - 1, 0), Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_In_LB, doorInfo.Cross + new Vector2(0, GameConfig.CorridorWidth - 1), Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_Left, doorInfo.Cross + new Vector2I(0, -1), new Vector2(1, GameConfig.CorridorWidth));
- FillRect(MapLayer.AutoTopLayer, config.Wall_Bottom, doorInfo.Cross + new Vector2(1, GameConfig.CorridorWidth - 1), new Vector2(GameConfig.CorridorWidth - 1, 1));
-
- FillRect(MapLayer.AutoTopLayer, config.TopMask, doorInfo.Cross + new Vector2I(-1, -1), new Vector2(1, GameConfig.CorridorWidth + 1));
- FillRect(MapLayer.AutoTopLayer, config.TopMask, doorInfo.Cross + new Vector2I(-1, GameConfig.CorridorWidth), new Vector2(GameConfig.CorridorWidth + 1, 1));
- }
- else if ((doorDir1 == DoorDirection.W && doorDir2 == DoorDirection.N) || //←↑
- (doorDir2 == DoorDirection.W && doorDir1 == DoorDirection.N))
- {
- FillRect(MapLayer.AutoTopLayer, config.Wall_Out_LT, doorInfo.Cross + new Vector2(GameConfig.CorridorWidth - 1, GameConfig.CorridorWidth - 1), Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_In_LT, doorInfo.Cross + new Vector2I(0, -1), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Top, doorInfo.Cross + new Vector2(1, -1), new Vector2(GameConfig.CorridorWidth - 1, 1));
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Center, doorInfo.Cross + new Vector2(1, 0), new Vector2(GameConfig.CorridorWidth - 1, 1));
- FillRect(MapLayer.AutoTopLayer, config.Wall_Left, doorInfo.Cross + new Vector2(0, 0), new Vector2(1, GameConfig.CorridorWidth));
-
- FillRect(MapLayer.AutoTopLayer, config.TopMask, doorInfo.Cross - new Vector2I(1, 2), new Vector2(GameConfig.CorridorWidth + 1, 1));
- FillRect(MapLayer.AutoTopLayer, config.TopMask, doorInfo.Cross - new Vector2I(1, 1), new Vector2(1, GameConfig.CorridorWidth + 1));
- }
+ //创建texture
+ var aisleImageTexture = ImageTexture.CreateFromImage(aisleImage);
+ doorInfo.AislePreviewTexture = aisleImageTexture;
+ doorInfo.ConnectDoor.AislePreviewTexture = aisleImageTexture;
}
-
- //先计算范围
- var x = int.MaxValue;
- var y = int.MaxValue;
- var x2 = int.MinValue;
- var y2 = int.MinValue;
- _tempAisleFloorGrid.ForEach((gx, gy, data) =>
- {
- x = Mathf.Min(x, gx);
- x2 = Mathf.Max(x2, gx);
- y = Mathf.Min(y, gy);
- y2 = Mathf.Max(y2, gy);
- return true;
- });
- //创建image, 这里留两个像素宽高用于描边
- var image = Image.Create(x2 - x + 3, y2 - y + 3, false, Image.Format.Rgba8);
- //image.Fill(new Color(0, 1, 0, 0.2f));
- //填充像素点
- _tempAisleFloorGrid.ForEach((gx, gy, data) =>
- {
- var posX = gx - x + 1;
- var posY = gy - y + 1;
- //image.SetPixel(posX, posY, new Color(1, 0, 0, 0.5882353F));
- image.SetPixel(posX, posY, new Color(0, 0, 0, 0.5882353F));
- return true;
- });
- //创建texture
- var imageTexture = ImageTexture.CreateFromImage(image);
- doorInfo.AislePreviewTexture = imageTexture;
- doorInfo.ConnectDoor.AislePreviewTexture = imageTexture;
-
- _tempAisleFloorGrid.Clear();
}
}
+
+ public void GenerateWallAndNavigation(World world, AutoTileConfig config)
+ {
+ var navigation = new NavigationRegion2D();
+ navigation.Name = "Navigation";
+ world.NavigationRoot.AddChild(navigation);
+ TileMapUtils.GenerateTerrain(_tileRoot, navigation, config);
+ }
+
//设置自动地形层的数据
private void SetAutoLayerDataFromList(int layer, int sourceId, RoomInfo roomInfo, List data, Vector2I rectPos, TileSetTerrainInfo terrainInfo)
{
@@ -357,83 +206,6 @@
_tileRoot.SetCell(layer, pos, sourceId, new Vector2I(atlasCoordsX, atlasCoordsY));
}
}
-
- ///
- /// 给TileMap添加轮廓, 该函数为协程函数
- ///
- /// 描轮廓的Tile
- public IEnumerator AddOutlineTile(TileCellData tileCellData)
- {
- var c = 0;
- var rect = _tileRoot.GetUsedRect();
- var endX = rect.End.X + 1;
- var endY = rect.End.Y + 1;
- for (int x = rect.Position.X - 1; x <= endX; x++)
- {
- for (int y = rect.Position.Y - 1; y <= endY; y++)
- {
- if (c++ > 1000) //份帧处理, 不要挤在一帧
- {
- c = 0;
- yield return 0;
- }
- var pos = new Vector2I(x, y);
- var flag1 = _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, pos) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, pos) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoAisleFloorLayer, pos) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, pos) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, pos) != tileCellData.AutoTileCoords);
- if (!flag1) //空地
- {
- var posDown = new Vector2I(pos.X, pos.Y + 1);
- var posTop = new Vector2I(pos.X, pos.Y - 1);
- var posLeft = new Vector2I(pos.X - 1, pos.Y);
- var posRight = new Vector2I(pos.X + 1, pos.Y);
-
- var posLD = new Vector2I(pos.X - 1, pos.Y + 1);
- var posLT = new Vector2I(pos.X - 1, pos.Y - 1);
- var posRD = new Vector2I(pos.X + 1, pos.Y + 1);
- var posRT = new Vector2I(pos.X + 1, pos.Y - 1);
-
- var flag2 = _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, posDown) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, posDown) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, posDown) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, posDown) != tileCellData.AutoTileCoords) ||
-
- _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, posTop) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, posTop) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, posTop) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, posTop) != tileCellData.AutoTileCoords) ||
-
- _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, posLeft) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, posLeft) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, posLeft) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, posLeft) != tileCellData.AutoTileCoords) ||
-
- _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, posRight) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, posRight) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, posRight) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, posRight) != tileCellData.AutoTileCoords) ||
- //
- _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, posLD) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, posLD) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, posLD) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, posLD) != tileCellData.AutoTileCoords) ||
-
- _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, posLT) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, posLT) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, posLT) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, posLT) != tileCellData.AutoTileCoords) ||
-
- _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, posRD) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, posRD) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, posRD) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, posRD) != tileCellData.AutoTileCoords) ||
-
- _tileRoot.GetCellSourceId(MapLayer.AutoFloorLayer, posRT) != -1 ||
- _tileRoot.GetCellSourceId(MapLayer.AutoMiddleLayer, posRT) != -1 ||
- (_tileRoot.GetCellSourceId(MapLayer.AutoTopLayer, posRT) != -1 && _tileRoot.GetCellAtlasCoords(MapLayer.AutoTopLayer, posRT) != tileCellData.AutoTileCoords);
-
- if (flag2) //非空地, 那么说明这个点需要填充 WALL_BLOCK
- {
- _tileRoot.SetCell(MapLayer.AutoTopLayer, pos, tileCellData.SourceId, tileCellData.AutoTileCoords);
- }
- }
- }
- }
- }
//填充tile区域
private void FillRect(int layer, TileCellData data, Vector2 pos, Vector2 size)
@@ -443,10 +215,6 @@
for (int j = 0; j < size.Y; j++)
{
var p = new Vector2I((int)pos.X + i, (int)pos.Y + j);
- if (layer == MapLayer.AutoAisleFloorLayer)
- {
- _tempAisleFloorGrid.Set(p, true);
- }
_tileRoot.SetCell(layer, p, data.SourceId, data.AutoTileCoords);
}
}
@@ -460,892 +228,16 @@
for (int j = 0; j < size.Y; j++)
{
var p = new Vector2I((int)pos.X + i, (int)pos.Y + j);
- if (layer == MapLayer.AutoAisleFloorLayer)
- {
- _tempAisleFloorGrid.Remove(p.X, p.Y);
- }
_tileRoot.SetCell(layer, p, 0);
}
}
}
-
- //横向过道
- private void FullHorizontalAisle(AutoTileConfig config, Rect2 rect)
- {
- FillRect(MapLayer.AutoAisleFloorLayer, config.Floor, rect.Position + new Vector2(0, 1), rect.Size - new Vector2(0, 2));
- FillRect(MapLayer.AutoTopLayer, config.TopMask, rect.Position - new Vector2(0, 2), new Vector2(rect.Size.X, 1));
- FillRect(MapLayer.AutoTopLayer, config.TopMask, rect.Position + new Vector2(0, rect.Size.Y), new Vector2(rect.Size.X, 1));
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Top, rect.Position - new Vector2(0, 1), new Vector2(rect.Size.X, 1));
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Center, rect.Position, new Vector2(rect.Size.X, 1));
- FillRect(MapLayer.AutoTopLayer, config.Wall_Bottom, rect.Position + new Vector2(0, rect.Size.Y - 1), new Vector2(rect.Size.X, 1));
- }
-
- //纵向过道
- private void FullVerticalAisle(AutoTileConfig config, Rect2 rect)
- {
- FillRect(MapLayer.AutoAisleFloorLayer, config.Floor, rect.Position + new Vector2(1, 0), rect.Size - new Vector2(2, 0));
- FillRect(MapLayer.AutoTopLayer, config.TopMask, rect.Position - new Vector2(1, 0), new Vector2(1, rect.Size.Y - 1));
- FillRect(MapLayer.AutoTopLayer, config.TopMask, rect.Position + new Vector2(rect.Size.X, 0), new Vector2(1, rect.Size.Y - 1));
- FillRect(MapLayer.AutoTopLayer, config.Wall_Left, rect.Position, new Vector2(1, rect.Size.Y - 1));
- FillRect(MapLayer.AutoTopLayer, config.Wall_Right, rect.Position + new Vector2(rect.Size.X - 1, 0), new Vector2(1, rect.Size.Y - 1));
- }
-
- //横向过道, 门朝右, 连接方向向左
- private void FullHorizontalAisleLeft(AutoTileConfig config, Rect2 rect, RoomDoorInfo doorInfo = null)
- {
- //左
- ClearRect(MapLayer.AutoTopLayer, rect.Position + new Vector2(-1, 1), new Vector2(1, rect.Size.Y - 2));
- if (doorInfo == null)
- {
- FillRect(MapLayer.AutoAisleFloorLayer, config.Floor, rect.Position + new Vector2(-1, 1),
- new Vector2(1, rect.Size.Y - 2));
- }
- else
- {
- ClearRect(MapLayer.AutoTopLayer, rect.Position - new Vector2(1, 1), new Vector2(2, 4));
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Left, rect.Position - new Vector2(1, 0), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Out_LB, rect.Position - new Vector2(1, 1), Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_Out_LT, rect.Position + new Vector2(-1, 3), Vector2.One);
-
- FillRect(MapLayer.AutoFloorLayer, config.Floor, rect.Position + new Vector2(-1, 1), new Vector2(1, rect.Size.Y - 2));
- //生成门的导航区域
- var x = rect.Position.X * GameConfig.TileCellSize;
- var y = rect.Position.Y * GameConfig.TileCellSize;
-
- var op1 = new Vector2(x - GameConfig.TileCellSize * 1.5f, y + GameConfig.TileCellSize * 1.5f);
- var op2 = new Vector2(x + GameConfig.TileCellSize * 0.5f, y + GameConfig.TileCellSize * 1.5f);
- var op3 = new Vector2(x + GameConfig.TileCellSize * 0.5f, y + GameConfig.TileCellSize * 3f);
- var op4 = new Vector2(x - GameConfig.TileCellSize * 1.5f, y + GameConfig.TileCellSize * 3f);
- AddDoorNavigation(
- doorInfo, op1, op2, op3, op4,
- op1,
- new Vector2(op1.X + GameConfig.TileCellSize, op2.Y),
- new Vector2(op1.X + GameConfig.TileCellSize, op3.Y),
- op4
- );
- }
- }
-
- //横向过道, 门朝左, 连接方向向右
- private void FullHorizontalAisleRight(AutoTileConfig config, Rect2 rect, RoomDoorInfo doorInfo = null)
- {
- //右
- ClearRect(MapLayer.AutoTopLayer, rect.Position + new Vector2(rect.Size.X, 1), new Vector2(1, rect.Size.Y - 2));
- if (doorInfo == null)
- {
- FillRect(MapLayer.AutoAisleFloorLayer, config.Floor, rect.Position + new Vector2(rect.Size.X, 1), new Vector2(1, rect.Size.Y - 2));
- }
- else
- {
- ClearRect(MapLayer.AutoTopLayer, rect.Position + new Vector2(rect.Size.X - 1, -1), new Vector2(2, 4));
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Right, rect.Position + new Vector2(rect.Size.X, 0), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Out_RB, rect.Position + new Vector2(rect.Size.X, -1), Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_Out_RT, rect.Position + new Vector2(rect.Size.X, 3), Vector2.One);
-
- FillRect(MapLayer.AutoFloorLayer, config.Floor, rect.Position + new Vector2(rect.Size.X, 1), new Vector2(1, rect.Size.Y - 2));
- //生成门的导航区域
- var x = rect.Position.X * GameConfig.TileCellSize;
- var y = rect.Position.Y * GameConfig.TileCellSize;
-
- var op1 = new Vector2(x - GameConfig.TileCellSize * 1.5f + (rect.Size.X + 1) * GameConfig.TileCellSize, y + GameConfig.TileCellSize * 1.5f);
- var op2 = new Vector2(x + GameConfig.TileCellSize * 0.5f + (rect.Size.X + 1) * GameConfig.TileCellSize, y + GameConfig.TileCellSize * 1.5f);
- var op3 = new Vector2(x + GameConfig.TileCellSize * 0.5f + (rect.Size.X + 1) * GameConfig.TileCellSize, y + GameConfig.TileCellSize * 3f);
- var op4 = new Vector2(x - GameConfig.TileCellSize * 1.5f + (rect.Size.X + 1) * GameConfig.TileCellSize, y + GameConfig.TileCellSize * 3f);
- AddDoorNavigation(
- doorInfo, op1, op2, op3, op4,
- new Vector2(op2.X - GameConfig.TileCellSize, op1.Y),
- op2,
- op3,
- new Vector2(op2.X - GameConfig.TileCellSize, op4.Y)
- );
- }
- }
-
- //纵向过道, 门朝下, 连接方向向上
- private void FullVerticalAisleUp(AutoTileConfig config, Rect2 rect, RoomDoorInfo doorInfo = null)
- {
- //上
- ClearRect(MapLayer.AutoTopLayer, rect.Position + new Vector2(1, -1), new Vector2(rect.Size.X - 2, 1));
- if (doorInfo == null)
- {
- FillRect(MapLayer.AutoAisleFloorLayer, config.Floor, rect.Position + new Vector2(1, -1), new Vector2(rect.Size.X - 2, 1));
- }
- else
- {
- ClearRect(MapLayer.AutoTopLayer, rect.Position + new Vector2(1, 0), new Vector2(2, 2));
-
- FillRect(MapLayer.AutoTopLayer, config.Wall_Out_RT, rect.Position + new Vector2(0, -1), Vector2.One);
- FillRect(MapLayer.AutoTopLayer, config.Wall_Out_LT, rect.Position + new Vector2(3, -1), Vector2.One);
-
- FillRect(MapLayer.AutoFloorLayer, config.Floor, rect.Position + new Vector2(1, -1), new Vector2(rect.Size.X - 2, 1));
- //生成门的导航区域
- var x = rect.Position.X * GameConfig.TileCellSize;
- var y = rect.Position.Y * GameConfig.TileCellSize;
-
- var op1 = new Vector2(x + GameConfig.TileCellSize * 1.5f, y - GameConfig.TileCellSize * 1f);
- var op2 = new Vector2(x + GameConfig.TileCellSize * 2.5f, y - GameConfig.TileCellSize * 1f);
- var op3 = new Vector2(x + GameConfig.TileCellSize * 2.5f, y + GameConfig.TileCellSize * 0.5f);
- var op4 = new Vector2(x + GameConfig.TileCellSize * 1.5f, y + GameConfig.TileCellSize * 0.5f);
- AddDoorNavigation(
- doorInfo, op1, op2, op3, op4,
- op1,
- op2,
- new Vector2(op3.X, op1.Y + GameConfig.TileCellSize),
- new Vector2(op4.X, op1.Y + GameConfig.TileCellSize)
- );
- }
- }
-
- //纵向过道, 门朝上, 连接方向向下
- private void FullVerticalAisleDown(AutoTileConfig config, Rect2 rect, RoomDoorInfo doorInfo = null)
- {
- //下
- ClearRect(MapLayer.AutoMiddleLayer, rect.Position + new Vector2(1, rect.Size.Y), new Vector2(rect.Size.X - 2, 1));
- if (doorInfo == null)
- {
- FillRect(MapLayer.AutoAisleFloorLayer, config.Floor, rect.Position + new Vector2(1, rect.Size.Y), new Vector2(rect.Size.X - 2, 1));
- }
- else
- {
- ClearRect(MapLayer.AutoTopLayer, rect.Position + new Vector2(1, rect.Size.Y - 2), new Vector2(2, 2));
- ClearRect(MapLayer.AutoMiddleLayer, rect.Position + new Vector2(0, rect.Size.Y - 1), new Vector2(4, 2));
-
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Out_RB, rect.Position + new Vector2(0, rect.Size.Y - 1), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Right, rect.Position + new Vector2(0, rect.Size.Y), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Out_LB, rect.Position + new Vector2(rect.Size.X - 1, rect.Size.Y - 1), Vector2.One);
- FillRect(MapLayer.AutoMiddleLayer, config.Wall_Vertical_Left, rect.Position + new Vector2(rect.Size.X - 1, rect.Size.Y), Vector2.One);
-
- FillRect(MapLayer.AutoFloorLayer, config.Floor, rect.Position + new Vector2(1, rect.Size.Y), new Vector2(rect.Size.X - 2, 1));
- //生成门的导航区域
- var x = rect.Position.X * GameConfig.TileCellSize;
- var y = rect.Position.Y * GameConfig.TileCellSize;
-
- var op1 = new Vector2(x + GameConfig.TileCellSize * 1.5f, y - GameConfig.TileCellSize * 1f + (rect.Size.Y + 1) * GameConfig.TileCellSize);
- var op2 = new Vector2(x + GameConfig.TileCellSize * 2.5f, y - GameConfig.TileCellSize * 1f + (rect.Size.Y + 1) * GameConfig.TileCellSize);
- var op3 = new Vector2(x + GameConfig.TileCellSize * 2.5f, y + GameConfig.TileCellSize * 0.5f + (rect.Size.Y + 1) * GameConfig.TileCellSize);
- var op4 = new Vector2(x + GameConfig.TileCellSize * 1.5f, y + GameConfig.TileCellSize * 0.5f + (rect.Size.Y + 1) * GameConfig.TileCellSize);
- AddDoorNavigation(
- doorInfo, op1, op2, op3, op4,
- new Vector2(op1.X, op3.Y - GameConfig.TileCellSize),
- new Vector2(op2.X, op3.Y - GameConfig.TileCellSize),
- op3,
- op4
- );
- }
- }
-
- ///
- /// 添加房间
- ///
- private void AddDoorNavigation(RoomDoorInfo doorInfo,
- Vector2 op1, Vector2 op2, Vector2 op3, Vector2 op4,
- Vector2 cp1, Vector2 cp2, Vector2 cp3, Vector2 cp4)
- {
- var openPolygonData = new NavigationPolygonData();
- openPolygonData.Type = NavigationPolygonType.Out;
- openPolygonData.SetPoints(new []{ op1, op2, op3, op4 });
-
- var closePolygonData = new NavigationPolygonData();
- closePolygonData.Type = NavigationPolygonType.Out;
- closePolygonData.SetPoints(new []{ cp1, cp2, cp3, cp4 });
-
- _connectNavigationItemList.Add(new DoorNavigationInfo(doorInfo, openPolygonData, closePolygonData));
- }
-
- ///
- /// 计算并动生成导航区域, layer 为需要计算的层级,如果没有设置 floorAtlasCoords,则该 layer 下不为空的地砖都将视为可行走区域
- ///
- public void GenerateNavigationPolygon(int layer)
- {
- _usePoints.Clear();
- _polygonDataList.Clear();
-
- try
- {
- var size = new Vector2(GameConfig.TileCellSize, GameConfig.TileCellSize);
-
- var rect = _tileRoot.GetUsedRect();
-
- var x = rect.Position.X;
- var y = rect.Position.Y;
- var w = rect.Size.X;
- var h = rect.Size.Y;
-
- for (int j = y; j < h; j++)
- {
- for (int i = x; i < w; i++)
- {
- if (IsWayTile(layer, i, j))
- {
- if (!_usePoints.Contains(new Vector2I(i, j)))
- {
- NavigationPolygonData polygonData = null;
-
- if (!IsWayTile(layer, i, j - 1))
- {
- polygonData = CalcOutline(layer, i, j, size);
- }
- else if (!IsWayTile(layer, i, j + 1))
- {
- polygonData = CalcInline(layer, i, j, size);
- }
-
- if (polygonData != null)
- {
- _polygonDataList.Add(polygonData);
- }
- }
- }
- }
- }
-
- _generateNavigationResult = new GenerateNavigationResult(true);
- }
- catch (NavigationPointException e)
- {
- _usePoints.Clear();
- _polygonDataList.Clear();
- Debug.Log(e.Message);
- _generateNavigationResult = new GenerateNavigationResult(false, e);
- }
- }
-
- ///
- /// 获取生成导航区域操作的结果, 如果没有调用过 GenerateNavigationPolygon() 函数, 则返回 null
- ///
- ///
- public GenerateNavigationResult GetGenerateNavigationResult()
- {
- return _generateNavigationResult;
- }
-
- ///
- /// 将导航区域挂载到 navigationRoot 上
- ///
- public void MountNavigationPolygon(Node2D navigationRoot)
- {
- //TestData();
- // 在 Godot4.0_rc6 中 如果将所有点都放在 NavigationPolygon 里面, 即使点是对的, 但调用 MakePolygonsFromOutlines 还是可能会报错, 这应该是个bug
-
- //通过 GenerateNavigationPolygon() 计算出来的导航区域
- for (var i = 0; i < _polygonDataList.Count; i++)
- {
- var polygonData = _polygonDataList[i];
- CreateNavigationRegion(navigationRoot, polygonData);
- }
-
- //门占用区域的导航区域
- for (var i = 0; i < _connectNavigationItemList.Count; i++)
- {
- var item = _connectNavigationItemList[i];
- item.CloseNavigationNode = CreateNavigationRegion(navigationRoot, item.CloseNavigationData);
- item.OpenNavigationNode = CreateNavigationRegion(navigationRoot, item.OpenNavigationData);
- item.CloseNavigationNode.Enabled = false;
- item.OpenNavigationNode.Enabled = false;
- item.DoorInfo.Navigation = item;
- }
- }
-
- //创建导航区域
- private NavigationRegion2D CreateNavigationRegion(Node2D navigationRoot, NavigationPolygonData polygonData)
- {
- var polygon = new NavigationPolygon();
- polygon.CellSize = GameConfig.NavigationCellSize;
- polygon.AddOutline(polygonData.GetPoints());
- polygon.MakePolygonsFromOutlines();
- //var param = new NavigationMeshSourceGeometryData2D();
- //NavigationServer2D.BakeFromSourceGeometryData(polygon, param);
- var navigationPolygon = new NavigationRegion2D();
- navigationPolygon.Name = "NavigationRegion" + (navigationRoot.GetChildCount() + 1);
- navigationPolygon.NavigationPolygon = polygon;
- navigationRoot.AddChild(navigationPolygon);
- return navigationPolygon;
- }
-
- ///
- /// 获取房间内的导航点数据
- ///
- public NavigationPolygonData[] GetPolygonData()
- {
- return _polygonDataList.ToArray();
- }
-
- ///
- /// 设置导航网格数据
- ///
- ///
- public void SetPolygonData(List list)
- {
- _polygonDataList.Clear();
- _polygonDataList.AddRange(list);
- _generateNavigationResult = new GenerateNavigationResult(true);
- }
-
- ///
- /// 清除生成的导航数据
- ///
- public void ClearPolygonData()
- {
- _polygonDataList.Clear();
- _generateNavigationResult = null;
- }
-
- ///
- /// 获取连接门导航数据, 必须要调用 AutoFillRoomTile() 函数才有数据
- ///
- public NavigationPolygonData[] GetConnectDoorPolygonData()
- {
- var array = new NavigationPolygonData[_connectNavigationItemList.Count];
- for (var i = 0; i < _connectNavigationItemList.Count; i++)
- {
- array[i] = _connectNavigationItemList[i].OpenNavigationData;
- }
- return array;
- }
-
- ///
- /// 设置地面的地砖,将影响导航网格计算
- ///
- public void SetFloorAtlasCoords(List floorAtlasCoords)
- {
- _floorAtlasCoords = floorAtlasCoords;
- }
///
/// 返回指定位置的Tile是否为可以行走
///
private bool IsWayTile(int layer, int x, int y)
{
- if (_floorAtlasCoords == null || _floorAtlasCoords.Count == 0)
- {
- return _tileRoot.GetCellSourceId(layer, new Vector2I(x, y)) != -1;
- }
-
- var result = _tileRoot.GetCellAtlasCoords(layer, new Vector2I(x, y));
- return _floorAtlasCoords.Contains(result);
- }
-
- //计算导航网格外轮廓
- private NavigationPolygonData CalcOutline(int layer, int i, int j, Vector2 size)
- {
- var polygonData = new NavigationPolygonData();
- polygonData.Type = NavigationPolygonType.Out;
- var points = new List();
- // 0:右, 1:下, 2:左, 3:上
- var dir = 0;
- var offset = new Vector2(size.X * 0.5f, size.Y * 0.5f);
- //找到路, 向右开始找边界
- var startPos = new Vector2I(i, j);
-
- var tempI = i;
- var tempJ = j;
-
- while (true)
- {
- switch (dir)
- {
- case 0: //右
- {
- if (IsWayTile(layer, tempI, tempJ - 1)) //先向上找
- {
- dir = 3;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- PutUsePoint(pos);
-
- tempJ--;
- break;
- }
- else if (IsWayTile(layer, tempI + 1, tempJ)) //再向右找
- {
- if (points.Count == 0)
- {
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- }
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- PutUsePoint(new Vector2I(tempI, tempJ));
- tempI++;
- break;
- }
- else if (IsWayTile(layer, tempI, tempJ + 1)) //向下找
- {
- dir = 1;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- PutUsePoint(pos);
-
- tempJ++;
- break;
- }
-
- throw new NavigationPointException(new Vector2I(tempI, tempJ), "生成导航多边形发生错误! 点: " + new Vector2I(tempI, tempJ) + "发生交错!");
- }
- case 1: //下
- {
- if (IsWayTile(layer, tempI + 1, tempJ)) //先向右找
- {
- dir = 0;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- PutUsePoint(pos);
-
- tempI++;
- break;
- }
- else if (IsWayTile(layer, tempI, tempJ + 1)) //再向下找
- {
- if (points.Count == 0)
- {
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- }
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- PutUsePoint(new Vector2I(tempI, tempJ));
- tempJ++;
- break;
- }
- else if (IsWayTile(layer, tempI - 1, tempJ)) //向左找
- {
- dir = 2;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- PutUsePoint(pos);
-
- tempI--;
- break;
- }
-
- throw new NavigationPointException(new Vector2I(tempI, tempJ), "生成导航多边形发生错误! 点: " + new Vector2I(tempI, tempJ) + "发生交错!");
- }
- case 2: //左
- {
- if (IsWayTile(layer, tempI, tempJ + 1)) //先向下找
- {
- dir = 1;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- PutUsePoint(pos);
-
- tempJ++;
- break;
- }
- else if (IsWayTile(layer, tempI - 1, tempJ)) //再向左找
- {
- if (points.Count == 0)
- {
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- }
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- PutUsePoint(new Vector2I(tempI, tempJ));
- tempI--;
- break;
- }
- else if (IsWayTile(layer, tempI, tempJ - 1)) //向上找
- {
- dir = 3;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- PutUsePoint(pos);
-
- tempJ--;
- break;
- }
-
- throw new NavigationPointException(new Vector2I(tempI, tempJ), "生成导航多边形发生错误! 点: " + new Vector2I(tempI, tempJ) + "发生交错!");
- }
- case 3: //上
- {
- if (IsWayTile(layer, tempI - 1, tempJ)) //先向左找
- {
- dir = 2;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- PutUsePoint(pos);
-
- tempI--;
- break;
- }
- else if (IsWayTile(layer, tempI, tempJ - 1)) //再向上找
- {
- if (points.Count == 0)
- {
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- }
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- PutUsePoint(new Vector2I(tempI, tempJ));
- tempJ--;
- break;
- }
- else if (IsWayTile(layer, tempI + 1, tempJ)) //向右找
- {
- dir = 0;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- PutUsePoint(pos);
-
- tempI++;
- break;
- }
-
- throw new NavigationPointException(new Vector2I(tempI, tempJ), "生成导航多边形发生错误! 点: " + new Vector2I(tempI, tempJ) + "发生交错!");
- }
- }
- }
- }
-
- //计算导航网格内轮廓
- private NavigationPolygonData CalcInline(int layer, int i, int j, Vector2 size)
- {
- var polygonData = new NavigationPolygonData();
- polygonData.Type = NavigationPolygonType.In;
- var points = new List();
- // 0:右, 1:下, 2:左, 3:上
- var dir = 0;
- var offset = new Vector2(size.X * 0.5f, size.Y * 0.5f);
- //找到路, 向右开始找边界
- var startPos = new Vector2I(i - 1, j);
- PutUsePoint(startPos);
-
- var tempI = i;
- var tempJ = j;
-
- while (true)
- {
- switch (dir)
- {
- case 0: //右
- {
- if (IsWayTile(layer, tempI, tempJ + 1)) //向下找
- {
- dir = 1;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- PutUsePoint(pos);
-
- tempJ++;
- break;
- }
- else if (IsWayTile(layer, tempI + 1, tempJ)) //再向右找
- {
- if (points.Count == 0)
- {
- //points.Add(new Vector2((tempI - 1) * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2((tempI - 1) * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- }
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- PutUsePoint(new Vector2I(tempI, tempJ));
- tempI++;
- break;
- }
- else if (IsWayTile(layer, tempI, tempJ - 1)) //先向上找
- {
- dir = 3;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- PutUsePoint(pos);
-
- tempJ--;
- break;
- }
-
- throw new NavigationPointException(new Vector2I(tempI, tempJ), "生成导航多边形发生错误! 点: " + new Vector2I(tempI, tempJ) + "发生交错!");
- }
- case 1: //下
- {
- if (IsWayTile(layer, tempI - 1, tempJ)) //向左找
- {
- dir = 2;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- PutUsePoint(pos);
-
- tempI--;
- break;
- }
- else if (IsWayTile(layer, tempI, tempJ + 1)) //再向下找
- {
- if (points.Count == 0)
- {
- points.Add(new Vector2((tempI - 1) * size.X + offset.X, tempJ * size.Y + offset.Y));
- }
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- PutUsePoint(new Vector2I(tempI, tempJ));
- tempJ++;
- break;
- }
- else if (IsWayTile(layer, tempI + 1, tempJ)) //先向右找
- {
- dir = 0;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- PutUsePoint(pos);
-
- tempI++;
- break;
- }
-
- throw new NavigationPointException(new Vector2I(tempI, tempJ), "生成导航多边形发生错误! 点: " + new Vector2I(tempI, tempJ) + "发生交错!");
- }
- case 2: //左
- {
- if (IsWayTile(layer, tempI, tempJ - 1)) //向上找
- {
- dir = 3;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- PutUsePoint(pos);
-
- tempJ--;
- break;
- }
- else if (IsWayTile(layer, tempI - 1, tempJ)) //再向左找
- {
- if (points.Count == 0)
- {
- points.Add(new Vector2((tempI - 1) * size.X + offset.X, tempJ * size.Y + offset.Y));
- }
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- PutUsePoint(new Vector2I(tempI, tempJ));
- tempI--;
- break;
- }
- else if (IsWayTile(layer, tempI, tempJ + 1)) //先向下找
- {
- dir = 1;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- PutUsePoint(pos);
-
- tempJ++;
- break;
- }
-
- throw new NavigationPointException(new Vector2I(tempI, tempJ), "生成导航多边形发生错误! 点: " + new Vector2I(tempI, tempJ) + "发生交错!");
- }
- case 3: //上
- {
- if (IsWayTile(layer, tempI + 1, tempJ)) //向右找
- {
- dir = 0;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- //points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y * 2));
- PutUsePoint(pos);
-
- tempI++;
- break;
- }
- else if (IsWayTile(layer, tempI, tempJ - 1)) //再向上找
- {
- if (points.Count == 0)
- {
- points.Add(new Vector2((tempI - 1) * size.X + offset.X, tempJ * size.Y + offset.Y));
- }
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- PutUsePoint(new Vector2I(tempI, tempJ));
- tempJ--;
- break;
- }
- else if (IsWayTile(layer, tempI - 1, tempJ)) //先向左找
- {
- dir = 2;
-
- var pos = new Vector2I(tempI, tempJ);
- if (points.Count > 1 && pos == startPos)
- {
- polygonData.SetPoints(points.ToArray());
- return polygonData;
- }
-
- points.Add(new Vector2(tempI * size.X + offset.X, tempJ * size.Y + offset.Y));
- PutUsePoint(pos);
-
- tempI--;
- break;
- }
-
- throw new NavigationPointException(new Vector2I(tempI, tempJ), "生成导航多边形发生错误! 点: " + new Vector2I(tempI, tempJ) + "发生交错!");
- }
- }
- }
- }
-
- //记录导航网格中已经使用过的坐标
- private void PutUsePoint(Vector2I pos)
- {
- if (_usePoints.Contains(pos))
- {
- throw new NavigationPointException(pos, "生成导航多边形发生错误! 点: " + pos + "发生交错!");
- }
-
- _usePoints.Add(pos);
+ return _tileRoot.GetCellSourceId(layer, new Vector2I(x, y)) != -1;
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/MapLayer.cs b/DungeonShooting_Godot/src/framework/map/MapLayer.cs
new file mode 100644
index 0000000..10ad947
--- /dev/null
+++ b/DungeonShooting_Godot/src/framework/map/MapLayer.cs
@@ -0,0 +1,45 @@
+
+public static class MapLayer
+{
+ ///
+ /// 自动图块地板层
+ ///
+ public const int AutoFloorLayer = 0;
+ ///
+ /// 自定义图块地板层1
+ ///
+ public const int CustomFloorLayer1 = AutoFloorLayer + 1;
+ ///
+ /// 自定义图块地板层2
+ ///
+ public const int CustomFloorLayer2 = CustomFloorLayer1 + 1;
+ ///
+ /// 自定义图块地板层3
+ ///
+ public const int CustomFloorLayer3 = CustomFloorLayer2 + 1;
+ ///
+ /// 自动图块中间层
+ ///
+ public const int AutoMiddleLayer = CustomFloorLayer3 + 1;
+ ///
+ /// 自定义图块中间层1
+ ///
+ public const int CustomMiddleLayer1 = AutoMiddleLayer + 1;
+ ///
+ /// 自定义图块中间层2
+ ///
+ public const int CustomMiddleLayer2 = CustomMiddleLayer1 + 1;
+ ///
+ /// 自动图块顶层
+ ///
+ public const int AutoTopLayer = CustomMiddleLayer2 + 1;
+ ///
+ /// 自定义图块顶层
+ ///
+ public const int CustomTopLayer = AutoTopLayer + 1;
+
+ ///
+ /// 标记数据层, 特殊层, 不会出现在 TileMap 中
+ ///
+ public const int MarkLayer = 9999;
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/TileMapUtils.cs b/DungeonShooting_Godot/src/framework/map/TileMapUtils.cs
new file mode 100644
index 0000000..5c3a869
--- /dev/null
+++ b/DungeonShooting_Godot/src/framework/map/TileMapUtils.cs
@@ -0,0 +1,231 @@
+
+using System.Collections.Generic;
+using System.Linq;
+using Godot;
+using Godot.Collections;
+
+public static class TileMapUtils
+{
+ public const int MainSource = 0;
+ public const int MainTerrainSet = 0;
+ public const int MainTerrain = 0;
+
+ ///
+ /// 生成自动图块和地形, 并烘焙好导航网格
+ ///
+ public static Rect2I GenerateTerrain(TileMap tileMap, NavigationRegion2D navigationRegion, AutoTileConfig autoTileConfig)
+ {
+ var list = new List();
+ var xStart = int.MaxValue;
+ var yStart = int.MaxValue;
+ var xEnd = int.MinValue;
+ var yEnd = int.MinValue;
+
+ var temp = tileMap.GetUsedCells(MapLayer.AutoFloorLayer);
+ var autoCellLayerGrid = temp.ToHashSet();
+ foreach (var (x, y) in autoCellLayerGrid)
+ {
+ //计算范围
+ if (x < xStart)
+ xStart = x;
+ else if (x > xEnd)
+ xEnd = x;
+
+ if (y < yStart)
+ yStart = y;
+ else if (y > yEnd)
+ yEnd = y;
+
+ //填充墙壁
+ if (!autoCellLayerGrid.Contains(new Vector2I(x, y - 1)))
+ {
+ var left = autoCellLayerGrid.Contains(new Vector2I(x - 1, y - 1));
+ var right = autoCellLayerGrid.Contains(new Vector2I(x + 1, y - 1));
+ if (left && right)
+ {
+ var tileCellData1 = autoTileConfig.Wall_Vertical_SingleTop;
+ tileMap.SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 2), tileCellData1.SourceId, tileCellData1.AutoTileCoords);
+ var tileCellData2 = autoTileConfig.Wall_Vertical_SingleBottom;
+ tileMap.SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 1), tileCellData2.SourceId, tileCellData2.AutoTileCoords);
+ }
+ else if (left)
+ {
+ var tileCellData1 = autoTileConfig.Wall_Vertical_LeftTop;
+ tileMap.SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 2), tileCellData1.SourceId, tileCellData1.AutoTileCoords);
+ var tileCellData2 = autoTileConfig.Wall_Vertical_LeftBottom;
+ tileMap.SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 1), tileCellData2.SourceId, tileCellData2.AutoTileCoords);
+ }
+ else if (right)
+ {
+ var tileCellData1 = autoTileConfig.Wall_Vertical_RightTop;
+ tileMap.SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 2), tileCellData1.SourceId, tileCellData1.AutoTileCoords);
+ var tileCellData2 = autoTileConfig.Wall_Vertical_RightBottom;
+ tileMap.SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 1), tileCellData2.SourceId, tileCellData2.AutoTileCoords);
+ }
+ else
+ {
+ var tileCellData1 = autoTileConfig.Wall_Vertical_CenterTop;
+ tileMap.SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 2), tileCellData1.SourceId, tileCellData1.AutoTileCoords);
+ var tileCellData2 = autoTileConfig.Wall_Vertical_CenterBottom;
+ tileMap.SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 1), tileCellData2.SourceId, tileCellData2.AutoTileCoords);
+ }
+ }
+ }
+
+ //绘制临时边界
+ var temp1 = new List();
+ for (var x = xStart - 3; x <= xEnd + 3; x++)
+ {
+ var p1 = new Vector2I(x, yStart - 5);
+ var p2 = new Vector2I(x, yEnd + 3);
+ temp1.Add(p1);
+ temp1.Add(p2);
+ //上横
+ tileMap.SetCell(MapLayer.AutoFloorLayer, p1, autoTileConfig.TopMask.SourceId, autoTileConfig.TopMask.AutoTileCoords);
+ //下横
+ tileMap.SetCell(MapLayer.AutoFloorLayer, p2, autoTileConfig.TopMask.SourceId, autoTileConfig.TopMask.AutoTileCoords);
+ }
+ for (var y = yStart - 5; y <= yEnd + 3; y++)
+ {
+ var p1 = new Vector2I(xStart - 3, y);
+ var p2 = new Vector2I(xEnd + 3, y);
+ temp1.Add(p1);
+ temp1.Add(p2);
+ //左竖
+ tileMap.SetCell(MapLayer.AutoFloorLayer, p1, autoTileConfig.TopMask.SourceId, autoTileConfig.TopMask.AutoTileCoords);
+ //右竖
+ tileMap.SetCell(MapLayer.AutoFloorLayer, p2, autoTileConfig.TopMask.SourceId, autoTileConfig.TopMask.AutoTileCoords);
+ }
+
+ //计算需要绘制的图块
+ var temp2 = new List();
+ for (var x = xStart - 2; x <= xEnd + 2; x++)
+ {
+ for (var y = yStart - 4; y <= yEnd + 2; y++)
+ {
+ if (!autoCellLayerGrid.Contains(new Vector2I(x, y)) && !autoCellLayerGrid.Contains(new Vector2I(x, y + 1)) && !autoCellLayerGrid.Contains(new Vector2I(x, y + 2)))
+ {
+ list.Add(new Vector2I(x, y));
+ if (!IsMaskCollisionGround(autoCellLayerGrid, x, y))
+ {
+ temp2.Add(new Vector2I(x, y));
+ }
+ }
+ }
+ }
+ var arr = new Array(list);
+ //绘制自动图块
+ tileMap.SetCellsTerrainConnect(MapLayer.AutoFloorLayer, arr, MainTerrainSet, MainTerrain, false);
+
+ //擦除临时边界
+ for (var i = 0; i < temp1.Count; i++)
+ {
+ tileMap.EraseCell(MapLayer.AutoFloorLayer, temp1[i]);
+ }
+
+ //计算区域
+ var rect = Utils.CalcRect(autoCellLayerGrid);
+ if (rect.Size != Vector2I.Zero)
+ {
+ rect.Position -= new Vector2I(2, 3);
+ rect.Size += new Vector2I(4, 5);
+ }
+
+ //开始绘制导航网格
+ GenerateNavigation(navigationRegion, rect.Position, rect.Size);
+
+ //擦除临时边界2
+ for (var i = 0; i < temp2.Count; i++)
+ {
+ tileMap.EraseCell(MapLayer.AutoFloorLayer, temp2[i]);
+ }
+
+ //将墙壁移动到指定层
+ MoveTerrainCell(tileMap, autoTileConfig, autoCellLayerGrid, rect.Position, rect.Size);
+ return rect;
+ }
+
+ private static bool IsMaskCollisionGround(HashSet autoCellLayerGrid, int x, int y)
+ {
+ for (var i = -2; i <= 2; i++)
+ {
+ for (var j = -2; j <= 4; j++)
+ {
+ if (autoCellLayerGrid.Contains(new Vector2I(x + i, y + j)))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ //生成导航网格
+ private static void GenerateNavigation(NavigationRegion2D navigationRegion, Vector2I currRoomPosition, Vector2I currRoomSize)
+ {
+ var navigationPolygon = navigationRegion.NavigationPolygon;
+ if (navigationPolygon != null)
+ {
+ navigationPolygon.Clear();
+ navigationPolygon.ClearPolygons();
+ navigationPolygon.ClearOutlines();
+ }
+ else
+ {
+ navigationPolygon = ResourceManager.Load(ResourcePath.resource_navigation_NavigationPolygon_tres);
+ navigationRegion.NavigationPolygon = navigationPolygon;
+ }
+
+ var endPos = currRoomPosition + currRoomSize;
+ navigationPolygon.AddOutline(new []
+ {
+ currRoomPosition * GameConfig.TileCellSize,
+ new Vector2(endPos.X, currRoomPosition.Y) * GameConfig.TileCellSize,
+ endPos * GameConfig.TileCellSize,
+ new Vector2(currRoomPosition.X, endPos.Y) * GameConfig.TileCellSize
+ });
+ navigationRegion.BakeNavigationPolygon(false);
+ }
+
+
+ //将自动生成的图块从 MapLayer.AutoFloorLayer 移动到指定图层中
+ private static void MoveTerrainCell(TileMap tileMap, AutoTileConfig autoTileConfig, HashSet autoCellLayerGrid, Vector2I currRoomPosition, Vector2I currRoomSize)
+ {
+ tileMap.ClearLayer(MapLayer.AutoTopLayer);
+ tileMap.ClearLayer(MapLayer.AutoMiddleLayer);
+
+ var x = currRoomPosition.X;
+ var y = currRoomPosition.Y - 1;
+ var w = currRoomSize.X;
+ var h = currRoomSize.Y + 1;
+
+ for (var i = 0; i < w; i++)
+ {
+ for (var j = 0; j < h; j++)
+ {
+ var pos = new Vector2I(x + i, y + j);
+ if (!autoCellLayerGrid.Contains(pos) && tileMap.GetCellSourceId(MapLayer.AutoFloorLayer, pos) != -1)
+ {
+ var atlasCoords = tileMap.GetCellAtlasCoords(MapLayer.AutoFloorLayer, pos);
+ var layer = autoTileConfig.GetLayer(atlasCoords);
+ if (layer == MapLayer.AutoMiddleLayer)
+ {
+ layer = MapLayer.AutoMiddleLayer;
+ }
+ else if (layer == MapLayer.AutoTopLayer)
+ {
+ layer = MapLayer.AutoTopLayer;
+ }
+ else
+ {
+ Debug.LogError($"异常图块: {pos}, 这个图块的图集坐标'{atlasCoords}'不属于'MiddleMapLayer'和'TopMapLayer'!");
+ continue;
+ }
+ tileMap.EraseCell(MapLayer.AutoFloorLayer, pos);
+ tileMap.SetCell(layer, pos, MainSource, atlasCoords);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/fog/FogMask.cs b/DungeonShooting_Godot/src/framework/map/fog/FogMask.cs
index 86fc1b6..828937c 100644
--- a/DungeonShooting_Godot/src/framework/map/fog/FogMask.cs
+++ b/DungeonShooting_Godot/src/framework/map/fog/FogMask.cs
@@ -108,7 +108,7 @@
private void HandlerTransition(Vector2I position, Vector2I size, Image image)
{
- var tileMap = GameApplication.Instance.World.TileRoot;
+ var tileMap = World.Current.TileRoot;
var autoConfig = GameApplication.Instance.DungeonManager.AutoTileConfig;
var wallCoords = autoConfig.TopMask.AutoTileCoords;
var (x, y) = position;
@@ -241,7 +241,6 @@
{
return tileMap.GetCellSourceId(MapLayer.AutoFloorLayer, pos) != -1 ||
tileMap.GetCellSourceId(MapLayer.AutoMiddleLayer, pos) != -1 ||
- tileMap.GetCellSourceId(MapLayer.AutoTopLayer, pos) != -1 ||
- tileMap.GetCellSourceId(MapLayer.AutoAisleFloorLayer, pos) != -1;
+ tileMap.GetCellSourceId(MapLayer.AutoTopLayer, pos) != -1;
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/fog/FogMaskHandler.cs b/DungeonShooting_Godot/src/framework/map/fog/FogMaskHandler.cs
index bff2c40..8b5f06c 100644
--- a/DungeonShooting_Godot/src/framework/map/fog/FogMaskHandler.cs
+++ b/DungeonShooting_Godot/src/framework/map/fog/FogMaskHandler.cs
@@ -90,48 +90,50 @@
}
//Debug.Log("RefreshRoomFog: " + roomInfo.Id);
var fogMask = roomInfo.RoomFogMask;
-
- if (!fogMask.IsExplored) //未探索该区域
+ if (fogMask != null)
{
- fogMask.IsExplored = true;
- fogMask.TransitionAlpha(0, 1);
-
- //小地图亮起该房间
- roomInfo.PreviewSprite.Visible = true;
-
- //刷新预览区域
- foreach (var roomInfoDoor in roomInfo.Doors)
+ if (!fogMask.IsExplored) //未探索该区域
{
- if (roomInfoDoor.AisleFogMask.IsExplored) //探索过, 执行过道刷新逻辑
+ fogMask.IsExplored = true;
+ fogMask.TransitionAlpha(0, 1);
+
+ //小地图亮起该房间
+ roomInfo.PreviewSprite.Visible = true;
+
+ //刷新预览区域
+ foreach (var roomInfoDoor in roomInfo.Doors)
{
- _RefreshAisleFog(roomInfoDoor);
- }
- else //未探索
- {
- //显示预览过道
- roomInfoDoor.PreviewRoomFogMask.SetActive(false);
- roomInfoDoor.PreviewAisleFogMask.SetActive(true);
- roomInfoDoor.PreviewAisleFogMask.TransitionAlpha(0, 1);
+ if (roomInfoDoor.AisleFogMask.IsExplored) //探索过, 执行过道刷新逻辑
+ {
+ _RefreshAisleFog(roomInfoDoor);
+ }
+ else //未探索
+ {
+ //显示预览过道
+ roomInfoDoor.PreviewRoomFogMask.SetActive(false);
+ roomInfoDoor.PreviewAisleFogMask.SetActive(true);
+ roomInfoDoor.PreviewAisleFogMask.TransitionAlpha(0, 1);
+ }
}
}
- }
- else //已经探索过
- {
- //变亮
- fogMask.TransitionAlpha(GameConfig.DarkFogAlpha, 1);
-
- foreach (var roomInfoDoor in roomInfo.Doors)
+ else //已经探索过
{
- if (roomInfoDoor.AisleFogMask.IsExplored) //探索过, 执行过道刷新逻辑
+ //变亮
+ fogMask.TransitionAlpha(GameConfig.DarkFogAlpha, 1);
+
+ foreach (var roomInfoDoor in roomInfo.Doors)
{
- _RefreshAisleFog(roomInfoDoor);
- }
- else //未探索
- {
- //显示预览过道
- roomInfoDoor.PreviewRoomFogMask.SetActive(false);
- roomInfoDoor.PreviewAisleFogMask.SetActive(true);
- roomInfoDoor.PreviewAisleFogMask.TransitionAlpha(1);
+ if (roomInfoDoor.AisleFogMask.IsExplored) //探索过, 执行过道刷新逻辑
+ {
+ _RefreshAisleFog(roomInfoDoor);
+ }
+ else //未探索
+ {
+ //显示预览过道
+ roomInfoDoor.PreviewRoomFogMask.SetActive(false);
+ roomInfoDoor.PreviewAisleFogMask.SetActive(true);
+ roomInfoDoor.PreviewAisleFogMask.TransitionAlpha(1);
+ }
}
}
}
diff --git a/DungeonShooting_Godot/src/framework/map/fog/PreviewFogMask.cs b/DungeonShooting_Godot/src/framework/map/fog/PreviewFogMask.cs
index 2c154a3..6c00338 100644
--- a/DungeonShooting_Godot/src/framework/map/fog/PreviewFogMask.cs
+++ b/DungeonShooting_Godot/src/framework/map/fog/PreviewFogMask.cs
@@ -17,6 +17,7 @@
private static bool _initTexture;
private static Texture2D _previewAisle;
private static Texture2D _previewAisle_ew;
+ private static Texture2D _previewAisle_s;
private static Texture2D _previewRoom;
private static Texture2D _previewRoom_n;
private static Texture2D _previewRoom_ew;
@@ -50,6 +51,7 @@
_previewRoom_n = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_map_PreviewTransition3_png);
_previewRoom_ew = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_map_PreviewTransition4_png);
_previewAisle_ew = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_map_PreviewTransition5_png);
+ _previewAisle_s = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_map_PreviewTransition6_png);
}
///
@@ -97,13 +99,13 @@
if (fogType == PreviewFogType.Aisle)
{
Texture = _previewAisle;
- Position = globalPosition + new Vector2(0, -GameConfig.TileCellSize * 2);
+ Position = globalPosition + new Vector2(0, -GameConfig.TileCellSize * 3);
RotationDegrees = 0;
}
else
{
Texture = _previewRoom_n;
- Position = globalPosition + new Vector2(0, GameConfig.TileCellSize * 0.5f);
+ Position = globalPosition;
RotationDegrees = 180;
}
}
@@ -111,8 +113,8 @@
{
if (fogType == PreviewFogType.Aisle)
{
- Texture = _previewAisle;
- Position = globalPosition;
+ Texture = _previewAisle_s;
+ Position = globalPosition + new Vector2(0, GameConfig.TileCellSize * 0.5f);
RotationDegrees = 180;
}
else
diff --git a/DungeonShooting_Godot/src/framework/map/liquid/LiquidCanvas.cs b/DungeonShooting_Godot/src/framework/map/liquid/LiquidCanvas.cs
index 75550b7..1b1ab92 100644
--- a/DungeonShooting_Godot/src/framework/map/liquid/LiquidCanvas.cs
+++ b/DungeonShooting_Godot/src/framework/map/liquid/LiquidCanvas.cs
@@ -201,6 +201,7 @@
brush.PixelWidth,
Mathf.Abs(Mathf.Sin(offset.Angle() - rotation + Mathf.Pi * 0.5f))
);
+ maxL = Mathf.Max(1, maxL);
var len = offset.Length();
if (len > maxL) //距离太大了, 需要补间
{
diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/PreinstallMarkManager.cs b/DungeonShooting_Godot/src/framework/map/preinstall/PreinstallMarkManager.cs
index f292bd4..45501bf 100644
--- a/DungeonShooting_Godot/src/framework/map/preinstall/PreinstallMarkManager.cs
+++ b/DungeonShooting_Godot/src/framework/map/preinstall/PreinstallMarkManager.cs
@@ -102,6 +102,10 @@
{
return "出生标记";
}
+ else if (type == SpecialMarkType.OutPoint)
+ {
+ return "出口标记";
+ }
return string.Empty;
}
diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
index 47a70cc..827259a 100644
--- a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
+++ b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
@@ -170,6 +170,10 @@
{
}
+ else if (markInfo.SpecialMarkType == SpecialMarkType.OutPoint) //出口标记
+ {
+
+ }
else
{
Debug.LogError("暂未支持的类型: " + markInfo.SpecialMarkType);
diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/SpecialMarkType.cs b/DungeonShooting_Godot/src/framework/map/preinstall/SpecialMarkType.cs
index 5af5be5..385cff3 100644
--- a/DungeonShooting_Godot/src/framework/map/preinstall/SpecialMarkType.cs
+++ b/DungeonShooting_Godot/src/framework/map/preinstall/SpecialMarkType.cs
@@ -12,4 +12,8 @@
/// 玩家出生点
///
BirthPoint,
+ ///
+ /// 地牢出口
+ ///
+ OutPoint,
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/room/RoomDoorInfo.cs b/DungeonShooting_Godot/src/framework/map/room/RoomDoorInfo.cs
index a420fe5..c346f93 100644
--- a/DungeonShooting_Godot/src/framework/map/room/RoomDoorInfo.cs
+++ b/DungeonShooting_Godot/src/framework/map/room/RoomDoorInfo.cs
@@ -1,5 +1,6 @@
using System;
+using System.Collections.Generic;
using Godot;
///
@@ -40,6 +41,16 @@
public Vector2I OriginPosition;
///
+ /// 地板所占的地板格子, 单位: 格, 使用时不需要加上 OriginPosition
+ ///
+ public HashSet AisleFloorCell;
+
+ ///
+ /// 地板所占的矩形, 单位: 格, 使用时不需要加上 OriginPosition
+ ///
+ public Rect2I AisleFloorRect;
+
+ ///
/// 与下一道门是否有交叉点
///
public bool HasCross;
@@ -50,16 +61,6 @@
public Vector2I Cross;
///
- /// 占位导航网格
- ///
- public DoorNavigationInfo Navigation;
-
- ///
- /// 连接过道使用的导航网格 (暂未用到)
- ///
- public NavigationPolygonData AisleNavigation;
-
- ///
/// 连接过道使用预览纹理, 用于小地图
///
public ImageTexture AislePreviewTexture;
diff --git a/DungeonShooting_Godot/src/framework/map/room/RoomInfo.cs b/DungeonShooting_Godot/src/framework/map/room/RoomInfo.cs
index 02fb5fa..0d0e3b2 100644
--- a/DungeonShooting_Godot/src/framework/map/room/RoomInfo.cs
+++ b/DungeonShooting_Godot/src/framework/map/room/RoomInfo.cs
@@ -8,13 +8,19 @@
///
public class RoomInfo : IDestroy
{
+ public RoomInfo(int id, DungeonRoomType type)
+ {
+ Id = id;
+ RoomType = type;
+ }
+
public RoomInfo(int id, DungeonRoomType type, DungeonRoomSplit roomSplit)
{
Id = id;
RoomType = type;
RoomSplit = roomSplit;
}
-
+
///
/// 房间 id
///
@@ -31,7 +37,7 @@
public int Layer;
///
- /// 生成该房间使用的配置数据
+ /// 生成该房间使用的配置数据, 可能为 null
///
public DungeonRoomSplit RoomSplit;
@@ -106,7 +112,7 @@
public Rect2I OuterRect { get; private set; }
///
- /// 画布占用区域
+ /// 画布占用区域, 单位: 像素
///
public Rect2I CanvasRect { get; private set; }
@@ -136,11 +142,6 @@
public Vector2I Waypoints { get; set; }
///
- /// 导航网格对象
- ///
- public NavigationRegion2D NavigationRegion { get; set; }
-
- ///
/// 在 DungeonGenerator 中是否可以回滚, 如果可以回滚, 那么当前房间就只会有一个 NextRoom
///
public bool CanRollback { get; set; } = false;
@@ -270,6 +271,10 @@
///
public Vector2I GetOffsetPosition()
{
+ if (RoomSplit == null)
+ {
+ return Vector2I.Zero;
+ }
return RoomSplit.RoomInfo.Position.AsVector2I() * GameConfig.TileCellSize;
}
@@ -457,7 +462,7 @@
///
public void OnFirstEnter()
{
- if (RoomPreinstall.IsRunWave)
+ if (RoomPreinstall == null || RoomPreinstall.IsRunWave)
{
return;
}
diff --git a/DungeonShooting_Godot/src/framework/map/serialize/room/DungeonTileInfo.cs b/DungeonShooting_Godot/src/framework/map/serialize/room/DungeonTileInfo.cs
index ffe961b..9e97d81 100644
--- a/DungeonShooting_Godot/src/framework/map/serialize/room/DungeonTileInfo.cs
+++ b/DungeonShooting_Godot/src/framework/map/serialize/room/DungeonTileInfo.cs
@@ -21,18 +21,6 @@
///
[JsonInclude]
public List Floor;
-
- ///
- /// 中层数据, 四个一组, 分别是: 地图x坐标, 地图y坐标, Terrain 的 bit, Terrain 的 type
- ///
- [JsonInclude]
- public List Middle;
-
- ///
- /// 顶层数据, 四个一组, 分别是: 地图x坐标, 地图y坐标, Terrain 的 bit, Terrain 的 type
- ///
- [JsonInclude]
- public List Top;
///
/// 自定义底层1, 数据五个一组, 分别为: 地图x坐标, 地图y坐标, 资源id, 图集x坐标, 图集y坐标
@@ -75,8 +63,6 @@
NavigationVertices = new List();
NavigationPolygon = new List();
Floor = new List();
- Middle = new List();
- Top = new List();
CustomFloor1 = new List();
CustomFloor2 = new List();
CustomFloor3 = new List();
diff --git a/DungeonShooting_Godot/src/framework/map/serialize/room/NavigationPolygonData.cs b/DungeonShooting_Godot/src/framework/map/serialize/room/NavigationPolygonData.cs
deleted file mode 100644
index 460e2b2..0000000
--- a/DungeonShooting_Godot/src/framework/map/serialize/room/NavigationPolygonData.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-
-using System.Collections.Generic;
-using System.Text.Json.Serialization;
-using Godot;
-
-public enum NavigationPolygonType
-{
- ///
- /// 外轮廓
- ///
- Out,
- ///
- /// 内轮廓
- ///
- In,
-}
-
-///
-/// 描述导航多边形数据
-///
-public class NavigationPolygonData
-{
- ///
- /// 导航轮廓类型
- ///
- [JsonInclude]
- public NavigationPolygonType Type;
-
- ///
- /// 多边形的顶点, 两个为一组, 单位: 像素, 需要获取转为 Vector2[] 的值请调用 GetPoints() 函数
- ///
- [JsonInclude]
- public List Points;
-
- private Vector2[] _pointVector2Array;
-
- public NavigationPolygonData()
- {
- }
-
- public NavigationPolygonData(NavigationPolygonType type)
- {
- Type = type;
- }
-
- ///
- /// 读取所有的坐标点, 单位: 像素
- ///
- public Vector2[] GetPoints()
- {
- if (_pointVector2Array == null)
- {
- if (Points == null)
- {
- return null;
- }
-
- _pointVector2Array = new Vector2[Points.Count / 2];
- for (var i = 0; i < Points.Count; i += 2)
- {
- _pointVector2Array[i / 2] = new Vector2(Points[i], Points[i + 1]);
- }
- }
-
- return _pointVector2Array;
- }
-
- ///
- /// 设置所有的坐标点
- ///
- public void SetPoints(Vector2[] array)
- {
- _pointVector2Array = array;
- Points = new List();
- foreach (var pos in array)
- {
- Points.Add(pos.X);
- Points.Add(pos.Y);
- }
- }
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/serialize/room/RoomPreinstallInfo.cs b/DungeonShooting_Godot/src/framework/map/serialize/room/RoomPreinstallInfo.cs
index f9b0f11..2cb7c7f 100644
--- a/DungeonShooting_Godot/src/framework/map/serialize/room/RoomPreinstallInfo.cs
+++ b/DungeonShooting_Godot/src/framework/map/serialize/room/RoomPreinstallInfo.cs
@@ -47,20 +47,29 @@
new List()
};
}
-
+
///
/// 初始化特殊标记
///
public void InitSpecialMark(DungeonRoomType roomType)
{
+ var type = SpecialMarkType.Normal;
if (roomType == DungeonRoomType.Inlet) //初始房间
{
+ type = SpecialMarkType.BirthPoint;
+ }
+ else if (roomType == DungeonRoomType.Outlet) //结束房间
+ {
+ type = SpecialMarkType.OutPoint;
+ }
+
+ if (type != SpecialMarkType.Normal)
+ {
var preloading = WaveList[0];
- //玩家标记
var markInfo = new MarkInfo();
markInfo.Position = new SerializeVector2();
markInfo.Size = new SerializeVector2();
- markInfo.SpecialMarkType = SpecialMarkType.BirthPoint;
+ markInfo.SpecialMarkType = type;
markInfo.MarkList = new List();
preloading.Add(markInfo);
}
diff --git a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs
index 7ab015f..a769406 100644
--- a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs
+++ b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs
@@ -169,26 +169,31 @@
private static void InitMainSourceData(TileSetTerrainInfo terrainInfo, TileSetAtlasSource tileSetAtlasSource)
{
//ySort
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), 23);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), 39);
+ //
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), 39);
+ //
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), 39);
+ // SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), 39);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), 23);
-
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), 23);
-
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), 7);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), 7);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), 7);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), 7);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), 23);
+
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 1), 7);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 1), 7);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 1), 7);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 1), 7);
//碰撞器
SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 0), true);
@@ -259,6 +264,11 @@
SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), false);
SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), false);
SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), false);
+
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 1), false);
}
///
@@ -281,6 +291,10 @@
///
private static void SetAtlasSourceCollision(TileSetTerrainInfo terrainInfo, TileSetAtlasSource tileSetAtlasSource, byte type, Vector2I bitCoords, bool isHalf)
{
+ if (isHalf) //暂时让半块不设置碰撞信息
+ {
+ return;
+ }
var index = terrainInfo.TerrainCoordsToIndex(bitCoords, type);
var cellData = terrainInfo.GetTerrainCell(index, type);
if (cellData != null)
@@ -288,17 +302,17 @@
var pos = terrainInfo.GetPosition(cellData);
var tileData = tileSetAtlasSource.GetTileData(pos, 0);
tileData.AddCollisionPolygon(0);
- if (isHalf)
- {
- tileData.SetCollisionPolygonPoints(0, 0, new[]
- {
- new Vector2(-8, 0),
- new Vector2(8, 0),
- new Vector2(8, 8),
- new Vector2(-8, 8)
- });
- }
- else
+ // if (isHalf)
+ // {
+ // tileData.SetCollisionPolygonPoints(0, 0, new[]
+ // {
+ // new Vector2(-8, 7),
+ // new Vector2(8, 7),
+ // new Vector2(8, 8),
+ // new Vector2(-8, 8)
+ // });
+ // }
+ // else
{
tileData.SetCollisionPolygonPoints(0, 0, new []
{
diff --git a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs
index 85597b4..1dda3bf 100644
--- a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs
+++ b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs
@@ -26,7 +26,7 @@
[JsonInclude] public Dictionary F;
///
- /// 侧方墙壁 (4块) type = 2
+ /// 侧方墙壁 (8块) type = 2
///
[JsonInclude] public Dictionary M;
@@ -86,7 +86,7 @@
{
if (sourceIndex == 0 && terrainIndex == 0)
{
- Ready = T != null && T.Count == 47 && M != null && M.Count == 4 && F != null && F.Count == 1;
+ Ready = T != null && T.Count == 47 && M != null && M.Count == 8 && F != null && F.Count == 1;
}
else
{
@@ -216,7 +216,7 @@
}
else if (type == MiddleLayerType)
{
- if (bit < 4)
+ if (bit < 8)
{
return (int)bit;
}
@@ -320,7 +320,7 @@
}
else if (type == MiddleLayerType)
{
- if (index >= 0 && index < 4)
+ if (index >= 0 && index < 8)
{
return (uint)index;
}
@@ -350,6 +350,11 @@
case 1: M[1] = cellData; break;
case 2: M[2] = cellData; break;
case 3: M[3] = cellData; break;
+
+ case 4: M[4] = cellData; break;
+ case 5: M[5] = cellData; break;
+ case 6: M[6] = cellData; break;
+ case 7: M[7] = cellData; break;
}
}
else if (type == FloorLayerType) //地板
@@ -379,6 +384,11 @@
case 1: M.Remove(1); break;
case 2: M.Remove(2); break;
case 3: M.Remove(3); break;
+
+ case 4: M.Remove(4); break;
+ case 5: M.Remove(5); break;
+ case 6: M.Remove(6); break;
+ case 7: M.Remove(7); break;
}
}
else if (type == FloorLayerType) //地板
@@ -426,6 +436,27 @@
{
if (M.TryGetValue(3, out var cellData)) return cellData;
}
+
+ break;
+ case 4:
+ {
+ if (M.TryGetValue(4, out var cellData)) return cellData;
+ }
+ break;
+ case 5:
+ {
+ if (M.TryGetValue(5, out var cellData)) return cellData;
+ }
+ break;
+ case 6:
+ {
+ if (M.TryGetValue(6, out var cellData)) return cellData;
+ }
+ break;
+ case 7:
+ {
+ if (M.TryGetValue(7, out var cellData)) return cellData;
+ }
break;
}
}
diff --git a/DungeonShooting_Godot/src/game/GameApplication.cs b/DungeonShooting_Godot/src/game/GameApplication.cs
index 7567d98..5670489 100644
--- a/DungeonShooting_Godot/src/game/GameApplication.cs
+++ b/DungeonShooting_Godot/src/game/GameApplication.cs
@@ -43,11 +43,6 @@
public Cursor Cursor { get; private set; }
///
- /// 游戏世界
- ///
- public World World { get; private set; }
-
- ///
/// 地牢管理器
///
public DungeonManager DungeonManager { get; private set; }
@@ -107,7 +102,17 @@
DungeonConfig = new DungeonConfig();
DungeonConfig.GroupName = "Test1";
+ DungeonConfig.RandomSeed = null;
DungeonConfig.BattleRoomCount = 15;
+ // DungeonConfig.BossRoomCount = 0;
+ // DungeonConfig.RewardRoomCount = 0;
+ // DungeonConfig.ShopRoomCount = 0;
+ // DungeonConfig.OutRoomCount = 0;
+ // DungeonConfig.RoomHorizontalMinDispersion = -1;
+ // DungeonConfig.RoomHorizontalMaxDispersion = 1;
+ // DungeonConfig.RoomVerticalMinDispersion = -1;
+ // DungeonConfig.RoomVerticalMaxDispersion = 1;
+ // DungeonConfig.EnableLimitRange = false;
}
public override void _EnterTree()
@@ -122,7 +127,7 @@
//随机化种子
//GD.Randomize();
//固定帧率
- Engine.MaxFps = TargetFps;
+ //Engine.MaxFps = TargetFps;
//调试绘制开关
ActivityObject.IsDebug = false;
//Engine.TimeScale = 0.2f;
@@ -162,41 +167,6 @@
//协程更新
ProxyCoroutineHandler.ProxyUpdateCoroutine(ref _coroutineList, newDelta);
}
-
- ///
- /// 创建新的 World 对象, 相当于清理房间
- ///
- public World CreateNewWorld(SeedRandom random)
- {
- if (World != null)
- {
- ClearWorld();
- World.QueueFree();
- }
- World = ResourceManager.LoadAndInstantiate(ResourcePath.scene_World_tscn);
- SceneRoot.AddChild(World);
- World.InitLayer();
- World.InitRandomPool(random);
- return World;
- }
-
- ///
- /// 销毁 World 对象, 相当于清理房间
- ///
- public void DestroyWorld()
- {
- //销毁所有物体
- if (World != null)
- {
- ClearWorld();
- World.QueueFree();
- }
-
- //销毁池中所有物体
- ObjectPool.DisposeAllItem();
-
- World = null;
- }
///
/// 将 viewport 以外的全局坐标 转换成 viewport 内的全局坐标
@@ -322,27 +292,4 @@
AddChild(cursorLayer);
cursorLayer.AddChild(Cursor);
}
-
- //清理世界
- private void ClearWorld()
- {
- var childCount = World.NormalLayer.GetChildCount();
- for (var i = 0; i < childCount; i++)
- {
- var c = World.NormalLayer.GetChild(i);
- if (c is IDestroy destroy)
- {
- destroy.Destroy();
- }
- }
- childCount = World.YSortLayer.GetChildCount();
- for (var i = 0; i < childCount; i++)
- {
- var c = World.YSortLayer.GetChild(i);
- if (c is IDestroy destroy)
- {
- destroy.Destroy();
- }
- }
- }
}
diff --git a/DungeonShooting_Godot/src/game/GameConfig.cs b/DungeonShooting_Godot/src/game/GameConfig.cs
index f69bc4e..1874314 100644
--- a/DungeonShooting_Godot/src/game/GameConfig.cs
+++ b/DungeonShooting_Godot/src/game/GameConfig.cs
@@ -100,7 +100,7 @@
///
/// 地形掩码纹理大小, 侧方墙壁
///
- public static readonly Vector2I TerrainBitMiddle = new Vector2I(4, 1);
+ public static readonly Vector2I TerrainBitMiddle = new Vector2I(4, 2);
///
/// 地形掩码纹理大小, 地板
///
diff --git a/DungeonShooting_Godot/src/game/World.cs b/DungeonShooting_Godot/src/game/World.cs
new file mode 100644
index 0000000..421110e
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/World.cs
@@ -0,0 +1,169 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using Godot;
+
+///
+/// 游戏世界
+///
+public partial class World : CanvasModulate, ICoroutine
+{
+ ///
+ /// 当前的游戏世界对象
+ ///
+ public static World Current => GameApplication.Instance?.DungeonManager?.CurrWorld;
+
+ ///
+ /// //对象根节点
+ ///
+ public Node2D NormalLayer;
+
+ ///
+ /// 对象根节点, 带y轴排序功能
+ ///
+ public Node2D YSortLayer;
+
+ ///
+ /// 地图根节点
+ ///
+ public TileMap TileRoot;
+
+ public Node2D StaticSpriteRoot;
+ public Node2D AffiliationAreaRoot;
+ public Node2D FogMaskRoot;
+ public Node2D NavigationRoot;
+
+ ///
+ /// 是否暂停
+ ///
+ public bool Pause
+ {
+ get => _pause;
+ set
+ {
+ if (_pause != value)
+ {
+ _pause = value;
+ if (value)
+ {
+ ProcessMode = ProcessModeEnum.WhenPaused;
+ }
+ else
+ {
+ ProcessMode = ProcessModeEnum.Inherit;
+ }
+ }
+ }
+ }
+
+ ///
+ /// 所有被扔在地上的武器
+ ///
+ public HashSet Weapon_UnclaimedWeapons { get; } = new HashSet();
+
+ ///
+ /// 记录所有存活的敌人
+ ///
+ public List Enemy_InstanceList { get; } = new List();
+
+ ///
+ /// 随机数对象
+ ///
+ public SeedRandom Random { get; private set; }
+
+ ///
+ /// 随机对象池
+ ///
+ public RandomPool RandomPool { get; private set; }
+
+ private bool _pause = false;
+ private List _coroutineList;
+
+ public override void _Ready()
+ {
+ //TileRoot.YSortEnabled = false;
+ NormalLayer = GetNode("TileRoot/NormalLayer");
+ YSortLayer = GetNode("TileRoot/YSortLayer");
+ TileRoot = GetNode("TileRoot");
+ StaticSpriteRoot = GetNode("TileRoot/StaticSpriteRoot");
+ FogMaskRoot = GetNode("TileRoot/FogMaskRoot");
+ NavigationRoot = GetNode("TileRoot/NavigationRoot");
+ AffiliationAreaRoot = GetNode("TileRoot/AffiliationAreaRoot");
+ }
+
+ public override void _Process(double delta)
+ {
+ //协程更新
+ ProxyCoroutineHandler.ProxyUpdateCoroutine(ref _coroutineList, (float)delta);
+ }
+
+ ///
+ /// 获取指定层级根节点
+ ///
+ public Node2D GetRoomLayer(RoomLayerEnum layerEnum)
+ {
+ switch (layerEnum)
+ {
+ case RoomLayerEnum.NormalLayer:
+ return NormalLayer;
+ case RoomLayerEnum.YSortLayer:
+ return YSortLayer;
+ }
+
+ return null;
+ }
+
+ ///
+ /// 通知其他敌人发现目标了
+ ///
+ /// 发送通知的角色
+ /// 目标
+ public void NotifyEnemyTarget(Role self, ActivityObject target)
+ {
+ foreach (var role in Enemy_InstanceList)
+ {
+ if (role != self && !role.IsDestroyed && role.AffiliationArea == self.AffiliationArea)
+ {
+ //将未发现目标的敌人状态置为惊讶状态
+ var controller = role.StateController;
+ //延时通知效果
+ role.CallDelay(Utils.Random.RandomRangeFloat(0.2f, 1f), () =>
+ {
+ if (controller.CurrState == AIStateEnum.AiNormal)
+ {
+ controller.ChangeState(AIStateEnum.AiLeaveFor, target);
+ }
+ });
+ }
+ }
+ }
+
+ public long StartCoroutine(IEnumerator able)
+ {
+ return ProxyCoroutineHandler.ProxyStartCoroutine(ref _coroutineList, able);
+ }
+
+ public void StopCoroutine(long coroutineId)
+ {
+ ProxyCoroutineHandler.ProxyStopCoroutine(ref _coroutineList, coroutineId);
+ }
+
+ public bool IsCoroutineOver(long coroutineId)
+ {
+ return ProxyCoroutineHandler.ProxyIsCoroutineOver(ref _coroutineList, coroutineId);
+ }
+
+ public void StopAllCoroutine()
+ {
+ ProxyCoroutineHandler.ProxyStopAllCoroutine(ref _coroutineList);
+ }
+
+ ///
+ /// 初始化随机池
+ ///
+ public void InitRandomPool(SeedRandom random)
+ {
+ Random = random;
+ RandomPool = new RandomPool(this);
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/laser/Laser.cs b/DungeonShooting_Godot/src/game/activity/bullet/laser/Laser.cs
index c6b0379..abd503c 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/laser/Laser.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/laser/Laser.cs
@@ -37,6 +37,7 @@
}
public BulletData BulletData { get; private set; }
+ public BulletStateEnum State { get; protected set; } = BulletStateEnum.Normal;
public bool IsDestroyed { get; private set; }
@@ -52,7 +53,7 @@
{
InitData(data, attackLayer, LaserDefaultWidth);
}
-
+
public void InitData(BulletData data, uint attackLayer, float width)
{
if (!_init)
@@ -137,6 +138,7 @@
_tween.Chain();
_tween.TweenCallback(Callable.From(() =>
{
+ State = BulletStateEnum.MaxDistance;
_tween = null;
LogicalFinish();
}));
@@ -252,6 +254,7 @@
public virtual void OnReclaim()
{
+ State = BulletStateEnum.Normal;
if (Particles2D != null)
{
foreach (var particles2D in Particles2D)
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/Arrow.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/Arrow.cs
index b4b70d3..3f1ad52 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/normal/Arrow.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/Arrow.cs
@@ -1,6 +1,9 @@
using Godot;
+///
+/// 弓箭
+///
[Tool]
public partial class Arrow : Bullet, IMountItem
{
@@ -10,42 +13,117 @@
public override void InitData(BulletData data, uint attackLayer)
{
base.InitData(data, attackLayer);
+ SetEnableMovement(true);
EnableVerticalMotion = false;
DefaultLayer = RoomLayerEnum.NormalLayer;
}
+ public override CheckInteractiveResult CheckInteractive(ActivityObject master)
+ {
+ if (master is Role role) //如果角色有弓箭武器, 则可以拾起地上的箭
+ {
+ var index = role.WeaponPack.FindIndex((weapon, index) =>
+ {
+ return weapon.ActivityBase.Id == Ids.Id_weapon0016;
+ });
+ if (index >= 0)
+ {
+ var weapon = role.WeaponPack.GetItem(index);
+ weapon.SetResidueAmmo(weapon.ResidueAmmo + 1);
+ ObjectPool.Reclaim(this);
+ }
+ }
+ return base.CheckInteractive(master);
+ }
+
public override void OnPlayDisappearEffect()
{
}
- public override void OnPlayCollisionEffect(KinematicCollision2D collision)
+ protected override void OnArea2dEntered(Area2D other)
{
+ if (Velocity.Length() >= BulletData.FlySpeed / 2f)
+ {
+ base.OnArea2dEntered(other);
+ }
+ }
+
+ protected override void OnBodyEntered(Node2D body)
+ {
+ if (Velocity.Length() >= BulletData.FlySpeed / 2f)
+ {
+ base.OnBodyEntered(body);
+ }
}
public override void OnCollisionTarget(IHurt hurt)
{
base.OnCollisionTarget(hurt);
- var activityObject = hurt.GetActivityObject();
- if (activityObject != null)
+ if (CurrentPenetration > BulletData.Penetration)
{
- CallDeferred(nameof(OnBindTarget), activityObject);
+ var activityObject = hurt.GetActivityObject();
+ if (activityObject != null)
+ {
+ CallDeferred(nameof(OnBindTarget), activityObject);
+ }
+ }
+ }
+
+ public override void OnMoveCollision(KinematicCollision2D collision)
+ {
+ if (Velocity.Length() >= BulletData.FlySpeed / 2f)
+ {
+ base.OnMoveCollision(collision);
+ }
+ }
+
+ protected override void OnThrowOver()
+ {
+ SetOriginCollisionLayerValue(PhysicsLayer.Prop, true);
+ if (!Utils.CollisionMaskWithLayer(CollisionLayer, PhysicsLayer.Prop))
+ {
+ CollisionLayer |= PhysicsLayer.Prop;
}
}
public override void LogicalFinish()
{
- SetEnableMovement(false);
- var slideCollision = GetLastSlideCollision();
- if (slideCollision != null)
+ if (State == BulletStateEnum.CollisionTarget) //碰撞到目标, 直接冻结
{
- Position -= slideCollision.GetTravel();
+ SetEnableMovement(false);
+ var slideCollision = GetLastSlideCollision();
+ if (slideCollision != null)
+ {
+ Position -= slideCollision.GetTravel();
+ }
+ }
+ else if (State == BulletStateEnum.MaxDistance) //到达最大动力距离, 则开始下坠
+ {
+ EnableVerticalMotion = true;
+ }
+ else if (State == BulletStateEnum.FallToGround) //落地, 啥也不干
+ {
+
+ }
+ else
+ {
+ //Debug.Log("碰撞速度: " + Velocity.Length());
+ base.LogicalFinish();
}
}
+ //将弓箭挂载到目标物体上
private void OnBindTarget(ActivityObject activityObject)
{
- Altitude = -activityObject.ToLocal(GlobalPosition).Y;
- activityObject.BindMountObject(this);
+ if (activityObject.IsDestroyed) //目标已经销毁
+ {
+ OnUnmount(activityObject);
+ }
+ else
+ {
+ Altitude = Mathf.Max(1, -activityObject.ToLocal(GlobalPosition).Y);
+ activityObject.AddMountObject(this);
+ }
}
public void OnMount(ActivityObject target)
@@ -53,6 +131,8 @@
Reparent(target);
AnimatedSprite.Play(AnimatorNames.HalfEnd);
HalfSprite.Visible = true;
+ RefreshBulletColor(false);
+ EnableVerticalMotion = false;
}
public void OnUnmount(ActivityObject target)
@@ -64,6 +144,17 @@
MoveController.ClearForce();
MoveController.BasisVelocity = Vector2.Zero;
ShadowOffset = new Vector2(0, 1);
- Throw(10, 60, new Vector2(20, 0), 0);
+ Throw(Mathf.Max(3, Altitude), Utils.Random.RandomRangeInt(50, 80), Vector2.Zero, Utils.Random.RandomRangeInt(-30, 30));
+ InheritVelocity(target);
+ }
+
+ public override void OnLeavePool()
+ {
+ SetOriginCollisionLayerValue(PhysicsLayer.Prop, false);
+ if (Utils.CollisionMaskWithLayer(CollisionLayer, PhysicsLayer.Prop))
+ {
+ CollisionLayer ^= PhysicsLayer.Prop;
+ }
+ base.OnLeavePool();
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/BoomBullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/BoomBullet.cs
index 085c4c6..79174e7 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/normal/BoomBullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/BoomBullet.cs
@@ -21,6 +21,7 @@
public override void OnCollisionTarget(IHurt o)
{
+ State = BulletStateEnum.CollisionTarget;
PlayBoom();
LogicalFinish();
}
@@ -30,6 +31,7 @@
CurrentBounce++;
if (CurrentBounce > BulletData.BounceCount) //反弹次数超过限制
{
+ State = BulletStateEnum.MoveCollision;
PlayBoom();
LogicalFinish();
}
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
index c926744..02be8c1 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
@@ -62,6 +62,11 @@
///
public bool IsEnemyBullet { get; private set; } = false;
+ ///
+ /// 子弹状态
+ ///
+ public BulletStateEnum State { get; protected set; } = BulletStateEnum.Normal;
+
//当前子弹已经飞行的距离
private float CurrFlyDistance = 0;
@@ -136,7 +141,11 @@
//过期销毁
if (data.LifeTime > 0)
{
- this.CallDelay(data.LifeTime, OnLimeOver);
+ this.CallDelay(data.LifeTime, () =>
+ {
+ State = BulletStateEnum.LimeOver;
+ OnLimeOver();
+ });
}
if (Particles2D != null)
@@ -172,6 +181,7 @@
CurrentBounce++;
if (CurrentBounce > BulletData.BounceCount) //反弹次数超过限制
{
+ State = BulletStateEnum.MoveCollision;
//创建粒子特效
OnPlayCollisionEffect(collision);
LogicalFinish();
@@ -200,6 +210,7 @@
CurrentPenetration++;
if (CurrentPenetration > BulletData.Penetration)
{
+ State = BulletStateEnum.CollisionTarget;
CallDeferred(nameof(LogicalFinish));
}
}
@@ -224,6 +235,7 @@
protected override void OnFallToGround()
{
+ State = BulletStateEnum.FallToGround;
//落地销毁
OnPlayDisappearEffect();
LogicalFinish();
@@ -295,15 +307,17 @@
{
if (ActivityMaterial.DynamicCollision)
{
- //子弹高度大于 16 关闭碰撞检测
- CollisionShape2D.Disabled = Altitude >= 16;
+ //子弹高度大于 32 关闭碰撞检测
+ CollisionShape2D.Disabled = Altitude >= 32;
}
//距离太大, 自动销毁
if (MoveController.Enable)
{
+ //CurrFlyDistance += Velocity.Length() * delta;
CurrFlyDistance += BulletData.FlySpeed * delta;
if (CurrFlyDistance >= BulletData.MaxDistance)
{
+ State = BulletStateEnum.MaxDistance;
OnMaxDistance();
}
}
@@ -342,6 +356,7 @@
public virtual void OnReclaim()
{
+ State = BulletStateEnum.Normal;
Visible = false;
if (Particles2D != null)
{
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/BulletStateEnum.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/BulletStateEnum.cs
new file mode 100644
index 0000000..7b21719
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/BulletStateEnum.cs
@@ -0,0 +1,31 @@
+
+///
+/// 子弹逻辑完成条件
+///
+public enum BulletStateEnum
+{
+ ///
+ /// 正常飞行状态
+ ///
+ Normal,
+ ///
+ /// 移动并撞到物体
+ ///
+ MoveCollision,
+ ///
+ /// 飞行到最大距离
+ ///
+ MaxDistance,
+ ///
+ /// 子弹生命周期结束
+ ///
+ LimeOver,
+ ///
+ /// 落地
+ ///
+ FallToGround,
+ ///
+ /// 碰撞到攻击目标物体
+ ///
+ CollisionTarget,
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/IBullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/IBullet.cs
index 56d4b88..a642541 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/normal/IBullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/IBullet.cs
@@ -21,6 +21,12 @@
/// 子弹数据
///
BulletData BulletData { get; }
+
+ ///
+ /// 子弹状态
+ ///
+ BulletStateEnum State { get; }
+
///
/// 初始化子弹数据
///
diff --git a/DungeonShooting_Godot/src/game/activity/role/Role.cs b/DungeonShooting_Godot/src/game/activity/role/Role.cs
index 7792dc1..7ca7b05 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs
@@ -962,6 +962,10 @@
///
public bool IsEnemyWithPlayer()
{
+ if (Player.Current == null)
+ {
+ return false;
+ }
return CollisionWithMask(Player.Current.EnemyLayer);
}
@@ -1050,9 +1054,14 @@
{
weapon.AffiliationArea.RemoveItem(weapon);
}
+
+ weapon.World = World;
});
}
+ ///
+ /// 调整角色的朝向, 使其看向目标点
+ ///
public virtual void LookTargetPosition(Vector2 pos)
{
LookPosition = pos;
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
index 37faa8e..33bf27b 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
@@ -1,15 +1,3 @@
-#region 基础敌人设计思路
-/*
-敌人有三种状态:
-状态1: 未发现玩家, 视野不可穿墙, 该状态下敌人移动比较规律, 移动速度较慢, 一旦玩家进入视野或者听到玩家枪声, 立刻切换至状态3, 该房间的敌人不能再回到状态1
-状态2: 发现有玩家, 但不知道在哪, 视野不可穿墙, 该情况下敌人移动速度明显加快, 移动不规律, 一旦玩家进入视野或者听到玩家枪声, 立刻切换至状态3
-状态3: 明确知道玩家的位置, 视野允许穿墙, 移动速度与状态2一致, 进入该状态时, 敌人之间会相互告知玩家所在位置, 并朝着玩家位置开火,
- 如果有墙格挡, 则有一定概率继续开火, 一旦玩家立刻敌人视野超哥一段时间, 敌人自动切换为状态2
-
-敌人状态1只存在于少数房间内, 比如特殊房间, 大部分情况下敌人应该是状态2, 或者玩家进入房间时就被敌人发现
-*/
-#endregion
-
using System;
using System.Collections.Generic;
@@ -156,6 +144,8 @@
//默认状态
StateController.ChangeStateInstant(AIStateEnum.AiNormal);
+
+ //NavigationAgent2D.VelocityComputed += OnVelocityComputed;
}
protected override RoleState OnCreateRoleState()
@@ -174,6 +164,7 @@
roleState.ViewRange = enemyBase.ViewRange;
roleState.TailAfterViewRange = enemyBase.TailAfterViewRange;
roleState.BackViewRange = enemyBase.BackViewRange;
+ roleState.AttackInterval = enemyBase.AttackInterval;
roleState.Gold = Mathf.Max(0, Utils.Random.RandomConfigRange(enemyBase.Gold));
return roleState;
@@ -203,7 +194,7 @@
blood.Position = effPos - new Vector2(0, 12);
blood.AddToActivityRoot(RoomLayerEnum.NormalLayer);
blood.PlayEffect();
-
+
var realVelocity = GetRealVelocity();
//创建敌人碎片
var count = Utils.Random.RandomRangeInt(3, 6);
@@ -559,6 +550,11 @@
///
public void DoMove()
{
+ // //计算移动
+ // NavigationAgent2D.MaxSpeed = EnemyRoleState.MoveSpeed;
+ // var nextPos = NavigationAgent2D.GetNextPathPosition();
+ // NavigationAgent2D.Velocity = (nextPos - Position - NavigationPoint.Position).Normalized() * RoleState.MoveSpeed;
+
AnimatedSprite.Play(AnimatorNames.Run);
//计算移动
var nextPos = NavigationAgent2D.GetNextPathPosition();
@@ -594,4 +590,13 @@
StateController.Enable = false;
this.CallDelay(0.7f, () => StateController.Enable = true);
}
+
+ // private void OnVelocityComputed(Vector2 velocity)
+ // {
+ // if (Mathf.Abs(velocity.X) >= 0.01f && Mathf.Abs(velocity.Y) >= 0.01f)
+ // {
+ // AnimatedSprite.Play(AnimatorNames.Run);
+ // BasisVelocity = velocity;
+ // }
+ // }
}
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/EnemyRoleState.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/EnemyRoleState.cs
index 174b52e..ef3618a 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/EnemyRoleState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/EnemyRoleState.cs
@@ -15,4 +15,9 @@
/// 背后的视野半径, 单位像素
///
public float BackViewRange = 50;
+
+ ///
+ /// 攻击间隔时间, 秒
+ ///
+ public float AttackInterval = 0;
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
index 2e1e4ae..ed3d271 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
@@ -82,7 +82,7 @@
{
if (name == AnimatorNames.Attack)
{
- AttackTimer = 3f;
+ AttackTimer = EnemyRoleState.AttackInterval;
}
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiAttackState.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiAttackState.cs
index 6b70f5e..ca847b3 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiAttackState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiAttackState.cs
@@ -51,7 +51,7 @@
if (weapon != null)
{
_hasWeapon = true;
- if (!weapon.TriggerIsReady())
+ if (Master.IsAttack || !weapon.TriggerIsReady())
{
throw new Exception("进入 AIAdvancedStateEnum.AiAttack 状态时角色武器还无法触动扳机!");
}
@@ -136,7 +136,7 @@
else //攻击状态
{
//触发扳机
- AttackState = weapon.AiTriggerAttackState();
+ AttackState = weapon.AiTriggerAttackState(AttackState);
if (AttackState == AiAttackEnum.LockingTime) //锁定玩家状态
{
@@ -206,6 +206,11 @@
{
MoveHandler(delta);
}
+
+ if (AttackState == AiAttackEnum.AttackInterval) //触发攻击完成
+ {
+ Master.AttackTimer = weapon.Attribute.TriggerInterval + Master.EnemyRoleState.AttackInterval;
+ }
}
}
}
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiFollowUpState.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiFollowUpState.cs
index c6ae3d6..d0f1bde 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiFollowUpState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiFollowUpState.cs
@@ -112,7 +112,7 @@
{
ChangeState(AIStateEnum.AiSurround);
}
- else if (weapon.TriggerIsReady()) //可以攻击
+ else if (!Master.IsAttack && weapon.TriggerIsReady()) //可以攻击
{
//攻击状态
ChangeState(AIStateEnum.AiAttack);
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiSurroundState.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiSurroundState.cs
index 2d3c914..da694dd 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiSurroundState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiSurroundState.cs
@@ -143,7 +143,7 @@
{
ChangeState(AIStateEnum.AiFollowUp);
}
- else if (weapon.TriggerIsReady()) //可以攻击
+ else if (!Master.IsAttack && weapon.TriggerIsReady()) //可以攻击
{
//发起攻击
ChangeState(AIStateEnum.AiAttack);
diff --git a/DungeonShooting_Godot/src/game/activity/role/player/Player.cs b/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
index f301669..91eb784 100644
--- a/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
@@ -61,7 +61,7 @@
ActivePropsPack.SetCapacity(1);
// debug用
- // DebugSet();
+ //DebugSet();
//注册状态机
StateController.Register(new PlayerIdleState());
@@ -77,12 +77,16 @@
private void DebugSet()
{
+ if (World is Hall)
+ {
+ return;
+ }
RoleState.Acceleration = 3000;
RoleState.Friction = 3000;
RoleState.MoveSpeed = 500;
CollisionLayer = PhysicsLayer.None;
CollisionMask = PhysicsLayer.None;
- GameCamera.Main.Zoom = new Vector2(0.5f, 0.5f);
+ //GameCamera.Main.Zoom = new Vector2(0.5f, 0.5f);
// this.CallDelay(0.5f, () =>
// {
// PickUpWeapon(Create(Ids.Id_weapon0009));
@@ -338,7 +342,7 @@
MoveController.ClearForce();
//暂停游戏
- GameApplication.Instance.World.Pause = true;
+ World.Current.Pause = true;
//弹出结算面板
GameApplication.Instance.Cursor.SetGuiMode(true);
UiManager.Open_Settlement();
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/AiAttackEnum.cs b/DungeonShooting_Godot/src/game/activity/weapon/AiAttackEnum.cs
index 9ee4dc5..ac8e343 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/AiAttackEnum.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/AiAttackEnum.cs
@@ -40,4 +40,8 @@
/// 成功触发攻击
///
Attack,
+ ///
+ /// 攻击蓄力中
+ ///
+ AttackCharge,
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
index 15b54fc..1945689 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
@@ -793,7 +793,7 @@
///
public bool IsInGround()
{
- return Master == null && GetParent() == GameApplication.Instance.World.NormalLayer;
+ return Master == null && GetParent() == World.Current.NormalLayer;
}
///
@@ -2131,8 +2131,22 @@
///
/// Ai调用, 触发扣动扳机, 并返回攻击状态
///
- public AiAttackEnum AiTriggerAttackState()
+ public AiAttackEnum AiTriggerAttackState(AiAttackEnum prevState)
{
+ var chargeFinish = false;
+ if (prevState == AiAttackEnum.AttackCharge) //蓄力中
+ {
+ var enemy = (Enemy)Master;
+ if (!IsChargeFinish())
+ {
+ enemy.Attack();
+ return prevState;
+ }
+
+ chargeFinish = true;
+ enemy.LockingTime = 0;
+ }
+
AiAttackEnum flag;
if (IsTotalAmmoEmpty()) //当前武器弹药打空
{
@@ -2169,7 +2183,7 @@
{
flag = AiAttackEnum.AttackInterval;
}
- else if (_continuousCount >= 1) //连发中
+ else if (_continuousCount >= 1 && (!chargeFinish || _continuousCount >= 2)) //连发中
{
flag = AiAttackEnum.Attack;
}
@@ -2186,7 +2200,7 @@
{
flag = AiAttackEnum.Attack;
enemy.Attack();
- if (_attackFlag)
+ if (_attackFlag) //成功触发攻击
{
enemy.LockingTime = 0;
}
@@ -2197,18 +2211,26 @@
{
flag = AiAttackEnum.Attack;
enemy.Attack();
- if (_attackFlag)
+ if (_attackFlag) //成功触发攻击
{
enemy.LockingTime = 0;
}
}
else //单发
{
- flag = AiAttackEnum.Attack;
- enemy.Attack();
- if (_attackFlag)
+ if (Attribute.LooseShoot && Attribute.MinChargeTime > 0) //松发并蓄力攻击
{
- enemy.LockingTime = 0;
+ flag = AiAttackEnum.AttackCharge;
+ enemy.Attack();
+ }
+ else
+ {
+ flag = AiAttackEnum.Attack;
+ enemy.Attack();
+ if (_attackFlag && _attackTimer > 0) //成功触发攻击
+ {
+ enemy.LockingTime = 0;
+ }
}
}
}
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/bow/Bow.cs b/DungeonShooting_Godot/src/game/activity/weapon/bow/Bow.cs
index 9898284..9371e39 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/bow/Bow.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/bow/Bow.cs
@@ -24,6 +24,7 @@
_activeArrow.CollisionArea.Monitoring = false;
_activeArrow.Collision.Disabled = true;
_activeArrow.Position = Vector2.Zero;
+ _activeArrow.RefreshBulletColor(false);
ArrowPoint.AddChild(_activeArrow);
}
@@ -31,6 +32,17 @@
{
base.Process(delta);
_activeArrow.ShadowOffset = ShadowOffset + new Vector2(0, Altitude);
+ _activeArrow.Visible = !IsTotalAmmoEmpty();
+ }
+
+ protected override void OnPickUp(Role master)
+ {
+ _activeArrow.RefreshBulletColor(master.IsEnemyWithPlayer());
+ }
+
+ protected override void OnRemove(Role master)
+ {
+ _activeArrow.RefreshBulletColor(false);
}
protected override void OnBeginCharge()
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs b/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
index f9c117f..63ada44 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
@@ -135,7 +135,13 @@
{
//反弹子弹
bullet.OnPlayDisappearEffect();
- bullet.MoveController.ScaleAllVelocity(-1);
+ var scale = -1f;
+ var weapon = bullet.BulletData.Weapon;
+ if (weapon != null)
+ {
+ scale /= weapon.AiUseAttribute.AiAttackAttr.BulletSpeedScale;
+ }
+ bullet.MoveController.ScaleAllVelocity(scale);
bullet.Rotation += Mathf.Pi;
bullet.AttackLayer = TriggerRole.AttackLayer;
bullet.RefreshBulletColor(false);
diff --git a/DungeonShooting_Godot/src/game/camera/GameCamera.cs b/DungeonShooting_Godot/src/game/camera/GameCamera.cs
index 513d058..9ae3e69 100644
--- a/DungeonShooting_Godot/src/game/camera/GameCamera.cs
+++ b/DungeonShooting_Godot/src/game/camera/GameCamera.cs
@@ -86,7 +86,7 @@
var newDelta = (float)delta;
_Shake(newDelta);
- var world = GameApplication.Instance.World;
+ var world = World.Current;
if (world != null && !world.Pause && _followTarget != null)
{
var mousePosition = InputManager.CursorPosition;
diff --git a/DungeonShooting_Godot/src/game/data/property/MapLayer.cs b/DungeonShooting_Godot/src/game/data/property/MapLayer.cs
deleted file mode 100644
index f9995a5..0000000
--- a/DungeonShooting_Godot/src/game/data/property/MapLayer.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-
-public static class MapLayer
-{
- ///
- /// 自动图块地板层
- ///
- public const int AutoFloorLayer = 0;
- ///
- /// 自定义图块地板层1
- ///
- public const int CustomFloorLayer1 = AutoFloorLayer + 1;
- ///
- /// 自定义图块地板层2
- ///
- public const int CustomFloorLayer2 = CustomFloorLayer1 + 1;
- ///
- /// 自定义图块地板层3
- ///
- public const int CustomFloorLayer3 = CustomFloorLayer2 + 1;
- ///
- /// 自动图块中间层
- ///
- public const int AutoMiddleLayer = CustomFloorLayer3 + 1;
- ///
- /// 自定义图块中间层1
- ///
- public const int CustomMiddleLayer1 = AutoMiddleLayer + 1;
- ///
- /// 自定义图块中间层2
- ///
- public const int CustomMiddleLayer2 = CustomMiddleLayer1 + 1;
- ///
- /// 自动图块顶层
- ///
- public const int AutoTopLayer = CustomMiddleLayer2 + 1;
- ///
- /// 自定义图块顶层
- ///
- public const int CustomTopLayer = AutoTopLayer + 1;
- ///
- /// 自动图块过道中的地板层, 该层只会出现在 World 场景中的 TileMap
- ///
- public const int AutoAisleFloorLayer = CustomTopLayer + 1;
-
- ///
- /// 标记数据层, 特殊层, 不会出现在 TileMap 中
- ///
- public const int MarkLayer = 9999;
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/effects/enemy/EnemyDead0001.cs b/DungeonShooting_Godot/src/game/effects/enemy/EnemyDead0001.cs
index ff7ca48..31908e4 100644
--- a/DungeonShooting_Godot/src/game/effects/enemy/EnemyDead0001.cs
+++ b/DungeonShooting_Godot/src/game/effects/enemy/EnemyDead0001.cs
@@ -22,14 +22,14 @@
{
var frameCount = AnimatedSprite.SpriteFrames.GetFrameCount(AnimatorNames.Default);
AnimatedSprite.Frame = Utils.Random.RandomRangeInt(0, frameCount - 1);
-
+
Throw(
Utils.Random.RandomRangeInt(0, 16),
Utils.Random.RandomRangeInt(10, 60),
new Vector2(Utils.Random.RandomRangeInt(-25, 25), Utils.Random.RandomRangeInt(-25, 25)),
Utils.Random.RandomRangeInt(-360, 360)
);
-
+
StartCoroutine(EmitParticles());
_brushData = LiquidBrushManager.GetBrush("0003");
}
diff --git a/DungeonShooting_Godot/src/game/hall/DungeonEntrance.cs b/DungeonShooting_Godot/src/game/hall/DungeonEntrance.cs
new file mode 100644
index 0000000..65a156c
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/hall/DungeonEntrance.cs
@@ -0,0 +1,38 @@
+using Godot;
+
+///
+/// 地牢入口节点
+///
+public partial class DungeonEntrance : Area2D
+{
+ public override void _Ready()
+ {
+ BodyEntered += OnBodyEntered;
+ }
+
+ private void OnBodyEntered(Node2D body)
+ {
+ if (body is Player)
+ {
+ // 验证该组是否满足生成地牢的条件
+ var config = GameApplication.Instance.DungeonConfig;
+ var result = DungeonManager.CheckDungeon(config.GroupName);
+ if (result.HasError)
+ {
+ UiManager.Destroy_Loading();
+ EditorWindowManager.ShowTips("警告", "当前组'" + config.GroupName + "'" + result.ErrorMessage + ", 不能生成地牢!");
+ }
+ else
+ {
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.ExitHall(true, () =>
+ {
+ GameApplication.Instance.DungeonManager.LoadDungeon(config, () =>
+ {
+ UiManager.Destroy_Loading();
+ });
+ });
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/hall/Hall.cs b/DungeonShooting_Godot/src/game/hall/Hall.cs
new file mode 100644
index 0000000..e8ffde4
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/hall/Hall.cs
@@ -0,0 +1,22 @@
+
+using Godot;
+
+///
+/// 游戏大厅
+///
+public partial class Hall : World
+{
+ ///
+ /// 玩家出生标记
+ ///
+ [Export]
+ public Marker2D BirthMark;
+
+ [Export]
+ public Sprite2D BgSprite;
+
+ ///
+ /// 房间数据, 该数据时虚拟出来的, 并不是配置文件读取出来的
+ ///
+ public RoomInfo RoomInfo { get; set; }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/manager/EditorPlayManager.cs b/DungeonShooting_Godot/src/game/manager/EditorPlayManager.cs
index 376de4a..1fdf611 100644
--- a/DungeonShooting_Godot/src/game/manager/EditorPlayManager.cs
+++ b/DungeonShooting_Godot/src/game/manager/EditorPlayManager.cs
@@ -9,7 +9,7 @@
public static bool IsPlay { get; set; }
private static DungeonConfig _config;
-
+
public static void Play(UiBase prevUi)
{
if (IsPlay)
@@ -23,8 +23,12 @@
_config.DesignatedType = EditorTileMapManager.SelectRoom.RoomInfo.RoomType;
_config.DesignatedRoom = new List();
_config.DesignatedRoom.Add(EditorTileMapManager.SelectRoom);
- GameApplication.Instance.DungeonManager.EditorPlayDungeon(prevUi, _config);
- }
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.EditorPlayDungeon(prevUi, _config, () =>
+ {
+ UiManager.Destroy_Loading();
+ });
+}
public static void Exit()
{
@@ -34,7 +38,11 @@
}
IsPlay = false;
- GameApplication.Instance.DungeonManager.EditorExitDungeon();
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.EditorExitDungeon(false, () =>
+ {
+ UiManager.Destroy_Loading();
+ });
}
public static void Restart()
@@ -43,10 +51,13 @@
{
return;
}
-
- GameApplication.Instance.DungeonManager.ExitDungeon(() =>
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.ExitDungeon(false, () =>
{
- GameApplication.Instance.DungeonManager.EditorPlayDungeon(_config);
+ GameApplication.Instance.DungeonManager.EditorPlayDungeon(_config, () =>
+ {
+ UiManager.Destroy_Loading();
+ });
});
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/manager/MapLayerManager.cs b/DungeonShooting_Godot/src/game/manager/MapLayerManager.cs
index 2def661..047f359 100644
--- a/DungeonShooting_Godot/src/game/manager/MapLayerManager.cs
+++ b/DungeonShooting_Godot/src/game/manager/MapLayerManager.cs
@@ -58,10 +58,5 @@
tileMap.SetLayerZIndex(MapLayer.CustomTopLayer, 10);
tileMap.SetLayerNavigationEnabled(MapLayer.CustomTopLayer, false);
tileMap.SetLayerName(MapLayer.CustomTopLayer, nameof(MapLayer.CustomTopLayer));
-
- tileMap.AddLayer(MapLayer.AutoAisleFloorLayer);
- tileMap.SetLayerZIndex(MapLayer.AutoAisleFloorLayer, -10);
- tileMap.SetLayerNavigationEnabled(MapLayer.AutoAisleFloorLayer, false);
- tileMap.SetLayerName(MapLayer.AutoAisleFloorLayer, nameof(MapLayer.AutoAisleFloorLayer));
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/manager/ResourceManager.cs b/DungeonShooting_Godot/src/game/manager/ResourceManager.cs
index 09bdfea..89a8e0d 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourceManager.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourceManager.cs
@@ -182,6 +182,10 @@
{
return LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_BirthMark_png);
}
+ else if (markInfo.SpecialMarkType == SpecialMarkType.OutPoint) //出口标记
+ {
+ return LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_BirthMark_png);
+ }
else if (markInfo.MarkList != null) //普通标记
{
if (markInfo.MarkList.Count > 1) //多个物体
diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
index 86af038..4860057 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
@@ -3,576 +3,530 @@
///
public class ResourcePath
{
- 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 build_windows_data_DungeonShooting_windows_x86_64_DungeonShooting_deps_json = "res://build/windows/data_DungeonShooting_windows_x86_64/DungeonShooting.deps.json";
- public const string build_windows_data_DungeonShooting_windows_x86_64_DungeonShooting_runtimeconfig_json = "res://build/windows/data_DungeonShooting_windows_x86_64/DungeonShooting.runtimeconfig.json";
- public const string build_windows_resource_map_tileMaps_GroupConfig_json = "res://build/windows/resource/map/tileMaps/GroupConfig.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle1_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle1/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle1_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle1/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle1_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle1/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle1_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle1/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle2_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle2/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle2_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle2/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle2_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle2/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle2_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle2/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle3_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle3/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle3_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle3/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle3_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle3/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle3_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle3/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle4_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle4/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle4_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle4/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle4_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle4/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle4_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle4/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle5_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle5/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle5_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle5/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle5_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle5/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_battle_Battle5_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/battle/Battle5/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_boss_Boss1_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/boss/Boss1/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_boss_Boss1_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/boss/Boss1/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_boss_Boss1_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/boss/Boss1/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_boss_Boss1_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/boss/Boss1/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_inlet_Start_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_inlet_Start_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/inlet/Start/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_inlet_Start_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/inlet/Start/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_inlet_Start_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/inlet/Start/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_outlet_End1_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/outlet/End1/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_outlet_End1_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/outlet/End1/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_outlet_End1_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/outlet/End1/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_outlet_End1_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/outlet/End1/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_reward_Award1_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/reward/Award1/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_reward_Award1_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/reward/Award1/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_reward_Award1_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/reward/Award1/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_reward_Award1_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/reward/Award1/TileInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_shop_Shop1_Preinstall_json = "res://build/windows/resource/map/tileMaps/Test1/shop/Shop1/Preinstall.json";
- public const string build_windows_resource_map_tileMaps_Test1_shop_Shop1_Preview_png = "res://build/windows/resource/map/tileMaps/Test1/shop/Shop1/Preview.png";
- public const string build_windows_resource_map_tileMaps_Test1_shop_Shop1_RoomInfo_json = "res://build/windows/resource/map/tileMaps/Test1/shop/Shop1/RoomInfo.json";
- public const string build_windows_resource_map_tileMaps_Test1_shop_Shop1_TileInfo_json = "res://build/windows/resource/map/tileMaps/Test1/shop/Shop1/TileInfo.json";
- public const string build_windows_resource_map_tileSet_TileSetConfig_json = "res://build/windows/resource/map/tileSet/TileSetConfig.json";
- public const string build_windows_resource_map_tileSet_TileSet1_Main_png = "res://build/windows/resource/map/tileSet/TileSet1/Main.png";
- public const string build_windows_resource_map_tileSet_TileSet1_Test1_png = "res://build/windows/resource/map/tileSet/TileSet1/Test1.png";
- public const string build_windows_resource_map_tileSet_TileSet1_Test2_png = "res://build/windows/resource/map/tileSet/TileSet1/Test2.png";
- public const string build_windows_resource_map_tileSet_TileSet1_Test3_png = "res://build/windows/resource/map/tileSet/TileSet1/Test3.png";
- public const string build_windows_resource_map_tileSet_TileSet1_TileSet_json = "res://build/windows/resource/map/tileSet/TileSet1/TileSet.json";
- public const string build_windows_resource_map_tileSet_TileSet2_Main_png = "res://build/windows/resource/map/tileSet/TileSet2/Main.png";
- public const string build_windows_resource_map_tileSet_TileSet2_Test2_png = "res://build/windows/resource/map/tileSet/TileSet2/Test2.png";
- public const string build_windows_resource_map_tileSet_TileSet2_TileSet_json = "res://build/windows/resource/map/tileSet/TileSet2/TileSet.json";
- public const string excelTool_bin_Release_net8_0_winx64_ExcelTool_deps_json = "res://excelTool/bin/Release/net8.0/win-x64/ExcelTool.deps.json";
- public const string excelTool_bin_Release_net8_0_winx64_ExcelTool_runtimeconfig_json = "res://excelTool/bin/Release/net8.0/win-x64/ExcelTool.runtimeconfig.json";
- public const string excelTool_obj_ExcelTool_csproj_nuget_dgspec_json = "res://excelTool/obj/ExcelTool.csproj.nuget.dgspec.json";
- public const string excelTool_obj_project_assets_json = "res://excelTool/obj/project.assets.json";
- public const string excelTool_obj_Release_net8_0_winx64_ExcelTool_csproj_FileListAbsolute_txt = "res://excelTool/obj/Release/net8.0/win-x64/ExcelTool.csproj.FileListAbsolute.txt";
- public const string excelTool_obj_Release_net8_0_winx64_PublishOutputs_a0fcfe3642_txt = "res://excelTool/obj/Release/net8.0/win-x64/PublishOutputs.a0fcfe3642.txt";
- public const string excelTool_publish_winx64_ExcelTool_deps_json = "res://excelTool/publish/win-x64/ExcelTool.deps.json";
- public const string excelTool_publish_winx64_ExcelTool_runtimeconfig_json = "res://excelTool/publish/win-x64/ExcelTool.runtimeconfig.json";
+ public const string default_env_tres = "res://default_env.tres";
+ public const string default_bus_layout_tres = "res://default_bus_layout.tres";
public const string prefab_Cursor_tscn = "res://prefab/Cursor.tscn";
+ public const string prefab_ui_Main_tscn = "res://prefab/ui/Main.tscn";
+ public const string prefab_ui_TileSetEditorCombination_tscn = "res://prefab/ui/TileSetEditorCombination.tscn";
+ public const string prefab_ui_MapEditorMapTile_tscn = "res://prefab/ui/MapEditorMapTile.tscn";
+ public const string prefab_ui_MapEditorMapLayer_tscn = "res://prefab/ui/MapEditorMapLayer.tscn";
+ public const string prefab_ui_MapEditor_tscn = "res://prefab/ui/MapEditor.tscn";
+ public const string prefab_ui_PauseMenu_tscn = "res://prefab/ui/PauseMenu.tscn";
+ public const string prefab_ui_MapEditorMapMark_tscn = "res://prefab/ui/MapEditorMapMark.tscn";
+ public const string prefab_ui_MapEditorCreateMark_tscn = "res://prefab/ui/MapEditorCreateMark.tscn";
+ public const string prefab_ui_MapEditorCreateRoom_tscn = "res://prefab/ui/MapEditorCreateRoom.tscn";
+ public const string prefab_ui_EditorImportCombination_tscn = "res://prefab/ui/EditorImportCombination.tscn";
+ public const string prefab_ui_EditorInfo_tscn = "res://prefab/ui/EditorInfo.tscn";
+ public const string prefab_ui_Debugger_tscn = "res://prefab/ui/Debugger.tscn";
+ public const string prefab_ui_MapEditorCreatePreinstall_tscn = "res://prefab/ui/MapEditorCreatePreinstall.tscn";
+ public const string prefab_ui_BottomTips_tscn = "res://prefab/ui/BottomTips.tscn";
+ public const string prefab_ui_EditorTileImage_tscn = "res://prefab/ui/EditorTileImage.tscn";
+ public const string prefab_ui_EditorDungeonGroup_tscn = "res://prefab/ui/EditorDungeonGroup.tscn";
+ public const string prefab_ui_EditorForm_tscn = "res://prefab/ui/EditorForm.tscn";
+ public const string prefab_ui_Setting_tscn = "res://prefab/ui/Setting.tscn";
+ public const string prefab_ui_Loading_tscn = "res://prefab/ui/Loading.tscn";
+ public const string prefab_ui_MapEditorTools_tscn = "res://prefab/ui/MapEditorTools.tscn";
+ public const string prefab_ui_TileSetEditor_tscn = "res://prefab/ui/TileSetEditor.tscn";
+ public const string prefab_ui_EditorWindow_tscn = "res://prefab/ui/EditorWindow.tscn";
+ public const string prefab_ui_EditorInput_tscn = "res://prefab/ui/EditorInput.tscn";
+ public const string prefab_ui_RoomMap_tscn = "res://prefab/ui/RoomMap.tscn";
+ public const string prefab_ui_EditorTools_tscn = "res://prefab/ui/EditorTools.tscn";
+ public const string prefab_ui_TileSetEditorImport_tscn = "res://prefab/ui/TileSetEditorImport.tscn";
+ public const string prefab_ui_MapEditorSelectObject_tscn = "res://prefab/ui/MapEditorSelectObject.tscn";
+ public const string prefab_ui_Settlement_tscn = "res://prefab/ui/Settlement.tscn";
+ public const string prefab_ui_MapEditorProject_tscn = "res://prefab/ui/MapEditorProject.tscn";
+ public const string prefab_ui_TileSetEditorProject_tscn = "res://prefab/ui/TileSetEditorProject.tscn";
+ public const string prefab_ui_EditorManager_tscn = "res://prefab/ui/EditorManager.tscn";
+ public const string prefab_ui_EditorTips_tscn = "res://prefab/ui/EditorTips.tscn";
+ public const string prefab_ui_TileSetEditorTerrain_tscn = "res://prefab/ui/TileSetEditorTerrain.tscn";
+ public const string prefab_ui_EditorColorPicker_tscn = "res://prefab/ui/EditorColorPicker.tscn";
+ public const string prefab_ui_RoomUI_tscn = "res://prefab/ui/RoomUI.tscn";
+ public const string prefab_prop_PropTemplate_tscn = "res://prefab/prop/PropTemplate.tscn";
+ public const string prefab_prop_buff_BuffProp0003_tscn = "res://prefab/prop/buff/BuffProp0003.tscn";
+ public const string prefab_prop_buff_BuffProp0014_tscn = "res://prefab/prop/buff/BuffProp0014.tscn";
+ public const string prefab_prop_buff_BuffProp0002_tscn = "res://prefab/prop/buff/BuffProp0002.tscn";
+ public const string prefab_prop_buff_BuffProp0009_tscn = "res://prefab/prop/buff/BuffProp0009.tscn";
+ public const string prefab_prop_buff_BuffProp0005_tscn = "res://prefab/prop/buff/BuffProp0005.tscn";
+ public const string prefab_prop_buff_BuffProp0013_tscn = "res://prefab/prop/buff/BuffProp0013.tscn";
+ public const string prefab_prop_buff_BuffProp0012_tscn = "res://prefab/prop/buff/BuffProp0012.tscn";
+ public const string prefab_prop_buff_BuffProp0004_tscn = "res://prefab/prop/buff/BuffProp0004.tscn";
+ public const string prefab_prop_buff_BuffProp0008_tscn = "res://prefab/prop/buff/BuffProp0008.tscn";
+ public const string prefab_prop_buff_BuffProp0011_tscn = "res://prefab/prop/buff/BuffProp0011.tscn";
+ public const string prefab_prop_buff_BuffProp0007_tscn = "res://prefab/prop/buff/BuffProp0007.tscn";
+ public const string prefab_prop_buff_BuffProp0006_tscn = "res://prefab/prop/buff/BuffProp0006.tscn";
+ public const string prefab_prop_buff_BuffProp0010_tscn = "res://prefab/prop/buff/BuffProp0010.tscn";
+ public const string prefab_prop_buff_BuffProp0001_tscn = "res://prefab/prop/buff/BuffProp0001.tscn";
+ public const string prefab_prop_active_ActiveProp5001_tscn = "res://prefab/prop/active/ActiveProp5001.tscn";
+ public const string prefab_prop_active_ActiveProp5000_tscn = "res://prefab/prop/active/ActiveProp5000.tscn";
+ public const string prefab_weapon_Weapon0008_tscn = "res://prefab/weapon/Weapon0008.tscn";
+ public const string prefab_weapon_Weapon0004_tscn = "res://prefab/weapon/Weapon0004.tscn";
+ public const string prefab_weapon_Weapon0005_tscn = "res://prefab/weapon/Weapon0005.tscn";
+ public const string prefab_weapon_Weapon0013_tscn = "res://prefab/weapon/Weapon0013.tscn";
+ public const string prefab_weapon_Weapon0009_tscn = "res://prefab/weapon/Weapon0009.tscn";
+ public const string prefab_weapon_WeaponTemplate_tscn = "res://prefab/weapon/WeaponTemplate.tscn";
+ public const string prefab_weapon_Weapon0014_tscn = "res://prefab/weapon/Weapon0014.tscn";
+ public const string prefab_weapon_Weapon0002_tscn = "res://prefab/weapon/Weapon0002.tscn";
+ public const string prefab_weapon_Weapon0003_tscn = "res://prefab/weapon/Weapon0003.tscn";
+ public const string prefab_weapon_Weapon0016_tscn = "res://prefab/weapon/Weapon0016.tscn";
+ public const string prefab_weapon_Weapon0001_tscn = "res://prefab/weapon/Weapon0001.tscn";
+ public const string prefab_weapon_Weapon0006_tscn = "res://prefab/weapon/Weapon0006.tscn";
+ public const string prefab_weapon_Weapon0010_tscn = "res://prefab/weapon/Weapon0010.tscn";
+ public const string prefab_weapon_Weapon0011_tscn = "res://prefab/weapon/Weapon0011.tscn";
+ public const string prefab_weapon_Weapon0007_tscn = "res://prefab/weapon/Weapon0007.tscn";
+ public const string prefab_role_Enemy0001_tscn = "res://prefab/role/Enemy0001.tscn";
+ public const string prefab_role_Enemy0002_tscn = "res://prefab/role/Enemy0002.tscn";
+ public const string prefab_role_Role0001_tscn = "res://prefab/role/Role0001.tscn";
+ public const string prefab_role_template_RoleTemplate_tscn = "res://prefab/role/template/RoleTemplate.tscn";
+ public const string prefab_role_template_EnemyTemplate_tscn = "res://prefab/role/template/EnemyTemplate.tscn";
public const string prefab_box_TreasureBox0001_tscn = "res://prefab/box/TreasureBox0001.tscn";
- public const string prefab_bullet_explode_Explode0001_tscn = "res://prefab/bullet/explode/Explode0001.tscn";
+ public const string prefab_test_MoveComponent_tscn = "res://prefab/test/MoveComponent.tscn";
+ public const string prefab_shell_Shell0002_tscn = "res://prefab/shell/Shell0002.tscn";
+ public const string prefab_shell_Shell0003_tscn = "res://prefab/shell/Shell0003.tscn";
+ public const string prefab_shell_Shell0004_tscn = "res://prefab/shell/Shell0004.tscn";
+ public const string prefab_shell_Shell0001_tscn = "res://prefab/shell/Shell0001.tscn";
+ public const string prefab_effect_Blood_tscn = "res://prefab/effect/Blood.tscn";
+ public const string prefab_effect_weapon_MeleeAttack1_tscn = "res://prefab/effect/weapon/MeleeAttack1.tscn";
+ public const string prefab_effect_weapon_ShotFire0001_tscn = "res://prefab/effect/weapon/ShotFire0001.tscn";
+ public const string prefab_effect_weapon_ShotFire0003_tscn = "res://prefab/effect/weapon/ShotFire0003.tscn";
+ public const string prefab_effect_weapon_ShotFire0002_tscn = "res://prefab/effect/weapon/ShotFire0002.tscn";
+ public const string prefab_effect_weapon_MeleeAttack2_tscn = "res://prefab/effect/weapon/MeleeAttack2.tscn";
+ public const string prefab_effect_weapon_ShotFire0004_tscn = "res://prefab/effect/weapon/ShotFire0004.tscn";
+ public const string prefab_effect_enemy_EnemyBlood0001_tscn = "res://prefab/effect/enemy/EnemyBlood0001.tscn";
+ public const string prefab_effect_enemy_EnemyDead0001_tscn = "res://prefab/effect/enemy/EnemyDead0001.tscn";
+ public const string prefab_effect_enemy_EnemyDead0002_tscn = "res://prefab/effect/enemy/EnemyDead0002.tscn";
+ public const string prefab_effect_common_Effect1_tscn = "res://prefab/effect/common/Effect1.tscn";
+ public const string prefab_effect_common_Trail0001_tscn = "res://prefab/effect/common/Trail0001.tscn";
+ public const string prefab_effect_bullet_BulletSmoke0002_tscn = "res://prefab/effect/bullet/BulletSmoke0002.tscn";
+ public const string prefab_effect_bullet_BulletDisappear0002_tscn = "res://prefab/effect/bullet/BulletDisappear0002.tscn";
+ public const string prefab_effect_bullet_BulletDisappear0001_tscn = "res://prefab/effect/bullet/BulletDisappear0001.tscn";
+ public const string prefab_effect_bullet_BulletSmoke0001_tscn = "res://prefab/effect/bullet/BulletSmoke0001.tscn";
+ public const string prefab_map_RoomDoor_S_tscn = "res://prefab/map/RoomDoor_S.tscn";
+ public const string prefab_map_RoomDoor_E_tscn = "res://prefab/map/RoomDoor_E.tscn";
+ public const string prefab_map_RoomDoor_W_tscn = "res://prefab/map/RoomDoor_W.tscn";
+ public const string prefab_map_RoomDoor_N_tscn = "res://prefab/map/RoomDoor_N.tscn";
public const string prefab_bullet_laser_Laser0001_tscn = "res://prefab/bullet/laser/Laser0001.tscn";
public const string prefab_bullet_laser_Laser0002_tscn = "res://prefab/bullet/laser/Laser0002.tscn";
+ public const string prefab_bullet_normal_Bullet0006_tscn = "res://prefab/bullet/normal/Bullet0006.tscn";
+ public const string prefab_bullet_normal_Bullet0007_tscn = "res://prefab/bullet/normal/Bullet0007.tscn";
public const string prefab_bullet_normal_Bullet0001_tscn = "res://prefab/bullet/normal/Bullet0001.tscn";
public const string prefab_bullet_normal_Bullet0002_tscn = "res://prefab/bullet/normal/Bullet0002.tscn";
public const string prefab_bullet_normal_Bullet0003_tscn = "res://prefab/bullet/normal/Bullet0003.tscn";
public const string prefab_bullet_normal_Bullet0004_tscn = "res://prefab/bullet/normal/Bullet0004.tscn";
- public const string prefab_bullet_normal_Bullet0005_tscn = "res://prefab/bullet/normal/Bullet0005.tscn";
- public const string prefab_bullet_normal_Bullet0006_tscn = "res://prefab/bullet/normal/Bullet0006.tscn";
- public const string prefab_bullet_normal_Bullet0007_tscn = "res://prefab/bullet/normal/Bullet0007.tscn";
public const string prefab_bullet_normal_Bullet0008_tscn = "res://prefab/bullet/normal/Bullet0008.tscn";
+ public const string prefab_bullet_normal_Bullet0009_tscn = "res://prefab/bullet/normal/Bullet0009.tscn";
+ public const string prefab_bullet_normal_Bullet0005_tscn = "res://prefab/bullet/normal/Bullet0005.tscn";
+ public const string prefab_bullet_explode_Explode0001_tscn = "res://prefab/bullet/explode/Explode0001.tscn";
public const string prefab_currency_Gold1_tscn = "res://prefab/currency/Gold1.tscn";
+ public const string prefab_currency_GoldTemplate_tscn = "res://prefab/currency/GoldTemplate.tscn";
public const string prefab_currency_Gold10_tscn = "res://prefab/currency/Gold10.tscn";
public const string prefab_currency_Gold5_tscn = "res://prefab/currency/Gold5.tscn";
- public const string prefab_currency_GoldTemplate_tscn = "res://prefab/currency/GoldTemplate.tscn";
- public const string prefab_effect_Blood_tscn = "res://prefab/effect/Blood.tscn";
- public const string prefab_effect_bullet_BulletDisappear0001_tscn = "res://prefab/effect/bullet/BulletDisappear0001.tscn";
- public const string prefab_effect_bullet_BulletDisappear0002_tscn = "res://prefab/effect/bullet/BulletDisappear0002.tscn";
- public const string prefab_effect_bullet_BulletSmoke0001_tscn = "res://prefab/effect/bullet/BulletSmoke0001.tscn";
- public const string prefab_effect_bullet_BulletSmoke0002_tscn = "res://prefab/effect/bullet/BulletSmoke0002.tscn";
- public const string prefab_effect_common_Effect1_tscn = "res://prefab/effect/common/Effect1.tscn";
- public const string prefab_effect_common_Trail0001_tscn = "res://prefab/effect/common/Trail0001.tscn";
- public const string prefab_effect_enemy_EnemyBlood0001_tscn = "res://prefab/effect/enemy/EnemyBlood0001.tscn";
- public const string prefab_effect_enemy_EnemyDead0001_tscn = "res://prefab/effect/enemy/EnemyDead0001.tscn";
- public const string prefab_effect_enemy_EnemyDead0002_tscn = "res://prefab/effect/enemy/EnemyDead0002.tscn";
- public const string prefab_effect_weapon_MeleeAttack1_tscn = "res://prefab/effect/weapon/MeleeAttack1.tscn";
- public const string prefab_effect_weapon_MeleeAttack2_tscn = "res://prefab/effect/weapon/MeleeAttack2.tscn";
- public const string prefab_effect_weapon_ShotFire0001_tscn = "res://prefab/effect/weapon/ShotFire0001.tscn";
- public const string prefab_effect_weapon_ShotFire0002_tscn = "res://prefab/effect/weapon/ShotFire0002.tscn";
- public const string prefab_effect_weapon_ShotFire0003_tscn = "res://prefab/effect/weapon/ShotFire0003.tscn";
- public const string prefab_effect_weapon_ShotFire0004_tscn = "res://prefab/effect/weapon/ShotFire0004.tscn";
- public const string prefab_map_RoomDoor_E_tscn = "res://prefab/map/RoomDoor_E.tscn";
- public const string prefab_map_RoomDoor_N_tscn = "res://prefab/map/RoomDoor_N.tscn";
- public const string prefab_map_RoomDoor_S_tscn = "res://prefab/map/RoomDoor_S.tscn";
- public const string prefab_map_RoomDoor_W_tscn = "res://prefab/map/RoomDoor_W.tscn";
- public const string prefab_prop_PropTemplate_tscn = "res://prefab/prop/PropTemplate.tscn";
- public const string prefab_prop_active_ActiveProp5000_tscn = "res://prefab/prop/active/ActiveProp5000.tscn";
- public const string prefab_prop_active_ActiveProp5001_tscn = "res://prefab/prop/active/ActiveProp5001.tscn";
- public const string prefab_prop_buff_BuffProp0001_tscn = "res://prefab/prop/buff/BuffProp0001.tscn";
- public const string prefab_prop_buff_BuffProp0002_tscn = "res://prefab/prop/buff/BuffProp0002.tscn";
- public const string prefab_prop_buff_BuffProp0003_tscn = "res://prefab/prop/buff/BuffProp0003.tscn";
- public const string prefab_prop_buff_BuffProp0004_tscn = "res://prefab/prop/buff/BuffProp0004.tscn";
- public const string prefab_prop_buff_BuffProp0005_tscn = "res://prefab/prop/buff/BuffProp0005.tscn";
- public const string prefab_prop_buff_BuffProp0006_tscn = "res://prefab/prop/buff/BuffProp0006.tscn";
- public const string prefab_prop_buff_BuffProp0007_tscn = "res://prefab/prop/buff/BuffProp0007.tscn";
- public const string prefab_prop_buff_BuffProp0008_tscn = "res://prefab/prop/buff/BuffProp0008.tscn";
- public const string prefab_prop_buff_BuffProp0009_tscn = "res://prefab/prop/buff/BuffProp0009.tscn";
- public const string prefab_prop_buff_BuffProp0010_tscn = "res://prefab/prop/buff/BuffProp0010.tscn";
- public const string prefab_prop_buff_BuffProp0011_tscn = "res://prefab/prop/buff/BuffProp0011.tscn";
- public const string prefab_prop_buff_BuffProp0012_tscn = "res://prefab/prop/buff/BuffProp0012.tscn";
- public const string prefab_prop_buff_BuffProp0013_tscn = "res://prefab/prop/buff/BuffProp0013.tscn";
- public const string prefab_prop_buff_BuffProp0014_tscn = "res://prefab/prop/buff/BuffProp0014.tscn";
- public const string prefab_role_Enemy0001_tscn = "res://prefab/role/Enemy0001.tscn";
- public const string prefab_role_Enemy0002_tscn = "res://prefab/role/Enemy0002.tscn";
- public const string prefab_role_Role0001_tscn = "res://prefab/role/Role0001.tscn";
- public const string prefab_role_template_EnemyTemplate_tscn = "res://prefab/role/template/EnemyTemplate.tscn";
- public const string prefab_role_template_RoleTemplate_tscn = "res://prefab/role/template/RoleTemplate.tscn";
- public const string prefab_shell_Shell0001_tscn = "res://prefab/shell/Shell0001.tscn";
- public const string prefab_shell_Shell0002_tscn = "res://prefab/shell/Shell0002.tscn";
- public const string prefab_shell_Shell0003_tscn = "res://prefab/shell/Shell0003.tscn";
- public const string prefab_shell_Shell0004_tscn = "res://prefab/shell/Shell0004.tscn";
- public const string prefab_test_MoveComponent_tscn = "res://prefab/test/MoveComponent.tscn";
- public const string prefab_ui_BottomTips_tscn = "res://prefab/ui/BottomTips.tscn";
- public const string prefab_ui_Debugger_tscn = "res://prefab/ui/Debugger.tscn";
- public const string prefab_ui_EditorColorPicker_tscn = "res://prefab/ui/EditorColorPicker.tscn";
- public const string prefab_ui_EditorDungeonGroup_tscn = "res://prefab/ui/EditorDungeonGroup.tscn";
- public const string prefab_ui_EditorForm_tscn = "res://prefab/ui/EditorForm.tscn";
- public const string prefab_ui_EditorImportCombination_tscn = "res://prefab/ui/EditorImportCombination.tscn";
- public const string prefab_ui_EditorInfo_tscn = "res://prefab/ui/EditorInfo.tscn";
- public const string prefab_ui_EditorInput_tscn = "res://prefab/ui/EditorInput.tscn";
- public const string prefab_ui_EditorManager_tscn = "res://prefab/ui/EditorManager.tscn";
- public const string prefab_ui_EditorTileImage_tscn = "res://prefab/ui/EditorTileImage.tscn";
- public const string prefab_ui_EditorTips_tscn = "res://prefab/ui/EditorTips.tscn";
- public const string prefab_ui_EditorTools_tscn = "res://prefab/ui/EditorTools.tscn";
- public const string prefab_ui_EditorWindow_tscn = "res://prefab/ui/EditorWindow.tscn";
- public const string prefab_ui_Loading_tscn = "res://prefab/ui/Loading.tscn";
- public const string prefab_ui_Main_tscn = "res://prefab/ui/Main.tscn";
- public const string prefab_ui_MapEditor_tscn = "res://prefab/ui/MapEditor.tscn";
- public const string prefab_ui_MapEditorCreateMark_tscn = "res://prefab/ui/MapEditorCreateMark.tscn";
- public const string prefab_ui_MapEditorCreatePreinstall_tscn = "res://prefab/ui/MapEditorCreatePreinstall.tscn";
- public const string prefab_ui_MapEditorCreateRoom_tscn = "res://prefab/ui/MapEditorCreateRoom.tscn";
- public const string prefab_ui_MapEditorMapLayer_tscn = "res://prefab/ui/MapEditorMapLayer.tscn";
- public const string prefab_ui_MapEditorMapMark_tscn = "res://prefab/ui/MapEditorMapMark.tscn";
- public const string prefab_ui_MapEditorMapTile_tscn = "res://prefab/ui/MapEditorMapTile.tscn";
- public const string prefab_ui_MapEditorProject_tscn = "res://prefab/ui/MapEditorProject.tscn";
- public const string prefab_ui_MapEditorSelectObject_tscn = "res://prefab/ui/MapEditorSelectObject.tscn";
- public const string prefab_ui_MapEditorTools_tscn = "res://prefab/ui/MapEditorTools.tscn";
- public const string prefab_ui_PauseMenu_tscn = "res://prefab/ui/PauseMenu.tscn";
- public const string prefab_ui_RoomMap_tscn = "res://prefab/ui/RoomMap.tscn";
- public const string prefab_ui_RoomUI_tscn = "res://prefab/ui/RoomUI.tscn";
- public const string prefab_ui_Setting_tscn = "res://prefab/ui/Setting.tscn";
- public const string prefab_ui_Settlement_tscn = "res://prefab/ui/Settlement.tscn";
- public const string prefab_ui_TileSetEditor_tscn = "res://prefab/ui/TileSetEditor.tscn";
- public const string prefab_ui_TileSetEditorCombination_tscn = "res://prefab/ui/TileSetEditorCombination.tscn";
- public const string prefab_ui_TileSetEditorImport_tscn = "res://prefab/ui/TileSetEditorImport.tscn";
- public const string prefab_ui_TileSetEditorProject_tscn = "res://prefab/ui/TileSetEditorProject.tscn";
- public const string prefab_ui_TileSetEditorTerrain_tscn = "res://prefab/ui/TileSetEditorTerrain.tscn";
- public const string prefab_weapon_Weapon0001_tscn = "res://prefab/weapon/Weapon0001.tscn";
- public const string prefab_weapon_Weapon0002_tscn = "res://prefab/weapon/Weapon0002.tscn";
- public const string prefab_weapon_Weapon0003_tscn = "res://prefab/weapon/Weapon0003.tscn";
- public const string prefab_weapon_Weapon0004_tscn = "res://prefab/weapon/Weapon0004.tscn";
- public const string prefab_weapon_Weapon0005_tscn = "res://prefab/weapon/Weapon0005.tscn";
- public const string prefab_weapon_Weapon0006_tscn = "res://prefab/weapon/Weapon0006.tscn";
- public const string prefab_weapon_Weapon0007_tscn = "res://prefab/weapon/Weapon0007.tscn";
- public const string prefab_weapon_Weapon0008_tscn = "res://prefab/weapon/Weapon0008.tscn";
- public const string prefab_weapon_Weapon0009_tscn = "res://prefab/weapon/Weapon0009.tscn";
- public const string prefab_weapon_Weapon0010_tscn = "res://prefab/weapon/Weapon0010.tscn";
- public const string prefab_weapon_Weapon0011_tscn = "res://prefab/weapon/Weapon0011.tscn";
- public const string prefab_weapon_Weapon0013_tscn = "res://prefab/weapon/Weapon0013.tscn";
- public const string prefab_weapon_Weapon0014_tscn = "res://prefab/weapon/Weapon0014.tscn";
- public const string prefab_weapon_Weapon0016_tscn = "res://prefab/weapon/Weapon0016.tscn";
- public const string prefab_weapon_WeaponTemplate_tscn = "res://prefab/weapon/WeaponTemplate.tscn";
- public const string resource_config_ActivityBase_json = "res://resource/config/ActivityBase.json";
- public const string resource_config_ActivityMaterial_json = "res://resource/config/ActivityMaterial.json";
- public const string resource_config_AiAttackAttr_json = "res://resource/config/AiAttackAttr.json";
- public const string resource_config_BulletBase_json = "res://resource/config/BulletBase.json";
- public const string resource_config_EnemyBase_json = "res://resource/config/EnemyBase.json";
+ public const string scene_Main_tscn = "res://scene/Main.tscn";
+ public const string scene_Hall_tscn = "res://scene/Hall.tscn";
+ public const string scene_Dungeon_tscn = "res://scene/Dungeon.tscn";
+ public const string scene_test_TestPerfectPixel_tscn = "res://scene/test/TestPerfectPixel.tscn";
+ public const string scene_test_TestNewTileMap_tscn = "res://scene/test/TestNewTileMap.tscn";
+ public const string scene_test_TestMask_tscn = "res://scene/test/TestMask.tscn";
+ public const string scene_test_TestGridData_tscn = "res://scene/test/TestGridData.tscn";
+ public const string scene_test_TestNavigationPolygon_tscn = "res://scene/test/TestNavigationPolygon.tscn";
+ public const string scene_test_TestRoomFog_tscn = "res://scene/test/TestRoomFog.tscn";
+ public const string scene_test_TestMask2_tscn = "res://scene/test/TestMask2.tscn";
+ public const string scene_test_TestTrail_tscn = "res://scene/test/TestTrail.tscn";
+ public const string scene_test_TestOptimizeSprite_tscn = "res://scene/test/TestOptimizeSprite.tscn";
+ public const string scene_test_TestPerfectPixelScene_tscn = "res://scene/test/TestPerfectPixelScene.tscn";
+ public const string scene_test_TestOutline_tscn = "res://scene/test/TestOutline.tscn";
+ public const string scene_test_TestTerrain2x2_tscn = "res://scene/test/TestTerrain2x2.tscn";
+ public const string scene_test_TestNewTerrain_tscn = "res://scene/test/TestNewTerrain.tscn";
+ public const string scene_test_TestCreateSector_tscn = "res://scene/test/TestCreateSector.tscn";
+ public const string scene_test_TestTileLayer_tscn = "res://scene/test/TestTileLayer.tscn";
+ public const string scene_test_TestNavigation2_tscn = "res://scene/test/TestNavigation2.tscn";
+ public const string scene_test_TestLoadTileSetConfig_tscn = "res://scene/test/TestLoadTileSetConfig.tscn";
+ public const string scene_test_TestDrawSprite_tscn = "res://scene/test/TestDrawSprite.tscn";
+ public const string resource_spriteFrames_prop_buff_BuffProp0009_tres = "res://resource/spriteFrames/prop/buff/BuffProp0009.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0013_tres = "res://resource/spriteFrames/prop/buff/BuffProp0013.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0005_tres = "res://resource/spriteFrames/prop/buff/BuffProp0005.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0004_tres = "res://resource/spriteFrames/prop/buff/BuffProp0004.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0012_tres = "res://resource/spriteFrames/prop/buff/BuffProp0012.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0008_tres = "res://resource/spriteFrames/prop/buff/BuffProp0008.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0003_tres = "res://resource/spriteFrames/prop/buff/BuffProp0003.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0002_tres = "res://resource/spriteFrames/prop/buff/BuffProp0002.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0014_tres = "res://resource/spriteFrames/prop/buff/BuffProp0014.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0001_tres = "res://resource/spriteFrames/prop/buff/BuffProp0001.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0007_tres = "res://resource/spriteFrames/prop/buff/BuffProp0007.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0011_tres = "res://resource/spriteFrames/prop/buff/BuffProp0011.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0010_tres = "res://resource/spriteFrames/prop/buff/BuffProp0010.tres";
+ public const string resource_spriteFrames_prop_buff_BuffProp0006_tres = "res://resource/spriteFrames/prop/buff/BuffProp0006.tres";
+ public const string resource_spriteFrames_prop_active_ActiveProp5001_tres = "res://resource/spriteFrames/prop/active/ActiveProp5001.tres";
+ public const string resource_spriteFrames_prop_active_ActiveProp5000_tres = "res://resource/spriteFrames/prop/active/ActiveProp5000.tres";
+ public const string resource_spriteFrames_weapon_Weapon0002_tres = "res://resource/spriteFrames/weapon/Weapon0002.tres";
+ public const string resource_spriteFrames_weapon_Weapon0014_tres = "res://resource/spriteFrames/weapon/Weapon0014.tres";
+ public const string resource_spriteFrames_weapon_Weapon0004_hit_tres = "res://resource/spriteFrames/weapon/Weapon0004_hit.tres";
+ public const string resource_spriteFrames_weapon_Weapon0003_tres = "res://resource/spriteFrames/weapon/Weapon0003.tres";
+ public const string resource_spriteFrames_weapon_Weapon0008_tres = "res://resource/spriteFrames/weapon/Weapon0008.tres";
+ public const string resource_spriteFrames_weapon_Weapon0004_tres = "res://resource/spriteFrames/weapon/Weapon0004.tres";
+ public const string resource_spriteFrames_weapon_Weapon0013_tres = "res://resource/spriteFrames/weapon/Weapon0013.tres";
+ public const string resource_spriteFrames_weapon_Weapon0005_tres = "res://resource/spriteFrames/weapon/Weapon0005.tres";
+ public const string resource_spriteFrames_weapon_Weapon0009_tres = "res://resource/spriteFrames/weapon/Weapon0009.tres";
+ public const string resource_spriteFrames_weapon_Weapon0010_tres = "res://resource/spriteFrames/weapon/Weapon0010.tres";
+ public const string resource_spriteFrames_weapon_Weapon0006_tres = "res://resource/spriteFrames/weapon/Weapon0006.tres";
+ public const string resource_spriteFrames_weapon_Weapon0007_tres = "res://resource/spriteFrames/weapon/Weapon0007.tres";
+ public const string resource_spriteFrames_weapon_Weapon0011_tres = "res://resource/spriteFrames/weapon/Weapon0011.tres";
+ public const string resource_spriteFrames_weapon_Weapon0016_tres = "res://resource/spriteFrames/weapon/Weapon0016.tres";
+ public const string resource_spriteFrames_weapon_Weapon0001_tres = "res://resource/spriteFrames/weapon/Weapon0001.tres";
+ public const string resource_spriteFrames_role_Enemy0001_tres = "res://resource/spriteFrames/role/Enemy0001.tres";
+ public const string resource_spriteFrames_role_Role_tip_tres = "res://resource/spriteFrames/role/Role_tip.tres";
+ public const string resource_spriteFrames_role_Enemy0002_tres = "res://resource/spriteFrames/role/Enemy0002.tres";
+ public const string resource_spriteFrames_role_Role0001_tres = "res://resource/spriteFrames/role/Role0001.tres";
+ public const string resource_spriteFrames_shell_Shell0004_tres = "res://resource/spriteFrames/shell/Shell0004.tres";
+ public const string resource_spriteFrames_shell_Shell0002_tres = "res://resource/spriteFrames/shell/Shell0002.tres";
+ public const string resource_spriteFrames_shell_Shell0003_tres = "res://resource/spriteFrames/shell/Shell0003.tres";
+ public const string resource_spriteFrames_shell_Shell0001_tres = "res://resource/spriteFrames/shell/Shell0001.tres";
+ public const string resource_spriteFrames_other_RoomDoor_E_Down_tres = "res://resource/spriteFrames/other/RoomDoor_E_Down.tres";
+ public const string resource_spriteFrames_other_RoomDoor_N_tres = "res://resource/spriteFrames/other/RoomDoor_N.tres";
+ public const string resource_spriteFrames_other_RoomDoor_E_Up_tres = "res://resource/spriteFrames/other/RoomDoor_E_Up.tres";
+ public const string resource_spriteFrames_bullet_Bullet0001_tres = "res://resource/spriteFrames/bullet/Bullet0001.tres";
+ public const string resource_spriteFrames_bullet_Bullet0006_tres = "res://resource/spriteFrames/bullet/Bullet0006.tres";
+ public const string resource_spriteFrames_bullet_Collision0001_tres = "res://resource/spriteFrames/bullet/Collision0001.tres";
+ public const string resource_spriteFrames_bullet_Bullet0007_tres = "res://resource/spriteFrames/bullet/Bullet0007.tres";
+ public const string resource_spriteFrames_bullet_Bullet0004_tres = "res://resource/spriteFrames/bullet/Bullet0004.tres";
+ public const string resource_spriteFrames_bullet_Bullet0008_tres = "res://resource/spriteFrames/bullet/Bullet0008.tres";
+ public const string resource_spriteFrames_bullet_Collision0002_tres = "res://resource/spriteFrames/bullet/Collision0002.tres";
+ public const string resource_spriteFrames_bullet_Bullet0009_tres = "res://resource/spriteFrames/bullet/Bullet0009.tres";
+ public const string resource_spriteFrames_bullet_Bullet0005_tres = "res://resource/spriteFrames/bullet/Bullet0005.tres";
+ public const string resource_spriteFrames_bullet_Bullet0002_tres = "res://resource/spriteFrames/bullet/Bullet0002.tres";
+ public const string resource_spriteFrames_bullet_Bullet0003_tres = "res://resource/spriteFrames/bullet/Bullet0003.tres";
public const string resource_config_LiquidMaterial_json = "res://resource/config/LiquidMaterial.json";
- public const string resource_config_Sound_json = "res://resource/config/Sound.json";
+ public const string resource_config_ActivityBase_json = "res://resource/config/ActivityBase.json";
+ public const string resource_config_EnemyBase_json = "res://resource/config/EnemyBase.json";
+ public const string resource_config_BulletBase_json = "res://resource/config/BulletBase.json";
+ public const string resource_config_AiAttackAttr_json = "res://resource/config/AiAttackAttr.json";
+ public const string resource_config_ActivityMaterial_json = "res://resource/config/ActivityMaterial.json";
public const string resource_config_WeaponBase_json = "res://resource/config/WeaponBase.json";
+ public const string resource_config_Sound_json = "res://resource/config/Sound.json";
+ public const string resource_navigation_NavigationPolygon_tres = "res://resource/navigation/NavigationPolygon.tres";
public const string resource_curve_Curve1_tres = "res://resource/curve/Curve1.tres";
- public const string resource_font_DinkieBitmap7pxDemo_ttf = "res://resource/font/DinkieBitmap-7pxDemo.ttf";
+ public const string resource_theme_theme1_tres = "res://resource/theme/theme1.tres";
+ public const string resource_theme_mainTheme_tres = "res://resource/theme/mainTheme.tres";
+ public const string resource_sprite_ui_GUI_png = "res://resource/sprite/ui/GUI.png";
+ public const string resource_sprite_ui_font_bg_png = "res://resource/sprite/ui/font_bg.png";
+ public const string resource_sprite_ui_roomMap_MapBar_png = "res://resource/sprite/ui/roomMap/MapBar.png";
+ public const string resource_sprite_ui_roomUI_ReloadBar_png = "res://resource/sprite/ui/roomUI/ReloadBar.png";
+ public const string resource_sprite_ui_roomUI_Cooldown_png = "res://resource/sprite/ui/roomUI/Cooldown.png";
+ public const string resource_sprite_ui_roomUI_icon_replace_png = "res://resource/sprite/ui/roomUI/icon_replace.png";
+ public const string resource_sprite_ui_roomUI_Shield_full_png = "res://resource/sprite/ui/roomUI/Shield_full.png";
+ public const string resource_sprite_ui_roomUI_Panel2_png = "res://resource/sprite/ui/roomUI/Panel2.png";
+ public const string resource_sprite_ui_roomUI_icon_pickup_png = "res://resource/sprite/ui/roomUI/icon_pickup.png";
+ public const string resource_sprite_ui_roomUI_icon_bullet_png = "res://resource/sprite/ui/roomUI/icon_bullet.png";
+ public const string resource_sprite_ui_roomUI_ReloadBarBlock_png = "res://resource/sprite/ui/roomUI/ReloadBarBlock.png";
+ public const string resource_sprite_ui_roomUI_Life_half_png = "res://resource/sprite/ui/roomUI/Life_half.png";
+ public const string resource_sprite_ui_roomUI_Life_empty_png = "res://resource/sprite/ui/roomUI/Life_empty.png";
+ public const string resource_sprite_ui_roomUI_Panel_png = "res://resource/sprite/ui/roomUI/Panel.png";
+ public const string resource_sprite_ui_roomUI_ChargeProgressBar_png = "res://resource/sprite/ui/roomUI/ChargeProgressBar.png";
+ public const string resource_sprite_ui_roomUI_ChargeProgress_png = "res://resource/sprite/ui/roomUI/ChargeProgress.png";
+ public const string resource_sprite_ui_roomUI_Life_full_png = "res://resource/sprite/ui/roomUI/Life_full.png";
+ public const string resource_sprite_ui_roomUI_Shield_empty_png = "res://resource/sprite/ui/roomUI/Shield_empty.png";
+ public const string resource_sprite_ui_commonIcon_Delete2_png = "res://resource/sprite/ui/commonIcon/Delete2.png";
+ public const string resource_sprite_ui_commonIcon_WaveCell_png = "res://resource/sprite/ui/commonIcon/WaveCell.png";
+ public const string resource_sprite_ui_commonIcon_Add_png = "res://resource/sprite/ui/commonIcon/Add.png";
+ public const string resource_sprite_ui_commonIcon_AreaTool_png = "res://resource/sprite/ui/commonIcon/AreaTool.png";
+ public const string resource_sprite_ui_commonIcon_CenterTool_png = "res://resource/sprite/ui/commonIcon/CenterTool.png";
+ public const string resource_sprite_ui_commonIcon_Error_mini_png = "res://resource/sprite/ui/commonIcon/Error_mini.png";
+ public const string resource_sprite_ui_commonIcon_Import_png = "res://resource/sprite/ui/commonIcon/Import.png";
+ public const string resource_sprite_ui_commonIcon_BirthMark_png = "res://resource/sprite/ui/commonIcon/BirthMark.png";
+ public const string resource_sprite_ui_commonIcon_Gold_10_png = "res://resource/sprite/ui/commonIcon/Gold_10.png";
+ public const string resource_sprite_ui_commonIcon_Lock_png = "res://resource/sprite/ui/commonIcon/Lock.png";
+ public const string resource_sprite_ui_commonIcon_Visible_png = "res://resource/sprite/ui/commonIcon/Visible.png";
+ public const string resource_sprite_ui_commonIcon_DragTool_png = "res://resource/sprite/ui/commonIcon/DragTool.png";
+ public const string resource_sprite_ui_commonIcon_Unknown_png = "res://resource/sprite/ui/commonIcon/Unknown.png";
+ public const string resource_sprite_ui_commonIcon_Down_png = "res://resource/sprite/ui/commonIcon/Down.png";
+ public const string resource_sprite_ui_commonIcon_PenTool_png = "res://resource/sprite/ui/commonIcon/PenTool.png";
+ public const string resource_sprite_ui_commonIcon_DoorTool_png = "res://resource/sprite/ui/commonIcon/DoorTool.png";
+ public const string resource_sprite_ui_commonIcon_Search_png = "res://resource/sprite/ui/commonIcon/Search.png";
+ public const string resource_sprite_ui_commonIcon_Block_png = "res://resource/sprite/ui/commonIcon/Block.png";
+ public const string resource_sprite_ui_commonIcon_UnknownActivity_png = "res://resource/sprite/ui/commonIcon/UnknownActivity.png";
+ public const string resource_sprite_ui_commonIcon_Dice_png = "res://resource/sprite/ui/commonIcon/Dice.png";
+ public const string resource_sprite_ui_commonIcon_Delete_png = "res://resource/sprite/ui/commonIcon/Delete.png";
+ public const string resource_sprite_ui_commonIcon_Select_png = "res://resource/sprite/ui/commonIcon/Select.png";
+ public const string resource_sprite_ui_commonIcon_MarkCell_png = "res://resource/sprite/ui/commonIcon/MarkCell.png";
+ public const string resource_sprite_ui_commonIcon_Unlock_png = "res://resource/sprite/ui/commonIcon/Unlock.png";
+ public const string resource_sprite_ui_commonIcon_Success_mini_png = "res://resource/sprite/ui/commonIcon/Success_mini.png";
+ public const string resource_sprite_ui_commonIcon_Edit_png = "res://resource/sprite/ui/commonIcon/Edit.png";
+ public const string resource_sprite_ui_commonIcon_MarkCell_placeholder_png = "res://resource/sprite/ui/commonIcon/MarkCell_placeholder.png";
+ public const string resource_sprite_ui_commonIcon_Mark_png = "res://resource/sprite/ui/commonIcon/Mark.png";
+ public const string resource_sprite_ui_commonIcon_PackageMark_png = "res://resource/sprite/ui/commonIcon/PackageMark.png";
+ public const string resource_sprite_ui_commonIcon_Play_png = "res://resource/sprite/ui/commonIcon/Play.png";
+ public const string resource_sprite_ui_commonIcon_Select2_png = "res://resource/sprite/ui/commonIcon/Select2.png";
+ public const string resource_sprite_ui_commonIcon_Setting_png = "res://resource/sprite/ui/commonIcon/Setting.png";
+ public const string resource_sprite_ui_commonIcon_Back_png = "res://resource/sprite/ui/commonIcon/Back.png";
+ public const string resource_sprite_ui_commonIcon_Right_png = "res://resource/sprite/ui/commonIcon/Right.png";
+ public const string resource_sprite_ui_commonIcon_Save_png = "res://resource/sprite/ui/commonIcon/Save.png";
+ public const string resource_sprite_ui_commonIcon_Hide_png = "res://resource/sprite/ui/commonIcon/Hide.png";
+ public const string resource_sprite_ui_commonIcon_Missing_png = "res://resource/sprite/ui/commonIcon/Missing.png";
+ public const string resource_sprite_ui_sursors_CursorCenter_png = "res://resource/sprite/ui/sursors/CursorCenter.png";
+ public const string resource_sprite_ui_sursors_Cursors_png = "res://resource/sprite/ui/sursors/Cursors.png";
+ public const string resource_sprite_ui_sursors_Cursors_Ui_png = "res://resource/sprite/ui/sursors/Cursors_Ui.png";
+ public const string resource_sprite_ui_mapEditorTools_DoorDragButton_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton.png";
+ public const string resource_sprite_ui_mapEditorTools_DoorDragButton_hover_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton_hover.png";
+ public const string resource_sprite_ui_mapEditorTools_DoorDragButton_down_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton_down.png";
+ public const string resource_sprite_ui_mapEditorProject_CellBg_png = "res://resource/sprite/ui/mapEditorProject/CellBg.png";
+ public const string resource_sprite_ui_keyboard_e_png = "res://resource/sprite/ui/keyboard/e.png";
+ public const string resource_sprite_prop_buff_BuffProp0003_png = "res://resource/sprite/prop/buff/BuffProp0003.png";
+ public const string resource_sprite_prop_buff_BuffProp0002_png = "res://resource/sprite/prop/buff/BuffProp0002.png";
+ public const string resource_sprite_prop_buff_BuffProp0014_png = "res://resource/sprite/prop/buff/BuffProp0014.png";
+ public const string resource_sprite_prop_buff_BuffProp0001_png = "res://resource/sprite/prop/buff/BuffProp0001.png";
+ public const string resource_sprite_prop_buff_BuffProp0011_png = "res://resource/sprite/prop/buff/BuffProp0011.png";
+ public const string resource_sprite_prop_buff_BuffProp0005_png = "res://resource/sprite/prop/buff/BuffProp0005.png";
+ public const string resource_sprite_prop_buff_BuffProp0004_png = "res://resource/sprite/prop/buff/BuffProp0004.png";
+ public const string resource_sprite_prop_buff_BuffProp0010_png = "res://resource/sprite/prop/buff/BuffProp0010.png";
+ public const string resource_sprite_prop_buff_BuffProp0006_png = "res://resource/sprite/prop/buff/BuffProp0006.png";
+ public const string resource_sprite_prop_buff_BuffProp0012_png = "res://resource/sprite/prop/buff/BuffProp0012.png";
+ public const string resource_sprite_prop_buff_BuffProp0013_png = "res://resource/sprite/prop/buff/BuffProp0013.png";
+ public const string resource_sprite_prop_buff_BuffProp0007_png = "res://resource/sprite/prop/buff/BuffProp0007.png";
+ public const string resource_sprite_prop_buff_BuffProp0009_png = "res://resource/sprite/prop/buff/BuffProp0009.png";
+ public const string resource_sprite_prop_buff_BuffProp0008_png = "res://resource/sprite/prop/buff/BuffProp0008.png";
+ public const string resource_sprite_prop_buff_BuffProp0001export_png = "res://resource/sprite/prop/buff/BuffProp0001-export.png";
+ public const string resource_sprite_prop_active_ActiveProp5001_png = "res://resource/sprite/prop/active/ActiveProp5001.png";
+ public const string resource_sprite_prop_active_ActiveProp5000_png = "res://resource/sprite/prop/active/ActiveProp5000.png";
+ public const string resource_sprite_weapon_weapon0014_Weapon0014_png = "res://resource/sprite/weapon/weapon0014/Weapon0014.png";
+ public const string resource_sprite_weapon_weapon0013_weapon0014export_png = "res://resource/sprite/weapon/weapon0013/weapon0014-export.png";
+ public const string resource_sprite_weapon_weapon0013_weapon0014_png = "res://resource/sprite/weapon/weapon0013/weapon0014.png";
+ public const string resource_sprite_weapon_weapon0013_weapon0013_png = "res://resource/sprite/weapon/weapon0013/weapon0013.png";
+ public const string resource_sprite_weapon_weapon0022_weapon0022_png = "res://resource/sprite/weapon/weapon0022/weapon0022.png";
+ public const string resource_sprite_weapon_weapon0040_weapon00401_png = "res://resource/sprite/weapon/weapon0040/weapon0040,1.png";
+ public const string resource_sprite_weapon_weapon0040_weapon0040_png = "res://resource/sprite/weapon/weapon0040/weapon0040.png";
+ public const string resource_sprite_weapon_weapon0023_weapon0023_png = "res://resource/sprite/weapon/weapon0023/weapon0023.png";
+ public const string resource_sprite_weapon_weapon0012_bow_png = "res://resource/sprite/weapon/weapon0012/bow.png";
+ public const string resource_sprite_weapon_weapon0041_weapon0041_png = "res://resource/sprite/weapon/weapon0041/weapon0041.png";
+ public const string resource_sprite_weapon_weapon0046_weapon0046_png = "res://resource/sprite/weapon/weapon0046/weapon0046.png";
+ public const string resource_sprite_weapon_weapon31_weapon0031_png = "res://resource/sprite/weapon/weapon31/weapon0031.png";
+ public const string resource_sprite_weapon_weapon0008_Weapon0008_png = "res://resource/sprite/weapon/weapon0008/Weapon0008.png";
+ public const string resource_sprite_weapon_weapon0008_Weapon0008_reloading_png = "res://resource/sprite/weapon/weapon0008/Weapon0008_reloading.png";
+ public const string resource_sprite_weapon_weapon0037_weapon0037_png = "res://resource/sprite/weapon/weapon0037/weapon0037.png";
+ public const string resource_sprite_weapon_weapon0030_weapon0030_png = "res://resource/sprite/weapon/weapon0030/weapon0030.png";
+ public const string resource_sprite_weapon_weapon0039_weapon00391_png = "res://resource/sprite/weapon/weapon0039/weapon0039(1).png";
+ public const string resource_sprite_weapon_weapon0039_weapon0039_png = "res://resource/sprite/weapon/weapon0039/weapon0039.png";
+ public const string resource_sprite_weapon_weapon0006_Weapon0006_png = "res://resource/sprite/weapon/weapon0006/Weapon0006.png";
+ public const string resource_sprite_weapon_weapon0001_Weapon0001_png = "res://resource/sprite/weapon/weapon0001/Weapon0001.png";
+ public const string resource_sprite_weapon_weapon0038_weapon0038_1_png = "res://resource/sprite/weapon/weapon0038/weapon0038.1.png";
+ public const string resource_sprite_weapon_weapon0038_weapon0038_png = "res://resource/sprite/weapon/weapon0038/weapon0038.png";
+ public const string resource_sprite_weapon_weapon0007_Weapon0007_png = "res://resource/sprite/weapon/weapon0007/Weapon0007.png";
+ public const string resource_sprite_weapon_weapon0009_weapon0009_png = "res://resource/sprite/weapon/weapon0009/weapon0009.png";
+ public const string resource_sprite_weapon_weapon0009_Weapon0009_reload_png = "res://resource/sprite/weapon/weapon0009/Weapon0009_reload.png";
+ public const string resource_sprite_weapon_weapon0036_weapon0036_png = "res://resource/sprite/weapon/weapon0036/weapon0036.png";
+ public const string resource_sprite_weapon_weapon0043_weapon0043_png = "res://resource/sprite/weapon/weapon0043/weapon0043.png";
+ public const string resource_sprite_weapon_weapon0044_weapon0044_png = "res://resource/sprite/weapon/weapon0044/weapon0044.png";
+ public const string resource_sprite_weapon_weapon0010_Weapon0010_reloading_png = "res://resource/sprite/weapon/weapon0010/Weapon0010_reloading.png";
+ public const string resource_sprite_weapon_weapon0010_Weapon0010_png = "res://resource/sprite/weapon/weapon0010/Weapon0010.png";
+ public const string resource_sprite_weapon_weapon0017_seapon0017t_png = "res://resource/sprite/weapon/weapon0017/seapon0017t.png";
+ public const string resource_sprite_weapon_weapon0021_weapon0021_png = "res://resource/sprite/weapon/weapon0021/weapon0021.png";
+ public const string resource_sprite_weapon_weapon0019_weapon0019_png = "res://resource/sprite/weapon/weapon0019/weapon0019.png";
+ public const string resource_sprite_weapon_weapon0045_weapon0045_png = "res://resource/sprite/weapon/weapon0045/weapon0045.png";
+ public const string resource_sprite_weapon_weapon0045_子弹_png = "res://resource/sprite/weapon/weapon0045/子弹.png";
+ public const string resource_sprite_weapon_weapon0042_weapon0042_png = "res://resource/sprite/weapon/weapon0042/weapon0042.png";
+ public const string resource_sprite_weapon_weapon0018_weapon0018_png = "res://resource/sprite/weapon/weapon0018/weapon0018.png";
+ public const string resource_sprite_weapon_weapon0020_weapon0020_png = "res://resource/sprite/weapon/weapon0020/weapon0020.png";
+ public const string resource_sprite_weapon_weapon0020_weapon0020export_png = "res://resource/sprite/weapon/weapon0020/weapon0020-export.png";
+ public const string resource_sprite_weapon_weapon0016_weapon0016_pull_png = "res://resource/sprite/weapon/weapon0016/weapon0016_pull.png";
+ public const string resource_sprite_weapon_weapon0016_weapon0016_png = "res://resource/sprite/weapon/weapon0016/weapon0016.png";
+ public const string resource_sprite_weapon_weapon0011_Weapon0011_png = "res://resource/sprite/weapon/weapon0011/Weapon0011.png";
+ public const string resource_sprite_weapon_weapon29_weapon0029_png = "res://resource/sprite/weapon/weapon29/weapon0029.png";
+ public const string resource_sprite_weapon_weapon0033_weapon0033_png = "res://resource/sprite/weapon/weapon0033/weapon0033.png";
+ public const string resource_sprite_weapon_weapon0034_weapon0034_png = "res://resource/sprite/weapon/weapon0034/weapon0034.png";
+ public const string resource_sprite_weapon_weapon0002_Weapon0002_reloading_png = "res://resource/sprite/weapon/weapon0002/Weapon0002_reloading.png";
+ public const string resource_sprite_weapon_weapon0002_Weapon0002_png = "res://resource/sprite/weapon/weapon0002/Weapon0002.png";
+ public const string resource_sprite_weapon_weapon0005_Weapon0005_png = "res://resource/sprite/weapon/weapon0005/Weapon0005.png";
+ public const string resource_sprite_weapon_weapon0004_KnifeHit1_png = "res://resource/sprite/weapon/weapon0004/KnifeHit1.png";
+ public const string resource_sprite_weapon_weapon0004_Weapon0004_png = "res://resource/sprite/weapon/weapon0004/Weapon0004.png";
+ public const string resource_sprite_weapon_weapon0003_Weapon0003_png = "res://resource/sprite/weapon/weapon0003/Weapon0003.png";
+ public const string resource_sprite_weapon_weapon0035_weapon0035_png = "res://resource/sprite/weapon/weapon0035/weapon0035.png";
+ public const string resource_sprite_weapon_weapon0032_weapon0032_png = "res://resource/sprite/weapon/weapon0032/weapon0032.png";
+ public const string resource_sprite_role_role10_png = "res://resource/sprite/role/role10.png";
+ public const string resource_sprite_role_role4_png = "res://resource/sprite/role/role4.png";
+ public const string resource_sprite_role_role5_png = "res://resource/sprite/role/role5.png";
+ public const string resource_sprite_role_role7_png = "res://resource/sprite/role/role7.png";
+ public const string resource_sprite_role_role6_png = "res://resource/sprite/role/role6.png";
+ public const string resource_sprite_role_role3_png = "res://resource/sprite/role/role3.png";
+ public const string resource_sprite_role_scarecrow0001_png = "res://resource/sprite/role/scarecrow0001.png";
+ public const string resource_sprite_role_role8_png = "res://resource/sprite/role/role8.png";
+ public const string resource_sprite_role_role9_png = "res://resource/sprite/role/role9.png";
+ public const string resource_sprite_role_enemy0002_Enemy0002_png = "res://resource/sprite/role/enemy0002/Enemy0002.png";
+ public const string resource_sprite_role_enemy0002_Enemy0002_dead_png = "res://resource/sprite/role/enemy0002/Enemy0002_dead.png";
+ public const string resource_sprite_role_enemy0002_Enemy0002_attack_png = "res://resource/sprite/role/enemy0002/Enemy0002_attack.png";
+ public const string resource_sprite_role_enemy0002_Enemy0002_run_png = "res://resource/sprite/role/enemy0002/Enemy0002_run.png";
+ public const string resource_sprite_role_enemy0002_Enemy0002_idle_png = "res://resource/sprite/role/enemy0002/Enemy0002_idle.png";
+ public const string resource_sprite_role_role0001_Role0001_head_png = "res://resource/sprite/role/role0001/Role0001_head.png";
+ public const string resource_sprite_role_role0001_Role0001_Icon_png = "res://resource/sprite/role/role0001/Role0001_Icon.png";
+ public const string resource_sprite_role_role0001_Role0001_png = "res://resource/sprite/role/role0001/Role0001.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0002_png = "res://resource/sprite/role/role0001/idle/Sprite-0002.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0003_png = "res://resource/sprite/role/role0001/idle/Sprite-0003.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0007_png = "res://resource/sprite/role/role0001/idle/Sprite-0007.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0006_png = "res://resource/sprite/role/role0001/idle/Sprite-0006.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0004_png = "res://resource/sprite/role/role0001/idle/Sprite-0004.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0005_png = "res://resource/sprite/role/role0001/idle/Sprite-0005.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0008_png = "res://resource/sprite/role/role0001/idle/Sprite-0008.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0015_png = "res://resource/sprite/role/role0001/roll/Sprite-0015.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0014_png = "res://resource/sprite/role/role0001/roll/Sprite-0014.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0016_png = "res://resource/sprite/role/role0001/roll/Sprite-0016.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0017_png = "res://resource/sprite/role/role0001/roll/Sprite-0017.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0013_png = "res://resource/sprite/role/role0001/roll/Sprite-0013.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0012_png = "res://resource/sprite/role/role0001/roll/Sprite-0012.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0010_png = "res://resource/sprite/role/role0001/roll/Sprite-0010.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0011_png = "res://resource/sprite/role/role0001/roll/Sprite-0011.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0008_png = "res://resource/sprite/role/role0001/roll/Sprite-0008.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0009_png = "res://resource/sprite/role/role0001/roll/Sprite-0009.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0018_png = "res://resource/sprite/role/role0001/roll/Sprite-0018.png";
+ public const string resource_sprite_role_role0001_run_Sprite0002_png = "res://resource/sprite/role/role0001/run/Sprite-0002.png";
+ public const string resource_sprite_role_role0001_run_Sprite0003_png = "res://resource/sprite/role/role0001/run/Sprite-0003.png";
+ public const string resource_sprite_role_role0001_run_Sprite0007_png = "res://resource/sprite/role/role0001/run/Sprite-0007.png";
+ public const string resource_sprite_role_role0001_run_Sprite0006_png = "res://resource/sprite/role/role0001/run/Sprite-0006.png";
+ public const string resource_sprite_role_role0001_run_Sprite0004_png = "res://resource/sprite/role/role0001/run/Sprite-0004.png";
+ public const string resource_sprite_role_role0001_run_Sprite0005_png = "res://resource/sprite/role/role0001/run/Sprite-0005.png";
+ public const string resource_sprite_role_role0001_run_Sprite0008_png = "res://resource/sprite/role/role0001/run/Sprite-0008.png";
+ public const string resource_sprite_role_common_Role_astonished_png = "res://resource/sprite/role/common/Role_astonished.png";
+ public const string resource_sprite_role_common_Role_query_png = "res://resource/sprite/role/common/Role_query.png";
+ public const string resource_sprite_role_common_Role_shadow1_png = "res://resource/sprite/role/common/Role_shadow1.png";
+ public const string resource_sprite_role_common_Role_notify_png = "res://resource/sprite/role/common/Role_notify.png";
+ public const string resource_sprite_role_enemy0001_enemy0001_png = "res://resource/sprite/role/enemy0001/enemy0001.png";
+ public const string resource_sprite_role_enemy0001_enemy0001_Icon_png = "res://resource/sprite/role/enemy0001/enemy0001_Icon.png";
+ public const string resource_sprite_role_enemy0001_enemy0001_Debris_png = "res://resource/sprite/role/enemy0001/enemy0001_Debris.png";
+ public const string resource_sprite_box_TreasureBox0001_icon_png = "res://resource/sprite/box/TreasureBox0001_icon.png";
+ public const string resource_sprite_box_TreasureBox0001_png = "res://resource/sprite/box/TreasureBox0001.png";
+ public const string resource_sprite_shootFire_ShotFire0001_png = "res://resource/sprite/shootFire/ShotFire0001.png";
+ public const string resource_sprite_shootFire_ShotFire0002_png = "res://resource/sprite/shootFire/ShotFire0002.png";
+ public const string resource_sprite_shootFire_ShotFire0003_png = "res://resource/sprite/shootFire/ShotFire0003.png";
+ public const string resource_sprite_shell_Shell0001_png = "res://resource/sprite/shell/Shell0001.png";
+ public const string resource_sprite_shell_Shell0003_png = "res://resource/sprite/shell/Shell0003.png";
+ public const string resource_sprite_shell_Shell0002_png = "res://resource/sprite/shell/Shell0002.png";
+ public const string resource_sprite_shell_Shell0004_png = "res://resource/sprite/shell/Shell0004.png";
+ public const string resource_sprite_common_debug_arrows_png = "res://resource/sprite/common/debug_arrows.png";
+ public const string resource_sprite_common_Circle_png = "res://resource/sprite/common/Circle.png";
+ public const string resource_sprite_common_MeleeAttack1_png = "res://resource/sprite/common/MeleeAttack1.png";
+ public const string resource_sprite_common_Circle2_png = "res://resource/sprite/common/Circle2.png";
+ public const string resource_sprite_common_Smoke_png = "res://resource/sprite/common/Smoke.png";
+ public const string resource_sprite_common_Effect1_png = "res://resource/sprite/common/Effect1.png";
+ public const string resource_sprite_common_Smoke2_png = "res://resource/sprite/common/Smoke2.png";
+ public const string resource_sprite_common_Smoke3_png = "res://resource/sprite/common/Smoke3.png";
+ public const string resource_sprite_common_Smoke4_png = "res://resource/sprite/common/Smoke4.png";
+ public const string resource_sprite_map_PreviewMap_png = "res://resource/sprite/map/PreviewMap.png";
+ public const string resource_sprite_map_PreviewTransition_png = "res://resource/sprite/map/PreviewTransition.png";
+ public const string resource_sprite_map_TerrainMask_png = "res://resource/sprite/map/TerrainMask.png";
+ public const string resource_sprite_map_TerrainMask3_png = "res://resource/sprite/map/TerrainMask3.png";
+ public const string resource_sprite_map_TerrainMask2_png = "res://resource/sprite/map/TerrainMask2.png";
+ public const string resource_sprite_map_WallTransition3_png = "res://resource/sprite/map/WallTransition3.png";
+ public const string resource_sprite_map_door_open_png = "res://resource/sprite/map/door_open.png";
+ public const string resource_sprite_map_TerrainMask4_png = "res://resource/sprite/map/TerrainMask4.png";
+ public const string resource_sprite_map_WallTransition2_png = "res://resource/sprite/map/WallTransition2.png";
+ public const string resource_sprite_map_PreviewMapShadow_png = "res://resource/sprite/map/PreviewMapShadow.png";
+ public const string resource_sprite_map_WallTransition1_png = "res://resource/sprite/map/WallTransition1.png";
+ public const string resource_sprite_map_door_up_png = "res://resource/sprite/map/door_up.png";
+ public const string resource_sprite_map_PreviewTransition2_png = "res://resource/sprite/map/PreviewTransition2.png";
+ public const string resource_sprite_map_PreviewTransition3_png = "res://resource/sprite/map/PreviewTransition3.png";
+ public const string resource_sprite_map_PreviewTransition6_png = "res://resource/sprite/map/PreviewTransition6.png";
+ public const string resource_sprite_map_door_close_png = "res://resource/sprite/map/door_close.png";
+ public const string resource_sprite_map_PreviewTransition4_png = "res://resource/sprite/map/PreviewTransition4.png";
+ public const string resource_sprite_map_PreviewTransition5_png = "res://resource/sprite/map/PreviewTransition5.png";
+ public const string resource_sprite_bullet_laser_Laser0001_png = "res://resource/sprite/bullet/laser/Laser0001.png";
+ public const string resource_sprite_bullet_normal_bullet0009_png = "res://resource/sprite/bullet/normal/bullet0009.png";
+ public const string resource_sprite_bullet_normal_bullet0008_png = "res://resource/sprite/bullet/normal/bullet0008.png";
+ public const string resource_sprite_bullet_normal_bullet2_png = "res://resource/sprite/bullet/normal/bullet2.png";
+ public const string resource_sprite_bullet_normal_bullet0006_png = "res://resource/sprite/bullet/normal/bullet0006.png";
+ public const string resource_sprite_bullet_normal_bullet0007_png = "res://resource/sprite/bullet/normal/bullet0007.png";
+ public const string resource_sprite_bullet_normal_bullet0005_png = "res://resource/sprite/bullet/normal/bullet0005.png";
+ public const string resource_sprite_bullet_normal_bullet0004_png = "res://resource/sprite/bullet/normal/bullet0004.png";
+ public const string resource_sprite_bullet_normal_bullet0001_png = "res://resource/sprite/bullet/normal/bullet0001.png";
+ public const string resource_sprite_bullet_normal_bullet0003_png = "res://resource/sprite/bullet/normal/bullet0003.png";
+ public const string resource_sprite_bullet_normal_bullet0002_png = "res://resource/sprite/bullet/normal/bullet0002.png";
+ public const string resource_sprite_bullet_collision_Collision0001_png = "res://resource/sprite/bullet/collision/Collision0001.png";
+ public const string resource_sprite_bullet_collision_Collision0002_png = "res://resource/sprite/bullet/collision/Collision0002.png";
+ public const string resource_sprite_brush_Brush4_png = "res://resource/sprite/brush/Brush4.png";
+ public const string resource_sprite_brush_Brush5_png = "res://resource/sprite/brush/Brush5.png";
+ public const string resource_sprite_brush_Brush1_png = "res://resource/sprite/brush/Brush1.png";
+ public const string resource_sprite_brush_Brush2_png = "res://resource/sprite/brush/Brush2.png";
+ public const string resource_sprite_brush_Brush3_png = "res://resource/sprite/brush/Brush3.png";
+ public const string resource_sprite_explode_Explode_pit0001_png = "res://resource/sprite/explode/Explode_pit0001.png";
+ public const string resource_sprite_explode_Explode_line0001_png = "res://resource/sprite/explode/Explode_line0001.png";
+ public const string resource_sprite_explode_Explode_circle0001_png = "res://resource/sprite/explode/Explode_circle0001.png";
+ public const string resource_sprite_explode_Explode_circle0003_png = "res://resource/sprite/explode/Explode_circle0003.png";
+ public const string resource_sprite_explode_Explode_circle0002_png = "res://resource/sprite/explode/Explode_circle0002.png";
+ public const string resource_sprite_hall_HallBg_png = "res://resource/sprite/hall/HallBg.png";
+ public const string resource_sprite_currency_Gold_10_png = "res://resource/sprite/currency/Gold_10.png";
+ public const string resource_sprite_currency_Gold_1_png = "res://resource/sprite/currency/Gold_1.png";
+ public const string resource_sprite_currency_Gold_5_png = "res://resource/sprite/currency/Gold_5.png";
+ public const string resource_sprite_currency_Gold_shadow_png = "res://resource/sprite/currency/Gold_shadow.png";
public const string resource_font_DinkieBitmap9pxDemo_ttf = "res://resource/font/DinkieBitmap-9pxDemo.ttf";
public const string resource_font_DinkieBitmap9pxItalicDemo_ttf = "res://resource/font/DinkieBitmap-9pxItalicDemo.ttf";
public const string resource_font_VonwaonBitmap12px_ttf = "res://resource/font/VonwaonBitmap-12px.ttf";
public const string resource_font_VonwaonBitmap16px_ttf = "res://resource/font/VonwaonBitmap-16px.ttf";
- public const string resource_material_Blend_gdshader = "res://resource/material/Blend.gdshader";
- public const string resource_material_Blend_tres = "res://resource/material/Blend.tres";
- public const string resource_material_GodRays_gdshader = "res://resource/material/GodRays.gdshader";
- public const string resource_material_Grid_gdshader = "res://resource/material/Grid.gdshader";
- public const string resource_material_Grid_tres = "res://resource/material/Grid.tres";
- public const string resource_material_Mask_gdshader = "res://resource/material/Mask.gdshader";
- public const string resource_material_OffsetVertex_gdshader = "res://resource/material/OffsetVertex.gdshader";
- public const string resource_material_Outline_gdshader = "res://resource/material/Outline.gdshader";
- public const string resource_material_Outline_tres = "res://resource/material/Outline.tres";
- public const string resource_material_Outline2_gdshader = "res://resource/material/Outline2.gdshader";
- public const string resource_material_Outline2_tres = "res://resource/material/Outline2.tres";
- public const string resource_material_Sawtooth_gdshader = "res://resource/material/Sawtooth.gdshader";
- public const string resource_material_Sawtooth_tres = "res://resource/material/Sawtooth.tres";
- public const string resource_material_SmokeParticleMaterial_tres = "res://resource/material/SmokeParticleMaterial.tres";
- public const string resource_sound_bgm_Intro_ogg = "res://resource/sound/bgm/Intro.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0001_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0001.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0002_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0002.ogg";
+ public const string resource_font_DinkieBitmap7pxDemo_ttf = "res://resource/font/DinkieBitmap-7pxDemo.ttf";
+ public const string resource_sound_sfx_common_gold_ogg = "res://resource/sound/sfx/common/gold.ogg";
+ public const string resource_sound_sfx_explosion_Explosion0003_ogg = "res://resource/sound/sfx/explosion/Explosion0003.ogg";
+ public const string resource_sound_sfx_explosion_Explosion0002_ogg = "res://resource/sound/sfx/explosion/Explosion0002.ogg";
+ public const string resource_sound_sfx_explosion_Explosion0001_ogg = "res://resource/sound/sfx/explosion/Explosion0001.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0017_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0017.ogg";
public const string resource_sound_sfx_beLoaded_BeLoaded0003_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0003.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0004_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0004.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0005_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0005.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0006_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0006.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0007_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0007.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0008_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0008.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0009_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0009.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0010_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0010.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0011_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0011.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0012_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0012.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0013_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0013.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0002_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0002.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0016_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0016.ogg";
public const string resource_sound_sfx_beLoaded_BeLoaded0014_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0014.ogg";
public const string resource_sound_sfx_beLoaded_BeLoaded0015_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0015.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0016_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0016.ogg";
- public const string resource_sound_sfx_beLoaded_BeLoaded0017_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0017.ogg";
- public const string resource_sound_sfx_collision_Collision0001_ogg = "res://resource/sound/sfx/collision/Collision0001.ogg";
- public const string resource_sound_sfx_common_gold_ogg = "res://resource/sound/sfx/common/gold.ogg";
- public const string resource_sound_sfx_explosion_Explosion0001_ogg = "res://resource/sound/sfx/explosion/Explosion0001.ogg";
- public const string resource_sound_sfx_explosion_Explosion0002_ogg = "res://resource/sound/sfx/explosion/Explosion0002.ogg";
- public const string resource_sound_sfx_explosion_Explosion0003_ogg = "res://resource/sound/sfx/explosion/Explosion0003.ogg";
- public const string resource_sound_sfx_reloading_Reloading0001_ogg = "res://resource/sound/sfx/reloading/Reloading0001.ogg";
- public const string resource_sound_sfx_reloading_Reloading0002_ogg = "res://resource/sound/sfx/reloading/Reloading0002.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0001_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0001.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0005_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0005.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0011_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0011.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0010_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0010.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0004_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0004.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0012_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0012.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0006_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0006.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0007_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0007.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0013_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0013.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0009_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0009.ogg";
+ public const string resource_sound_sfx_beLoaded_BeLoaded0008_ogg = "res://resource/sound/sfx/beLoaded/BeLoaded0008.ogg";
public const string resource_sound_sfx_reloading_Reloading0003_ogg = "res://resource/sound/sfx/reloading/Reloading0003.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0001_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0001.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0002_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0002.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0003_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0003.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0004_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0004.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0005_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0005.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0006_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0006.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0007_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0007.ogg";
+ public const string resource_sound_sfx_reloading_Reloading0002_ogg = "res://resource/sound/sfx/reloading/Reloading0002.ogg";
+ public const string resource_sound_sfx_reloading_Reloading0001_ogg = "res://resource/sound/sfx/reloading/Reloading0001.ogg";
public const string resource_sound_sfx_reloading_Reloading_begin0008_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0008.ogg";
public const string resource_sound_sfx_reloading_Reloading_begin0009_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0009.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0010_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0010.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0011_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0011.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0012_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0012.ogg";
- public const string resource_sound_sfx_reloading_Reloading_begin0013_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0013.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_finish0004_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0004.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_finish0005_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0005.ogg";
public const string resource_sound_sfx_reloading_Reloading_finish0001_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0001.ogg";
public const string resource_sound_sfx_reloading_Reloading_finish0002_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0002.ogg";
public const string resource_sound_sfx_reloading_Reloading_finish0003_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0003.ogg";
- public const string resource_sound_sfx_reloading_Reloading_finish0004_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0004.ogg";
- public const string resource_sound_sfx_reloading_Reloading_finish0005_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0005.ogg";
- public const string resource_sound_sfx_shooting_Shooting0001_ogg = "res://resource/sound/sfx/shooting/Shooting0001.ogg";
- public const string resource_sound_sfx_shooting_Shooting0002_ogg = "res://resource/sound/sfx/shooting/Shooting0002.ogg";
- public const string resource_sound_sfx_shooting_Shooting0003_ogg = "res://resource/sound/sfx/shooting/Shooting0003.ogg";
- public const string resource_sound_sfx_shooting_Shooting0004_ogg = "res://resource/sound/sfx/shooting/Shooting0004.ogg";
- public const string resource_sound_sfx_shooting_Shooting0005_ogg = "res://resource/sound/sfx/shooting/Shooting0005.ogg";
- public const string resource_sound_sfx_shooting_Shooting0006_ogg = "res://resource/sound/sfx/shooting/Shooting0006.ogg";
- public const string resource_sound_sfx_shooting_Shooting0007_ogg = "res://resource/sound/sfx/shooting/Shooting0007.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0001_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0001.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0002_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0002.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0003_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0003.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0007_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0007.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0013_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0013.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0012_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0012.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0006_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0006.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0010_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0010.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0004_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0004.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0005_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0005.ogg";
+ public const string resource_sound_sfx_reloading_Reloading_begin0011_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0011.ogg";
+ public const string resource_sound_sfx_collision_Collision0001_ogg = "res://resource/sound/sfx/collision/Collision0001.ogg";
public const string resource_sound_sfx_shooting_Shooting0008_ogg = "res://resource/sound/sfx/shooting/Shooting0008.ogg";
public const string resource_sound_sfx_shooting_Shooting0009_ogg = "res://resource/sound/sfx/shooting/Shooting0009.ogg";
+ public const string resource_sound_sfx_shooting_Shooting0002_ogg = "res://resource/sound/sfx/shooting/Shooting0002.ogg";
+ public const string resource_sound_sfx_shooting_Shooting0003_ogg = "res://resource/sound/sfx/shooting/Shooting0003.ogg";
+ public const string resource_sound_sfx_shooting_Shooting0001_ogg = "res://resource/sound/sfx/shooting/Shooting0001.ogg";
+ public const string resource_sound_sfx_shooting_Shooting0004_ogg = "res://resource/sound/sfx/shooting/Shooting0004.ogg";
public const string resource_sound_sfx_shooting_Shooting0010_ogg = "res://resource/sound/sfx/shooting/Shooting0010.ogg";
public const string resource_sound_sfx_shooting_Shooting0011_ogg = "res://resource/sound/sfx/shooting/Shooting0011.ogg";
- public const string resource_sound_sfx_shooting_Shooting0012_ogg = "res://resource/sound/sfx/shooting/Shooting0012.ogg";
+ public const string resource_sound_sfx_shooting_Shooting0005_ogg = "res://resource/sound/sfx/shooting/Shooting0005.ogg";
public const string resource_sound_sfx_shooting_Shooting0013_ogg = "res://resource/sound/sfx/shooting/Shooting0013.ogg";
- public const string resource_sprite_box_TreasureBox0001_png = "res://resource/sprite/box/TreasureBox0001.png";
- public const string resource_sprite_box_TreasureBox0001_icon_png = "res://resource/sprite/box/TreasureBox0001_icon.png";
- public const string resource_sprite_brush_Brush1_png = "res://resource/sprite/brush/Brush1.png";
- public const string resource_sprite_brush_Brush2_png = "res://resource/sprite/brush/Brush2.png";
- public const string resource_sprite_brush_Brush3_png = "res://resource/sprite/brush/Brush3.png";
- public const string resource_sprite_brush_Brush4_png = "res://resource/sprite/brush/Brush4.png";
- public const string resource_sprite_brush_Brush5_png = "res://resource/sprite/brush/Brush5.png";
- public const string resource_sprite_bullet_collision_Collision0001_png = "res://resource/sprite/bullet/collision/Collision0001.png";
- public const string resource_sprite_bullet_collision_Collision0002_png = "res://resource/sprite/bullet/collision/Collision0002.png";
- public const string resource_sprite_bullet_laser_Laser0001_png = "res://resource/sprite/bullet/laser/Laser0001.png";
- public const string resource_sprite_bullet_normal_bullet0001_png = "res://resource/sprite/bullet/normal/bullet0001.png";
- public const string resource_sprite_bullet_normal_bullet0002_png = "res://resource/sprite/bullet/normal/bullet0002.png";
- public const string resource_sprite_bullet_normal_bullet0003_png = "res://resource/sprite/bullet/normal/bullet0003.png";
- public const string resource_sprite_bullet_normal_bullet0004_png = "res://resource/sprite/bullet/normal/bullet0004.png";
- public const string resource_sprite_bullet_normal_bullet0005_png = "res://resource/sprite/bullet/normal/bullet0005.png";
- public const string resource_sprite_bullet_normal_bullet0006_png = "res://resource/sprite/bullet/normal/bullet0006.png";
- public const string resource_sprite_bullet_normal_bullet0007_png = "res://resource/sprite/bullet/normal/bullet0007.png";
- public const string resource_sprite_bullet_normal_bullet0008_png = "res://resource/sprite/bullet/normal/bullet0008.png";
- public const string resource_sprite_bullet_normal_bullet0009_png = "res://resource/sprite/bullet/normal/bullet0009.png";
- public const string resource_sprite_bullet_normal_bullet2_png = "res://resource/sprite/bullet/normal/bullet2.png";
- public const string resource_sprite_common_Circle_png = "res://resource/sprite/common/Circle.png";
- public const string resource_sprite_common_Circle2_png = "res://resource/sprite/common/Circle2.png";
- public const string resource_sprite_common_debug_arrows_png = "res://resource/sprite/common/debug_arrows.png";
- public const string resource_sprite_common_Effect1_png = "res://resource/sprite/common/Effect1.png";
- public const string resource_sprite_common_MeleeAttack1_png = "res://resource/sprite/common/MeleeAttack1.png";
- public const string resource_sprite_common_Smoke_png = "res://resource/sprite/common/Smoke.png";
- public const string resource_sprite_common_Smoke2_png = "res://resource/sprite/common/Smoke2.png";
- public const string resource_sprite_common_Smoke3_png = "res://resource/sprite/common/Smoke3.png";
- public const string resource_sprite_common_Smoke4_png = "res://resource/sprite/common/Smoke4.png";
- public const string resource_sprite_currency_Gold_1_png = "res://resource/sprite/currency/Gold_1.png";
- public const string resource_sprite_currency_Gold_10_png = "res://resource/sprite/currency/Gold_10.png";
- public const string resource_sprite_currency_Gold_5_png = "res://resource/sprite/currency/Gold_5.png";
- public const string resource_sprite_currency_Gold_shadow_png = "res://resource/sprite/currency/Gold_shadow.png";
- public const string resource_sprite_explode_Explode_circle0001_png = "res://resource/sprite/explode/Explode_circle0001.png";
- public const string resource_sprite_explode_Explode_circle0002_png = "res://resource/sprite/explode/Explode_circle0002.png";
- public const string resource_sprite_explode_Explode_circle0003_png = "res://resource/sprite/explode/Explode_circle0003.png";
- public const string resource_sprite_explode_Explode_line0001_png = "res://resource/sprite/explode/Explode_line0001.png";
- public const string resource_sprite_explode_Explode_pit0001_png = "res://resource/sprite/explode/Explode_pit0001.png";
- public const string resource_sprite_map_door_png = "res://resource/sprite/map/door.png";
- public const string resource_sprite_map_door1_down_png = "res://resource/sprite/map/door1_down.png";
- public const string resource_sprite_map_PreviewMap_png = "res://resource/sprite/map/PreviewMap.png";
- public const string resource_sprite_map_PreviewMapShadow_png = "res://resource/sprite/map/PreviewMapShadow.png";
- public const string resource_sprite_map_PreviewTransition_png = "res://resource/sprite/map/PreviewTransition.png";
- public const string resource_sprite_map_PreviewTransition2_png = "res://resource/sprite/map/PreviewTransition2.png";
- public const string resource_sprite_map_PreviewTransition3_png = "res://resource/sprite/map/PreviewTransition3.png";
- public const string resource_sprite_map_PreviewTransition4_png = "res://resource/sprite/map/PreviewTransition4.png";
- public const string resource_sprite_map_PreviewTransition5_png = "res://resource/sprite/map/PreviewTransition5.png";
- public const string resource_sprite_map_TerrainMask_png = "res://resource/sprite/map/TerrainMask.png";
- public const string resource_sprite_map_TerrainMask2_png = "res://resource/sprite/map/TerrainMask2.png";
- public const string resource_sprite_map_TerrainMask3_png = "res://resource/sprite/map/TerrainMask3.png";
- public const string resource_sprite_map_TerrainMask4_png = "res://resource/sprite/map/TerrainMask4.png";
- public const string resource_sprite_map_WallTransition1_png = "res://resource/sprite/map/WallTransition1.png";
- public const string resource_sprite_map_WallTransition2_png = "res://resource/sprite/map/WallTransition2.png";
- public const string resource_sprite_map_WallTransition3_png = "res://resource/sprite/map/WallTransition3.png";
- public const string resource_sprite_prop_active_ActiveProp5000_png = "res://resource/sprite/prop/active/ActiveProp5000.png";
- public const string resource_sprite_prop_active_ActiveProp5001_png = "res://resource/sprite/prop/active/ActiveProp5001.png";
- public const string resource_sprite_prop_buff_BuffProp0001export_png = "res://resource/sprite/prop/buff/BuffProp0001-export.png";
- public const string resource_sprite_prop_buff_BuffProp0001_png = "res://resource/sprite/prop/buff/BuffProp0001.png";
- public const string resource_sprite_prop_buff_BuffProp0002_png = "res://resource/sprite/prop/buff/BuffProp0002.png";
- public const string resource_sprite_prop_buff_BuffProp0003_png = "res://resource/sprite/prop/buff/BuffProp0003.png";
- public const string resource_sprite_prop_buff_BuffProp0004_png = "res://resource/sprite/prop/buff/BuffProp0004.png";
- public const string resource_sprite_prop_buff_BuffProp0005_png = "res://resource/sprite/prop/buff/BuffProp0005.png";
- public const string resource_sprite_prop_buff_BuffProp0006_png = "res://resource/sprite/prop/buff/BuffProp0006.png";
- public const string resource_sprite_prop_buff_BuffProp0007_png = "res://resource/sprite/prop/buff/BuffProp0007.png";
- public const string resource_sprite_prop_buff_BuffProp0008_png = "res://resource/sprite/prop/buff/BuffProp0008.png";
- public const string resource_sprite_prop_buff_BuffProp0009_png = "res://resource/sprite/prop/buff/BuffProp0009.png";
- public const string resource_sprite_prop_buff_BuffProp0010_png = "res://resource/sprite/prop/buff/BuffProp0010.png";
- public const string resource_sprite_prop_buff_BuffProp0011_png = "res://resource/sprite/prop/buff/BuffProp0011.png";
- public const string resource_sprite_prop_buff_BuffProp0012_png = "res://resource/sprite/prop/buff/BuffProp0012.png";
- public const string resource_sprite_prop_buff_BuffProp0013_png = "res://resource/sprite/prop/buff/BuffProp0013.png";
- public const string resource_sprite_prop_buff_BuffProp0014_png = "res://resource/sprite/prop/buff/BuffProp0014.png";
- public const string resource_sprite_role_role10_png = "res://resource/sprite/role/role10.png";
- public const string resource_sprite_role_role3_png = "res://resource/sprite/role/role3.png";
- public const string resource_sprite_role_role4_png = "res://resource/sprite/role/role4.png";
- public const string resource_sprite_role_role5_png = "res://resource/sprite/role/role5.png";
- public const string resource_sprite_role_role6_png = "res://resource/sprite/role/role6.png";
- public const string resource_sprite_role_role7_png = "res://resource/sprite/role/role7.png";
- public const string resource_sprite_role_role8_png = "res://resource/sprite/role/role8.png";
- public const string resource_sprite_role_role9_png = "res://resource/sprite/role/role9.png";
- public const string resource_sprite_role_scarecrow0001_png = "res://resource/sprite/role/scarecrow0001.png";
- public const string resource_sprite_role_common_Role_astonished_png = "res://resource/sprite/role/common/Role_astonished.png";
- public const string resource_sprite_role_common_Role_notify_png = "res://resource/sprite/role/common/Role_notify.png";
- public const string resource_sprite_role_common_Role_query_png = "res://resource/sprite/role/common/Role_query.png";
- public const string resource_sprite_role_common_Role_shadow1_png = "res://resource/sprite/role/common/Role_shadow1.png";
- public const string resource_sprite_role_enemy0001_enemy0001_png = "res://resource/sprite/role/enemy0001/enemy0001.png";
- public const string resource_sprite_role_enemy0001_enemy0001_Debris_png = "res://resource/sprite/role/enemy0001/enemy0001_Debris.png";
- public const string resource_sprite_role_enemy0001_enemy0001_Icon_png = "res://resource/sprite/role/enemy0001/enemy0001_Icon.png";
- public const string resource_sprite_role_enemy0002_Enemy0002_png = "res://resource/sprite/role/enemy0002/Enemy0002.png";
- public const string resource_sprite_role_enemy0002_Enemy0002_attack_png = "res://resource/sprite/role/enemy0002/Enemy0002_attack.png";
- public const string resource_sprite_role_enemy0002_Enemy0002_dead_png = "res://resource/sprite/role/enemy0002/Enemy0002_dead.png";
- public const string resource_sprite_role_enemy0002_Enemy0002_idle_png = "res://resource/sprite/role/enemy0002/Enemy0002_idle.png";
- public const string resource_sprite_role_enemy0002_Enemy0002_run_png = "res://resource/sprite/role/enemy0002/Enemy0002_run.png";
- public const string resource_sprite_role_role0001_Role0001_png = "res://resource/sprite/role/role0001/Role0001.png";
- public const string resource_sprite_role_role0001_Role0001_head_png = "res://resource/sprite/role/role0001/Role0001_head.png";
- public const string resource_sprite_role_role0001_Role0001_Icon_png = "res://resource/sprite/role/role0001/Role0001_Icon.png";
- public const string resource_sprite_role_role0001_idle_Sprite0002_png = "res://resource/sprite/role/role0001/idle/Sprite-0002.png";
- public const string resource_sprite_role_role0001_idle_Sprite0003_png = "res://resource/sprite/role/role0001/idle/Sprite-0003.png";
- public const string resource_sprite_role_role0001_idle_Sprite0004_png = "res://resource/sprite/role/role0001/idle/Sprite-0004.png";
- public const string resource_sprite_role_role0001_idle_Sprite0005_png = "res://resource/sprite/role/role0001/idle/Sprite-0005.png";
- public const string resource_sprite_role_role0001_idle_Sprite0006_png = "res://resource/sprite/role/role0001/idle/Sprite-0006.png";
- public const string resource_sprite_role_role0001_idle_Sprite0007_png = "res://resource/sprite/role/role0001/idle/Sprite-0007.png";
- public const string resource_sprite_role_role0001_idle_Sprite0008_png = "res://resource/sprite/role/role0001/idle/Sprite-0008.png";
- public const string resource_sprite_role_role0001_roll_Sprite0008_png = "res://resource/sprite/role/role0001/roll/Sprite-0008.png";
- public const string resource_sprite_role_role0001_roll_Sprite0009_png = "res://resource/sprite/role/role0001/roll/Sprite-0009.png";
- public const string resource_sprite_role_role0001_roll_Sprite0010_png = "res://resource/sprite/role/role0001/roll/Sprite-0010.png";
- public const string resource_sprite_role_role0001_roll_Sprite0011_png = "res://resource/sprite/role/role0001/roll/Sprite-0011.png";
- public const string resource_sprite_role_role0001_roll_Sprite0012_png = "res://resource/sprite/role/role0001/roll/Sprite-0012.png";
- public const string resource_sprite_role_role0001_roll_Sprite0013_png = "res://resource/sprite/role/role0001/roll/Sprite-0013.png";
- public const string resource_sprite_role_role0001_roll_Sprite0014_png = "res://resource/sprite/role/role0001/roll/Sprite-0014.png";
- public const string resource_sprite_role_role0001_roll_Sprite0015_png = "res://resource/sprite/role/role0001/roll/Sprite-0015.png";
- public const string resource_sprite_role_role0001_roll_Sprite0016_png = "res://resource/sprite/role/role0001/roll/Sprite-0016.png";
- public const string resource_sprite_role_role0001_roll_Sprite0017_png = "res://resource/sprite/role/role0001/roll/Sprite-0017.png";
- public const string resource_sprite_role_role0001_roll_Sprite0018_png = "res://resource/sprite/role/role0001/roll/Sprite-0018.png";
- public const string resource_sprite_role_role0001_run_Sprite0002_png = "res://resource/sprite/role/role0001/run/Sprite-0002.png";
- public const string resource_sprite_role_role0001_run_Sprite0003_png = "res://resource/sprite/role/role0001/run/Sprite-0003.png";
- public const string resource_sprite_role_role0001_run_Sprite0004_png = "res://resource/sprite/role/role0001/run/Sprite-0004.png";
- public const string resource_sprite_role_role0001_run_Sprite0005_png = "res://resource/sprite/role/role0001/run/Sprite-0005.png";
- public const string resource_sprite_role_role0001_run_Sprite0006_png = "res://resource/sprite/role/role0001/run/Sprite-0006.png";
- public const string resource_sprite_role_role0001_run_Sprite0007_png = "res://resource/sprite/role/role0001/run/Sprite-0007.png";
- public const string resource_sprite_role_role0001_run_Sprite0008_png = "res://resource/sprite/role/role0001/run/Sprite-0008.png";
- public const string resource_sprite_shell_Shell0001_png = "res://resource/sprite/shell/Shell0001.png";
- public const string resource_sprite_shell_Shell0002_png = "res://resource/sprite/shell/Shell0002.png";
- public const string resource_sprite_shell_Shell0003_png = "res://resource/sprite/shell/Shell0003.png";
- public const string resource_sprite_shell_Shell0004_png = "res://resource/sprite/shell/Shell0004.png";
- public const string resource_sprite_shootFire_ShotFire0001_png = "res://resource/sprite/shootFire/ShotFire0001.png";
- public const string resource_sprite_shootFire_ShotFire0002_png = "res://resource/sprite/shootFire/ShotFire0002.png";
- public const string resource_sprite_shootFire_ShotFire0003_png = "res://resource/sprite/shootFire/ShotFire0003.png";
- public const string resource_sprite_ui_font_bg_png = "res://resource/sprite/ui/font_bg.png";
- public const string resource_sprite_ui_GUI_png = "res://resource/sprite/ui/GUI.png";
- public const string resource_sprite_ui_commonIcon_Add_png = "res://resource/sprite/ui/commonIcon/Add.png";
- public const string resource_sprite_ui_commonIcon_AreaTool_png = "res://resource/sprite/ui/commonIcon/AreaTool.png";
- public const string resource_sprite_ui_commonIcon_Back_png = "res://resource/sprite/ui/commonIcon/Back.png";
- public const string resource_sprite_ui_commonIcon_BirthMark_png = "res://resource/sprite/ui/commonIcon/BirthMark.png";
- public const string resource_sprite_ui_commonIcon_Block_png = "res://resource/sprite/ui/commonIcon/Block.png";
- public const string resource_sprite_ui_commonIcon_CenterTool_png = "res://resource/sprite/ui/commonIcon/CenterTool.png";
- public const string resource_sprite_ui_commonIcon_Delete_png = "res://resource/sprite/ui/commonIcon/Delete.png";
- public const string resource_sprite_ui_commonIcon_Delete2_png = "res://resource/sprite/ui/commonIcon/Delete2.png";
- public const string resource_sprite_ui_commonIcon_Dice_png = "res://resource/sprite/ui/commonIcon/Dice.png";
- public const string resource_sprite_ui_commonIcon_DoorTool_png = "res://resource/sprite/ui/commonIcon/DoorTool.png";
- public const string resource_sprite_ui_commonIcon_Down_png = "res://resource/sprite/ui/commonIcon/Down.png";
- public const string resource_sprite_ui_commonIcon_DragTool_png = "res://resource/sprite/ui/commonIcon/DragTool.png";
- public const string resource_sprite_ui_commonIcon_Edit_png = "res://resource/sprite/ui/commonIcon/Edit.png";
- public const string resource_sprite_ui_commonIcon_Error_mini_png = "res://resource/sprite/ui/commonIcon/Error_mini.png";
- public const string resource_sprite_ui_commonIcon_Gold_10_png = "res://resource/sprite/ui/commonIcon/Gold_10.png";
- public const string resource_sprite_ui_commonIcon_Hide_png = "res://resource/sprite/ui/commonIcon/Hide.png";
- public const string resource_sprite_ui_commonIcon_Import_png = "res://resource/sprite/ui/commonIcon/Import.png";
- public const string resource_sprite_ui_commonIcon_Lock_png = "res://resource/sprite/ui/commonIcon/Lock.png";
- public const string resource_sprite_ui_commonIcon_Mark_png = "res://resource/sprite/ui/commonIcon/Mark.png";
- public const string resource_sprite_ui_commonIcon_MarkCell_png = "res://resource/sprite/ui/commonIcon/MarkCell.png";
- public const string resource_sprite_ui_commonIcon_MarkCell_placeholder_png = "res://resource/sprite/ui/commonIcon/MarkCell_placeholder.png";
- public const string resource_sprite_ui_commonIcon_Missing_png = "res://resource/sprite/ui/commonIcon/Missing.png";
- public const string resource_sprite_ui_commonIcon_PackageMark_png = "res://resource/sprite/ui/commonIcon/PackageMark.png";
- public const string resource_sprite_ui_commonIcon_PenTool_png = "res://resource/sprite/ui/commonIcon/PenTool.png";
- public const string resource_sprite_ui_commonIcon_Play_png = "res://resource/sprite/ui/commonIcon/Play.png";
- public const string resource_sprite_ui_commonIcon_Right_png = "res://resource/sprite/ui/commonIcon/Right.png";
- public const string resource_sprite_ui_commonIcon_Save_png = "res://resource/sprite/ui/commonIcon/Save.png";
- public const string resource_sprite_ui_commonIcon_Search_png = "res://resource/sprite/ui/commonIcon/Search.png";
- public const string resource_sprite_ui_commonIcon_Select_png = "res://resource/sprite/ui/commonIcon/Select.png";
- public const string resource_sprite_ui_commonIcon_Select2_png = "res://resource/sprite/ui/commonIcon/Select2.png";
- public const string resource_sprite_ui_commonIcon_Setting_png = "res://resource/sprite/ui/commonIcon/Setting.png";
- public const string resource_sprite_ui_commonIcon_Success_mini_png = "res://resource/sprite/ui/commonIcon/Success_mini.png";
- public const string resource_sprite_ui_commonIcon_Unknown_png = "res://resource/sprite/ui/commonIcon/Unknown.png";
- public const string resource_sprite_ui_commonIcon_UnknownActivity_png = "res://resource/sprite/ui/commonIcon/UnknownActivity.png";
- public const string resource_sprite_ui_commonIcon_Unlock_png = "res://resource/sprite/ui/commonIcon/Unlock.png";
- public const string resource_sprite_ui_commonIcon_Visible_png = "res://resource/sprite/ui/commonIcon/Visible.png";
- public const string resource_sprite_ui_commonIcon_WaveCell_png = "res://resource/sprite/ui/commonIcon/WaveCell.png";
- public const string resource_sprite_ui_keyboard_e_png = "res://resource/sprite/ui/keyboard/e.png";
- public const string resource_sprite_ui_mapEditorProject_CellBg_png = "res://resource/sprite/ui/mapEditorProject/CellBg.png";
- public const string resource_sprite_ui_mapEditorTools_DoorDragButton_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton.png";
- public const string resource_sprite_ui_mapEditorTools_DoorDragButton_down_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton_down.png";
- public const string resource_sprite_ui_mapEditorTools_DoorDragButton_hover_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton_hover.png";
- public const string resource_sprite_ui_roomMap_MapBar_png = "res://resource/sprite/ui/roomMap/MapBar.png";
- public const string resource_sprite_ui_roomUI_ChargeProgress_png = "res://resource/sprite/ui/roomUI/ChargeProgress.png";
- public const string resource_sprite_ui_roomUI_ChargeProgressBar_png = "res://resource/sprite/ui/roomUI/ChargeProgressBar.png";
- public const string resource_sprite_ui_roomUI_Cooldown_png = "res://resource/sprite/ui/roomUI/Cooldown.png";
- public const string resource_sprite_ui_roomUI_icon_bullet_png = "res://resource/sprite/ui/roomUI/icon_bullet.png";
- public const string resource_sprite_ui_roomUI_icon_pickup_png = "res://resource/sprite/ui/roomUI/icon_pickup.png";
- public const string resource_sprite_ui_roomUI_icon_replace_png = "res://resource/sprite/ui/roomUI/icon_replace.png";
- public const string resource_sprite_ui_roomUI_Life_empty_png = "res://resource/sprite/ui/roomUI/Life_empty.png";
- public const string resource_sprite_ui_roomUI_Life_full_png = "res://resource/sprite/ui/roomUI/Life_full.png";
- public const string resource_sprite_ui_roomUI_Life_half_png = "res://resource/sprite/ui/roomUI/Life_half.png";
- public const string resource_sprite_ui_roomUI_Panel_png = "res://resource/sprite/ui/roomUI/Panel.png";
- public const string resource_sprite_ui_roomUI_Panel2_png = "res://resource/sprite/ui/roomUI/Panel2.png";
- public const string resource_sprite_ui_roomUI_ReloadBar_png = "res://resource/sprite/ui/roomUI/ReloadBar.png";
- public const string resource_sprite_ui_roomUI_ReloadBarBlock_png = "res://resource/sprite/ui/roomUI/ReloadBarBlock.png";
- public const string resource_sprite_ui_roomUI_Shield_empty_png = "res://resource/sprite/ui/roomUI/Shield_empty.png";
- public const string resource_sprite_ui_roomUI_Shield_full_png = "res://resource/sprite/ui/roomUI/Shield_full.png";
- public const string resource_sprite_ui_sursors_CursorCenter_png = "res://resource/sprite/ui/sursors/CursorCenter.png";
- public const string resource_sprite_ui_sursors_Cursors_png = "res://resource/sprite/ui/sursors/Cursors.png";
- public const string resource_sprite_ui_sursors_Cursors_Ui_png = "res://resource/sprite/ui/sursors/Cursors_Ui.png";
- public const string resource_sprite_weapon_weapon0001_Weapon0001_png = "res://resource/sprite/weapon/weapon0001/Weapon0001.png";
- public const string resource_sprite_weapon_weapon0002_Weapon0002_png = "res://resource/sprite/weapon/weapon0002/Weapon0002.png";
- public const string resource_sprite_weapon_weapon0002_Weapon0002_reloading_png = "res://resource/sprite/weapon/weapon0002/Weapon0002_reloading.png";
- public const string resource_sprite_weapon_weapon0003_Weapon0003_png = "res://resource/sprite/weapon/weapon0003/Weapon0003.png";
- public const string resource_sprite_weapon_weapon0004_KnifeHit1_png = "res://resource/sprite/weapon/weapon0004/KnifeHit1.png";
- public const string resource_sprite_weapon_weapon0004_Weapon0004_png = "res://resource/sprite/weapon/weapon0004/Weapon0004.png";
- public const string resource_sprite_weapon_weapon0005_Weapon0005_png = "res://resource/sprite/weapon/weapon0005/Weapon0005.png";
- public const string resource_sprite_weapon_weapon0006_Weapon0006_png = "res://resource/sprite/weapon/weapon0006/Weapon0006.png";
- public const string resource_sprite_weapon_weapon0007_Weapon0007_png = "res://resource/sprite/weapon/weapon0007/Weapon0007.png";
- public const string resource_sprite_weapon_weapon0008_Weapon0008_png = "res://resource/sprite/weapon/weapon0008/Weapon0008.png";
- public const string resource_sprite_weapon_weapon0008_Weapon0008_reloading_png = "res://resource/sprite/weapon/weapon0008/Weapon0008_reloading.png";
- public const string resource_sprite_weapon_weapon0009_weapon0009_png = "res://resource/sprite/weapon/weapon0009/weapon0009.png";
- public const string resource_sprite_weapon_weapon0009_Weapon0009_reload_png = "res://resource/sprite/weapon/weapon0009/Weapon0009_reload.png";
- public const string resource_sprite_weapon_weapon0010_Weapon0010_png = "res://resource/sprite/weapon/weapon0010/Weapon0010.png";
- public const string resource_sprite_weapon_weapon0010_Weapon0010_reloading_png = "res://resource/sprite/weapon/weapon0010/Weapon0010_reloading.png";
- public const string resource_sprite_weapon_weapon0011_Weapon0011_png = "res://resource/sprite/weapon/weapon0011/Weapon0011.png";
- public const string resource_sprite_weapon_weapon0012_bow_png = "res://resource/sprite/weapon/weapon0012/bow.png";
- public const string resource_sprite_weapon_weapon0013_weapon0013_png = "res://resource/sprite/weapon/weapon0013/weapon0013.png";
- public const string resource_sprite_weapon_weapon0013_weapon0014export_png = "res://resource/sprite/weapon/weapon0013/weapon0014-export.png";
- public const string resource_sprite_weapon_weapon0013_weapon0014_png = "res://resource/sprite/weapon/weapon0013/weapon0014.png";
- public const string resource_sprite_weapon_weapon0014_Weapon0014_png = "res://resource/sprite/weapon/weapon0014/Weapon0014.png";
- public const string resource_sprite_weapon_weapon0016_weapon0016_png = "res://resource/sprite/weapon/weapon0016/weapon0016.png";
- public const string resource_sprite_weapon_weapon0016_weapon0016_pull_png = "res://resource/sprite/weapon/weapon0016/weapon0016_pull.png";
- public const string resource_sprite_weapon_weapon0017_seapon0017t_png = "res://resource/sprite/weapon/weapon0017/seapon0017t.png";
- public const string resource_sprite_weapon_weapon0018_weapon0018_png = "res://resource/sprite/weapon/weapon0018/weapon0018.png";
- public const string resource_sprite_weapon_weapon0019_weapon0019_png = "res://resource/sprite/weapon/weapon0019/weapon0019.png";
- public const string resource_sprite_weapon_weapon0020_weapon0020export_png = "res://resource/sprite/weapon/weapon0020/weapon0020-export.png";
- public const string resource_sprite_weapon_weapon0020_weapon0020_png = "res://resource/sprite/weapon/weapon0020/weapon0020.png";
- public const string resource_sprite_weapon_weapon0021_weapon0021_png = "res://resource/sprite/weapon/weapon0021/weapon0021.png";
- public const string resource_sprite_weapon_weapon0022_weapon0022_png = "res://resource/sprite/weapon/weapon0022/weapon0022.png";
- public const string resource_sprite_weapon_weapon0023_weapon0023_png = "res://resource/sprite/weapon/weapon0023/weapon0023.png";
- public const string resource_sprite_weapon_weapon0033_weapon0033export_png = "res://resource/sprite/weapon/weapon0033/weapon0033-export.png";
- public const string resource_sprite_weapon_weapon0033_weapon0033_png = "res://resource/sprite/weapon/weapon0033/weapon0033.png";
- public const string resource_sprite_weapon_weapon0034_weapon0034_png = "res://resource/sprite/weapon/weapon0034/weapon0034.png";
- public const string resource_sprite_weapon_weapon0035_weapon0035_png = "res://resource/sprite/weapon/weapon0035/weapon0035.png";
- public const string resource_sprite_weapon_weapon0036_weapon0036_png = "res://resource/sprite/weapon/weapon0036/weapon0036.png";
- public const string resource_sprite_weapon_weapon0037_weapon0037_png = "res://resource/sprite/weapon/weapon0037/weapon0037.png";
- public const string resource_sprite_weapon_weapon0038_weapon0038_1_png = "res://resource/sprite/weapon/weapon0038/weapon0038.1.png";
- public const string resource_sprite_weapon_weapon0038_weapon0038_png = "res://resource/sprite/weapon/weapon0038/weapon0038.png";
- public const string resource_sprite_weapon_weapon0039_weapon0039_png = "res://resource/sprite/weapon/weapon0039/weapon0039.png";
- public const string resource_sprite_weapon_weapon0039_weapon00391_png = "res://resource/sprite/weapon/weapon0039/weapon0039(1).png";
- public const string resource_sprite_weapon_weapon0040_weapon00401_png = "res://resource/sprite/weapon/weapon0040/weapon0040,1.png";
- public const string resource_sprite_weapon_weapon0040_weapon0040_png = "res://resource/sprite/weapon/weapon0040/weapon0040.png";
- public const string resource_spriteFrames_bullet_Bullet0001_tres = "res://resource/spriteFrames/bullet/Bullet0001.tres";
- public const string resource_spriteFrames_bullet_Bullet0002_tres = "res://resource/spriteFrames/bullet/Bullet0002.tres";
- public const string resource_spriteFrames_bullet_Bullet0003_tres = "res://resource/spriteFrames/bullet/Bullet0003.tres";
- public const string resource_spriteFrames_bullet_Bullet0004_tres = "res://resource/spriteFrames/bullet/Bullet0004.tres";
- public const string resource_spriteFrames_bullet_Bullet0005_tres = "res://resource/spriteFrames/bullet/Bullet0005.tres";
- public const string resource_spriteFrames_bullet_Bullet0006_tres = "res://resource/spriteFrames/bullet/Bullet0006.tres";
- public const string resource_spriteFrames_bullet_Bullet0007_tres = "res://resource/spriteFrames/bullet/Bullet0007.tres";
- public const string resource_spriteFrames_bullet_Bullet0008_tres = "res://resource/spriteFrames/bullet/Bullet0008.tres";
- public const string resource_spriteFrames_bullet_Collision0001_tres = "res://resource/spriteFrames/bullet/Collision0001.tres";
- public const string resource_spriteFrames_bullet_Collision0002_tres = "res://resource/spriteFrames/bullet/Collision0002.tres";
- public const string resource_spriteFrames_other_RoomDoor_E_Down_tres = "res://resource/spriteFrames/other/RoomDoor_E_Down.tres";
- public const string resource_spriteFrames_other_RoomDoor_E_Up_tres = "res://resource/spriteFrames/other/RoomDoor_E_Up.tres";
- public const string resource_spriteFrames_other_RoomDoor_N_tres = "res://resource/spriteFrames/other/RoomDoor_N.tres";
- public const string resource_spriteFrames_other_RoomDoor_S_tres = "res://resource/spriteFrames/other/RoomDoor_S.tres";
- public const string resource_spriteFrames_other_RoomDoor_W_Down_tres = "res://resource/spriteFrames/other/RoomDoor_W_Down.tres";
- public const string resource_spriteFrames_other_RoomDoor_W_Up_tres = "res://resource/spriteFrames/other/RoomDoor_W_Up.tres";
- public const string resource_spriteFrames_prop_active_ActiveProp5000_tres = "res://resource/spriteFrames/prop/active/ActiveProp5000.tres";
- public const string resource_spriteFrames_prop_active_ActiveProp5001_tres = "res://resource/spriteFrames/prop/active/ActiveProp5001.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0001_tres = "res://resource/spriteFrames/prop/buff/BuffProp0001.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0002_tres = "res://resource/spriteFrames/prop/buff/BuffProp0002.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0003_tres = "res://resource/spriteFrames/prop/buff/BuffProp0003.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0004_tres = "res://resource/spriteFrames/prop/buff/BuffProp0004.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0005_tres = "res://resource/spriteFrames/prop/buff/BuffProp0005.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0006_tres = "res://resource/spriteFrames/prop/buff/BuffProp0006.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0007_tres = "res://resource/spriteFrames/prop/buff/BuffProp0007.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0008_tres = "res://resource/spriteFrames/prop/buff/BuffProp0008.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0009_tres = "res://resource/spriteFrames/prop/buff/BuffProp0009.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0010_tres = "res://resource/spriteFrames/prop/buff/BuffProp0010.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0011_tres = "res://resource/spriteFrames/prop/buff/BuffProp0011.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0012_tres = "res://resource/spriteFrames/prop/buff/BuffProp0012.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0013_tres = "res://resource/spriteFrames/prop/buff/BuffProp0013.tres";
- public const string resource_spriteFrames_prop_buff_BuffProp0014_tres = "res://resource/spriteFrames/prop/buff/BuffProp0014.tres";
- public const string resource_spriteFrames_role_Enemy0001_tres = "res://resource/spriteFrames/role/Enemy0001.tres";
- public const string resource_spriteFrames_role_Enemy0002_tres = "res://resource/spriteFrames/role/Enemy0002.tres";
- public const string resource_spriteFrames_role_Role0001_tres = "res://resource/spriteFrames/role/Role0001.tres";
- public const string resource_spriteFrames_role_Role_tip_tres = "res://resource/spriteFrames/role/Role_tip.tres";
- public const string resource_spriteFrames_shell_Shell0001_tres = "res://resource/spriteFrames/shell/Shell0001.tres";
- public const string resource_spriteFrames_shell_Shell0002_tres = "res://resource/spriteFrames/shell/Shell0002.tres";
- public const string resource_spriteFrames_shell_Shell0003_tres = "res://resource/spriteFrames/shell/Shell0003.tres";
- public const string resource_spriteFrames_shell_Shell0004_tres = "res://resource/spriteFrames/shell/Shell0004.tres";
- public const string resource_spriteFrames_weapon_Weapon0001_tres = "res://resource/spriteFrames/weapon/Weapon0001.tres";
- public const string resource_spriteFrames_weapon_Weapon0002_tres = "res://resource/spriteFrames/weapon/Weapon0002.tres";
- public const string resource_spriteFrames_weapon_Weapon0003_tres = "res://resource/spriteFrames/weapon/Weapon0003.tres";
- public const string resource_spriteFrames_weapon_Weapon0004_tres = "res://resource/spriteFrames/weapon/Weapon0004.tres";
- public const string resource_spriteFrames_weapon_Weapon0004_hit_tres = "res://resource/spriteFrames/weapon/Weapon0004_hit.tres";
- public const string resource_spriteFrames_weapon_Weapon0005_tres = "res://resource/spriteFrames/weapon/Weapon0005.tres";
- public const string resource_spriteFrames_weapon_Weapon0006_tres = "res://resource/spriteFrames/weapon/Weapon0006.tres";
- public const string resource_spriteFrames_weapon_Weapon0007_tres = "res://resource/spriteFrames/weapon/Weapon0007.tres";
- public const string resource_spriteFrames_weapon_Weapon0008_tres = "res://resource/spriteFrames/weapon/Weapon0008.tres";
- public const string resource_spriteFrames_weapon_Weapon0009_tres = "res://resource/spriteFrames/weapon/Weapon0009.tres";
- public const string resource_spriteFrames_weapon_Weapon0010_tres = "res://resource/spriteFrames/weapon/Weapon0010.tres";
- public const string resource_spriteFrames_weapon_Weapon0011_tres = "res://resource/spriteFrames/weapon/Weapon0011.tres";
- public const string resource_spriteFrames_weapon_Weapon0013_tres = "res://resource/spriteFrames/weapon/Weapon0013.tres";
- public const string resource_spriteFrames_weapon_Weapon0014_tres = "res://resource/spriteFrames/weapon/Weapon0014.tres";
- public const string resource_spriteFrames_weapon_Weapon0016_tres = "res://resource/spriteFrames/weapon/Weapon0016.tres";
- public const string resource_theme_mainTheme_tres = "res://resource/theme/mainTheme.tres";
- public const string resource_theme_theme1_tres = "res://resource/theme/theme1.tres";
- public const string scene_Main_tscn = "res://scene/Main.tscn";
- public const string scene_World_tscn = "res://scene/World.tscn";
- public const string scene_test_TestCreateSector_tscn = "res://scene/test/TestCreateSector.tscn";
- public const string scene_test_TestDrawSprite_tscn = "res://scene/test/TestDrawSprite.tscn";
- public const string scene_test_TestGridData_tscn = "res://scene/test/TestGridData.tscn";
- public const string scene_test_TestLoadTileSetConfig_tscn = "res://scene/test/TestLoadTileSetConfig.tscn";
- public const string scene_test_TestMask_tscn = "res://scene/test/TestMask.tscn";
- public const string scene_test_TestMask2_tscn = "res://scene/test/TestMask2.tscn";
- public const string scene_test_TestNavigation2_tscn = "res://scene/test/TestNavigation2.tscn";
- public const string scene_test_TestNavigationPolygon_tscn = "res://scene/test/TestNavigationPolygon.tscn";
- public const string scene_test_TestNewTerrain_tscn = "res://scene/test/TestNewTerrain.tscn";
- public const string scene_test_TestNewTileMap_tscn = "res://scene/test/TestNewTileMap.tscn";
- public const string scene_test_TestOptimizeSprite_tscn = "res://scene/test/TestOptimizeSprite.tscn";
- public const string scene_test_TestOutline_tscn = "res://scene/test/TestOutline.tscn";
- public const string scene_test_TestPerfectPixel_tscn = "res://scene/test/TestPerfectPixel.tscn";
- public const string scene_test_TestPerfectPixelScene_tscn = "res://scene/test/TestPerfectPixelScene.tscn";
- public const string scene_test_TestRoomFog_tscn = "res://scene/test/TestRoomFog.tscn";
- public const string scene_test_TestTerrain2x2_tscn = "res://scene/test/TestTerrain2x2.tscn";
- public const string scene_test_TestTileLayer_tscn = "res://scene/test/TestTileLayer.tscn";
- public const string scene_test_TestTrail_tscn = "res://scene/test/TestTrail.tscn";
+ public const string resource_sound_sfx_shooting_Shooting0007_ogg = "res://resource/sound/sfx/shooting/Shooting0007.ogg";
+ public const string resource_sound_sfx_shooting_Shooting0006_ogg = "res://resource/sound/sfx/shooting/Shooting0006.ogg";
+ public const string resource_sound_sfx_shooting_Shooting0012_ogg = "res://resource/sound/sfx/shooting/Shooting0012.ogg";
+ public const string resource_sound_bgm_Intro_ogg = "res://resource/sound/bgm/Intro.ogg";
+ public const string resource_material_Blend_gdshader = "res://resource/material/Blend.gdshader";
+ public const string resource_material_Grid_gdshader = "res://resource/material/Grid.gdshader";
+ public const string resource_material_OffsetVertex_gdshader = "res://resource/material/OffsetVertex.gdshader";
+ public const string resource_material_Blend_tres = "res://resource/material/Blend.tres";
+ public const string resource_material_Outline2_tres = "res://resource/material/Outline2.tres";
+ public const string resource_material_Mask_gdshader = "res://resource/material/Mask.gdshader";
+ public const string resource_material_GodRays_gdshader = "res://resource/material/GodRays.gdshader";
+ public const string resource_material_Sawtooth_tres = "res://resource/material/Sawtooth.tres";
+ public const string resource_material_Sawtooth_gdshader = "res://resource/material/Sawtooth.gdshader";
+ public const string resource_material_Outline2_gdshader = "res://resource/material/Outline2.gdshader";
+ public const string resource_material_Grid_tres = "res://resource/material/Grid.tres";
+ public const string resource_material_SmokeParticleMaterial_tres = "res://resource/material/SmokeParticleMaterial.tres";
+ public const string resource_material_Outline_tres = "res://resource/material/Outline.tres";
+ public const string resource_material_Outline_gdshader = "res://resource/material/Outline.gdshader";
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/room/AutoTileConfig.cs b/DungeonShooting_Godot/src/game/room/AutoTileConfig.cs
index 58624c4..c021338 100644
--- a/DungeonShooting_Godot/src/game/room/AutoTileConfig.cs
+++ b/DungeonShooting_Godot/src/game/room/AutoTileConfig.cs
@@ -23,10 +23,15 @@
public TileCellData Wall_In_RT;
public TileCellData Wall_In_RB;
- public TileCellData Wall_Vertical_Left;
- public TileCellData Wall_Vertical_Center;
- public TileCellData Wall_Vertical_Right;
- public TileCellData Wall_Vertical_Single;
+ public TileCellData Wall_Vertical_LeftTop;
+ public TileCellData Wall_Vertical_CenterTop;
+ public TileCellData Wall_Vertical_RightTop;
+ public TileCellData Wall_Vertical_SingleTop;
+
+ public TileCellData Wall_Vertical_LeftBottom;
+ public TileCellData Wall_Vertical_CenterBottom;
+ public TileCellData Wall_Vertical_RightBottom;
+ public TileCellData Wall_Vertical_SingleBottom;
//----------------------------- 所有自动图块数据 -----------------------------
//----------------------------- 命名规则: Auto_ + LT + T + RT + _ + L + C + R + _ + LB + B + RB
@@ -121,19 +126,36 @@
int[] data;
if (terrainInfo.M.TryGetValue(0, out data))
{
- Wall_Vertical_Single = new TileCellData(sourceId, terrainInfo.GetPosition(data), 0, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
+ Wall_Vertical_SingleTop = new TileCellData(sourceId, terrainInfo.GetPosition(data), 0, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
}
if (terrainInfo.M.TryGetValue(1, out data))
{
- Wall_Vertical_Left= new TileCellData(sourceId, terrainInfo.GetPosition(data), 1, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
+ Wall_Vertical_LeftTop = new TileCellData(sourceId, terrainInfo.GetPosition(data), 1, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
}
if (terrainInfo.M.TryGetValue(2, out data))
{
- Wall_Vertical_Center= new TileCellData(sourceId, terrainInfo.GetPosition(data), 2, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
+ Wall_Vertical_CenterTop = new TileCellData(sourceId, terrainInfo.GetPosition(data), 2, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
}
if (terrainInfo.M.TryGetValue(3, out data))
{
- Wall_Vertical_Right= new TileCellData(sourceId, terrainInfo.GetPosition(data), 3, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
+ Wall_Vertical_RightTop = new TileCellData(sourceId, terrainInfo.GetPosition(data), 3, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
+ }
+
+ if (terrainInfo.M.TryGetValue(4, out data))
+ {
+ Wall_Vertical_SingleBottom= new TileCellData(sourceId, terrainInfo.GetPosition(data), 4, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
+ }
+ if (terrainInfo.M.TryGetValue(5, out data))
+ {
+ Wall_Vertical_LeftBottom = new TileCellData(sourceId, terrainInfo.GetPosition(data), 5, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
+ }
+ if (terrainInfo.M.TryGetValue(6, out data))
+ {
+ Wall_Vertical_CenterBottom = new TileCellData(sourceId, terrainInfo.GetPosition(data), 6, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
+ }
+ if (terrainInfo.M.TryGetValue(7, out data))
+ {
+ Wall_Vertical_RightBottom = new TileCellData(sourceId, terrainInfo.GetPosition(data), 7, TileSetTerrainInfo.MiddleLayerType, MapLayer.AutoMiddleLayer);
}
}
@@ -193,10 +215,10 @@
Auto_010_010_010 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Top | TerrainPeering.Center:
- Auto_010_010_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_010_010_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Center:
- Auto_000_010_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_000_010_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
//第二列
case TerrainPeering.Center | TerrainPeering.Right | TerrainPeering.Bottom:
@@ -206,10 +228,10 @@
Auto_010_011_010 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Top | TerrainPeering.Center | TerrainPeering.Right:
- Auto_010_011_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_010_011_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Center | TerrainPeering.Right:
- Auto_000_011_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_000_011_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
//第三列
case TerrainPeering.Left | TerrainPeering.Center | TerrainPeering.Right | TerrainPeering.Bottom:
@@ -220,10 +242,10 @@
Auto_010_111_010 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Top | TerrainPeering.Left | TerrainPeering.Center | TerrainPeering.Right:
- Auto_010_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_010_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Left | TerrainPeering.Center | TerrainPeering.Right:
- Auto_000_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_000_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
//第四列
case TerrainPeering.Left | TerrainPeering.Center | TerrainPeering.Bottom:
@@ -233,10 +255,10 @@
Auto_010_110_010 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Top | TerrainPeering.Left | TerrainPeering.Center:
- Auto_010_110_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_010_110_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Left | TerrainPeering.Center:
- Auto_000_110_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_000_110_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
//第五列
case TerrainPeering.LeftTop | TerrainPeering.Top | TerrainPeering.Left | TerrainPeering.Center |
@@ -270,7 +292,7 @@
break;
case TerrainPeering.Top | TerrainPeering.RightTop | TerrainPeering.Left | TerrainPeering.Center |
TerrainPeering.Right:
- Auto_011_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_011_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
//第七列
case TerrainPeering.Left | TerrainPeering.Center | TerrainPeering.Right | TerrainPeering.LeftBottom |
@@ -287,7 +309,7 @@
break;
case TerrainPeering.LeftTop | TerrainPeering.Top | TerrainPeering.Left | TerrainPeering.Center |
TerrainPeering.Right:
- Auto_110_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_110_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
//第八列
case TerrainPeering.Top | TerrainPeering.RightTop | TerrainPeering.Left | TerrainPeering.Center |
@@ -319,7 +341,7 @@
Auto_011_111_011 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.Top | TerrainPeering.RightTop | TerrainPeering.Center | TerrainPeering.Right:
- Auto_011_011_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_011_011_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
//第十列
case TerrainPeering.Top | TerrainPeering.Left | TerrainPeering.Center | TerrainPeering.Right |
@@ -337,7 +359,7 @@
break;
case TerrainPeering.LeftTop | TerrainPeering.Top | TerrainPeering.RightTop | TerrainPeering.Left |
TerrainPeering.Center | TerrainPeering.Right:
- Auto_111_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_111_111_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
//第十一列
case TerrainPeering.Left | TerrainPeering.Center | TerrainPeering.Right | TerrainPeering.LeftBottom |
@@ -365,7 +387,7 @@
Auto_110_110_110 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
case TerrainPeering.LeftTop | TerrainPeering.Top | TerrainPeering.Left | TerrainPeering.Center:
- Auto_110_110_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoMiddleLayer);
+ Auto_110_110_000 = new TileCellData(sourceId, pos, peeringValue, TileSetTerrainInfo.TerrainLayerType, MapLayer.AutoTopLayer);
break;
default:
@@ -441,9 +463,13 @@
private void HandlerOtherCellMapping()
{
_mapping.Add(Floor.AutoTileCoords, Floor);
- _mapping.Add(Wall_Vertical_Left.AutoTileCoords, Wall_Vertical_Left);
- _mapping.Add(Wall_Vertical_Right.AutoTileCoords, Wall_Vertical_Right);
- _mapping.Add(Wall_Vertical_Center.AutoTileCoords, Wall_Vertical_Center);
- _mapping.Add(Wall_Vertical_Single.AutoTileCoords, Wall_Vertical_Single);
+ _mapping.Add(Wall_Vertical_LeftTop.AutoTileCoords, Wall_Vertical_LeftTop);
+ _mapping.Add(Wall_Vertical_RightTop.AutoTileCoords, Wall_Vertical_RightTop);
+ _mapping.Add(Wall_Vertical_CenterTop.AutoTileCoords, Wall_Vertical_CenterTop);
+ _mapping.Add(Wall_Vertical_SingleTop.AutoTileCoords, Wall_Vertical_SingleTop);
+ _mapping.Add(Wall_Vertical_LeftBottom.AutoTileCoords, Wall_Vertical_LeftBottom);
+ _mapping.Add(Wall_Vertical_CenterBottom.AutoTileCoords, Wall_Vertical_CenterBottom);
+ _mapping.Add(Wall_Vertical_RightBottom.AutoTileCoords, Wall_Vertical_RightBottom);
+ _mapping.Add(Wall_Vertical_SingleBottom.AutoTileCoords, Wall_Vertical_SingleBottom);
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/room/DefaultDungeonRule.cs b/DungeonShooting_Godot/src/game/room/DefaultDungeonRule.cs
index 115ada8..21e909a 100644
--- a/DungeonShooting_Godot/src/game/room/DefaultDungeonRule.cs
+++ b/DungeonShooting_Godot/src/game/room/DefaultDungeonRule.cs
@@ -27,7 +27,7 @@
public override bool CanOverGenerator()
{
- return Generator.BattleRoomInfos.Count >= Config.BattleRoomCount && Generator.EndRoomInfos.Count > 0;
+ return Generator.BattleRoomInfos.Count >= Config.BattleRoomCount && Generator.EndRoomInfos.Count >= Config.OutRoomCount;
}
public override RoomInfo GetConnectPrevRoom(RoomInfo prevRoom, DungeonRoomType nextRoomType)
@@ -46,6 +46,11 @@
}
else if (nextRoomType == DungeonRoomType.Reward)
{
+ if (Generator.BattleRoomInfos.Count == 0)
+ {
+ return prevRoom;
+ }
+
foreach (var temp in rewardBindRoom)
{
if (!excludePrevRoom.Contains(temp))
diff --git a/DungeonShooting_Godot/src/game/room/Dungeon.cs b/DungeonShooting_Godot/src/game/room/Dungeon.cs
new file mode 100644
index 0000000..fc52182
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/room/Dungeon.cs
@@ -0,0 +1,22 @@
+
+using Godot;
+
+///
+/// 地牢类
+///
+public partial class Dungeon : World
+{
+ public override void _Ready()
+ {
+ base._Ready();
+ Color = Colors.Black;
+ }
+
+ ///
+ /// 初始化 TileMap 中的层级
+ ///
+ public void InitLayer()
+ {
+ MapLayerManager.InitMapLayer(TileRoot);
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/room/DungeonManager.cs b/DungeonShooting_Godot/src/game/room/DungeonManager.cs
index 9172f1e..8892971 100644
--- a/DungeonShooting_Godot/src/game/room/DungeonManager.cs
+++ b/DungeonShooting_Godot/src/game/room/DungeonManager.cs
@@ -1,8 +1,6 @@
using System;
using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
using Godot;
///
@@ -39,11 +37,11 @@
/// 当前使用的配置
///
public DungeonConfig CurrConfig { get; private set; }
-
+
///
- /// 当前使用的世界对象
+ /// 当前玩家所在游戏世界对象
///
- public World World { get; private set; }
+ public World CurrWorld { get; private set; }
///
/// 自动图块配置
@@ -68,6 +66,80 @@
}
///
+ /// 创建新的 World 对象, 相当于清理房间
+ ///
+ public World CreateNewWorld(SeedRandom random, string scenePath)
+ {
+ if (CurrWorld != null)
+ {
+ ClearWorld();
+ CurrWorld.QueueFree();
+ }
+ CurrWorld = ResourceManager.LoadAndInstantiate(scenePath);
+ GameApplication.Instance.SceneRoot.AddChild(CurrWorld);
+ CurrWorld.InitRandomPool(random);
+ return CurrWorld;
+ }
+
+ ///
+ /// 销毁 World 对象, 相当于清理房间
+ ///
+ public void DestroyWorld()
+ {
+ //销毁所有物体
+ if (CurrWorld != null)
+ {
+ ClearWorld();
+ CurrWorld.QueueFree();
+ }
+
+ //销毁池中所有物体
+ ObjectPool.DisposeAllItem();
+
+ CurrWorld = null;
+ }
+
+
+ //清理世界
+ private void ClearWorld()
+ {
+ var childCount = CurrWorld.NormalLayer.GetChildCount();
+ for (var i = 0; i < childCount; i++)
+ {
+ var c = CurrWorld.NormalLayer.GetChild(i);
+ if (c is IDestroy destroy)
+ {
+ destroy.Destroy();
+ }
+ }
+ childCount = CurrWorld.YSortLayer.GetChildCount();
+ for (var i = 0; i < childCount; i++)
+ {
+ var c = CurrWorld.YSortLayer.GetChild(i);
+ if (c is IDestroy destroy)
+ {
+ destroy.Destroy();
+ }
+ }
+ }
+
+ ///
+ /// 进入大厅
+ ///
+ public void LoadHall(Action finish = null)
+ {
+ GameApplication.Instance.StartCoroutine(RunLoadHallCoroutine(finish));
+ }
+
+ ///
+ /// 退出大厅
+ ///
+ public void ExitHall(bool keepPlayer, Action finish = null)
+ {
+ GameApplication.Instance.StartCoroutine(RunExitHallCoroutine(keepPlayer, finish));
+ }
+
+ ///
/// 加载地牢
///
public void LoadDungeon(DungeonConfig config, Action finish = null)
@@ -80,23 +152,23 @@
///
/// 重启地牢
///
- public void RestartDungeon(DungeonConfig config)
+ public void RestartDungeon(bool keepPlayer, DungeonConfig config, Action finish = null)
{
IsEditorMode = false;
CurrConfig = config;
- ExitDungeon(() =>
+ ExitDungeon(keepPlayer, () =>
{
- LoadDungeon(CurrConfig);
+ LoadDungeon(CurrConfig, finish);
});
}
///
/// 退出地牢
///
- public void ExitDungeon(Action finish = null)
+ public void ExitDungeon(bool keepPlayer, Action finish = null)
{
IsInDungeon = false;
- GameApplication.Instance.StartCoroutine(RunExitDungeonCoroutine(finish));
+ GameApplication.Instance.StartCoroutine(RunExitDungeonCoroutine(keepPlayer, finish));
}
//-------------------------------------------------------------------------------------
@@ -105,7 +177,8 @@
/// 在编辑器模式下进入地牢
///
/// 地牢配置
- public void EditorPlayDungeon(DungeonConfig config)
+ /// 执行完成回调
+ public void EditorPlayDungeon(DungeonConfig config, Action finish = null)
{
IsEditorMode = true;
CurrConfig = config;
@@ -113,15 +186,16 @@
{
_prevUi.HideUi();
}
- GameApplication.Instance.StartCoroutine(RunLoadDungeonCoroutine(null));
+ GameApplication.Instance.StartCoroutine(RunLoadDungeonCoroutine(finish));
}
-
+
///
/// 在编辑器模式下进入地牢
///
/// 记录上一个Ui
/// 地牢配置
- public void EditorPlayDungeon(UiBase prevUi, DungeonConfig config)
+ /// 执行完成回调
+ public void EditorPlayDungeon(UiBase prevUi, DungeonConfig config, Action finish = null)
{
IsEditorMode = true;
CurrConfig = config;
@@ -130,16 +204,16 @@
{
_prevUi.HideUi();
}
- GameApplication.Instance.StartCoroutine(RunLoadDungeonCoroutine(null));
+ GameApplication.Instance.StartCoroutine(RunLoadDungeonCoroutine(finish));
}
///
/// 在编辑器模式下退出地牢, 并且打开上一个Ui
///
- public void EditorExitDungeon()
+ public void EditorExitDungeon(bool keepPlayer, Action finish = null)
{
IsInDungeon = false;
- GameApplication.Instance.StartCoroutine(RunExitDungeonCoroutine(() =>
+ GameApplication.Instance.StartCoroutine(RunExitDungeonCoroutine(keepPlayer, () =>
{
IsEditorMode = false;
//显示上一个Ui
@@ -147,6 +221,10 @@
{
_prevUi.ShowUi();
}
+ if (finish != null)
+ {
+ finish();
+ }
}));
}
@@ -156,7 +234,7 @@
{
if (IsInDungeon)
{
- if (World.Pause) //已经暂停
+ if (CurrWorld.Pause) //已经暂停
{
return;
}
@@ -164,7 +242,7 @@
//暂停游戏
if (InputManager.Menu)
{
- World.Pause = true;
+ CurrWorld.Pause = true;
//鼠标改为Ui鼠标
GameApplication.Instance.Cursor.SetGuiMode(true);
//打开暂停Ui
@@ -189,60 +267,202 @@
}
}
+ //执行加载大厅流程
+ private IEnumerator RunLoadHallCoroutine(Action finish)
+ {
+ yield return 0;
+
+ var hall = (Hall)CreateNewWorld(Utils.Random, ResourcePath.scene_Hall_tscn);
+ yield return 0;
+
+ //创建房间数据
+ var roomInfo = new RoomInfo(0, DungeonRoomType.None, null);
+ roomInfo.Size = hall.BgSprite.Texture.GetSize().AsVector2I() / GameConfig.TileCellSize + new Vector2I(10, 10);
+ roomInfo.Position = hall.BgSprite.Position.AsVector2I() - new Vector2I(5, 5) * GameConfig.TileCellSize;
+ hall.RoomInfo = roomInfo;
+ yield return 0;
+
+ //创建归属区域
+ var affiliation = new AffiliationArea();
+ affiliation.Name = "AffiliationArea_Hall";
+ affiliation.Init(roomInfo, new Rect2I(roomInfo.Position, roomInfo.Size * GameConfig.TileCellSize));
+ roomInfo.AffiliationArea = affiliation;
+ hall.AffiliationAreaRoot.AddChild(affiliation);
+ yield return 0;
+
+ //静态渲染精灵根节点, 用于放置sprite
+ var spriteRoot = new RoomStaticSprite(roomInfo);
+ spriteRoot.Name = "SpriteRoot";
+ roomInfo.StaticSprite = spriteRoot;
+ hall.StaticSpriteRoot.AddChild(spriteRoot);
+ yield return 0;
+
+ //静态精灵画布
+ var canvasSprite = new ImageCanvas(roomInfo.Size.X * GameConfig.TileCellSize, roomInfo.Size.Y * GameConfig.TileCellSize);
+ canvasSprite.Position = roomInfo.Position;
+ roomInfo.StaticImageCanvas = canvasSprite;
+ roomInfo.StaticSprite.AddChild(canvasSprite);
+ yield return 0;
+
+ //液体画布
+ var liquidCanvas = new LiquidCanvas(roomInfo, roomInfo.Size.X * GameConfig.TileCellSize, roomInfo.Size.Y * GameConfig.TileCellSize);
+ liquidCanvas.Position = roomInfo.Position;
+ roomInfo.LiquidCanvas = liquidCanvas;
+ roomInfo.StaticSprite.AddChild(liquidCanvas);
+ yield return 0;
+
+ //创建玩家
+ var player = Player.Current;
+ if (player == null)
+ {
+ player = ActivityObject.Create(ActivityObject.Ids.Id_role0001);
+ player.Name = "Player";
+ }
+ player.World = CurrWorld;
+ player.Position = hall.BirthMark.Position;
+ player.PutDown(RoomLayerEnum.YSortLayer);
+ Player.SetCurrentPlayer(player);
+ affiliation.InsertItem(player);
+ player.WeaponPack.PickupItem(ActivityObject.Create(ActivityObject.Ids.Id_weapon0001));
+ yield return 0;
+ player.Collision.Disabled = false;
+
+ GameApplication.Instance.Cursor.SetGuiMode(false);
+ yield return 0;
+
+ IsInDungeon = true;
+ //打开游戏中的ui
+ UiManager.Open_RoomUI();
+
+ if (finish != null)
+ {
+ finish();
+ }
+ }
+
+ //执行退出大厅流程
+ private IEnumerator RunExitHallCoroutine(bool keepPlayer, Action finish)
+ {
+ IsInDungeon = false;
+ yield return 0;
+
+ CurrWorld.Pause = true;
+ yield return 0;
+
+ var hall = (Hall)CurrWorld;
+ hall.RoomInfo.Destroy();
+ yield return 0;
+
+ UiManager.Destroy_RoomUI();
+ yield return 0;
+ if (!keepPlayer)
+ {
+ Player.SetCurrentPlayer(null);
+ }
+ else
+ {
+ var player = Player.Current;
+ player.AffiliationArea?.RemoveItem(player);
+ player.GetParent().RemoveChild(player);
+ player.World = null;
+ player.Collision.Disabled = true;
+ }
+
+ DestroyWorld();
+ yield return 0;
+ FogMaskHandler.ClearRecordRoom();
+ LiquidBrushManager.ClearData();
+ BrushImageData.ClearBrushData();
+ QueueRedraw();
+
+ //鼠标还原
+ GameApplication.Instance.Cursor.SetGuiMode(true);
+ yield return 0;
+
+ if (finish != null)
+ {
+ finish();
+ }
+ }
+
+
//执行加载地牢协程
private IEnumerator RunLoadDungeonCoroutine(Action finish)
{
- //打开 loading UI
- UiManager.Open_Loading();
yield return 0;
//生成地牢房间
- var random = new SeedRandom();
- _dungeonGenerator = new DungeonGenerator(CurrConfig, random);
- var rule = new DefaultDungeonRule(_dungeonGenerator);
- if (!_dungeonGenerator.Generate(rule)) //生成房间失败
+
+ //最多尝试10次
+ const int maxCount = 10;
+ for (var i = 0; i < maxCount; i++)
{
- _dungeonGenerator.EachRoom(DisposeRoomInfo);
- _dungeonGenerator = null;
- UiManager.Hide_Loading();
-
- if (IsEditorMode) //在编辑器模式下打开的Ui
+ SeedRandom random;
+ if (CurrConfig.RandomSeed != null)
{
- EditorPlayManager.IsPlay = false;
- IsEditorMode = false;
- //显示上一个Ui
- if (_prevUi != null)
+ random = new SeedRandom(CurrConfig.RandomSeed.Value);
+ }
+ else
+ {
+ random = new SeedRandom();
+ }
+
+ var dungeonGenerator = new DungeonGenerator(CurrConfig, random);
+ var rule = new DefaultDungeonRule(dungeonGenerator);
+ if (!dungeonGenerator.Generate(rule)) //生成房间失败
+ {
+ dungeonGenerator.EachRoom(DisposeRoomInfo);
+ if (i == maxCount - 1)
{
- _prevUi.ShowUi();
+ if (IsEditorMode) //在编辑器模式下打开的Ui
+ {
+ EditorPlayManager.IsPlay = false;
+ IsEditorMode = false;
+ //显示上一个Ui
+ if (_prevUi != null)
+ {
+ _prevUi.ShowUi();
+ //尝试关闭加载Ui
+ UiManager.Destroy_Loading();
+ }
+ }
+ else //正常关闭Ui
+ {
+ UiManager.Open_Main();
+ //尝试关闭加载Ui
+ UiManager.Destroy_Loading();
+ }
+ EditorWindowManager.ShowTips("错误", "生成房间尝试次数过多,生成地牢房间失败,请加大房间门连接区域,或者修改地牢生成规则!");
+ yield break;
+ }
+ else
+ {
+ yield return 0;
}
}
- else //正常关闭Ui
+ else //生成成功!
{
- UiManager.Open_Main();
+ _dungeonGenerator = dungeonGenerator;
+ break;
}
- EditorWindowManager.ShowTips("错误", "生成房间尝试次数过多,生成地牢房间失败,请加大房间门连接区域,或者修改地牢生成规则!");
- yield break;
}
+
yield return 0;
//创建世界场景
- World = GameApplication.Instance.CreateNewWorld(random);
+ var dungeon = (Dungeon)CreateNewWorld(_dungeonGenerator.Random, ResourcePath.scene_Dungeon_tscn);
+ dungeon.InitLayer();
yield return 0;
var group = GameApplication.Instance.RoomConfig[CurrConfig.GroupName];
var tileSetSplit = GameApplication.Instance.TileSetConfig[group.TileSet];
- World.TileRoot.TileSet = tileSetSplit.GetTileSet();
+ CurrWorld.TileRoot.TileSet = tileSetSplit.GetTileSet();
//填充地牢
AutoTileConfig = new AutoTileConfig(0, tileSetSplit.TileSetInfo.Sources[0].Terrain[0]);
- _dungeonTileMap = new DungeonTileMap(World.TileRoot);
- yield return _dungeonTileMap.AutoFillRoomTile(AutoTileConfig, _dungeonGenerator.StartRoomInfo, World);
+ _dungeonTileMap = new DungeonTileMap(CurrWorld.TileRoot);
+ yield return _dungeonTileMap.AutoFillRoomTile(AutoTileConfig, _dungeonGenerator.StartRoomInfo, CurrWorld);
+ yield return _dungeonTileMap.AutoFillAisleTile(AutoTileConfig, _dungeonGenerator.StartRoomInfo, CurrWorld);
//yield return _dungeonTileMap.AddOutlineTile(AutoTileConfig.WALL_BLOCK);
-
- //生成寻路网格, 这一步操作只生成过道的导航
- _dungeonTileMap.GenerateNavigationPolygon(MapLayer.AutoAisleFloorLayer);
yield return 0;
- //将导航网格绑定到 DoorInfo 上
- BindAisleNavigation(StartRoomInfo, _dungeonTileMap.GetPolygonData());
- yield return 0;
- //挂载过道导航区域
- _dungeonTileMap.MountNavigationPolygon(World.NavigationRoot);
+ //生成墙壁, 生成导航网格
+ _dungeonTileMap.GenerateWallAndNavigation(CurrWorld, AutoTileConfig);
yield return 0;
//初始化所有房间
yield return _dungeonGenerator.EachRoomCoroutine(InitRoom);
@@ -256,15 +476,24 @@
//初始房间创建玩家标记
var playerBirthMark = StartRoomInfo.RoomPreinstall.GetPlayerBirthMark();
//创建玩家
- var player = ActivityObject.Create(ActivityObject.Ids.Id_role0001);
+ var player = Player.Current;
+ if (player == null)
+ {
+ player = ActivityObject.Create(ActivityObject.Ids.Id_role0001);
+ player.Name = "Player";
+ }
if (playerBirthMark != null)
{
- //player.Position = new Vector2(50, 50);
player.Position = playerBirthMark.Position;
}
- player.Name = "Player";
+
+ player.World = CurrWorld;
player.PutDown(RoomLayerEnum.YSortLayer);
Player.SetCurrentPlayer(player);
+ StartRoomInfo.AffiliationArea.InsertItem(player);
+ yield return 0;
+ player.Collision.Disabled = false;
+
GameApplication.Instance.Cursor.SetGuiMode(false);
//打开游戏中的ui
UiManager.Open_RoomUI();
@@ -274,8 +503,6 @@
IsInDungeon = true;
QueueRedraw();
yield return 0;
- //关闭 loading UI
- UiManager.Destroy_Loading();
if (finish != null)
{
finish();
@@ -283,24 +510,33 @@
}
//执行退出地牢流程
- private IEnumerator RunExitDungeonCoroutine(Action finish)
+ private IEnumerator RunExitDungeonCoroutine(bool keepPlayer, Action finish)
{
- //打开 loading UI
- UiManager.Open_Loading();
yield return 0;
- World.Pause = true;
+ CurrWorld.Pause = true;
yield return 0;
- _dungeonGenerator.EachRoom(DisposeRoomInfo);
+ _dungeonGenerator?.EachRoom(DisposeRoomInfo);
yield return 0;
_dungeonTileMap = null;
AutoTileConfig = null;
_dungeonGenerator = null;
- UiManager.Hide_RoomUI();
+ UiManager.Destroy_RoomUI();
yield return 0;
- Player.SetCurrentPlayer(null);
- World = null;
- GameApplication.Instance.DestroyWorld();
+ if (!keepPlayer)
+ {
+ Player.SetCurrentPlayer(null);
+ }
+ else
+ {
+ var player = Player.Current;
+ player.AffiliationArea?.RemoveItem(player);
+ player.GetParent().RemoveChild(player);
+ player.World = null;
+ player.Collision.Disabled = true;
+ }
+
+ DestroyWorld();
yield return 0;
FogMaskHandler.ClearRecordRoom();
LiquidBrushManager.ClearData();
@@ -311,66 +547,16 @@
//派发退出地牢事件
EventManager.EmitEvent(EventEnum.OnExitDungeon);
yield return 0;
- //关闭 loading UI
- UiManager.Destroy_Loading();
if (finish != null)
{
finish();
}
}
- //将导航网格绑定到 DoorInfo 上
- private void BindAisleNavigation(RoomInfo startRoom, NavigationPolygonData[] polygonDatas)
- {
- var list = polygonDatas.ToList();
- startRoom.EachRoom(roomInfo =>
- {
- if (roomInfo.Doors != null)
- {
- foreach (var roomInfoDoor in roomInfo.Doors)
- {
- if (roomInfoDoor.IsForward)
- {
- var doorPosition = roomInfoDoor.GetWorldOriginPosition();
- for (var i = 0; i < list.Count; i++)
- {
- var data = list[i];
- var points = data.GetPoints();
- if (InLength(points, doorPosition, 32) && InLength(points, roomInfoDoor.GetWorldEndPosition(), 32))
- {
- roomInfoDoor.AisleNavigation = data;
- roomInfoDoor.ConnectDoor.AisleNavigation = data;
-
- list.RemoveAt(i);
- }
- }
-
- //Debug.Log(roomInfo.Id + ", 是否找到连接过道: " + flag);
- }
- }
- }
- });
- }
-
- private bool InLength(Vector2[] points, Vector2 targetPoint, float len)
- {
- foreach (var point in points)
- {
- if (point.DistanceSquaredTo(targetPoint) <= len * len)
- {
- return true;
- }
- }
-
- return false;
- }
-
// 初始化房间
private void InitRoom(RoomInfo roomInfo)
{
roomInfo.CalcRange();
- //挂载房间导航区域
- MountNavFromRoomInfo(roomInfo);
//创建门
CreateDoor(roomInfo);
//创建房间归属区域
@@ -386,28 +572,6 @@
//创建房间/过道预览sprite
CreatePreviewSprite(roomInfo);
}
-
- //挂载房间导航区域
- private void MountNavFromRoomInfo(RoomInfo roomInfo)
- {
- var offset = roomInfo.GetOffsetPosition();
- var worldPosition = roomInfo.GetWorldPosition() - offset;
- var polygon = roomInfo.RoomSplit.TileInfo.NavigationPolygon;
- var vertices = roomInfo.RoomSplit.TileInfo.NavigationVertices;
- var polygonData = new NavigationPolygon();
- polygonData.CellSize = GameConfig.NavigationCellSize;
- //这里的位置需要加上房间位置
- polygonData.Vertices = vertices.Select(v => v.AsVector2() + worldPosition).ToArray();
- for (var i = 0; i < polygon.Count; i++)
- {
- polygonData.AddPolygon(polygon[i]);
- }
- var navigationPolygon = new NavigationRegion2D();
- navigationPolygon.Name = "NavigationRegion" + (GetChildCount() + 1);
- navigationPolygon.NavigationPolygon = polygonData;
- World.NavigationRoot.AddChild(navigationPolygon);
- roomInfo.NavigationRegion = navigationPolygon;
- }
//创建门
private void CreateDoor(RoomInfo roomInfo)
@@ -420,29 +584,25 @@
case DoorDirection.E:
door = ActivityObject.Create(ActivityObject.Ids.Id_other_door_e);
door.Position = (doorInfo.OriginPosition + new Vector2(0.5f, 2)) * GameConfig.TileCellSize;
- door.ZIndex = MapLayer.AutoTopLayer;
break;
case DoorDirection.W:
door = ActivityObject.Create(ActivityObject.Ids.Id_other_door_w);
door.Position = (doorInfo.OriginPosition + new Vector2(-0.5f, 2)) * GameConfig.TileCellSize;
- door.ZIndex = MapLayer.AutoTopLayer;
break;
case DoorDirection.S:
door = ActivityObject.Create(ActivityObject.Ids.Id_other_door_s);
door.Position = (doorInfo.OriginPosition + new Vector2(2f, 1.5f)) * GameConfig.TileCellSize;
- door.ZIndex = MapLayer.AutoTopLayer;
break;
case DoorDirection.N:
door = ActivityObject.Create(ActivityObject.Ids.Id_other_door_n);
door.Position = (doorInfo.OriginPosition + new Vector2(2f, -0.5f)) * GameConfig.TileCellSize;
- door.ZIndex = MapLayer.AutoMiddleLayer;
break;
default:
return;
}
doorInfo.Door = door;
door.Init(doorInfo);
- door.PutDown(RoomLayerEnum.NormalLayer, false);
+ door.PutDown(RoomLayerEnum.YSortLayer, false);
}
}
@@ -456,7 +616,7 @@
(roomInfo.Size - new Vector2I(4, 5)) * GameConfig.TileCellSize));
roomInfo.AffiliationArea = affiliation;
- World.AffiliationAreaRoot.AddChild(affiliation);
+ CurrWorld.AffiliationAreaRoot.AddChild(affiliation);
}
//创建 RoomStaticSprite
@@ -496,9 +656,10 @@
{
var roomFog = new FogMask();
roomFog.Name = "FogMask" + roomFog.IsDestroyed;
- roomFog.InitFog(roomInfo.Position + new Vector2I(1, 1), roomInfo.Size - new Vector2I(2, 2));
+ roomFog.InitFog(roomInfo.Position + new Vector2I(1, 0), roomInfo.Size - new Vector2I(2, 1));
+ //roomFog.InitFog(roomInfo.Position + new Vector2I(1, 1), roomInfo.Size - new Vector2I(2, 2));
- World.FogMaskRoot.AddChild(roomFog);
+ CurrWorld.FogMaskRoot.AddChild(roomFog);
roomInfo.RoomFogMask = roomFog;
//生成通道迷雾
@@ -521,7 +682,7 @@
else
{
calcRect.Position += new Vector2I(0, 2);
- calcRect.Size -= new Vector2I(0, 4);
+ calcRect.Size -= new Vector2I(0, 5);
}
}
else
@@ -535,7 +696,7 @@
if (roomDoorInfo.ConnectDoor.Direction == DoorDirection.N) //→↑
{
calcRect.Position += new Vector2I(2, 0);
- calcRect.Size -= new Vector2I(2, 3);
+ calcRect.Size -= new Vector2I(2, 4);
}
else //→↓
{
@@ -547,7 +708,7 @@
{
if (roomDoorInfo.ConnectDoor.Direction == DoorDirection.N) //←↑
{
- calcRect.Size -= new Vector2I(2, 3);
+ calcRect.Size -= new Vector2I(2, 4);
}
else //←↓
{
@@ -560,12 +721,12 @@
if (roomDoorInfo.ConnectDoor.Direction == DoorDirection.E) //↑→
{
calcRect.Position += new Vector2I(2, -1);
- calcRect.Size -= new Vector2I(2, 1);
+ calcRect.Size -= new Vector2I(2, 2);
}
else //↑←
{
calcRect.Position += new Vector2I(0, -1);
- calcRect.Size -= new Vector2I(2, 1);
+ calcRect.Size -= new Vector2I(2, 2);
}
}
else if (roomDoorInfo.Direction == DoorDirection.S)
@@ -598,7 +759,7 @@
}
aisleFog.InitFog(calcRectPosition, calcRectSize);
- World.FogMaskRoot.AddChild(aisleFog);
+ CurrWorld.FogMaskRoot.AddChild(aisleFog);
roomDoorInfo.AisleFogMask = aisleFog;
roomDoorInfo.ConnectDoor.AisleFogMask = aisleFog;
@@ -612,7 +773,7 @@
);
roomDoorInfo.AisleFogArea = fogArea;
roomDoorInfo.ConnectDoor.AisleFogArea = fogArea;
- World.AffiliationAreaRoot.AddChild(fogArea);
+ CurrWorld.AffiliationAreaRoot.AddChild(fogArea);
}
//预览迷雾区域
@@ -620,13 +781,13 @@
roomDoorInfo.PreviewRoomFogMask = previewRoomFog;
previewRoomFog.Init(roomDoorInfo, PreviewFogMask.PreviewFogType.Room);
previewRoomFog.SetActive(false);
- World.FogMaskRoot.AddChild(previewRoomFog);
+ CurrWorld.FogMaskRoot.AddChild(previewRoomFog);
var previewAisleFog = new PreviewFogMask();
roomDoorInfo.PreviewAisleFogMask = previewAisleFog;
previewAisleFog.Init(roomDoorInfo, PreviewFogMask.PreviewFogType.Aisle);
previewAisleFog.SetActive(false);
- World.FogMaskRoot.AddChild(previewAisleFog);
+ CurrWorld.FogMaskRoot.AddChild(previewAisleFog);
}
}
@@ -654,96 +815,20 @@
//aisleSprite.Centered = false;
aisleSprite.Texture = doorInfo.AislePreviewTexture;
//调整过道预览位置
-
- if (!doorInfo.HasCross) //不含交叉点
+ if (doorInfo.Direction == DoorDirection.N || doorInfo.Direction == DoorDirection.S ||
+ doorInfo.ConnectDoor.Direction == DoorDirection.N || doorInfo.ConnectDoor.Direction == DoorDirection.S)
{
- if (doorInfo.Direction == DoorDirection.N)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(0, doorInfo.AislePreviewTexture.GetHeight() - 2);
- }
- else if (doorInfo.Direction == DoorDirection.S)
- {
- aisleSprite.Position = doorInfo.OriginPosition;
- }
- else if (doorInfo.Direction == DoorDirection.E)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(1, -1);
- }
- else if (doorInfo.Direction == DoorDirection.W)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(doorInfo.AislePreviewTexture.GetWidth() - 1, -1);
- }
+ aisleSprite.Position = doorInfo.AisleFloorRect.Position + new Vector2I(0, 1);
}
- else //包含交叉点
+ else
{
- if (doorInfo.Direction == DoorDirection.S)
- {
- if (doorInfo.ConnectDoor.Direction == DoorDirection.E)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(doorInfo.AislePreviewTexture.GetWidth() - 4, 1);
- }
- else if (doorInfo.ConnectDoor.Direction == DoorDirection.W)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(0, 1);
- }
- else
- {
- aisleSprite.Position = doorInfo.OriginPosition;
- }
- }
- else if (doorInfo.Direction == DoorDirection.N)
- {
- if (doorInfo.ConnectDoor.Direction == DoorDirection.W)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(0, doorInfo.AislePreviewTexture.GetHeight() - 1);
- }
- else if (doorInfo.ConnectDoor.Direction == DoorDirection.E)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(doorInfo.AislePreviewTexture.GetWidth() - 4, doorInfo.AislePreviewTexture.GetHeight() - 1);
- }
- else
- {
- aisleSprite.Position = doorInfo.OriginPosition;
- }
- }
- else if (doorInfo.Direction == DoorDirection.W)
- {
- if (doorInfo.ConnectDoor.Direction == DoorDirection.N)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(doorInfo.AislePreviewTexture.GetWidth() - 1, 0);
- }
- else if (doorInfo.ConnectDoor.Direction == DoorDirection.S)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(doorInfo.AislePreviewTexture.GetWidth() - 1, doorInfo.AislePreviewTexture.GetHeight() - 4);
- }
- else
- {
- aisleSprite.Position = doorInfo.OriginPosition;
- }
- }
- else if (doorInfo.Direction == DoorDirection.E)
- {
- if (doorInfo.ConnectDoor.Direction == DoorDirection.S)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(1, doorInfo.AislePreviewTexture.GetHeight() - 4);
- }
- else if (doorInfo.ConnectDoor.Direction == DoorDirection.N)
- {
- aisleSprite.Position = doorInfo.OriginPosition - new Vector2I(1, 0);
- }
- else
- {
- aisleSprite.Position = doorInfo.OriginPosition;
- }
- }
-
- aisleSprite.Position += new Vector2(0, 1);
+ aisleSprite.Position = doorInfo.AisleFloorRect.Position;
}
- var aisleSpriteMaterial = ResourceManager.Load(ResourcePath.resource_material_Outline2_tres, false);
- aisleSpriteMaterial.SetShaderParameter("outline_color", new Color(1, 1, 1, 0.9f));
- aisleSpriteMaterial.SetShaderParameter("scale", 0.5f);
- aisleSprite.Material = aisleSpriteMaterial;
+ // var aisleSpriteMaterial = ResourceManager.Load(ResourcePath.resource_material_Outline2_tres, false);
+ // aisleSpriteMaterial.SetShaderParameter("outline_color", new Color(1, 1, 1, 0.9f));
+ // aisleSpriteMaterial.SetShaderParameter("scale", 0.5f);
+ // aisleSprite.Material = aisleSpriteMaterial;
doorInfo.AislePreviewSprite = aisleSprite;
doorInfo.ConnectDoor.AislePreviewSprite = aisleSprite;
}
@@ -762,7 +847,7 @@
if (room.IsSeclusion)
{
var playerAffiliationArea = Player.Current.AffiliationArea;
- foreach (var enemy in World.Enemy_InstanceList)
+ foreach (var enemy in CurrWorld.Enemy_InstanceList)
{
//不与玩家处于同一个房间
if (!enemy.IsDestroyed && enemy.AffiliationArea != playerAffiliationArea)
@@ -800,7 +885,7 @@
private void OnCheckEnemy()
{
var activeRoom = ActiveRoomInfo;
- if (activeRoom != null)
+ if (activeRoom != null && activeRoom.RoomPreinstall != null)
{
if (activeRoom.RoomPreinstall.IsRunWave) //正在生成标记
{
diff --git a/DungeonShooting_Godot/src/game/room/RoomDoor.cs b/DungeonShooting_Godot/src/game/room/RoomDoor.cs
index 8059b62..c8b8674 100644
--- a/DungeonShooting_Godot/src/game/room/RoomDoor.cs
+++ b/DungeonShooting_Godot/src/game/room/RoomDoor.cs
@@ -37,6 +37,7 @@
{
_animatedDown = GetNode("AnimatedSpriteDown");
}
+
OpenDoorHandler();
}
@@ -52,7 +53,7 @@
{
AnimatedSprite.Play(AnimatorNames.OpenDoor);
}
-
+
if (_animatedDown != null && _animatedDown.SpriteFrames.HasAnimation(AnimatorNames.OpenDoor))
{
_animatedDown.Play(AnimatorNames.OpenDoor);
@@ -67,49 +68,20 @@
IsClose = true;
//Visible = true;
Collision.Disabled = false;
- if (_door.Navigation != null)
- {
- _door.Navigation.OpenNavigationNode.Enabled = false;
- _door.Navigation.OpenNavigationNode.Visible = false;
- _door.Navigation.CloseNavigationNode.Enabled = true;
- _door.Navigation.CloseNavigationNode.Visible = true;
- }
if (AnimatedSprite.SpriteFrames.HasAnimation(AnimatorNames.CloseDoor))
{
AnimatedSprite.Play(AnimatorNames.CloseDoor);
}
- if (_animatedDown != null && _animatedDown.SpriteFrames.HasAnimation(AnimatorNames.CloseDoor))
+ if (_animatedDown != null)
{
- _animatedDown.Play(AnimatorNames.CloseDoor);
+ _animatedDown.Visible = false;
}
- //调整门的层级
- switch (Direction)
+ if (Direction == DoorDirection.E || Direction == DoorDirection.W)
{
- case DoorDirection.E:
- ZIndex = MapLayer.AutoTopLayer;
- if (_animatedDown != null)
- {
- _animatedDown.ZIndex = MapLayer.AutoTopLayer;
- }
-
- break;
- case DoorDirection.W:
- ZIndex = MapLayer.AutoTopLayer;
- if (_animatedDown != null)
- {
- _animatedDown.ZIndex = MapLayer.AutoTopLayer;
- }
-
- break;
- case DoorDirection.S:
- ZIndex = MapLayer.AutoTopLayer;
- break;
- case DoorDirection.N:
- ZIndex = MapLayer.AutoMiddleLayer;
- break;
+ ZIndex = MapLayer.CustomMiddleLayer2;
}
}
@@ -118,6 +90,15 @@
if (!IsClose && waitDisabledCollision) //开门动画播放完成
{
waitDisabledCollision = false;
+ if (_animatedDown != null)
+ {
+ _animatedDown.Visible = true;
+ }
+
+ if (Direction == DoorDirection.E || Direction == DoorDirection.W)
+ {
+ ZIndex = 0;
+ }
OpenDoorHandler();
}
}
@@ -125,41 +106,7 @@
private void OpenDoorHandler()
{
Collision.Disabled = true;
- if (_door.Navigation != null)
- {
- _door.Navigation.OpenNavigationNode.Enabled = true;
- _door.Navigation.OpenNavigationNode.Visible = true;
- _door.Navigation.CloseNavigationNode.Enabled = false;
- _door.Navigation.CloseNavigationNode.Visible = false;
- }
//调整门的层级
//ZIndex = MapLayer.AutoFloorLayer;
-
- //调整门的层级
- switch (Direction)
- {
- case DoorDirection.E:
- ZIndex = MapLayer.AutoMiddleLayer;
- if (_animatedDown != null)
- {
- _animatedDown.ZIndex = MapLayer.AutoTopLayer;
- }
-
- break;
- case DoorDirection.W:
- ZIndex = MapLayer.AutoMiddleLayer;
- if (_animatedDown != null)
- {
- _animatedDown.ZIndex = MapLayer.AutoTopLayer;
- }
-
- break;
- case DoorDirection.S:
- ZIndex = MapLayer.AutoTopLayer;
- break;
- case DoorDirection.N:
- ZIndex = MapLayer.AutoMiddleLayer;
- break;
- }
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/room/World.cs b/DungeonShooting_Godot/src/game/room/World.cs
deleted file mode 100644
index af57174..0000000
--- a/DungeonShooting_Godot/src/game/room/World.cs
+++ /dev/null
@@ -1,178 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using Godot;
-
-///
-/// 游戏世界
-///
-public partial class World : CanvasModulate, ICoroutine
-{
- ///
- /// 当前的游戏世界对象
- ///
- public static World Current => GameApplication.Instance.World;
-
- ///
- /// //对象根节点
- ///
- public Node2D NormalLayer;
-
- ///
- /// 对象根节点, 带y轴排序功能
- ///
- public Node2D YSortLayer;
-
- ///
- /// 地图根节点
- ///
- public TileMap TileRoot;
-
- public Node2D StaticSpriteRoot;
- public Node2D AffiliationAreaRoot;
- public Node2D FogMaskRoot;
- public Node2D NavigationRoot;
-
- ///
- /// 是否暂停
- ///
- public bool Pause
- {
- get => _pause;
- set
- {
- if (_pause != value)
- {
- _pause = value;
- if (value)
- {
- ProcessMode = ProcessModeEnum.WhenPaused;
- }
- else
- {
- ProcessMode = ProcessModeEnum.Inherit;
- }
- }
- }
- }
-
- ///
- /// 所有被扔在地上的武器
- ///
- public HashSet Weapon_UnclaimedWeapons { get; } = new HashSet();
-
- ///
- /// 记录所有存活的敌人
- ///
- public List Enemy_InstanceList { get; } = new List();
-
- ///
- /// 随机数对象
- ///
- public SeedRandom Random { get; private set; }
-
- ///
- /// 随机对象池
- ///
- public RandomPool RandomPool { get; private set; }
-
- private bool _pause = false;
- private List _coroutineList;
-
- public override void _Ready()
- {
- Color = Colors.Black;
- //TileRoot.YSortEnabled = false;
- NormalLayer = GetNode("TileRoot/NormalLayer");
- YSortLayer = GetNode("TileRoot/YSortLayer");
- TileRoot = GetNode("TileRoot");
- StaticSpriteRoot = GetNode("TileRoot/StaticSpriteRoot");
- FogMaskRoot = GetNode("TileRoot/FogMaskRoot");
- NavigationRoot = GetNode("TileRoot/NavigationRoot");
- AffiliationAreaRoot = GetNode("TileRoot/AffiliationAreaRoot");
- }
-
- public override void _Process(double delta)
- {
- //协程更新
- ProxyCoroutineHandler.ProxyUpdateCoroutine(ref _coroutineList, (float)delta);
- }
-
- ///
- /// 初始化 TileMap 中的层级
- ///
- public void InitLayer()
- {
- MapLayerManager.InitMapLayer(TileRoot);
- }
-
- ///
- /// 获取指定层级根节点
- ///
- public Node2D GetRoomLayer(RoomLayerEnum layerEnum)
- {
- switch (layerEnum)
- {
- case RoomLayerEnum.NormalLayer:
- return NormalLayer;
- case RoomLayerEnum.YSortLayer:
- return YSortLayer;
- }
-
- return null;
- }
-
- ///
- /// 通知其他敌人发现目标了
- ///
- /// 发送通知的角色
- /// 目标
- public void NotifyEnemyTarget(Role self, ActivityObject target)
- {
- foreach (var role in Enemy_InstanceList)
- {
- if (role != self && !role.IsDestroyed && role.AffiliationArea == self.AffiliationArea)
- {
- //将未发现目标的敌人状态置为惊讶状态
- var controller = role.StateController;
- //延时通知效果
- role.CallDelay(Utils.Random.RandomRangeFloat(0.2f, 1f), () =>
- {
- if (controller.CurrState == AIStateEnum.AiNormal)
- {
- controller.ChangeState(AIStateEnum.AiLeaveFor, target);
- }
- });
- }
- }
- }
-
- public long StartCoroutine(IEnumerator able)
- {
- return ProxyCoroutineHandler.ProxyStartCoroutine(ref _coroutineList, able);
- }
-
- public void StopCoroutine(long coroutineId)
- {
- ProxyCoroutineHandler.ProxyStopCoroutine(ref _coroutineList, coroutineId);
- }
-
- public bool IsCoroutineOver(long coroutineId)
- {
- return ProxyCoroutineHandler.ProxyIsCoroutineOver(ref _coroutineList, coroutineId);
- }
-
- public void StopAllCoroutine()
- {
- ProxyCoroutineHandler.ProxyStopAllCoroutine(ref _coroutineList);
- }
-
- ///
- /// 初始化随机池
- ///
- public void InitRandomPool(SeedRandom random)
- {
- Random = random;
- RandomPool = new RandomPool(this);
- }
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/ui/editorTools/EditorToolsPanel.cs b/DungeonShooting_Godot/src/game/ui/editorTools/EditorToolsPanel.cs
index 73fd0e8..d19a1d9 100644
--- a/DungeonShooting_Godot/src/game/ui/editorTools/EditorToolsPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/editorTools/EditorToolsPanel.cs
@@ -318,10 +318,19 @@
///
private void OpenExportExcelFolder()
{
- var path = Environment.CurrentDirectory + "\\excel";
- System.Diagnostics.Process.Start("explorer.exe", path);
+ var path = Environment.CurrentDirectory + "/excel";
+ var osName = OS.GetName();
+ GD.Print("打开excel文件夹: " + path);
+ if (osName == "Windows")
+ {
+ System.Diagnostics.Process.Start("explorer.exe", path);
+ }
+ else
+ {
+ System.Diagnostics.Process.Start("open", path);
+ }
}
-
+
///
/// 在编辑器中打开一个提示窗口
///
diff --git a/DungeonShooting_Godot/src/game/ui/main/MainPanel.cs b/DungeonShooting_Godot/src/game/ui/main/MainPanel.cs
index 9815bb1..b6473d1 100644
--- a/DungeonShooting_Godot/src/game/ui/main/MainPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/main/MainPanel.cs
@@ -19,18 +19,12 @@
//点击开始游戏
private void OnStartGameClick()
{
- //验证该组是否满足生成地牢的条件
- var config = GameApplication.Instance.DungeonConfig;
- var result = DungeonManager.CheckDungeon(config.GroupName);
- if (result.HasError)
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.LoadHall(() =>
{
- EditorWindowManager.ShowTips("警告", "当前组'" + config.GroupName + "'" + result.ErrorMessage + ", 不能生成地牢!");
- }
- else
- {
- GameApplication.Instance.DungeonManager.LoadDungeon(config);
- HideUi();
- }
+ UiManager.Destroy_Loading();
+ });
+ HideUi();
}
//退出游戏
diff --git a/DungeonShooting_Godot/src/game/ui/mapEditor/tileView/EditorTileMap.cs b/DungeonShooting_Godot/src/game/ui/mapEditor/tileView/EditorTileMap.cs
index 76a3d90..47f8b72 100644
--- a/DungeonShooting_Godot/src/game/ui/mapEditor/tileView/EditorTileMap.cs
+++ b/DungeonShooting_Godot/src/game/ui/mapEditor/tileView/EditorTileMap.cs
@@ -391,7 +391,7 @@
if (CurrLayer.Layer != MapLayer.AutoFloorLayer && (CurrBrushType == TileMapDrawMode.Free || CurrBrushType == TileMapDrawMode.Combination)) //自由绘制 或者 绘制组合
{
- if (_isLeftPressed) //左键绘制
+ if (_isLeftPressed && _brushWidth > 0 && _brushHeight > 0) //左键绘制
{
var w = s.X / GameConfig.TileCellSize;
var h = s.Y / GameConfig.TileCellSize;
@@ -664,7 +664,10 @@
if (CheckTerrain())
{
Debug.Log("开始绘制自动贴图...");
- GenerateTerrain();
+ var rect = TileMapUtils.GenerateTerrain(this, _editorTileMap.L_NavigationRegion.Instance, _autoTileConfig);
+ CurrRoomPosition = rect.Position;
+ SetMapSize(rect.Size, true);
+ //GenerateTerrain();
_isGenerateTerrain = true;
}
else
@@ -795,35 +798,9 @@
SetCustomLayerDataFromList(MapLayer.CustomFloorLayer1, tileInfo.CustomFloor1);
SetCustomLayerDataFromList(MapLayer.CustomFloorLayer2, tileInfo.CustomFloor2);
SetCustomLayerDataFromList(MapLayer.CustomFloorLayer3, tileInfo.CustomFloor3);
- SetAutoLayerDataFromList(MapLayer.AutoMiddleLayer, tileInfo.Middle);
SetCustomLayerDataFromList(MapLayer.CustomMiddleLayer1, tileInfo.CustomMiddle1);
SetCustomLayerDataFromList(MapLayer.CustomMiddleLayer2, tileInfo.CustomMiddle2);
- SetAutoLayerDataFromList(MapLayer.AutoTopLayer, tileInfo.Top);
SetCustomLayerDataFromList(MapLayer.CustomTopLayer, tileInfo.CustomTop);
-
- //如果有图块错误, 则找出错误的点位
- if (roomSplit.ErrorType == RoomErrorType.TileError)
- {
- RunCheckHandler();
- }
- else
- {
- //导航网格
- if (tileInfo.NavigationPolygon != null && tileInfo.NavigationVertices != null)
- {
- var polygon = _editorTileMap.L_NavigationRegion.Instance.NavigationPolygon;
- polygon.Vertices = tileInfo.NavigationVertices.Select(v => v.AsVector2()).ToArray();
- foreach (var p in tileInfo.NavigationPolygon)
- {
- polygon.AddPolygon(p);
- }
-
- OnBakeFinished();
- }
- }
- //聚焦
- //MapEditorPanel.CallDelay(0.1f, OnClickCenterTool);
- //CallDeferred(nameof(OnClickCenterTool), null);
//加载门编辑区域
foreach (var doorAreaInfo in CurrDoorConfigs)
@@ -831,6 +808,9 @@
MapEditorToolsPanel.CreateDoorTool(doorAreaInfo);
}
+ //执行生成墙壁和导航网格
+ RunCheckHandler();
+
//聚焦 (需要延时一帧调用)
this.CallDelayInNode(0, () => OnClickCenterTool(null));
return true;
@@ -1211,6 +1191,8 @@
var rect = _autoCellLayerGrid.GetRect();
CurrRoomPosition = rect.Position - new Vector2I(2, 3);
SetMapSize(rect.Size + new Vector2I(4, 5), refreshDoorTrans);
+ // CurrRoomPosition = rect.Position - new Vector2I(2, 4);
+ // SetMapSize(rect.Size + new Vector2I(4, 6), refreshDoorTrans);
}
//检测是否有不合规的图块, 返回true表示图块正常
@@ -1221,7 +1203,8 @@
{
if (flag)
{
- if (!_autoCellLayerGrid.Contains(x, y + 1) && _autoCellLayerGrid.Contains(x, y + 2))
+ if (!_autoCellLayerGrid.Contains(x, y + 1) &&
+ (_autoCellLayerGrid.Contains(x, y + 2) || _autoCellLayerGrid.Contains(x, y + 3)))
{
_checkTerrainFlag = false;
_checkTerrainErrorPosition = new Vector2I(x, y + 1);
@@ -1233,202 +1216,6 @@
});
return _checkTerrainFlag;
}
-
- //生成自动图块 (地形)
- private void GenerateTerrain()
- {
- //ClearLayer(MapLayer.AutoFloorLayer);
- var list = new List();
- var xStart = int.MaxValue;
- var yStart = int.MaxValue;
- var xEnd = int.MinValue;
- var yEnd = int.MinValue;
-
- _autoCellLayerGrid.ForEach((x, y, flag) =>
- {
- if (flag)
- {
- //计算范围
- if (x < xStart)
- xStart = x;
- else if (x > xEnd)
- xEnd = x;
-
- if (y < yStart)
- yStart = y;
- else if (y > yEnd)
- yEnd = y;
-
- //填充墙壁
- if (!_autoCellLayerGrid.Contains(x, y - 1))
- {
- var left = _autoCellLayerGrid.Contains(x - 1, y - 1);
- var right = _autoCellLayerGrid.Contains(x + 1, y - 1);
- TileCellData tileCellData;
- if (left && right)
- {
- tileCellData = _autoTileConfig.Wall_Vertical_Single;
- }
- else if (left)
- {
- tileCellData = _autoTileConfig.Wall_Vertical_Left;
- }
- else if (right)
- {
- tileCellData = _autoTileConfig.Wall_Vertical_Right;
- }
- else
- {
- tileCellData = _autoTileConfig.Wall_Vertical_Center;
- }
- SetCell(MapLayer.AutoFloorLayer, new Vector2I(x, y - 1), tileCellData.SourceId, tileCellData.AutoTileCoords);
- }
- }
-
- return true;
- });
-
- //绘制临时边界
- var temp1 = new List();
- for (var x = xStart - 3; x <= xEnd + 3; x++)
- {
- var p1 = new Vector2I(x, yStart - 4);
- var p2 = new Vector2I(x, yEnd + 3);
- temp1.Add(p1);
- temp1.Add(p2);
- //上横
- SetCell(MapLayer.AutoFloorLayer, p1, _autoTileConfig.TopMask.SourceId, _autoTileConfig.TopMask.AutoTileCoords);
- //下横
- SetCell(MapLayer.AutoFloorLayer, p2, _autoTileConfig.TopMask.SourceId, _autoTileConfig.TopMask.AutoTileCoords);
- }
- for (var y = yStart - 4; y <= yEnd + 3; y++)
- {
- var p1 = new Vector2I(xStart - 3, y);
- var p2 = new Vector2I(xEnd + 3, y);
- temp1.Add(p1);
- temp1.Add(p2);
- //左竖
- SetCell(MapLayer.AutoFloorLayer, p1, _autoTileConfig.TopMask.SourceId, _autoTileConfig.TopMask.AutoTileCoords);
- //右竖
- SetCell(MapLayer.AutoFloorLayer, p2, _autoTileConfig.TopMask.SourceId, _autoTileConfig.TopMask.AutoTileCoords);
- }
-
- //计算需要绘制的图块
- var temp2 = new List();
- for (var x = xStart - 2; x <= xEnd + 2; x++)
- {
- for (var y = yStart - 3; y <= yEnd + 2; y++)
- {
- if (!_autoCellLayerGrid.Contains(x, y) && !_autoCellLayerGrid.Contains(x, y + 1))
- {
- list.Add(new Vector2I(x, y));
- if (!IsMaskCollisionGround(_autoCellLayerGrid, x, y))
- {
- temp2.Add(new Vector2I(x, y));
- }
- }
- }
- }
- var arr = new Array(list);
- //绘制自动图块
- SetCellsTerrainConnect(MapLayer.AutoFloorLayer, arr, _mainTerrainSet, _mainTerrain, false);
-
- //擦除临时边界
- for (var i = 0; i < temp1.Count; i++)
- {
- EraseCell(MapLayer.AutoFloorLayer, temp1[i]);
- }
-
- //计算区域
- CalcTileRect(true);
-
- //开始绘制导航网格
- GenerateNavigation();
-
- //擦除临时边界2
- for (var i = 0; i < temp2.Count; i++)
- {
- EraseCell(MapLayer.AutoFloorLayer, temp2[i]);
- }
-
- //将墙壁移动到指定层
- MoveTerrainCell();
- }
-
- private bool IsMaskCollisionGround(InfiniteGrid autoCellLayerGrid, int x, int y)
- {
- for (var i = -2; i <= 2; i++)
- {
- for (var j = -2; j <= 3; j++)
- {
- if (autoCellLayerGrid.Contains(x + i, y + j))
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
- //将自动生成的图块从 MapLayer.AutoFloorLayer 移动到指定图层中
- private void MoveTerrainCell()
- {
- ClearLayer(MapLayer.AutoTopLayer);
- ClearLayer(MapLayer.AutoMiddleLayer);
-
- var x = CurrRoomPosition.X;
- var y = CurrRoomPosition.Y;
- var w = CurrRoomSize.X;
- var h = CurrRoomSize.Y;
-
- for (var i = 0; i < w; i++)
- {
- for (var j = 0; j < h; j++)
- {
- var pos = new Vector2I(x + i, y + j);
- if (!_autoCellLayerGrid.Contains(pos) && GetCellSourceId(MapLayer.AutoFloorLayer, pos) != -1)
- {
- var atlasCoords = GetCellAtlasCoords(MapLayer.AutoFloorLayer, pos);
- var layer = _autoTileConfig.GetLayer(atlasCoords);
- if (layer == MapLayer.AutoMiddleLayer)
- {
- layer = MapLayer.AutoMiddleLayer;
- }
- else if (layer == MapLayer.AutoTopLayer)
- {
- layer = MapLayer.AutoTopLayer;
- }
- else
- {
- Debug.LogError($"异常图块: {pos}, 这个图块的图集坐标'{atlasCoords}'不属于'MiddleMapLayer'和'TopMapLayer'!");
- continue;
- }
- EraseCell(MapLayer.AutoFloorLayer, pos);
- SetCell(layer, pos, _mainSource, atlasCoords);
- }
- }
- }
- }
-
- //生成导航网格
- private void GenerateNavigation()
- {
- var navigationRegion = _editorTileMap.L_NavigationRegion.Instance;
- var navigationPolygon = navigationRegion.NavigationPolygon;
- navigationPolygon.Clear();
- navigationPolygon.ClearPolygons();
- navigationPolygon.ClearOutlines();
- var endPos = CurrRoomPosition + CurrRoomSize;
- navigationPolygon.AddOutline(new []
- {
- CurrRoomPosition * GameConfig.TileCellSize,
- new Vector2(endPos.X, CurrRoomPosition.Y) * GameConfig.TileCellSize,
- endPos * GameConfig.TileCellSize,
- new Vector2(CurrRoomPosition.X, endPos.Y) * GameConfig.TileCellSize
- });
- navigationRegion.BakeNavigationPolygon(false);
- }
//设置显示的错误cell, 会标记上红色的闪烁动画
private void SetErrorCell(Vector2I pos)
@@ -1487,8 +1274,8 @@
}
else //聚焦地图中心点
{
- var roomPos = new Vector2(CurrRoomPosition.X, CurrRoomPosition.Y);
- var roomSize = new Vector2(CurrRoomSize.X, CurrRoomSize.Y);
+ var roomPos = new Vector2(CurrRoomPosition.X, CurrRoomPosition.Y - 1);
+ var roomSize = new Vector2(CurrRoomSize.X, CurrRoomSize.Y + 1);
SetMapPosition(pos - (roomPos + roomSize / 2) * TileSet.TileSize * Scale);
}
}
@@ -1624,8 +1411,6 @@
tileInfo.NavigationPolygon.AddRange(polygon.Polygons);
tileInfo.NavigationVertices.AddRange(polygon.Vertices.Select(v => new SerializeVector2(v)));
tileInfo.Floor.Clear();
- tileInfo.Middle.Clear();
- tileInfo.Top.Clear();
tileInfo.CustomFloor1.Clear();
tileInfo.CustomFloor2.Clear();
tileInfo.CustomFloor3.Clear();
@@ -1635,8 +1420,6 @@
//保存图块数据
PushAutoLayerDataToList(MapLayer.AutoFloorLayer, tileInfo.Floor);
- PushAutoLayerDataToList(MapLayer.AutoMiddleLayer, tileInfo.Middle);
- PushAutoLayerDataToList(MapLayer.AutoTopLayer, tileInfo.Top);
PushLayerDataToList(MapLayer.CustomFloorLayer1, tileInfo.CustomFloor1);
PushLayerDataToList(MapLayer.CustomFloorLayer2, tileInfo.CustomFloor2);
PushLayerDataToList(MapLayer.CustomFloorLayer3, tileInfo.CustomFloor3);
@@ -1743,13 +1526,14 @@
}
else //聚焦地图中心点
{
- var tempPos = new Vector2(CurrRoomSize.X, CurrRoomSize.Y);
+ var tempPos = new Vector2(CurrRoomPosition.X, CurrRoomPosition.Y - 1);
+ var tempSize = new Vector2(CurrRoomSize.X, CurrRoomSize.Y + 1);
//var tempPos = new Vector2(CurrRoomSize.X + 2, CurrRoomSize.Y + 2);
- var mapSize = tempPos * TileSet.TileSize;
+ var mapSize = tempSize * TileSet.TileSize;
var axis = Mathf.Max(mapSize.X, mapSize.Y);
var targetScale = GameConfig.PreviewImageSize / axis;
Scale = new Vector2(targetScale, targetScale);
- Position = pos - (CurrRoomPosition + tempPos / 2f) * TileSet.TileSize * targetScale;
+ Position = pos - (tempPos + tempSize / 2f) * TileSet.TileSize * targetScale;
}
//隐藏工具栏
diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs
index 0ac1067..4b899e9 100644
--- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs
@@ -78,7 +78,7 @@
S_DelayInput.Instance.Value = data.DelayTime;
}
- if (_markInfo.SpecialMarkType == SpecialMarkType.BirthPoint) //出生标记
+ if (_markInfo.SpecialMarkType != SpecialMarkType.Normal) //特殊标记
{
var markInfoItem = new MarkInfoItem();
markInfoItem.SpecialMarkType = _markInfo.SpecialMarkType;
@@ -134,6 +134,10 @@
{
}
+ else if (data.SpecialMarkType == SpecialMarkType.OutPoint) //出口标记
+ {
+
+ }
else //普通标记
{
var gridCount = _grid.Count;
diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs
index aed3c2b..5211359 100644
--- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs
+++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs
@@ -29,7 +29,7 @@
//权重
CellNode.L_VBoxContainer.L_HBoxContainer.L_WeightEdit.Instance.Value = data.Weight;
- if (data.SpecialMarkType == SpecialMarkType.BirthPoint) //出生标记
+ if (data.SpecialMarkType != SpecialMarkType.Normal) //特殊标记
{
//物体名称
CellNode.L_VBoxContainer.L_HBoxContainer.L_NameLabel.Instance.Text = PreinstallMarkManager.GetSpecialName(data.SpecialMarkType);
diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs
index 712977d..638b735 100644
--- a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs
@@ -214,7 +214,7 @@
{
var markCell = (EditorMarkCell)uiCell;
var markType = markCell.Data.MarkInfo.SpecialMarkType;
- if (markType == SpecialMarkType.BirthPoint) //某些特殊标记不能删除
+ if (markType != SpecialMarkType.Normal) //特殊标记不能删除
{
S_DynamicTool.L_EditButton.Instance.Visible = true;
S_DynamicTool.L_DeleteButton.Instance.Visible = false;
diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs
index 8edcc66..97dab7b 100644
--- a/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs
@@ -276,7 +276,10 @@
//删除地牢组
private void DeleteGroup(bool v)
{
- MapProjectManager.DeleteGroup(GroupGrid.SelectData.GroupName);
+ if (v)
+ {
+ MapProjectManager.DeleteGroup(GroupGrid.SelectData.GroupName);
+ }
}
//创建房间
diff --git a/DungeonShooting_Godot/src/game/ui/pauseMenu/PauseMenuPanel.cs b/DungeonShooting_Godot/src/game/ui/pauseMenu/PauseMenuPanel.cs
index 19e06a1..2a78dc0 100644
--- a/DungeonShooting_Godot/src/game/ui/pauseMenu/PauseMenuPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/pauseMenu/PauseMenuPanel.cs
@@ -15,6 +15,14 @@
{
S_Exit.Instance.Text = "返回编辑器";
}
+ else if (World.Current is Dungeon) //在游戏地牢中
+ {
+ S_Exit.Instance.Text = "退出地牢";
+ }
+ else //在大厅中
+ {
+ S_Restart.Instance.Visible = false;
+ }
}
public override void Process(float delta)
@@ -28,7 +36,7 @@
//继续游戏
private void OnContinueClick()
{
- GameApplication.Instance.World.Pause = false;
+ World.Current.Pause = false;
GameApplication.Instance.Cursor.SetGuiMode(false);
Destroy();
}
@@ -43,7 +51,11 @@
}
else //正常重新开始
{
- GameApplication.Instance.DungeonManager.RestartDungeon(GameApplication.Instance.DungeonConfig);
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.RestartDungeon(false, GameApplication.Instance.DungeonConfig, () =>
+ {
+ UiManager.Destroy_Loading();
+ });
}
}
@@ -55,10 +67,23 @@
{
EditorPlayManager.Exit();
}
- else //正常关闭Ui
+ else if (World.Current is Dungeon) //在游戏地牢中
{
- GameApplication.Instance.DungeonManager.ExitDungeon(() =>
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.ExitDungeon(false, () =>
{
+ GameApplication.Instance.DungeonManager.LoadHall(() =>
+ {
+ UiManager.Destroy_Loading();
+ });
+ });
+ }
+ else //在大厅中
+ {
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.ExitHall(false, () =>
+ {
+ UiManager.Destroy_Loading();
UiManager.Open_Main();
});
}
diff --git a/DungeonShooting_Godot/src/game/ui/roomMap/RoomMapPanel.cs b/DungeonShooting_Godot/src/game/ui/roomMap/RoomMapPanel.cs
index ca80d6c..f1fd9c2 100644
--- a/DungeonShooting_Godot/src/game/ui/roomMap/RoomMapPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/roomMap/RoomMapPanel.cs
@@ -147,29 +147,32 @@
_needRefresh.Clear();
}
- //更新地图中心点位置
- var playPosition = Player.Current.GetCenterPosition();
- if (!_isMagnifyMap)
+ if (Player.Current != null)
{
- S_Root.Instance.Position = CalcRootPosition(playPosition);
- }
- else
- {
- S_Root.Instance.Position = CalcRootPosition(playPosition) + _mapOffset;
- S_Mark.Instance.Position = S_DrawContainer.Instance.Size / 2 + _mapOffset;
- }
+ //更新地图中心点位置
+ var playPosition = Player.Current.GetCenterPosition();
+ if (!_isMagnifyMap)
+ {
+ S_Root.Instance.Position = CalcRootPosition(playPosition);
+ }
+ else
+ {
+ S_Root.Instance.Position = CalcRootPosition(playPosition) + _mapOffset;
+ S_Mark.Instance.Position = S_DrawContainer.Instance.Size / 2 + _mapOffset;
+ }
- var area = Player.Current.AffiliationArea;
- //传送
- if (_pressMapFlag && _mouseHoverRoom != null &&
- area != null && !area.RoomInfo.IsSeclusion &&
- Input.IsMouseButtonPressed(MouseButton.Right))
- {
- //执行传送操作
- DoTransmission((_mouseHoverRoom.Waypoints + new Vector2(0.5f, 0.5f)) * GameConfig.TileCellSize);
- ResetMap();
- _isMagnifyMap = false;
- World.Current.Pause = false;
+ var area = Player.Current.AffiliationArea;
+ //传送
+ if (_pressMapFlag && _mouseHoverRoom != null &&
+ area != null && !area.RoomInfo.IsSeclusion &&
+ Input.IsMouseButtonPressed(MouseButton.Right))
+ {
+ //执行传送操作
+ DoTransmission((_mouseHoverRoom.Waypoints + new Vector2(0.5f, 0.5f)) * GameConfig.TileCellSize);
+ ResetMap();
+ _isMagnifyMap = false;
+ World.Current.Pause = false;
+ }
}
}
@@ -229,6 +232,11 @@
private void InitMap()
{
var startRoom = GameApplication.Instance.DungeonManager.StartRoomInfo;
+ if (startRoom == null)
+ {
+ HideUi();
+ return;
+ }
startRoom.EachRoom(roomInfo =>
{
//房间
diff --git a/DungeonShooting_Godot/src/game/ui/settlement/SettlementPanel.cs b/DungeonShooting_Godot/src/game/ui/settlement/SettlementPanel.cs
index b0ac795..f88c7f7 100644
--- a/DungeonShooting_Godot/src/game/ui/settlement/SettlementPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/settlement/SettlementPanel.cs
@@ -10,7 +10,7 @@
public override void OnCreateUi()
{
S_Restart.Instance.Pressed += OnRestartClick;
- S_ToMenu.Instance.Pressed += OnToMenuClick;
+ S_ToMenu.Instance.Pressed += OnBackClick;
if (GameApplication.Instance.DungeonManager.IsEditorMode) //在编辑器模式下打开的Ui
{
@@ -28,23 +28,31 @@
}
else //正常重新开始
{
- GameApplication.Instance.DungeonManager.RestartDungeon(GameApplication.Instance.DungeonConfig);
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.RestartDungeon(false, GameApplication.Instance.DungeonConfig, () =>
+ {
+ UiManager.Destroy_Loading();
+ });
}
}
- //回到主菜单
- private void OnToMenuClick()
+ //回到上一级
+ private void OnBackClick()
{
Destroy();
if (GameApplication.Instance.DungeonManager.IsEditorMode) //在编辑器模式下打开的Ui
{
EditorPlayManager.Exit();
}
- else //正常关闭Ui
+ else //正常关闭Ui, 回到大厅
{
- GameApplication.Instance.DungeonManager.ExitDungeon(() =>
+ UiManager.Open_Loading();
+ GameApplication.Instance.DungeonManager.ExitDungeon(false, () =>
{
- UiManager.Open_Main();
+ GameApplication.Instance.DungeonManager.LoadHall(() =>
+ {
+ UiManager.Destroy_Loading();
+ });
});
}
}