Made tilemap navigation use multiple layers

This commit is contained in:
Marco 2025-03-06 13:49:01 +01:00
commit 25670dc243
7 changed files with 32 additions and 22 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=16 format=4 uid="uid://prgabjxh44lf"]
[gd_scene load_steps=17 format=4 uid="uid://prgabjxh44lf"]
[ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_4uv21"]
[ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_xfbh8"]
[ext_resource type="Script" uid="uid://epnwjptvks3t" path="res://Scripts/Resources/LootItem.cs" id="3_cko4a"]
[ext_resource type="Script" uid="uid://mja0rk7n2kln" path="res://Scripts/Resources/MapStartDataResource.cs" id="4_bc0u7"]
[ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="4_em3f4"]
[ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="5_75e1c"]
@ -17,7 +18,7 @@
[sub_resource type="Resource" id="Resource_6wo78"]
script = ExtResource("4_bc0u7")
EggIndex = 0
StartingEquipment = []
StartingEquipment = Array[ExtResource("3_cko4a")]([])
[sub_resource type="CircleShape2D" id="CircleShape2D_5xgmc"]
@ -33,11 +34,11 @@ MapStartData = SubResource("Resource_6wo78")
[node name="Tilemaps" type="Node2D" parent="."]
process_mode = 1
[node name="Floor" type="TileMapLayer" parent="Tilemaps" node_paths=PackedStringArray("_solidLayer")]
[node name="Floor" type="TileMapLayer" parent="Tilemaps" node_paths=PackedStringArray("_solidLayers")]
tile_map_data = PackedByteArray("AAAEABAAAAAEAAIAAAAEABEAAAAEAAIAAAAEABIAAAAEAAIAAAAEABMAAAAEAAIAAAAEABQAAAAEAAIAAAAEABUAAAAEAAIAAAAEABYAAAAEAAIAAAAFABAAAAAEAAIAAAAFABEAAAAEAAIAAAAFABIAAAAEAAIAAAAFABMAAAAEAAIAAAAFABQAAAAEAAIAAAAFABUAAAAEAAIAAAAFABYAAAAEAAIAAAAGABAAAAAEAAIAAAAGABEAAAAEAAIAAAAGABIAAAAEAAIAAAAGABMAAAAEAAIAAAAGABQAAAAEAAIAAAAGABUAAAAEAAIAAAAGABYAAAAEAAIAAAAHABAAAAAEAAIAAAAHABEAAAAEAAIAAAAHABIAAAAEAAIAAAAHABMAAAAEAAIAAAAHABQAAAAEAAIAAAAHABUAAAAEAAIAAAAHABYAAAAEAAIAAAAIABAAAAAEAAIAAAAIABEAAAAEAAIAAAAIABIAAAAEAAIAAAAIABMAAAAEAAIAAAAIABQAAAAEAAIAAAAIABUAAAAEAAIAAAAIABYAAAAEAAIAAAAJABAAAAAEAAIAAAAJABEAAAAEAAIAAAAJABIAAAAEAAIAAAAJABMAAAAEAAIAAAAJABQAAAAEAAIAAAAJABUAAAAEAAIAAAAJABYAAAAEAAIAAAAKABAAAAAEAAIAAAAKABEAAAAEAAIAAAAKABIAAAAEAAIAAAAKABMAAAAEAAIAAAAKABQAAAAEAAIAAAAKABUAAAAEAAIAAAAKABYAAAAEAAIAAAADABAAAAAEAAIAAAADABEAAAAEAAIAAAADABIAAAAEAAIAAAADABMAAAAEAAIAAAADABQAAAAEAAIAAAADABUAAAAEAAIAAAADABYAAAAEAAIAAAADABcAAAAEAAIAAAADABgAAAAEAAIAAAAEABcAAAAEAAIAAAAEABgAAAAEAAIAAAAFABcAAAAEAAIAAAAFABgAAAAEAAIAAAAGABcAAAAEAAIAAAAGABgAAAAEAAIAAAAHABcAAAAEAAIAAAAHABgAAAAEAAIAAAAIABcAAAAEAAIAAAAIABgAAAAEAAIAAAAJABcAAAAEAAIAAAAJABgAAAAEAAIAAAAKABcAAAAEAAIAAAAKABgAAAAEAAIAAAALABAAAAAEAAIAAAALABEAAAAEAAIAAAALABIAAAAEAAIAAAALABMAAAAEAAIAAAALABQAAAAEAAIAAAALABUAAAAEAAIAAAALABYAAAAEAAIAAAALABcAAAAEAAIAAAALABgAAAAEAAIAAAA=")
tile_set = ExtResource("4_em3f4")
script = ExtResource("5_75e1c")
_solidLayer = NodePath("../Solid")
_solidLayers = [NodePath("../Solid"), NodePath("../Props")]
metadata/_edit_lock_ = true
[node name="Solid" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]]
@ -70,6 +71,7 @@ animation = &"down"
process_mode = 1
script = ExtResource("11_uct4d")
pixel_snap = false
enable_smoothing = false
[node name="ReferenceRect" type="ReferenceRect" parent="."]
visible = false

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,19 +1,21 @@
using Godot;
using System;
using System.Linq;
using Godot.Collections;
public partial class TilemapAvoidance : TileMapLayer
{
[Export] private TileMapLayer _solidLayer;
[Export] private Array<TileMapLayer> _solidLayers;
public override bool _UseTileDataRuntimeUpdate(Vector2I coords)
{
if (_solidLayer.GetUsedCellsById(0).Contains(coords))
{
return true;
}
// if (_solidLayer.GetUsedCellsById(0).Contains(coords))
// {
// return true;
// }
return false;
return _solidLayers.Aggregate(false, (current, layer) => current | layer.GetUsedCellsById(0).Contains(coords));
}
public override void _TileDataRuntimeUpdate(Vector2I coords, TileData tileData)

View file

@ -41,7 +41,7 @@ polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ml1qs"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ipvrl"]
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
@ -217,7 +217,7 @@ texture = ExtResource("1_70kxh")
0:3/0 = 0
0:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_lnwgu")
1:3/0 = 0
1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ml1qs")
1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ipvrl")
2:3/0 = 0
2:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_h4p0b")
3:3/0 = 0