diff --git a/.editorconfig b/.editorconfig index 04f7e81..8c68b86 100644 --- a/.editorconfig +++ b/.editorconfig @@ -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 diff --git a/src/DotTiled.Benchmark/Program.cs b/src/DotTiled.Benchmark/Program.cs index e04c6b1..bf67fd0 100644 --- a/src/DotTiled.Benchmark/Program.cs +++ b/src/DotTiled.Benchmark/Program.cs @@ -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(config); + _ = BenchmarkRunner.Run(config); } } } diff --git a/src/DotTiled.Tests/Assert/AssertTileset.cs b/src/DotTiled.Tests/Assert/AssertTileset.cs index 3e4ab28..134cc30 100644 --- a/src/DotTiled.Tests/Assert/AssertTileset.cs +++ b/src/DotTiled.Tests/Assert/AssertTileset.cs @@ -1,5 +1,4 @@ using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData.cs b/src/DotTiled.Tests/Serialization/TestData.cs index 30c4b9f..c36cab5 100644 --- a/src/DotTiled.Tests/Serialization/TestData.cs +++ b/src/DotTiled.Tests/Serialization/TestData.cs @@ -1,6 +1,5 @@ using System.Xml; using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/default-map/default-map.cs b/src/DotTiled.Tests/Serialization/TestData/Map/default-map/default-map.cs index 4eef6de..da726bf 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/default-map/default-map.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/default-map/default-map.cs @@ -1,5 +1,4 @@ using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/map-external-tileset-multi/map-external-tileset-multi.cs b/src/DotTiled.Tests/Serialization/TestData/Map/map-external-tileset-multi/map-external-tileset-multi.cs index 04c425a..6dac137 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/map-external-tileset-multi/map-external-tileset-multi.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/map-external-tileset-multi/map-external-tileset-multi.cs @@ -1,8 +1,5 @@ using System.Globalization; using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/map-external-tileset-wangset/map-external-tileset-wangset.cs b/src/DotTiled.Tests/Serialization/TestData/Map/map-external-tileset-wangset/map-external-tileset-wangset.cs index a894a53..2e4bd61 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/map-external-tileset-wangset/map-external-tileset-wangset.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/map-external-tileset-wangset/map-external-tileset-wangset.cs @@ -1,7 +1,5 @@ using System.Globalization; using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-common-props/map-with-common-props.cs b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-common-props/map-with-common-props.cs index 14f95ac..ba5cf4f 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-common-props/map-with-common-props.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-common-props/map-with-common-props.cs @@ -1,7 +1,5 @@ using System.Globalization; using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-custom-type-props/map-with-custom-type-props.cs b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-custom-type-props/map-with-custom-type-props.cs index e7d135c..758c5c3 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-custom-type-props/map-with-custom-type-props.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-custom-type-props/map-with-custom-type-props.cs @@ -1,8 +1,5 @@ using System.Globalization; using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-embedded-tileset/map-with-embedded-tileset.cs b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-embedded-tileset/map-with-embedded-tileset.cs index e9c4e73..863dc75 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-embedded-tileset/map-with-embedded-tileset.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-embedded-tileset/map-with-embedded-tileset.cs @@ -1,7 +1,5 @@ using System.Globalization; using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-external-tileset/map-with-external-tileset.cs b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-external-tileset/map-with-external-tileset.cs index 055a0c9..3682b73 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-external-tileset/map-with-external-tileset.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-external-tileset/map-with-external-tileset.cs @@ -1,7 +1,5 @@ using System.Globalization; using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-flippingflags/map-with-flippingflags.cs b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-flippingflags/map-with-flippingflags.cs index 96995d7..02a9fc5 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-flippingflags/map-with-flippingflags.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-flippingflags/map-with-flippingflags.cs @@ -1,7 +1,5 @@ using System.Globalization; using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-many-layers/map-with-many-layers.cs b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-many-layers/map-with-many-layers.cs index 320fa48..6e4ae55 100644 --- a/src/DotTiled.Tests/Serialization/TestData/Map/map-with-many-layers/map-with-many-layers.cs +++ b/src/DotTiled.Tests/Serialization/TestData/Map/map-with-many-layers/map-with-many-layers.cs @@ -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; diff --git a/src/DotTiled.Tests/Serialization/Tmj/TmjMapReaderTests.cs b/src/DotTiled.Tests/Serialization/Tmj/TmjMapReaderTests.cs index a856f68..bdd19e8 100644 --- a/src/DotTiled.Tests/Serialization/Tmj/TmjMapReaderTests.cs +++ b/src/DotTiled.Tests/Serialization/Tmj/TmjMapReaderTests.cs @@ -1,6 +1,4 @@ using DotTiled.Model; -using DotTiled.Model; -using DotTiled.Model; using DotTiled.Serialization.Tmj; namespace DotTiled.Tests; diff --git a/src/DotTiled.Tests/Serialization/Tmx/TmxMapReaderTests.cs b/src/DotTiled.Tests/Serialization/Tmx/TmxMapReaderTests.cs index 6a26b62..ee74718 100644 --- a/src/DotTiled.Tests/Serialization/Tmx/TmxMapReaderTests.cs +++ b/src/DotTiled.Tests/Serialization/Tmx/TmxMapReaderTests.cs @@ -1,6 +1,3 @@ -using System.Xml; -using DotTiled.Model; -using DotTiled.Model; using DotTiled.Model; using DotTiled.Serialization.Tmx; diff --git a/src/DotTiled/Model/Color.cs b/src/DotTiled/Model/Color.cs index 24cf8e5..7de0ab0 100644 --- a/src/DotTiled/Model/Color.cs +++ b/src/DotTiled/Model/Color.cs @@ -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, IEquatable /// Thrown in case the provided string is not in a valid format. 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, IEquatable 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; diff --git a/src/DotTiled/Serialization/Helpers.cs b/src/DotTiled/Serialization/Helpers.cs index fe401ba..c6cdefe 100644 --- a/src/DotTiled/Serialization/Helpers.cs +++ b/src/DotTiled/Serialization/Helpers.cs @@ -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; diff --git a/src/DotTiled/Serialization/Tmj/ExtensionsJsonElement.cs b/src/DotTiled/Serialization/Tmj/ExtensionsJsonElement.cs index 0e76d84..7717df4 100644 --- a/src/DotTiled/Serialization/Tmj/ExtensionsJsonElement.cs +++ b/src/DotTiled/Serialization/Tmj/ExtensionsJsonElement.cs @@ -9,10 +9,9 @@ internal static class ExtensionsJsonElement { internal static T GetRequiredProperty(this JsonElement element, string propertyName) { - if (!element.TryGetProperty(propertyName, out var property)) - throw new JsonException($"Missing required property '{propertyName}'."); - - return property.GetValueAs(); + return !element.TryGetProperty(propertyName, out var property) + ? throw new JsonException($"Missing required property '{propertyName}'.") + : property.GetValueAs(); } internal static T GetOptionalProperty(this JsonElement element, string propertyName, T defaultValue) diff --git a/src/DotTiled/Serialization/Tmj/Tmj.Data.cs b/src/DotTiled/Serialization/Tmj/Tmj.Data.cs index 2edb93f..c021a6c 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.Data.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.Data.cs @@ -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}'.") }; { diff --git a/src/DotTiled/Serialization/Tmj/Tmj.Group.cs b/src/DotTiled/Serialization/Tmj/Tmj.Group.cs index 796458b..0885167 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.Group.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.Group.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Globalization; -using System.Numerics; using System.Text.Json; using DotTiled.Model; diff --git a/src/DotTiled/Serialization/Tmj/Tmj.ImageLayer.cs b/src/DotTiled/Serialization/Tmj/Tmj.ImageLayer.cs index 70d9ce4..794f2b5 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.ImageLayer.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.ImageLayer.cs @@ -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; diff --git a/src/DotTiled/Serialization/Tmj/Tmj.Layer.cs b/src/DotTiled/Serialization/Tmj/Tmj.Layer.cs index fb02fe5..b9f8de0 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.Layer.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.Layer.cs @@ -1,7 +1,5 @@ using System; using System.Collections.Generic; -using System.Globalization; -using System.Numerics; using System.Text.Json; using DotTiled.Model; diff --git a/src/DotTiled/Serialization/Tmj/Tmj.Map.cs b/src/DotTiled/Serialization/Tmj/Tmj.Map.cs index 642d8f4..47dde3f 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.Map.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.Map.cs @@ -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; diff --git a/src/DotTiled/Serialization/Tmj/Tmj.ObjectLayer.cs b/src/DotTiled/Serialization/Tmj/Tmj.ObjectLayer.cs index ba01791..6775389 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.ObjectLayer.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.ObjectLayer.cs @@ -112,8 +112,8 @@ internal partial class Tmj var id = element.GetOptionalProperty("id", idDefault); var name = element.GetOptionalProperty("name", nameDefault); var point = element.GetOptionalProperty("point", pointDefault); - var polygon = element.GetOptionalPropertyCustom?>("polygon", e => ReadPoints(e), polygonDefault); - var polyline = element.GetOptionalPropertyCustom?>("polyline", e => ReadPoints(e), polylineDefault); + var polygon = element.GetOptionalPropertyCustom?>("polygon", ReadPoints, polygonDefault); + var polyline = element.GetOptionalPropertyCustom?>("polyline", ReadPoints, polylineDefault); var properties = element.GetOptionalPropertyCustom?>("properties", e => ReadProperties(e, customTypeDefinitions), propertiesDefault); var rotation = element.GetOptionalProperty("rotation", rotationDefault); var text = element.GetOptionalPropertyCustom("text", ReadText, null); @@ -249,12 +249,12 @@ internal partial class Tmj } internal static List ReadPoints(JsonElement element) => - element.GetValueAsList(e => - { - var x = e.GetRequiredProperty("x"); - var y = e.GetRequiredProperty("y"); - return new Vector2(x, y); - }); + element.GetValueAsList(e => + { + var x = e.GetRequiredProperty("x"); + var y = e.GetRequiredProperty("y"); + return new Vector2(x, y); + }); internal static TextObject ReadText(JsonElement element) { diff --git a/src/DotTiled/Serialization/Tmj/Tmj.Properties.cs b/src/DotTiled/Serialization/Tmj/Tmj.Properties.cs index 28aad66..0c35bbe 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.Properties.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.Properties.cs @@ -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 CreateInstanceOfCustomClass(CustomClassDefinition customClassDefinition) - { - return customClassDefinition.Members.ToDictionary(m => m.Name, m => m.Clone()); - } + internal static Dictionary CreateInstanceOfCustomClass(CustomClassDefinition customClassDefinition) => + customClassDefinition.Members.ToDictionary(m => m.Name, m => m.Clone()); } diff --git a/src/DotTiled/Serialization/Tmj/Tmj.Template.cs b/src/DotTiled/Serialization/Tmj/Tmj.Template.cs index 100aaa2..3746b76 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.Template.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.Template.cs @@ -1,7 +1,5 @@ using System; using System.Collections.Generic; -using System.Globalization; -using System.Numerics; using System.Text.Json; using DotTiled.Model; diff --git a/src/DotTiled/Serialization/Tmj/Tmj.TileLayer.cs b/src/DotTiled/Serialization/Tmj/Tmj.TileLayer.cs index 3711eb2..353f7fd 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.TileLayer.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.TileLayer.cs @@ -1,7 +1,5 @@ -using System; using System.Collections.Generic; using System.Globalization; -using System.Numerics; using System.Text.Json; using DotTiled.Model; diff --git a/src/DotTiled/Serialization/Tmj/Tmj.Tileset.cs b/src/DotTiled/Serialization/Tmj/Tmj.Tileset.cs index 0d6dfc7..e0e2bd2 100644 --- a/src/DotTiled/Serialization/Tmj/Tmj.Tileset.cs +++ b/src/DotTiled/Serialization/Tmj/Tmj.Tileset.cs @@ -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; diff --git a/src/DotTiled/Serialization/Tmj/TmjMapReader.cs b/src/DotTiled/Serialization/Tmj/TmjMapReader.cs index 8e5ddd4..c26311b 100644 --- a/src/DotTiled/Serialization/Tmj/TmjMapReader.cs +++ b/src/DotTiled/Serialization/Tmj/TmjMapReader.cs @@ -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 _externalTilesetResolver; private readonly Func _externalTemplateResolver; - private string _jsonString; + private readonly string _jsonString; private bool disposedValue; private readonly IReadOnlyCollection _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); } } diff --git a/src/DotTiled/Serialization/Tmj/TsjTilesetReader.cs b/src/DotTiled/Serialization/Tmj/TsjTilesetReader.cs index 84ec60e..aca5556 100644 --- a/src/DotTiled/Serialization/Tmj/TsjTilesetReader.cs +++ b/src/DotTiled/Serialization/Tmj/TsjTilesetReader.cs @@ -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); } } diff --git a/src/DotTiled/Serialization/Tmx/ExtensionsXmlReader.cs b/src/DotTiled/Serialization/Tmx/ExtensionsXmlReader.cs index ca5f836..9a8f1d9 100644 --- a/src/DotTiled/Serialization/Tmx/ExtensionsXmlReader.cs +++ b/src/DotTiled/Serialization/Tmx/ExtensionsXmlReader.cs @@ -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(this XmlReader reader, string attribute) where T : struct, IParsable { @@ -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(); } } diff --git a/src/DotTiled/Serialization/Tmx/Tmx.Data.cs b/src/DotTiled/Serialization/Tmx/Tmx.Data.cs index 77f7d6a..e1b6111 100644 --- a/src/DotTiled/Serialization/Tmx/Tmx.Data.cs +++ b/src/DotTiled/Serialization/Tmx/Tmx.Data.cs @@ -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("gid") ?? 0).ToArray(); - } + internal static uint[] ReadTileChildrenInWrapper(string wrapper, XmlReader reader) => + reader.ReadList(wrapper, "tile", (r) => r.GetOptionalAttributeParseable("gid") ?? 0).ToArray(); internal static uint[] ReadRawData(XmlReader reader, DataEncoding encoding, DataCompression? compression) { diff --git a/src/DotTiled/Serialization/Tmx/Tmx.Map.cs b/src/DotTiled/Serialization/Tmx/Tmx.Map.cs index e7a5e35..1987bb1 100644 --- a/src/DotTiled/Serialization/Tmx/Tmx.Map.cs +++ b/src/DotTiled/Serialization/Tmx/Tmx.Map.cs @@ -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", 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("compressionlevel") ?? -1; var width = reader.GetRequiredAttributeParseable("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", 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("parallaxoriginx") ?? 0.0f; var parallaxOriginY = reader.GetOptionalAttributeParseable("parallaxoriginy") ?? 0.0f; diff --git a/src/DotTiled/Serialization/Tmx/Tmx.ObjectLayer.cs b/src/DotTiled/Serialization/Tmx/Tmx.ObjectLayer.cs index 7c04edf..7a375d9 100644 --- a/src/DotTiled/Serialization/Tmx/Tmx.ObjectLayer.cs +++ b/src/DotTiled/Serialization/Tmx/Tmx.ObjectLayer.cs @@ -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("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 diff --git a/src/DotTiled/Serialization/Tmx/Tmx.Properties.cs b/src/DotTiled/Serialization/Tmx/Tmx.Properties.cs index 3d5b6c4..9a748d6 100644 --- a/src/DotTiled/Serialization/Tmx/Tmx.Properties.cs +++ b/src/DotTiled/Serialization/Tmx/Tmx.Properties.cs @@ -66,8 +66,6 @@ internal partial class Tmx throw new XmlException($"Unkonwn custom class definition: {propertyType}"); } - internal static Dictionary CreateInstanceOfCustomClass(CustomClassDefinition customClassDefinition) - { - return customClassDefinition.Members.ToDictionary(m => m.Name, m => m.Clone()); - } + internal static Dictionary CreateInstanceOfCustomClass(CustomClassDefinition customClassDefinition) => + customClassDefinition.Members.ToDictionary(m => m.Name, m => m.Clone()); } diff --git a/src/DotTiled/Serialization/Tmx/Tmx.Tileset.cs b/src/DotTiled/Serialization/Tmx/Tmx.Tileset.cs index 6e43455..198f32d 100644 --- a/src/DotTiled/Serialization/Tmx/Tmx.Tileset.cs +++ b/src/DotTiled/Serialization/Tmx/Tmx.Tileset.cs @@ -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("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", 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("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("width"); var height = reader.GetRequiredAttributeParseable("height"); @@ -255,10 +256,8 @@ internal partial class Tmx internal static List ReadWangsets( XmlReader reader, - IReadOnlyCollection customTypeDefinitions) - { - return reader.ReadList("wangsets", "wangset", r => ReadWangset(r, customTypeDefinitions)); - } + IReadOnlyCollection customTypeDefinitions) => + reader.ReadList("wangsets", "wangset", r => ReadWangset(r, customTypeDefinitions)); internal static Wangset ReadWangset( XmlReader reader, @@ -334,7 +333,7 @@ internal partial class Tmx var wangID = reader.GetRequiredAttributeParseable("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; diff --git a/src/DotTiled/Serialization/Tmx/TmxMapReader.cs b/src/DotTiled/Serialization/Tmx/TmxMapReader.cs index be21580..5a99ff6 100644 --- a/src/DotTiled/Serialization/Tmx/TmxMapReader.cs +++ b/src/DotTiled/Serialization/Tmx/TmxMapReader.cs @@ -39,14 +39,11 @@ public class TmxMapReader : IMapReader _customTypeDefinitions = customTypeDefinitions ?? throw new ArgumentNullException(nameof(customTypeDefinitions)); // Prepare reader - _reader.MoveToContent(); + _ = _reader.MoveToContent(); } /// - public Map ReadMap() - { - return Tmx.ReadMap(_reader, _externalTilesetResolver, _externalTemplateResolver, _customTypeDefinitions); - } + public Map ReadMap() => Tmx.ReadMap(_reader, _externalTilesetResolver, _externalTemplateResolver, _customTypeDefinitions); /// 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); } } diff --git a/src/DotTiled/Serialization/Tmx/TsxTilesetReader.cs b/src/DotTiled/Serialization/Tmx/TsxTilesetReader.cs index 374a0d1..0034150 100644 --- a/src/DotTiled/Serialization/Tmx/TsxTilesetReader.cs +++ b/src/DotTiled/Serialization/Tmx/TsxTilesetReader.cs @@ -35,7 +35,7 @@ public class TsxTilesetReader : ITilesetReader _customTypeDefinitions = customTypeDefinitions ?? throw new ArgumentNullException(nameof(customTypeDefinitions)); // Prepare reader - _reader.MoveToContent(); + _ = _reader.MoveToContent(); } /// @@ -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); } } diff --git a/src/DotTiled/Serialization/Tmx/TxTemplateReader.cs b/src/DotTiled/Serialization/Tmx/TxTemplateReader.cs index fe93244..fbaf85c 100644 --- a/src/DotTiled/Serialization/Tmx/TxTemplateReader.cs +++ b/src/DotTiled/Serialization/Tmx/TxTemplateReader.cs @@ -39,7 +39,7 @@ public class TxTemplateReader : ITemplateReader _customTypeDefinitions = customTypeDefinitions ?? throw new ArgumentNullException(nameof(customTypeDefinitions)); // Prepare reader - _reader.MoveToContent(); + _ = _reader.MoveToContent(); } /// @@ -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); } }