Пример #1
0
        public List <Vector2> GetRelevantPath(Vector2 start, uint team_index)
        {
            List <Vector2> rel_path        = null;
            int            min_path_length = bounds.GetWidth() * bounds.GetHeight();

            foreach (var unit in units.Values)
            {
                if (unit.GetTeamIndex() == team_index)
                {
                    continue;
                }

                var unit_tilepos = unit.GetTilePosition();

                var path = pathfinder.FindPath(start, unit_tilepos);
                if (path == null || path.Count == 0)
                {
                    continue;
                }

                var path_length = path.Count;
                if (path_length < min_path_length)
                {
                    min_path_length = path_length;
                    rel_path        = path;
                }
            }

            return(rel_path);
        }
Пример #2
0
 public Pathfinder(Battleground battleground, Tilemap main_tilemap, Tilemap decor_tilemap, FieldBounds field_bounds)
 {
     this.battleground  = battleground;
     this.main_tilemap  = main_tilemap;
     this.decor_tilemap = decor_tilemap;
     this.field_bounds  = field_bounds;
     this.field         = new int[field_bounds.GetWidth(), field_bounds.GetHeight()];
 }