Started lint work

This commit is contained in:
Daniel Cronqvist 2024-08-22 00:15:13 +02:00
parent 7d6ee330a5
commit bb8c3a133c
39 changed files with 83 additions and 143 deletions

View file

@ -40,17 +40,17 @@ dotnet_style_require_accessibility_modifiers = for_non_interface_members
# Expression-level preferences
dotnet_style_coalesce_expression = true
dotnet_style_collection_initializer = true
dotnet_style_collection_initializer = false
dotnet_style_explicit_tuple_names = true
dotnet_style_namespace_match_folder = true
dotnet_style_null_propagation = true
dotnet_style_object_initializer = true
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_prefer_auto_properties = true
dotnet_style_prefer_collection_expression = when_types_loosely_match
dotnet_style_prefer_collection_expression = false
dotnet_style_prefer_compound_assignment = true
dotnet_style_prefer_conditional_expression_over_assignment = true
dotnet_style_prefer_conditional_expression_over_return = true
dotnet_style_prefer_conditional_expression_over_assignment = false
dotnet_style_prefer_conditional_expression_over_return = false
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
dotnet_style_prefer_inferred_anonymous_type_member_names = true
dotnet_style_prefer_inferred_tuple_names = true
@ -84,7 +84,7 @@ csharp_style_expression_bodied_constructors = false
csharp_style_expression_bodied_indexers = true
csharp_style_expression_bodied_lambdas = true
csharp_style_expression_bodied_local_functions = false
csharp_style_expression_bodied_methods = false
csharp_style_expression_bodied_methods = when_on_single_line
csharp_style_expression_bodied_operators = false
csharp_style_expression_bodied_properties = true
@ -106,11 +106,11 @@ csharp_style_prefer_readonly_struct = true
csharp_style_prefer_readonly_struct_member = true
# Code-block preferences
csharp_prefer_braces = true
csharp_prefer_braces = when_multiline
csharp_prefer_simple_using_statement = true
csharp_style_namespace_declarations = block_scoped
csharp_style_prefer_method_group_conversion = true
csharp_style_prefer_primary_constructors = true
csharp_style_prefer_primary_constructors = false
csharp_style_prefer_top_level_statements = true
# Expression-level preferences
@ -145,7 +145,7 @@ csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_object_initializers = false
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true
@ -227,7 +227,14 @@ dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case
# Diagnostics
dotnet_analyzer_diagnostic.severity = warning
dotnet_diagnostic.IDE0001.severity = none
dotnet_diagnostic.IDE0004.severity = silent
dotnet_diagnostic.IDE0005.severity = error
dotnet_diagnostic.IDE0008.severity = silent
dotnet_diagnostic.IDE0160.severity = none
[.github/**/*.yml]
charset = utf-8

View file

@ -1,17 +1,13 @@
using System;
using System.Collections.Immutable;
using System.Runtime.CompilerServices;
using System.Security.Cryptography;
using System.Text;
using System.Xml;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Columns;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Order;
using BenchmarkDotNet.Reports;
using BenchmarkDotNet.Running;
namespace MyBenchmarks
namespace DotTiled.Benchmark
{
[GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)]
[CategoriesColumn]
@ -19,11 +15,11 @@ namespace MyBenchmarks
[HideColumns(["StdDev", "Error", "RatioSD"])]
public class MapLoading
{
private string _tmxPath = @"DotTiled.Tests/Serialization/TestData/Map/default-map/default-map.tmx";
private string _tmxContents = "";
private readonly string _tmxPath = @"DotTiled.Tests/Serialization/TestData/Map/default-map/default-map.tmx";
private readonly string _tmxContents = "";
private string _tmjPath = @"DotTiled.Tests/Serialization/TestData/Map/default-map/default-map.tmj";
private string _tmjContents = "";
private readonly string _tmjPath = @"DotTiled.Tests/Serialization/TestData/Map/default-map/default-map.tmj";
private readonly string _tmjContents = "";
public MapLoading()
{
@ -31,11 +27,11 @@ namespace MyBenchmarks
var tmxPath = Path.Combine(basePath, $"../{_tmxPath}");
var tmjPath = Path.Combine(basePath, $"../{_tmjPath}");
_tmxContents = System.IO.File.ReadAllText(tmxPath);
_tmjContents = System.IO.File.ReadAllText(tmjPath);
_tmxContents = File.ReadAllText(tmxPath);
_tmjContents = File.ReadAllText(tmjPath);
}
static string WhereAmI([CallerFilePath] string callerFilePath = "") => callerFilePath;
private static string WhereAmI([CallerFilePath] string callerFilePath = "") => callerFilePath;
[BenchmarkCategory("MapFromInMemoryTmxString")]
[Benchmark(Baseline = true, Description = "DotTiled")]
@ -43,7 +39,7 @@ namespace MyBenchmarks
{
using var stringReader = new StringReader(_tmxContents);
using var xmlReader = XmlReader.Create(stringReader);
using var mapReader = new DotTiled.Serialization.Tmx.TmxMapReader(xmlReader, _ => throw new Exception(), _ => throw new Exception(), []);
using var mapReader = new DotTiled.Serialization.Tmx.TmxMapReader(xmlReader, _ => throw new NotSupportedException(), _ => throw new NotSupportedException(), []);
return mapReader.ReadMap();
}
@ -51,7 +47,7 @@ namespace MyBenchmarks
[Benchmark(Baseline = true, Description = "DotTiled")]
public DotTiled.Model.Map LoadWithDotTiledFromInMemoryTmjString()
{
using var mapReader = new DotTiled.Serialization.Tmj.TmjMapReader(_tmjContents, _ => throw new Exception(), _ => throw new Exception(), []);
using var mapReader = new DotTiled.Serialization.Tmj.TmjMapReader(_tmjContents, _ => throw new NotSupportedException(), _ => throw new NotSupportedException(), []);
return mapReader.ReadMap();
}
@ -84,11 +80,11 @@ namespace MyBenchmarks
{
public static void Main(string[] args)
{
var config = BenchmarkDotNet.Configs.DefaultConfig.Instance
var config = DefaultConfig.Instance
.WithArtifactsPath(args[0])
.WithOptions(ConfigOptions.DisableOptimizationsValidator)
.AddDiagnoser(BenchmarkDotNet.Diagnosers.MemoryDiagnoser.Default);
var summary = BenchmarkRunner.Run<MapLoading>(config);
_ = BenchmarkRunner.Run<MapLoading>(config);
}
}
}

View file

@ -1,5 +1,4 @@
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,6 +1,5 @@
using System.Xml;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,5 +1,4 @@
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,8 +1,5 @@
using System.Globalization;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,7 +1,5 @@
using System.Globalization;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,7 +1,5 @@
using System.Globalization;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,8 +1,5 @@
using System.Globalization;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,7 +1,5 @@
using System.Globalization;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,7 +1,5 @@
using System.Globalization;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,7 +1,5 @@
using System.Globalization;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,9 +1,5 @@
using System.Numerics;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Tests;

View file

@ -1,6 +1,4 @@
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Serialization.Tmj;
namespace DotTiled.Tests;

View file

@ -1,6 +1,3 @@
using System.Xml;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Serialization.Tmx;

View file

@ -1,7 +1,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Threading;
namespace DotTiled.Model;
@ -40,7 +39,7 @@ public class Color : IParsable<Color>, IEquatable<Color>
/// <exception cref="FormatException">Thrown in case the provided string <paramref name="s"/> is not in a valid format.</exception>
public static Color Parse(string s, IFormatProvider? provider)
{
TryParse(s, provider, out var result);
_ = TryParse(s, provider, out var result);
return result ?? throw new FormatException($"Invalid format for TiledColor: {s}");
}
@ -61,7 +60,7 @@ public class Color : IParsable<Color>, IEquatable<Color>
return TryParse($"#{s}", provider, out result);
// Format: #RRGGBB or #AARRGGBB
if (s is null || s.Length != 7 && s.Length != 9 || s[0] != '#')
if (s is null || (s.Length != 7 && s.Length != 9) || s[0] != '#')
{
result = default;
return false;

View file

@ -4,8 +4,6 @@ using System.IO;
using System.IO.Compression;
using System.Linq;
using DotTiled.Model;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Serialization;

View file

@ -9,10 +9,9 @@ internal static class ExtensionsJsonElement
{
internal static T GetRequiredProperty<T>(this JsonElement element, string propertyName)
{
if (!element.TryGetProperty(propertyName, out var property))
throw new JsonException($"Missing required property '{propertyName}'.");
return property.GetValueAs<T>();
return !element.TryGetProperty(propertyName, out var property)
? throw new JsonException($"Missing required property '{propertyName}'.")
: property.GetValueAs<T>();
}
internal static T GetOptionalProperty<T>(this JsonElement element, string propertyName, T defaultValue)

View file

@ -1,9 +1,5 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text.Json;
using DotTiled.Model;
@ -69,7 +65,8 @@ internal partial class Tmj
{
DataCompression.GZip => Helpers.DecompressGZip(stream),
DataCompression.ZLib => Helpers.DecompressZLib(stream),
_ => throw new JsonException($"Unsupported compression '{compression}'.")
DataCompression.ZStd => throw new NotSupportedException("ZStd compression is not supported."),
_ => throw new InvalidOperationException($"Unsupported compression '{compression}'.")
};
{

View file

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Numerics;
using System.Text.Json;
using DotTiled.Model;

View file

@ -1,10 +1,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Numerics;
using System.Text.Json;
using DotTiled.Model;
using DotTiled.Model;
namespace DotTiled.Serialization.Tmj;

View file

@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Numerics;
using System.Text.Json;
using DotTiled.Model;

View file

@ -1,8 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text.Json;
using DotTiled.Model;

View file

@ -112,8 +112,8 @@ internal partial class Tmj
var id = element.GetOptionalProperty<uint?>("id", idDefault);
var name = element.GetOptionalProperty<string>("name", nameDefault);
var point = element.GetOptionalProperty<bool>("point", pointDefault);
var polygon = element.GetOptionalPropertyCustom<List<Vector2>?>("polygon", e => ReadPoints(e), polygonDefault);
var polyline = element.GetOptionalPropertyCustom<List<Vector2>?>("polyline", e => ReadPoints(e), polylineDefault);
var polygon = element.GetOptionalPropertyCustom<List<Vector2>?>("polygon", ReadPoints, polygonDefault);
var polyline = element.GetOptionalPropertyCustom<List<Vector2>?>("polyline", ReadPoints, polylineDefault);
var properties = element.GetOptionalPropertyCustom<Dictionary<string, IProperty>?>("properties", e => ReadProperties(e, customTypeDefinitions), propertiesDefault);
var rotation = element.GetOptionalProperty<float>("rotation", rotationDefault);
var text = element.GetOptionalPropertyCustom<TextObject?>("text", ReadText, null);

View file

@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text.Json;
using DotTiled.Model;
@ -102,8 +101,6 @@ internal partial class Tmj
return resultingProps;
}
internal static Dictionary<string, IProperty> CreateInstanceOfCustomClass(CustomClassDefinition customClassDefinition)
{
return customClassDefinition.Members.ToDictionary(m => m.Name, m => m.Clone());
}
internal static Dictionary<string, IProperty> CreateInstanceOfCustomClass(CustomClassDefinition customClassDefinition) =>
customClassDefinition.Members.ToDictionary(m => m.Name, m => m.Clone());
}

View file

@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Numerics;
using System.Text.Json;
using DotTiled.Model;

View file

@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Numerics;
using System.Text.Json;
using DotTiled.Model;

View file

@ -1,9 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text.Json;
using DotTiled.Model;

View file

@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.Json;
using DotTiled.Model;
@ -16,7 +14,7 @@ public class TmjMapReader : IMapReader
private readonly Func<string, Tileset> _externalTilesetResolver;
private readonly Func<string, Template> _externalTemplateResolver;
private string _jsonString;
private readonly string _jsonString;
private bool disposedValue;
private readonly IReadOnlyCollection<CustomTypeDefinition> _customTypeDefinitions;
@ -77,6 +75,6 @@ public class TmjMapReader : IMapReader
{
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
Dispose(disposing: true);
System.GC.SuppressFinalize(this);
GC.SuppressFinalize(this);
}
}

View file

@ -74,6 +74,6 @@ public class TsjTilesetReader : ITilesetReader
{
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
Dispose(disposing: true);
System.GC.SuppressFinalize(this);
GC.SuppressFinalize(this);
}
}

View file

@ -31,10 +31,8 @@ internal static class ExtensionsXmlReader
return enumParser(value);
}
internal static string? GetOptionalAttribute(this XmlReader reader, string attribute, string? defaultValue = default)
{
return reader.GetAttribute(attribute) ?? defaultValue;
}
internal static string? GetOptionalAttribute(this XmlReader reader, string attribute, string? defaultValue = default) =>
reader.GetAttribute(attribute) ?? defaultValue;
internal static T? GetOptionalAttributeParseable<T>(this XmlReader reader, string attribute) where T : struct, IParsable<T>
{
@ -84,7 +82,7 @@ internal static class ExtensionsXmlReader
if (reader.NodeType == XmlNodeType.EndElement)
continue; // At end of list, no need to read again
reader.Read();
_ = reader.Read();
}
reader.ReadEndElement();
@ -135,6 +133,6 @@ internal static class ExtensionsXmlReader
internal static void SkipXmlDeclaration(this XmlReader reader)
{
if (reader.NodeType == XmlNodeType.XmlDeclaration)
reader.Read();
_ = reader.Read();
}
}

View file

@ -62,10 +62,8 @@ internal partial class Tmx
return (clearedGlobalTileIDs, flippingFlags);
}
internal static uint[] ReadTileChildrenInWrapper(string wrapper, XmlReader reader)
{
return reader.ReadList(wrapper, "tile", (r) => r.GetOptionalAttributeParseable<uint>("gid") ?? 0).ToArray();
}
internal static uint[] ReadTileChildrenInWrapper(string wrapper, XmlReader reader) =>
reader.ReadList(wrapper, "tile", (r) => r.GetOptionalAttributeParseable<uint>("gid") ?? 0).ToArray();
internal static uint[] ReadRawData(XmlReader reader, DataEncoding encoding, DataCompression? compression)
{

View file

@ -25,7 +25,7 @@ internal partial class Tmx
"isometric" => MapOrientation.Isometric,
"staggered" => MapOrientation.Staggered,
"hexagonal" => MapOrientation.Hexagonal,
_ => throw new Exception($"Unknown orientation '{s}'")
_ => throw new InvalidOperationException($"Unknown orientation '{s}'")
});
var renderOrder = reader.GetOptionalAttributeEnum<RenderOrder>("renderorder", s => s switch
{
@ -33,7 +33,7 @@ internal partial class Tmx
"right-up" => RenderOrder.RightUp,
"left-down" => RenderOrder.LeftDown,
"left-up" => RenderOrder.LeftUp,
_ => throw new Exception($"Unknown render order '{s}'")
_ => throw new InvalidOperationException($"Unknown render order '{s}'")
}) ?? RenderOrder.RightDown;
var compressionLevel = reader.GetOptionalAttributeParseable<int>("compressionlevel") ?? -1;
var width = reader.GetRequiredAttributeParseable<uint>("width");
@ -45,13 +45,13 @@ internal partial class Tmx
{
"x" => StaggerAxis.X,
"y" => StaggerAxis.Y,
_ => throw new Exception($"Unknown stagger axis '{s}'")
_ => throw new InvalidOperationException($"Unknown stagger axis '{s}'")
});
var staggerIndex = reader.GetOptionalAttributeEnum<StaggerIndex>("staggerindex", s => s switch
{
"odd" => StaggerIndex.Odd,
"even" => StaggerIndex.Even,
_ => throw new Exception($"Unknown stagger index '{s}'")
_ => throw new InvalidOperationException($"Unknown stagger index '{s}'")
});
var parallaxOriginX = reader.GetOptionalAttributeParseable<float>("parallaxoriginx") ?? 0.0f;
var parallaxOriginY = reader.GetOptionalAttributeParseable<float>("parallaxoriginy") ?? 0.0f;

View file

@ -35,7 +35,7 @@ internal partial class Tmx
{
"topdown" => DrawOrder.TopDown,
"index" => DrawOrder.Index,
_ => throw new Exception($"Unknown draw order '{s}'")
_ => throw new InvalidOperationException($"Unknown draw order '{s}'")
}) ?? DrawOrder.TopDown;
// Elements
@ -119,7 +119,7 @@ internal partial class Tmx
"polygon" => () => Helpers.SetAtMostOnce(ref foundObject, ReadPolygonObject(r), "Object marker"),
"polyline" => () => Helpers.SetAtMostOnce(ref foundObject, ReadPolylineObject(r), "Object marker"),
"text" => () => Helpers.SetAtMostOnce(ref foundObject, ReadTextObject(r), "Object marker"),
_ => throw new Exception($"Unknown object marker '{elementName}'")
_ => throw new InvalidOperationException($"Unknown object marker '{elementName}'")
});
if (foundObject is null)
@ -175,7 +175,7 @@ internal partial class Tmx
return new EllipseObject { };
}
internal static EllipseObject OverrideObject(EllipseObject obj, EllipseObject foundObject) => obj;
internal static EllipseObject OverrideObject(EllipseObject obj, EllipseObject _) => obj;
internal static PointObject ReadPointObject(XmlReader reader)
{
@ -183,7 +183,7 @@ internal partial class Tmx
return new PointObject { };
}
internal static PointObject OverrideObject(PointObject obj, PointObject foundObject) => obj;
internal static PointObject OverrideObject(PointObject obj, PointObject _) => obj;
internal static PolygonObject ReadPolygonObject(XmlReader reader)
{
@ -251,14 +251,14 @@ internal partial class Tmx
"center" => TextHorizontalAlignment.Center,
"right" => TextHorizontalAlignment.Right,
"justify" => TextHorizontalAlignment.Justify,
_ => throw new Exception($"Unknown horizontal alignment '{s}'")
_ => throw new InvalidOperationException($"Unknown horizontal alignment '{s}'")
}) ?? TextHorizontalAlignment.Left;
var vAlign = reader.GetOptionalAttributeEnum<TextVerticalAlignment>("valign", s => s switch
{
"top" => TextVerticalAlignment.Top,
"center" => TextVerticalAlignment.Center,
"bottom" => TextVerticalAlignment.Bottom,
_ => throw new Exception($"Unknown vertical alignment '{s}'")
_ => throw new InvalidOperationException($"Unknown vertical alignment '{s}'")
}) ?? TextVerticalAlignment.Top;
// Elements

View file

@ -66,8 +66,6 @@ internal partial class Tmx
throw new XmlException($"Unkonwn custom class definition: {propertyType}");
}
internal static Dictionary<string, IProperty> CreateInstanceOfCustomClass(CustomClassDefinition customClassDefinition)
{
return customClassDefinition.Members.ToDictionary(m => m.Name, m => m.Clone());
}
internal static Dictionary<string, IProperty> CreateInstanceOfCustomClass(CustomClassDefinition customClassDefinition) =>
customClassDefinition.Members.ToDictionary(m => m.Name, m => m.Clone());
}

View file

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Xml;
@ -40,19 +41,19 @@ internal partial class Tmx
"bottomleft" => ObjectAlignment.BottomLeft,
"bottom" => ObjectAlignment.Bottom,
"bottomright" => ObjectAlignment.BottomRight,
_ => throw new Exception($"Unknown object alignment '{s}'")
_ => throw new InvalidOperationException($"Unknown object alignment '{s}'")
}) ?? ObjectAlignment.Unspecified;
var renderSize = reader.GetOptionalAttributeEnum<TileRenderSize>("rendersize", s => s switch
{
"tile" => TileRenderSize.Tile,
"grid" => TileRenderSize.Grid,
_ => throw new Exception($"Unknown render size '{s}'")
_ => throw new InvalidOperationException($"Unknown render size '{s}'")
}) ?? TileRenderSize.Tile;
var fillMode = reader.GetOptionalAttributeEnum<FillMode>("fillmode", s => s switch
{
"stretch" => FillMode.Stretch,
"preserve-aspect-fit" => FillMode.PreserveAspectFit,
_ => throw new Exception($"Unknown fill mode '{s}'")
_ => throw new InvalidOperationException($"Unknown fill mode '{s}'")
}) ?? FillMode.Stretch;
// Elements
@ -124,7 +125,7 @@ internal partial class Tmx
"jpg" => ImageFormat.Jpg,
"bmp" => ImageFormat.Bmp,
"gif" => ImageFormat.Gif,
_ => throw new Exception($"Unknown image format '{s}'")
_ => throw new InvalidOperationException($"Unknown image format '{s}'")
});
var source = reader.GetOptionalAttribute("source");
var transparentColor = reader.GetOptionalAttributeClass<Color>("trans");
@ -182,7 +183,7 @@ internal partial class Tmx
{
"orthogonal" => GridOrientation.Orthogonal,
"isometric" => GridOrientation.Isometric,
_ => throw new Exception($"Unknown orientation '{s}'")
_ => throw new InvalidOperationException($"Unknown orientation '{s}'")
}) ?? GridOrientation.Orthogonal;
var width = reader.GetRequiredAttributeParseable<uint>("width");
var height = reader.GetRequiredAttributeParseable<uint>("height");
@ -255,10 +256,8 @@ internal partial class Tmx
internal static List<Wangset> ReadWangsets(
XmlReader reader,
IReadOnlyCollection<CustomTypeDefinition> customTypeDefinitions)
{
return reader.ReadList<Wangset>("wangsets", "wangset", r => ReadWangset(r, customTypeDefinitions));
}
IReadOnlyCollection<CustomTypeDefinition> customTypeDefinitions) =>
reader.ReadList<Wangset>("wangsets", "wangset", r => ReadWangset(r, customTypeDefinitions));
internal static Wangset ReadWangset(
XmlReader reader,
@ -334,7 +333,7 @@ internal partial class Tmx
var wangID = reader.GetRequiredAttributeParseable<byte[]>("wangid", s =>
{
// Comma-separated list of indices (0-254)
var indices = s.Split(',').Select(i => byte.Parse(i)).ToArray();
var indices = s.Split(',').Select(i => byte.Parse(i, CultureInfo.InvariantCulture)).ToArray();
if (indices.Length > 8)
throw new ArgumentException("Wang ID can have at most 8 indices.");
return indices;

View file

@ -39,14 +39,11 @@ public class TmxMapReader : IMapReader
_customTypeDefinitions = customTypeDefinitions ?? throw new ArgumentNullException(nameof(customTypeDefinitions));
// Prepare reader
_reader.MoveToContent();
_ = _reader.MoveToContent();
}
/// <inheritdoc/>
public Map ReadMap()
{
return Tmx.ReadMap(_reader, _externalTilesetResolver, _externalTemplateResolver, _customTypeDefinitions);
}
public Map ReadMap() => Tmx.ReadMap(_reader, _externalTilesetResolver, _externalTemplateResolver, _customTypeDefinitions);
/// <inheritdoc/>
protected virtual void Dispose(bool disposing)
@ -77,6 +74,6 @@ public class TmxMapReader : IMapReader
{
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
Dispose(disposing: true);
System.GC.SuppressFinalize(this);
GC.SuppressFinalize(this);
}
}

View file

@ -35,7 +35,7 @@ public class TsxTilesetReader : ITilesetReader
_customTypeDefinitions = customTypeDefinitions ?? throw new ArgumentNullException(nameof(customTypeDefinitions));
// Prepare reader
_reader.MoveToContent();
_ = _reader.MoveToContent();
}
/// <inheritdoc/>
@ -49,6 +49,7 @@ public class TsxTilesetReader : ITilesetReader
if (disposing)
{
// TODO: dispose managed state (managed objects)
_reader.Dispose();
}
// TODO: free unmanaged resources (unmanaged objects) and override finalizer
@ -69,6 +70,6 @@ public class TsxTilesetReader : ITilesetReader
{
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
Dispose(disposing: true);
System.GC.SuppressFinalize(this);
GC.SuppressFinalize(this);
}
}

View file

@ -39,7 +39,7 @@ public class TxTemplateReader : ITemplateReader
_customTypeDefinitions = customTypeDefinitions ?? throw new ArgumentNullException(nameof(customTypeDefinitions));
// Prepare reader
_reader.MoveToContent();
_ = _reader.MoveToContent();
}
/// <inheritdoc/>
@ -53,6 +53,7 @@ public class TxTemplateReader : ITemplateReader
if (disposing)
{
// TODO: dispose managed state (managed objects)
_reader.Dispose();
}
// TODO: free unmanaged resources (unmanaged objects) and override finalizer
@ -73,6 +74,6 @@ public class TxTemplateReader : ITemplateReader
{
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
Dispose(disposing: true);
System.GC.SuppressFinalize(this);
GC.SuppressFinalize(this);
}
}