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(); + }); }); } }