From d1625ba1e99d350e66cc268d70c46c9d6d06f8ad Mon Sep 17 00:00:00 2001 From: CarnifexOptimus <156172553+CarnifexOptimus@users.noreply.github.com> Date: Sun, 16 Feb 2025 19:13:39 +0100 Subject: [PATCH] code analyzer fix --- .../Global/DeepDungeon/FloorPathfind.cs | 2 +- .../Modules/Global/DeepDungeon/LevelData.cs | 27 ++++++++++++------- BossMod/Modules/Global/DeepDungeon/Minimap.cs | 2 +- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/BossMod/Modules/Global/DeepDungeon/FloorPathfind.cs b/BossMod/Modules/Global/DeepDungeon/FloorPathfind.cs index 9d013222ff..fb9dd4f1d8 100644 --- a/BossMod/Modules/Global/DeepDungeon/FloorPathfind.cs +++ b/BossMod/Modules/Global/DeepDungeon/FloorPathfind.cs @@ -11,7 +11,7 @@ public enum Direction } // neat feature of deep dungeons - there is only one path from any room to any other room (no loops) and the grid is so small that brute forcing is basically free! -internal class FloorPathfind(ReadOnlySpan Map) +internal sealed class FloorPathfind(ReadOnlySpan Map) { public readonly RoomFlags[] Map = Map.ToArray(); diff --git a/BossMod/Modules/Global/DeepDungeon/LevelData.cs b/BossMod/Modules/Global/DeepDungeon/LevelData.cs index 64e6263c18..6cf09d653c 100644 --- a/BossMod/Modules/Global/DeepDungeon/LevelData.cs +++ b/BossMod/Modules/Global/DeepDungeon/LevelData.cs @@ -1,46 +1,55 @@ namespace BossMod.Global.DeepDungeon; -public record class Floor(uint DungeonId, uint Floorset, Tileset RoomsA, Tileset RoomsB) +public sealed record class Floor(uint DungeonId, uint Floorset, Tileset RoomsA, Tileset RoomsB) { public Floor Map(Func Mapping) => new(DungeonId, Floorset, RoomsA.Map(Mapping), RoomsB.Map(Mapping)); } -public record class Tileset(RoomData[] Rooms) +public sealed record class Tileset { + private readonly RoomData[] _rooms; + + public Tileset(RoomData[] rooms) + { + _rooms = rooms; + } + + public IReadOnlyList> Rooms => _rooms; + public Tileset Map(Func Mapping) { - var len = Rooms.Length; + var len = _rooms.Length; var mappedRooms = new RoomData[len]; for (var i = 0; i < len; ++i) { - mappedRooms[i] = Rooms[i].Map(Mapping); + mappedRooms[i] = _rooms[i].Map(Mapping); } return new Tileset(mappedRooms); } - public RoomData this[int index] => Rooms[index]; + public RoomData this[int index] => _rooms[index]; public override string ToString() { var sb = new StringBuilder(); sb.Append("Tileset { Rooms = ["); - var len = Rooms.Length; + var len = _rooms.Length; for (var i = 0; i < len; ++i) { if (i > 0) { sb.Append(", "); } - sb.Append(Rooms[i].ToString()); + sb.Append(_rooms[i].ToString()); } sb.Append("] }"); return sb.ToString(); } } -public record class RoomData(T Center, T North, T South, T West, T East) +public sealed record class RoomData(T Center, T North, T South, T West, T East) { public RoomData Map(Func F) => new(F(Center), F(North), F(South), F(West), F(East)); } -public record struct Wall(WPos Position, float Depth); +public readonly record struct Wall(WPos Position, float Depth); diff --git a/BossMod/Modules/Global/DeepDungeon/Minimap.cs b/BossMod/Modules/Global/DeepDungeon/Minimap.cs index d08c96a680..3fa7519271 100644 --- a/BossMod/Modules/Global/DeepDungeon/Minimap.cs +++ b/BossMod/Modules/Global/DeepDungeon/Minimap.cs @@ -4,7 +4,7 @@ namespace BossMod.Global.DeepDungeon; -public record class Minimap(DeepDungeonState State, Angle PlayerRotation, int CurrentDestination) +public sealed record class Minimap(DeepDungeonState State, Angle PlayerRotation, int CurrentDestination) { enum IconID : uint {