Исправлена возможность пересечения коридоров

This commit is contained in:
DIvan2000 2024-12-07 21:22:24 +04:00
parent 2c207b94fb
commit 5b7f1a5ee4
2 changed files with 24 additions and 2 deletions

View File

@ -123,15 +123,25 @@ func place_way(pos1: Vector2i, pos2: Vector2i) -> bool:
if not (tiledata1.get_custom_data("is_center") and tiledata1.get_custom_data("struct_name")=="EMPTY_ROOM"): return false if not (tiledata1.get_custom_data("is_center") and tiledata1.get_custom_data("struct_name")=="EMPTY_ROOM"): return false
if not (tiledata2.get_custom_data("is_center") and tiledata2.get_custom_data("struct_name")=="EMPTY_ROOM"): return false if not (tiledata2.get_custom_data("is_center") and tiledata2.get_custom_data("struct_name")=="EMPTY_ROOM"): return false
#Check place is free
if pos1.x != pos2.x: if pos1.x != pos2.x:
if abs(pos1.x-pos2.x)<=5: return false if abs(pos1.x-pos2.x)<=5: return false
for x in range(min(pos1.x,pos2.x)+2, max(pos1.x,pos2.x)-1):
if get_maxZ(Vector2i(x, pos1.y)) >= structs[StructType.H_WAY][struct_fields.LAYER].z_index:
return false
if pos1.y != pos2.y:
if abs(pos1.y-pos2.y)<=5: return false
for y in range(min(pos1.y,pos2.y)+2, max(pos1.y,pos2.y)-1):
if get_maxZ(Vector2i(pos1.x, y)) >= structs[StructType.V_WAY][struct_fields.LAYER].z_index:
return false
if pos1.x != pos2.x:
place_struct(Vector2i(min(pos1.x,pos2.x)+2, pos1.y), StructType.WAY_LEFT) place_struct(Vector2i(min(pos1.x,pos2.x)+2, pos1.y), StructType.WAY_LEFT)
place_struct(Vector2i(max(pos1.x,pos2.x)-2, pos1.y), StructType.WAY_RIGHT) place_struct(Vector2i(max(pos1.x,pos2.x)-2, pos1.y), StructType.WAY_RIGHT)
for x in range(min(pos1.x,pos2.x)+3, max(pos1.x,pos2.x)-2): for x in range(min(pos1.x,pos2.x)+3, max(pos1.x,pos2.x)-2):
place_struct(Vector2i(x, pos1.y), StructType.H_WAY) place_struct(Vector2i(x, pos1.y), StructType.H_WAY)
if pos1.y != pos2.y: if pos1.y != pos2.y:
if abs(pos1.y-pos2.y)<=5: return false
place_struct(Vector2i(pos1.x, min(pos1.y,pos2.y)+2), StructType.WAY_UP) place_struct(Vector2i(pos1.x, min(pos1.y,pos2.y)+2), StructType.WAY_UP)
place_struct(Vector2i(pos1.x, max(pos1.y,pos2.y)-2), StructType.WAY_DOWN) place_struct(Vector2i(pos1.x, max(pos1.y,pos2.y)-2), StructType.WAY_DOWN)
for y in range(min(pos1.y,pos2.y)+3, max(pos1.y,pos2.y)-2): for y in range(min(pos1.y,pos2.y)+3, max(pos1.y,pos2.y)-2):

View File

@ -737,8 +737,11 @@ texture = ExtResource("3_hky6b")
1:5/0 = 0 1:5/0 = 0
1:5/0/custom_data_0 = true 1:5/0/custom_data_0 = true
1:5/0/custom_data_1 = Vector2i(3, 1) 1:5/0/custom_data_1 = Vector2i(3, 1)
1:5/0/custom_data_3 = Vector2i(0, 1)
2:5/0 = 0 2:5/0 = 0
2:5/0/custom_data_3 = Vector2i(-1, 1)
3:5/0 = 0 3:5/0 = 0
3:5/0/custom_data_3 = Vector2i(1, 1)
1:6/0 = 0 1:6/0 = 0
1:6/0/custom_data_0 = true 1:6/0/custom_data_0 = true
1:6/0/custom_data_1 = Vector2i(3, 1) 1:6/0/custom_data_1 = Vector2i(3, 1)
@ -748,15 +751,21 @@ texture = ExtResource("3_hky6b")
3:6/0 = 0 3:6/0 = 0
3:6/0/custom_data_0 = true 3:6/0/custom_data_0 = true
3:6/0/custom_data_1 = Vector2i(1, 3) 3:6/0/custom_data_1 = Vector2i(1, 3)
3:6/0/custom_data_3 = Vector2i(1, 0)
1:7/0 = 0 1:7/0 = 0
1:7/0/custom_data_0 = true 1:7/0/custom_data_0 = true
1:7/0/custom_data_1 = Vector2i(3, 1) 1:7/0/custom_data_1 = Vector2i(3, 1)
1:7/0/custom_data_3 = Vector2i(0, -1)
2:7/0 = 0 2:7/0 = 0
2:7/0/custom_data_3 = Vector2i(-1, -1)
3:7/0 = 0 3:7/0 = 0
3:7/0/custom_data_3 = Vector2i(1, -1)
0:5/0 = 0 0:5/0 = 0
0:5/0/custom_data_3 = Vector2i(1, 1)
0:6/0 = 0 0:6/0 = 0
0:6/0/custom_data_3 = Vector2i(1, 0) 0:6/0/custom_data_3 = Vector2i(1, 0)
0:7/0 = 0 0:7/0 = 0
0:7/0/custom_data_3 = Vector2i(1, -1)
4:7/0 = 0 4:7/0 = 0
4:7/0/custom_data_3 = Vector2i(0, -1) 4:7/0/custom_data_3 = Vector2i(0, -1)
4:6/0 = 0 4:6/0 = 0
@ -766,10 +775,13 @@ texture = ExtResource("3_hky6b")
4:5/0 = 0 4:5/0 = 0
4:5/0/custom_data_3 = Vector2i(0, 1) 4:5/0/custom_data_3 = Vector2i(0, 1)
5:5/0 = 0 5:5/0 = 0
5:5/0/custom_data_3 = Vector2i(-1, 1)
5:6/0 = 0 5:6/0 = 0
5:6/0/custom_data_0 = true 5:6/0/custom_data_0 = true
5:6/0/custom_data_1 = Vector2i(1, 3) 5:6/0/custom_data_1 = Vector2i(1, 3)
5:6/0/custom_data_3 = Vector2i(-1, 0)
5:7/0 = 0 5:7/0 = 0
5:7/0/custom_data_3 = Vector2i(-1, -1)
[sub_resource type="TileSet" id="TileSet_twrk0"] [sub_resource type="TileSet" id="TileSet_twrk0"]
terrain_set_0/mode = 0 terrain_set_0/mode = 0