From c1c8e1dc80644d9d2c9b2a504e6af28191e95b91 Mon Sep 17 00:00:00 2001 From: Terria-K Date: Mon, 1 Apr 2024 20:55:25 +0800 Subject: [PATCH 01/10] Removed obj --- obj/ArcherLoaderMod.csproj.nuget.dgspec.json | 53 -- obj/ArcherLoaderMod.csproj.nuget.g.props | 15 - obj/ArcherLoaderMod.csproj.nuget.g.targets | 6 - ...ework,Version=v4.7.2.AssemblyAttributes.cs | 4 - obj/Debug/ArcherLoaderMod.AssemblyInfo.cs | 22 - .../ArcherLoaderMod.AssemblyInfoInputs.cache | 1 - ....GeneratedMSBuildEditorConfig.editorconfig | 3 - obj/Debug/ArcherLoaderMod.GlobalUsings.g.cs | 8 - obj/Debug/ArcherLoaderMod.assets.cache | Bin 529 -> 0 bytes ...erLoaderMod.csproj.AssemblyReference.cache | Bin 27958 -> 0 bytes ...erLoaderMod.csproj.CoreCompileInputs.cache | 1 - ...rcherLoaderMod.csproj.FileListAbsolute.txt | 21 - obj/Debug/ArcherLoaderMod.dll | Bin 83456 -> 0 bytes obj/Debug/ArcherLoaderMod.pdb | Bin 33884 -> 0 bytes obj/project.assets.json | 465 ------------------ obj/project.nuget.cache | 11 - obj/project.packagespec.json | 1 - obj/rider.project.restore.info | 1 - 18 files changed, 612 deletions(-) delete mode 100644 obj/ArcherLoaderMod.csproj.nuget.dgspec.json delete mode 100644 obj/ArcherLoaderMod.csproj.nuget.g.props delete mode 100644 obj/ArcherLoaderMod.csproj.nuget.g.targets delete mode 100644 obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs delete mode 100644 obj/Debug/ArcherLoaderMod.AssemblyInfo.cs delete mode 100644 obj/Debug/ArcherLoaderMod.AssemblyInfoInputs.cache delete mode 100644 obj/Debug/ArcherLoaderMod.GeneratedMSBuildEditorConfig.editorconfig delete mode 100644 obj/Debug/ArcherLoaderMod.GlobalUsings.g.cs delete mode 100644 obj/Debug/ArcherLoaderMod.assets.cache delete mode 100644 obj/Debug/ArcherLoaderMod.csproj.AssemblyReference.cache delete mode 100644 obj/Debug/ArcherLoaderMod.csproj.CoreCompileInputs.cache delete mode 100644 obj/Debug/ArcherLoaderMod.csproj.FileListAbsolute.txt delete mode 100644 obj/Debug/ArcherLoaderMod.dll delete mode 100644 obj/Debug/ArcherLoaderMod.pdb delete mode 100644 obj/project.assets.json delete mode 100644 obj/project.nuget.cache delete mode 100644 obj/project.packagespec.json delete mode 100644 obj/rider.project.restore.info diff --git a/obj/ArcherLoaderMod.csproj.nuget.dgspec.json b/obj/ArcherLoaderMod.csproj.nuget.dgspec.json deleted file mode 100644 index 32bbf31..0000000 --- a/obj/ArcherLoaderMod.csproj.nuget.dgspec.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "format": 1, - "restore": { - "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj": {} - }, - "projects": { - "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj", - "projectName": "ArcherLoaderMod", - "projectPath": "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj", - "packagesPath": "C:\\Users\\Red\\.nuget\\packages\\", - "outputPath": "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\Red\\AppData\\Roaming\\NuGet\\NuGet.Config" - ], - "originalTargetFrameworks": [ - "net472" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net472": { - "targetAlias": "net472", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "net472": { - "targetAlias": "net472", - "dependencies": { - "Microsoft.NETFramework.ReferenceAssemblies": { - "suppressParent": "All", - "target": "Package", - "version": "[1.0.3, )", - "autoReferenced": true - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.203\\RuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/obj/ArcherLoaderMod.csproj.nuget.g.props b/obj/ArcherLoaderMod.csproj.nuget.g.props deleted file mode 100644 index 6674bd4..0000000 --- a/obj/ArcherLoaderMod.csproj.nuget.g.props +++ /dev/null @@ -1,15 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\Red\.nuget\packages\ - PackageReference - 6.5.0 - - - - - \ No newline at end of file diff --git a/obj/ArcherLoaderMod.csproj.nuget.g.targets b/obj/ArcherLoaderMod.csproj.nuget.g.targets deleted file mode 100644 index c7f69cc..0000000 --- a/obj/ArcherLoaderMod.csproj.nuget.g.targets +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs deleted file mode 100644 index 3871b18..0000000 --- a/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/obj/Debug/ArcherLoaderMod.AssemblyInfo.cs b/obj/Debug/ArcherLoaderMod.AssemblyInfo.cs deleted file mode 100644 index bf75d26..0000000 --- a/obj/Debug/ArcherLoaderMod.AssemblyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("ArcherLoaderMod")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("ArcherLoaderMod")] -[assembly: System.Reflection.AssemblyTitleAttribute("ArcherLoaderMod")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/obj/Debug/ArcherLoaderMod.AssemblyInfoInputs.cache b/obj/Debug/ArcherLoaderMod.AssemblyInfoInputs.cache deleted file mode 100644 index 37df056..0000000 --- a/obj/Debug/ArcherLoaderMod.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -c26018da6a03299d683ec181b26adc6dda4cee3b diff --git a/obj/Debug/ArcherLoaderMod.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/ArcherLoaderMod.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 331a229..0000000 --- a/obj/Debug/ArcherLoaderMod.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,3 +0,0 @@ -is_global = true -build_property.RootNamespace = ArcherLoaderMod -build_property.ProjectDir = E:\Projects\towerfall-archer-loader\FortRiseMod\ArcherLoaderMod\ diff --git a/obj/Debug/ArcherLoaderMod.GlobalUsings.g.cs b/obj/Debug/ArcherLoaderMod.GlobalUsings.g.cs deleted file mode 100644 index 8578f3d..0000000 --- a/obj/Debug/ArcherLoaderMod.GlobalUsings.g.cs +++ /dev/null @@ -1,8 +0,0 @@ -// -global using global::System; -global using global::System.Collections.Generic; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Threading; -global using global::System.Threading.Tasks; diff --git a/obj/Debug/ArcherLoaderMod.assets.cache b/obj/Debug/ArcherLoaderMod.assets.cache deleted file mode 100644 index a015c3cadd05350c1848d1bed350eaa814004913..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmWIWc6a1qU|>+vUVeGE-tsh?BbT53Q+%&GMfkRh(tOU92Yj-AS@0|BhcE&a5dcg; zc`e_}z)S}e9kZFd*E7!|Q zEio}S0_g&|#ejI7`i6Q2dd93Eoj?H6400(m5VHU=NSqCb*@2h?h&h26q(;`+Dkiiz zwWv5IC^aQUFRwH`wIrq>F*!RiJ+(Lnr~oJ60?M%X0ewzFV6cY)ZOY8gV+Ffa*t6I( zw;(4oIkP0E(j_%5GcPrT)h#inIF%zPwKzYgEH#BCq^LBNB_OdR!xyhZbK&s;48JsZ Pd=$arBM}}SF<`3!?KhL^ diff --git a/obj/Debug/ArcherLoaderMod.csproj.AssemblyReference.cache b/obj/Debug/ArcherLoaderMod.csproj.AssemblyReference.cache deleted file mode 100644 index fb0785732ed8d6192f8a7130942ac916b82eb172..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27958 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 diff --git a/obj/Debug/ArcherLoaderMod.csproj.CoreCompileInputs.cache b/obj/Debug/ArcherLoaderMod.csproj.CoreCompileInputs.cache deleted file mode 100644 index 9bcf563..0000000 --- a/obj/Debug/ArcherLoaderMod.csproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -a58ea1c38044a861f4baa347279d06b060e197bb diff --git a/obj/Debug/ArcherLoaderMod.csproj.FileListAbsolute.txt b/obj/Debug/ArcherLoaderMod.csproj.FileListAbsolute.txt deleted file mode 100644 index fe38572..0000000 --- a/obj/Debug/ArcherLoaderMod.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,21 +0,0 @@ -D:\Games\TowerFall - FortRise\Mods\Debug\Content\Atlas\atlas.png -D:\Games\TowerFall - FortRise\Mods\Debug\Content\Atlas\atlas.xml -D:\Games\TowerFall - FortRise\Mods\Debug\Content\Atlas\variant.ase -D:\Games\TowerFall - FortRise\Mods\Debug\meta.json -D:\Games\TowerFall - FortRise\Mods\Debug\ArcherLoaderMod.dll -D:\Games\TowerFall - FortRise\Mods\Debug\ArcherLoaderMod.pdb -E:\Projects\towerfall-archer-loader\FortRiseMod\ArcherLoaderMod\obj\Debug\ArcherLoaderMod.csproj.AssemblyReference.cache -E:\Projects\towerfall-archer-loader\FortRiseMod\ArcherLoaderMod\obj\Debug\ArcherLoaderMod.GeneratedMSBuildEditorConfig.editorconfig -E:\Projects\towerfall-archer-loader\FortRiseMod\ArcherLoaderMod\obj\Debug\ArcherLoaderMod.AssemblyInfoInputs.cache -E:\Projects\towerfall-archer-loader\FortRiseMod\ArcherLoaderMod\obj\Debug\ArcherLoaderMod.AssemblyInfo.cs -E:\Projects\towerfall-archer-loader\FortRiseMod\ArcherLoaderMod\obj\Debug\ArcherLoaderMod.csproj.CoreCompileInputs.cache -E:\Projects\towerfall-archer-loader\FortRiseMod\ArcherLoaderMod\obj\Debug\ArcherLoaderMod.dll -E:\Projects\towerfall-archer-loader\FortRiseMod\ArcherLoaderMod\obj\Debug\ArcherLoaderMod.pdb -D:\Games\TowerFall-FortRise\Mods\ArcherLoaderMod-Debug\Content\Atlas\atlas.png -D:\Games\TowerFall-FortRise\Mods\ArcherLoaderMod-Debug\Content\Atlas\atlas.xml -D:\Games\TowerFall-FortRise\Mods\ArcherLoaderMod-Debug\meta.json -D:\Games\TowerFall-FortRise\Mods\ArcherLoaderMod-Debug\ArcherLoaderMod.dll -D:\Games\TowerFall-FortRise\Mods\ArcherLoaderMod-Debug\ArcherLoaderMod.pdb -D:\Games\TowerFall-FortRise\Mods\ArcherLoaderMod-Debug\Content\Atlas\atlas.ase -D:\Games\TowerFall-FortRise\Mods\ArcherLoaderMod-Debug\CustomArchers\You_can_put_custom_archers_here.md -D:\Games\TowerFall-FortRise\Mods\ArcherLoaderMod-Debug\Content\CustomArchers\You_can_put_custom_archers_here.md diff --git a/obj/Debug/ArcherLoaderMod.dll b/obj/Debug/ArcherLoaderMod.dll deleted file mode 100644 index dff6def49510fe5b78b62a49f86b22e15e37fab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83456 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 diff --git a/obj/project.assets.json b/obj/project.assets.json deleted file mode 100644 index 0e60b78..0000000 --- a/obj/project.assets.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "version": 3, - "targets": { - ".NETFramework,Version=v4.7.2": { - "Microsoft.NETFramework.ReferenceAssemblies/1.0.3": { - "type": "package", - "dependencies": { - "Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.3" - } - }, - "Microsoft.NETFramework.ReferenceAssemblies.net472/1.0.3": { - "type": "package", - "build": { - "build/Microsoft.NETFramework.ReferenceAssemblies.net472.targets": {} - } - } - } - }, - "libraries": { - "Microsoft.NETFramework.ReferenceAssemblies/1.0.3": { - "sha512": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", - "type": "package", - "path": "microsoft.netframework.referenceassemblies/1.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "microsoft.netframework.referenceassemblies.1.0.3.nupkg.sha512", - "microsoft.netframework.referenceassemblies.nuspec" - ] - }, - "Microsoft.NETFramework.ReferenceAssemblies.net472/1.0.3": { - "sha512": "0E7evZXHXaDYYiLRfpyXvCh+yzM2rNTyuZDI+ZO7UUqSc6GfjePiXTdqJGtgIKUwdI81tzQKmaWprnUiPj9hAw==", - "type": "package", - "path": "microsoft.netframework.referenceassemblies.net472/1.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/.NETFramework/v4.7.2/Accessibility.dll", - "build/.NETFramework/v4.7.2/Accessibility.xml", - "build/.NETFramework/v4.7.2/CustomMarshalers.dll", - "build/.NETFramework/v4.7.2/CustomMarshalers.xml", - "build/.NETFramework/v4.7.2/Facades/Microsoft.Win32.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.AppContext.dll", - "build/.NETFramework/v4.7.2/Facades/System.Collections.Concurrent.dll", - "build/.NETFramework/v4.7.2/Facades/System.Collections.NonGeneric.dll", - "build/.NETFramework/v4.7.2/Facades/System.Collections.Specialized.dll", - "build/.NETFramework/v4.7.2/Facades/System.Collections.dll", - "build/.NETFramework/v4.7.2/Facades/System.ComponentModel.Annotations.dll", - "build/.NETFramework/v4.7.2/Facades/System.ComponentModel.EventBasedAsync.dll", - "build/.NETFramework/v4.7.2/Facades/System.ComponentModel.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.ComponentModel.TypeConverter.dll", - "build/.NETFramework/v4.7.2/Facades/System.ComponentModel.dll", - "build/.NETFramework/v4.7.2/Facades/System.Console.dll", - "build/.NETFramework/v4.7.2/Facades/System.Data.Common.dll", - "build/.NETFramework/v4.7.2/Facades/System.Diagnostics.Contracts.dll", - "build/.NETFramework/v4.7.2/Facades/System.Diagnostics.Debug.dll", - "build/.NETFramework/v4.7.2/Facades/System.Diagnostics.FileVersionInfo.dll", - "build/.NETFramework/v4.7.2/Facades/System.Diagnostics.Process.dll", - "build/.NETFramework/v4.7.2/Facades/System.Diagnostics.StackTrace.dll", - "build/.NETFramework/v4.7.2/Facades/System.Diagnostics.TextWriterTraceListener.dll", - "build/.NETFramework/v4.7.2/Facades/System.Diagnostics.Tools.dll", - "build/.NETFramework/v4.7.2/Facades/System.Diagnostics.TraceSource.dll", - "build/.NETFramework/v4.7.2/Facades/System.Drawing.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.Dynamic.Runtime.dll", - "build/.NETFramework/v4.7.2/Facades/System.Globalization.Calendars.dll", - "build/.NETFramework/v4.7.2/Facades/System.Globalization.Extensions.dll", - "build/.NETFramework/v4.7.2/Facades/System.Globalization.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.Compression.ZipFile.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.FileSystem.DriveInfo.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.FileSystem.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.FileSystem.Watcher.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.FileSystem.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.IsolatedStorage.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.MemoryMappedFiles.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.Pipes.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.UnmanagedMemoryStream.dll", - "build/.NETFramework/v4.7.2/Facades/System.IO.dll", - "build/.NETFramework/v4.7.2/Facades/System.Linq.Expressions.dll", - "build/.NETFramework/v4.7.2/Facades/System.Linq.Parallel.dll", - "build/.NETFramework/v4.7.2/Facades/System.Linq.Queryable.dll", - "build/.NETFramework/v4.7.2/Facades/System.Linq.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.Http.Rtc.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.NameResolution.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.NetworkInformation.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.Ping.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.Requests.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.Security.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.Sockets.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.WebHeaderCollection.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.WebSockets.Client.dll", - "build/.NETFramework/v4.7.2/Facades/System.Net.WebSockets.dll", - "build/.NETFramework/v4.7.2/Facades/System.ObjectModel.dll", - "build/.NETFramework/v4.7.2/Facades/System.Reflection.Emit.ILGeneration.dll", - "build/.NETFramework/v4.7.2/Facades/System.Reflection.Emit.Lightweight.dll", - "build/.NETFramework/v4.7.2/Facades/System.Reflection.Emit.dll", - "build/.NETFramework/v4.7.2/Facades/System.Reflection.Extensions.dll", - "build/.NETFramework/v4.7.2/Facades/System.Reflection.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.Reflection.dll", - "build/.NETFramework/v4.7.2/Facades/System.Resources.Reader.dll", - "build/.NETFramework/v4.7.2/Facades/System.Resources.ResourceManager.dll", - "build/.NETFramework/v4.7.2/Facades/System.Resources.Writer.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.CompilerServices.VisualC.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.Extensions.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.Handles.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.InteropServices.RuntimeInformation.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.InteropServices.WindowsRuntime.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.InteropServices.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.Numerics.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.Serialization.Formatters.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.Serialization.Json.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.Serialization.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.Serialization.Xml.dll", - "build/.NETFramework/v4.7.2/Facades/System.Runtime.dll", - "build/.NETFramework/v4.7.2/Facades/System.Security.Claims.dll", - "build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.Algorithms.dll", - "build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.Csp.dll", - "build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.Encoding.dll", - "build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.X509Certificates.dll", - "build/.NETFramework/v4.7.2/Facades/System.Security.Principal.dll", - "build/.NETFramework/v4.7.2/Facades/System.Security.SecureString.dll", - "build/.NETFramework/v4.7.2/Facades/System.ServiceModel.Duplex.dll", - "build/.NETFramework/v4.7.2/Facades/System.ServiceModel.Http.dll", - "build/.NETFramework/v4.7.2/Facades/System.ServiceModel.NetTcp.dll", - "build/.NETFramework/v4.7.2/Facades/System.ServiceModel.Primitives.dll", - "build/.NETFramework/v4.7.2/Facades/System.ServiceModel.Security.dll", - "build/.NETFramework/v4.7.2/Facades/System.Text.Encoding.Extensions.dll", - "build/.NETFramework/v4.7.2/Facades/System.Text.Encoding.dll", - "build/.NETFramework/v4.7.2/Facades/System.Text.RegularExpressions.dll", - "build/.NETFramework/v4.7.2/Facades/System.Threading.Overlapped.dll", - "build/.NETFramework/v4.7.2/Facades/System.Threading.Tasks.Parallel.dll", - "build/.NETFramework/v4.7.2/Facades/System.Threading.Tasks.dll", - "build/.NETFramework/v4.7.2/Facades/System.Threading.Thread.dll", - "build/.NETFramework/v4.7.2/Facades/System.Threading.ThreadPool.dll", - "build/.NETFramework/v4.7.2/Facades/System.Threading.Timer.dll", - "build/.NETFramework/v4.7.2/Facades/System.Threading.dll", - "build/.NETFramework/v4.7.2/Facades/System.ValueTuple.dll", - "build/.NETFramework/v4.7.2/Facades/System.Xml.ReaderWriter.dll", - "build/.NETFramework/v4.7.2/Facades/System.Xml.XDocument.dll", - "build/.NETFramework/v4.7.2/Facades/System.Xml.XPath.XDocument.dll", - "build/.NETFramework/v4.7.2/Facades/System.Xml.XPath.dll", - "build/.NETFramework/v4.7.2/Facades/System.Xml.XmlDocument.dll", - "build/.NETFramework/v4.7.2/Facades/System.Xml.XmlSerializer.dll", - "build/.NETFramework/v4.7.2/Facades/netstandard.dll", - "build/.NETFramework/v4.7.2/ISymWrapper.dll", - "build/.NETFramework/v4.7.2/ISymWrapper.xml", - "build/.NETFramework/v4.7.2/Microsoft.Activities.Build.dll", - "build/.NETFramework/v4.7.2/Microsoft.Activities.Build.xml", - "build/.NETFramework/v4.7.2/Microsoft.Build.Conversion.v4.0.dll", - "build/.NETFramework/v4.7.2/Microsoft.Build.Conversion.v4.0.xml", - "build/.NETFramework/v4.7.2/Microsoft.Build.Engine.dll", - "build/.NETFramework/v4.7.2/Microsoft.Build.Engine.xml", - "build/.NETFramework/v4.7.2/Microsoft.Build.Framework.dll", - "build/.NETFramework/v4.7.2/Microsoft.Build.Framework.xml", - "build/.NETFramework/v4.7.2/Microsoft.Build.Tasks.v4.0.dll", - "build/.NETFramework/v4.7.2/Microsoft.Build.Tasks.v4.0.xml", - "build/.NETFramework/v4.7.2/Microsoft.Build.Utilities.v4.0.dll", - "build/.NETFramework/v4.7.2/Microsoft.Build.Utilities.v4.0.xml", - "build/.NETFramework/v4.7.2/Microsoft.Build.dll", - "build/.NETFramework/v4.7.2/Microsoft.Build.xml", - "build/.NETFramework/v4.7.2/Microsoft.CSharp.dll", - "build/.NETFramework/v4.7.2/Microsoft.CSharp.xml", - "build/.NETFramework/v4.7.2/Microsoft.JScript.dll", - "build/.NETFramework/v4.7.2/Microsoft.JScript.xml", - "build/.NETFramework/v4.7.2/Microsoft.VisualBasic.Compatibility.Data.dll", - "build/.NETFramework/v4.7.2/Microsoft.VisualBasic.Compatibility.Data.xml", - "build/.NETFramework/v4.7.2/Microsoft.VisualBasic.Compatibility.dll", - "build/.NETFramework/v4.7.2/Microsoft.VisualBasic.Compatibility.xml", - "build/.NETFramework/v4.7.2/Microsoft.VisualBasic.dll", - "build/.NETFramework/v4.7.2/Microsoft.VisualBasic.xml", - "build/.NETFramework/v4.7.2/Microsoft.VisualC.STLCLR.dll", - "build/.NETFramework/v4.7.2/Microsoft.VisualC.STLCLR.xml", - "build/.NETFramework/v4.7.2/Microsoft.VisualC.dll", - "build/.NETFramework/v4.7.2/Microsoft.VisualC.xml", - "build/.NETFramework/v4.7.2/PermissionSets/FullTrust.xml", - "build/.NETFramework/v4.7.2/PermissionSets/Internet.xml", - "build/.NETFramework/v4.7.2/PermissionSets/LocalIntranet.xml", - "build/.NETFramework/v4.7.2/PresentationBuildTasks.dll", - "build/.NETFramework/v4.7.2/PresentationBuildTasks.xml", - "build/.NETFramework/v4.7.2/PresentationCore.dll", - "build/.NETFramework/v4.7.2/PresentationCore.xml", - "build/.NETFramework/v4.7.2/PresentationFramework.Aero.dll", - "build/.NETFramework/v4.7.2/PresentationFramework.Aero.xml", - "build/.NETFramework/v4.7.2/PresentationFramework.Aero2.dll", - "build/.NETFramework/v4.7.2/PresentationFramework.Aero2.xml", - "build/.NETFramework/v4.7.2/PresentationFramework.AeroLite.dll", - "build/.NETFramework/v4.7.2/PresentationFramework.AeroLite.xml", - "build/.NETFramework/v4.7.2/PresentationFramework.Classic.dll", - "build/.NETFramework/v4.7.2/PresentationFramework.Classic.xml", - "build/.NETFramework/v4.7.2/PresentationFramework.Luna.dll", - "build/.NETFramework/v4.7.2/PresentationFramework.Luna.xml", - "build/.NETFramework/v4.7.2/PresentationFramework.Royale.dll", - "build/.NETFramework/v4.7.2/PresentationFramework.Royale.xml", - "build/.NETFramework/v4.7.2/PresentationFramework.dll", - "build/.NETFramework/v4.7.2/PresentationFramework.xml", - "build/.NETFramework/v4.7.2/ReachFramework.dll", - "build/.NETFramework/v4.7.2/ReachFramework.xml", - "build/.NETFramework/v4.7.2/RedistList/FrameworkList.xml", - "build/.NETFramework/v4.7.2/System.Activities.Core.Presentation.dll", - "build/.NETFramework/v4.7.2/System.Activities.Core.Presentation.xml", - "build/.NETFramework/v4.7.2/System.Activities.DurableInstancing.dll", - "build/.NETFramework/v4.7.2/System.Activities.DurableInstancing.xml", - "build/.NETFramework/v4.7.2/System.Activities.Presentation.dll", - "build/.NETFramework/v4.7.2/System.Activities.Presentation.xml", - "build/.NETFramework/v4.7.2/System.Activities.dll", - "build/.NETFramework/v4.7.2/System.Activities.xml", - "build/.NETFramework/v4.7.2/System.AddIn.Contract.dll", - "build/.NETFramework/v4.7.2/System.AddIn.Contract.xml", - "build/.NETFramework/v4.7.2/System.AddIn.dll", - "build/.NETFramework/v4.7.2/System.AddIn.xml", - "build/.NETFramework/v4.7.2/System.ComponentModel.Composition.Registration.dll", - "build/.NETFramework/v4.7.2/System.ComponentModel.Composition.Registration.xml", - "build/.NETFramework/v4.7.2/System.ComponentModel.Composition.dll", - "build/.NETFramework/v4.7.2/System.ComponentModel.Composition.xml", - "build/.NETFramework/v4.7.2/System.ComponentModel.DataAnnotations.dll", - "build/.NETFramework/v4.7.2/System.ComponentModel.DataAnnotations.xml", - "build/.NETFramework/v4.7.2/System.Configuration.Install.dll", - "build/.NETFramework/v4.7.2/System.Configuration.Install.xml", - "build/.NETFramework/v4.7.2/System.Configuration.dll", - "build/.NETFramework/v4.7.2/System.Configuration.xml", - "build/.NETFramework/v4.7.2/System.Core.dll", - "build/.NETFramework/v4.7.2/System.Core.xml", - "build/.NETFramework/v4.7.2/System.Data.DataSetExtensions.dll", - "build/.NETFramework/v4.7.2/System.Data.DataSetExtensions.xml", - "build/.NETFramework/v4.7.2/System.Data.Entity.Design.dll", - "build/.NETFramework/v4.7.2/System.Data.Entity.Design.xml", - "build/.NETFramework/v4.7.2/System.Data.Entity.dll", - "build/.NETFramework/v4.7.2/System.Data.Entity.xml", - "build/.NETFramework/v4.7.2/System.Data.Linq.dll", - "build/.NETFramework/v4.7.2/System.Data.Linq.xml", - "build/.NETFramework/v4.7.2/System.Data.OracleClient.dll", - "build/.NETFramework/v4.7.2/System.Data.OracleClient.xml", - "build/.NETFramework/v4.7.2/System.Data.Services.Client.dll", - "build/.NETFramework/v4.7.2/System.Data.Services.Client.xml", - "build/.NETFramework/v4.7.2/System.Data.Services.Design.dll", - "build/.NETFramework/v4.7.2/System.Data.Services.Design.xml", - "build/.NETFramework/v4.7.2/System.Data.Services.dll", - "build/.NETFramework/v4.7.2/System.Data.Services.xml", - "build/.NETFramework/v4.7.2/System.Data.SqlXml.dll", - "build/.NETFramework/v4.7.2/System.Data.SqlXml.xml", - "build/.NETFramework/v4.7.2/System.Data.dll", - "build/.NETFramework/v4.7.2/System.Data.xml", - "build/.NETFramework/v4.7.2/System.Deployment.dll", - "build/.NETFramework/v4.7.2/System.Deployment.xml", - "build/.NETFramework/v4.7.2/System.Design.dll", - "build/.NETFramework/v4.7.2/System.Design.xml", - "build/.NETFramework/v4.7.2/System.Device.dll", - "build/.NETFramework/v4.7.2/System.Device.xml", - "build/.NETFramework/v4.7.2/System.Diagnostics.Tracing.dll", - "build/.NETFramework/v4.7.2/System.Diagnostics.Tracing.xml", - "build/.NETFramework/v4.7.2/System.DirectoryServices.AccountManagement.dll", - "build/.NETFramework/v4.7.2/System.DirectoryServices.AccountManagement.xml", - "build/.NETFramework/v4.7.2/System.DirectoryServices.Protocols.dll", - "build/.NETFramework/v4.7.2/System.DirectoryServices.Protocols.xml", - "build/.NETFramework/v4.7.2/System.DirectoryServices.dll", - "build/.NETFramework/v4.7.2/System.DirectoryServices.xml", - "build/.NETFramework/v4.7.2/System.Drawing.Design.dll", - "build/.NETFramework/v4.7.2/System.Drawing.Design.xml", - "build/.NETFramework/v4.7.2/System.Drawing.dll", - "build/.NETFramework/v4.7.2/System.Drawing.xml", - "build/.NETFramework/v4.7.2/System.Dynamic.dll", - "build/.NETFramework/v4.7.2/System.EnterpriseServices.Thunk.dll", - "build/.NETFramework/v4.7.2/System.EnterpriseServices.Wrapper.dll", - "build/.NETFramework/v4.7.2/System.EnterpriseServices.dll", - "build/.NETFramework/v4.7.2/System.EnterpriseServices.xml", - "build/.NETFramework/v4.7.2/System.IO.Compression.FileSystem.dll", - "build/.NETFramework/v4.7.2/System.IO.Compression.FileSystem.xml", - "build/.NETFramework/v4.7.2/System.IO.Compression.dll", - "build/.NETFramework/v4.7.2/System.IO.Compression.xml", - "build/.NETFramework/v4.7.2/System.IO.Log.dll", - "build/.NETFramework/v4.7.2/System.IO.Log.xml", - "build/.NETFramework/v4.7.2/System.IdentityModel.Selectors.dll", - "build/.NETFramework/v4.7.2/System.IdentityModel.Selectors.xml", - "build/.NETFramework/v4.7.2/System.IdentityModel.Services.dll", - "build/.NETFramework/v4.7.2/System.IdentityModel.Services.xml", - "build/.NETFramework/v4.7.2/System.IdentityModel.dll", - "build/.NETFramework/v4.7.2/System.IdentityModel.xml", - "build/.NETFramework/v4.7.2/System.Linq.xml", - "build/.NETFramework/v4.7.2/System.Management.Instrumentation.dll", - "build/.NETFramework/v4.7.2/System.Management.Instrumentation.xml", - "build/.NETFramework/v4.7.2/System.Management.dll", - "build/.NETFramework/v4.7.2/System.Management.xml", - "build/.NETFramework/v4.7.2/System.Messaging.dll", - "build/.NETFramework/v4.7.2/System.Messaging.xml", - "build/.NETFramework/v4.7.2/System.Net.Http.WebRequest.dll", - "build/.NETFramework/v4.7.2/System.Net.Http.WebRequest.xml", - "build/.NETFramework/v4.7.2/System.Net.Http.dll", - "build/.NETFramework/v4.7.2/System.Net.Http.xml", - "build/.NETFramework/v4.7.2/System.Net.dll", - "build/.NETFramework/v4.7.2/System.Net.xml", - "build/.NETFramework/v4.7.2/System.Numerics.dll", - "build/.NETFramework/v4.7.2/System.Numerics.xml", - "build/.NETFramework/v4.7.2/System.Printing.dll", - "build/.NETFramework/v4.7.2/System.Printing.xml", - "build/.NETFramework/v4.7.2/System.Reflection.Context.dll", - "build/.NETFramework/v4.7.2/System.Reflection.Context.xml", - "build/.NETFramework/v4.7.2/System.Runtime.Caching.dll", - "build/.NETFramework/v4.7.2/System.Runtime.Caching.xml", - "build/.NETFramework/v4.7.2/System.Runtime.DurableInstancing.dll", - "build/.NETFramework/v4.7.2/System.Runtime.DurableInstancing.xml", - "build/.NETFramework/v4.7.2/System.Runtime.Remoting.dll", - "build/.NETFramework/v4.7.2/System.Runtime.Remoting.xml", - "build/.NETFramework/v4.7.2/System.Runtime.Serialization.Formatters.Soap.dll", - "build/.NETFramework/v4.7.2/System.Runtime.Serialization.Formatters.Soap.xml", - "build/.NETFramework/v4.7.2/System.Runtime.Serialization.dll", - "build/.NETFramework/v4.7.2/System.Runtime.Serialization.xml", - "build/.NETFramework/v4.7.2/System.Security.dll", - "build/.NETFramework/v4.7.2/System.Security.xml", - "build/.NETFramework/v4.7.2/System.ServiceModel.Activation.dll", - "build/.NETFramework/v4.7.2/System.ServiceModel.Activation.xml", - "build/.NETFramework/v4.7.2/System.ServiceModel.Activities.dll", - "build/.NETFramework/v4.7.2/System.ServiceModel.Activities.xml", - "build/.NETFramework/v4.7.2/System.ServiceModel.Channels.dll", - "build/.NETFramework/v4.7.2/System.ServiceModel.Channels.xml", - "build/.NETFramework/v4.7.2/System.ServiceModel.Discovery.dll", - "build/.NETFramework/v4.7.2/System.ServiceModel.Discovery.xml", - "build/.NETFramework/v4.7.2/System.ServiceModel.Routing.dll", - "build/.NETFramework/v4.7.2/System.ServiceModel.Routing.xml", - "build/.NETFramework/v4.7.2/System.ServiceModel.Web.dll", - "build/.NETFramework/v4.7.2/System.ServiceModel.Web.xml", - "build/.NETFramework/v4.7.2/System.ServiceModel.dll", - "build/.NETFramework/v4.7.2/System.ServiceModel.xml", - "build/.NETFramework/v4.7.2/System.ServiceProcess.dll", - "build/.NETFramework/v4.7.2/System.ServiceProcess.xml", - "build/.NETFramework/v4.7.2/System.Speech.dll", - "build/.NETFramework/v4.7.2/System.Speech.xml", - "build/.NETFramework/v4.7.2/System.Threading.Tasks.Dataflow.xml", - "build/.NETFramework/v4.7.2/System.Transactions.dll", - "build/.NETFramework/v4.7.2/System.Transactions.xml", - "build/.NETFramework/v4.7.2/System.Web.Abstractions.dll", - "build/.NETFramework/v4.7.2/System.Web.ApplicationServices.dll", - "build/.NETFramework/v4.7.2/System.Web.ApplicationServices.xml", - "build/.NETFramework/v4.7.2/System.Web.DataVisualization.Design.dll", - "build/.NETFramework/v4.7.2/System.Web.DataVisualization.dll", - "build/.NETFramework/v4.7.2/System.Web.DataVisualization.xml", - "build/.NETFramework/v4.7.2/System.Web.DynamicData.Design.dll", - "build/.NETFramework/v4.7.2/System.Web.DynamicData.Design.xml", - "build/.NETFramework/v4.7.2/System.Web.DynamicData.dll", - "build/.NETFramework/v4.7.2/System.Web.DynamicData.xml", - "build/.NETFramework/v4.7.2/System.Web.Entity.Design.dll", - "build/.NETFramework/v4.7.2/System.Web.Entity.Design.xml", - "build/.NETFramework/v4.7.2/System.Web.Entity.dll", - "build/.NETFramework/v4.7.2/System.Web.Entity.xml", - "build/.NETFramework/v4.7.2/System.Web.Extensions.Design.dll", - "build/.NETFramework/v4.7.2/System.Web.Extensions.Design.xml", - "build/.NETFramework/v4.7.2/System.Web.Extensions.dll", - "build/.NETFramework/v4.7.2/System.Web.Extensions.xml", - "build/.NETFramework/v4.7.2/System.Web.Mobile.dll", - "build/.NETFramework/v4.7.2/System.Web.Mobile.xml", - "build/.NETFramework/v4.7.2/System.Web.RegularExpressions.dll", - "build/.NETFramework/v4.7.2/System.Web.RegularExpressions.xml", - "build/.NETFramework/v4.7.2/System.Web.Routing.dll", - "build/.NETFramework/v4.7.2/System.Web.Services.dll", - "build/.NETFramework/v4.7.2/System.Web.Services.xml", - "build/.NETFramework/v4.7.2/System.Web.dll", - "build/.NETFramework/v4.7.2/System.Web.xml", - "build/.NETFramework/v4.7.2/System.Windows.Controls.Ribbon.dll", - "build/.NETFramework/v4.7.2/System.Windows.Controls.Ribbon.xml", - "build/.NETFramework/v4.7.2/System.Windows.Forms.DataVisualization.Design.dll", - "build/.NETFramework/v4.7.2/System.Windows.Forms.DataVisualization.dll", - "build/.NETFramework/v4.7.2/System.Windows.Forms.DataVisualization.xml", - "build/.NETFramework/v4.7.2/System.Windows.Forms.dll", - "build/.NETFramework/v4.7.2/System.Windows.Forms.xml", - "build/.NETFramework/v4.7.2/System.Windows.Input.Manipulations.dll", - "build/.NETFramework/v4.7.2/System.Windows.Input.Manipulations.xml", - "build/.NETFramework/v4.7.2/System.Windows.Presentation.dll", - "build/.NETFramework/v4.7.2/System.Windows.Presentation.xml", - "build/.NETFramework/v4.7.2/System.Windows.dll", - "build/.NETFramework/v4.7.2/System.Workflow.Activities.dll", - "build/.NETFramework/v4.7.2/System.Workflow.Activities.xml", - "build/.NETFramework/v4.7.2/System.Workflow.ComponentModel.dll", - "build/.NETFramework/v4.7.2/System.Workflow.ComponentModel.xml", - "build/.NETFramework/v4.7.2/System.Workflow.Runtime.dll", - "build/.NETFramework/v4.7.2/System.Workflow.Runtime.xml", - "build/.NETFramework/v4.7.2/System.WorkflowServices.dll", - "build/.NETFramework/v4.7.2/System.WorkflowServices.xml", - "build/.NETFramework/v4.7.2/System.Xaml.dll", - "build/.NETFramework/v4.7.2/System.Xaml.xml", - "build/.NETFramework/v4.7.2/System.Xml.Linq.dll", - "build/.NETFramework/v4.7.2/System.Xml.Linq.xml", - "build/.NETFramework/v4.7.2/System.Xml.Serialization.dll", - "build/.NETFramework/v4.7.2/System.Xml.dll", - "build/.NETFramework/v4.7.2/System.Xml.xml", - "build/.NETFramework/v4.7.2/System.dll", - "build/.NETFramework/v4.7.2/System.xml", - "build/.NETFramework/v4.7.2/UIAutomationClient.dll", - "build/.NETFramework/v4.7.2/UIAutomationClient.xml", - "build/.NETFramework/v4.7.2/UIAutomationClientsideProviders.dll", - "build/.NETFramework/v4.7.2/UIAutomationClientsideProviders.xml", - "build/.NETFramework/v4.7.2/UIAutomationProvider.dll", - "build/.NETFramework/v4.7.2/UIAutomationProvider.xml", - "build/.NETFramework/v4.7.2/UIAutomationTypes.dll", - "build/.NETFramework/v4.7.2/UIAutomationTypes.xml", - "build/.NETFramework/v4.7.2/WindowsBase.dll", - "build/.NETFramework/v4.7.2/WindowsBase.xml", - "build/.NETFramework/v4.7.2/WindowsFormsIntegration.dll", - "build/.NETFramework/v4.7.2/WindowsFormsIntegration.xml", - "build/.NETFramework/v4.7.2/XamlBuildTask.dll", - "build/.NETFramework/v4.7.2/XamlBuildTask.xml", - "build/.NETFramework/v4.7.2/mscorlib.dll", - "build/.NETFramework/v4.7.2/mscorlib.xml", - "build/.NETFramework/v4.7.2/namespaces.xml", - "build/.NETFramework/v4.7.2/sysglobl.dll", - "build/.NETFramework/v4.7.2/sysglobl.xml", - "build/Microsoft.NETFramework.ReferenceAssemblies.net472.targets", - "microsoft.netframework.referenceassemblies.net472.1.0.3.nupkg.sha512", - "microsoft.netframework.referenceassemblies.net472.nuspec" - ] - } - }, - "projectFileDependencyGroups": { - ".NETFramework,Version=v4.7.2": [ - "Microsoft.NETFramework.ReferenceAssemblies >= 1.0.3" - ] - }, - "packageFolders": { - "C:\\Users\\Red\\.nuget\\packages\\": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj", - "projectName": "ArcherLoaderMod", - "projectPath": "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj", - "packagesPath": "C:\\Users\\Red\\.nuget\\packages\\", - "outputPath": "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\Red\\AppData\\Roaming\\NuGet\\NuGet.Config" - ], - "originalTargetFrameworks": [ - "net472" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net472": { - "targetAlias": "net472", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "net472": { - "targetAlias": "net472", - "dependencies": { - "Microsoft.NETFramework.ReferenceAssemblies": { - "suppressParent": "All", - "target": "Package", - "version": "[1.0.3, )", - "autoReferenced": true - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.203\\RuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache deleted file mode 100644 index 7e788af..0000000 --- a/obj/project.nuget.cache +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "Z/OX1UgxlEYqCktP/QbtdCobx3Zi8UFiqARcVO6KGqNQP3Q3ymsRWqfPBTKBmaaII7E3y6C+opWnp1q06NHryg==", - "success": true, - "projectFilePath": "E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj", - "expectedPackageFiles": [ - "C:\\Users\\Red\\.nuget\\packages\\microsoft.netframework.referenceassemblies\\1.0.3\\microsoft.netframework.referenceassemblies.1.0.3.nupkg.sha512", - "C:\\Users\\Red\\.nuget\\packages\\microsoft.netframework.referenceassemblies.net472\\1.0.3\\microsoft.netframework.referenceassemblies.net472.1.0.3.nupkg.sha512" - ], - "logs": [] -} \ No newline at end of file diff --git a/obj/project.packagespec.json b/obj/project.packagespec.json deleted file mode 100644 index 9a1e9f9..0000000 --- a/obj/project.packagespec.json +++ /dev/null @@ -1 +0,0 @@ -"version":"1.0.0","restore":{"projectUniqueName":"E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj","projectName":"ArcherLoaderMod","projectPath":"E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\ArcherLoaderMod.csproj","outputPath":"E:\\Projects\\towerfall-archer-loader\\FortRiseMod\\ArcherLoaderMod\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net472"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net472":{"targetAlias":"net472","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net472":{"targetAlias":"net472","runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\7.0.203\\RuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/obj/rider.project.restore.info b/obj/rider.project.restore.info deleted file mode 100644 index a9bf4e4..0000000 --- a/obj/rider.project.restore.info +++ /dev/null @@ -1 +0,0 @@ -16855479805660501 \ No newline at end of file From cb490a45da06f65e5b60756af28505bc9b898b2e Mon Sep 17 00:00:00 2001 From: Terria-K Date: Mon, 1 Apr 2024 21:10:06 +0800 Subject: [PATCH 02/10] Replace some System.IO to FortRise.IO calls --- Mod.cs | 41 +++++++------------ .../ArcherCustomData/ArcherCustomManager.cs | 9 ++-- 2 files changed, 19 insertions(+), 31 deletions(-) diff --git a/Mod.cs b/Mod.cs index c0d39d3..0a929d8 100644 --- a/Mod.cs +++ b/Mod.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Reflection; +using System.Reflection; using System.Xml; using ArcherLoaderMod.Ghost; using ArcherLoaderMod.Hair; @@ -17,6 +12,7 @@ using ArcherLoaderMod.Teams; using ArcherLoaderMod.Wings; using FortRise; +using FortRise.IO; using Monocle; using MonoMod.ModInterop; using MonoMod.Utils; @@ -145,11 +141,10 @@ void OnMainMenuOnUpdate(On.TowerFall.MainMenu.orig_Update orig, MainMenu self) public static void LoadArcherContents() { allCustomArchers.AddRange(LoadContentAtPath($"{Calc.LOADPATH}{_contentCustomArchersPath}", ContentAccess.Content)); - var contentPath = Content.GetContentPath(""); - allCustomArchers.AddRange(LoadContentAtPath(contentPath+$"/{_customArchersPath}", ContentAccess.ModContent)); allCustomArchers.AddRange(LoadContentAtPath($"{_customArchersPath}", ContentAccess.Root)); - allCustomArchers.AddRange(LoadContentAtPath(contentPath.Replace("/Content", "")+$"/{_customArchersPath}", ContentAccess.Root)); - // allCustomArchers.AddRange(LoadContentAtPath(Content.GetContentPath("").Replace("/Content", ""), ContentAccess.Root)); + + // I removed two of those, because the ContentAccess.ModContent will be replaced with the new format, + // and I don't know what the other one does } public static void Start() @@ -366,14 +361,14 @@ private static void LoadAltArcher(List newAltCustom, Dictionar private static List LoadContentAtPath(string path, ContentAccess contentAccess, bool warnNotFound = true) { var allCustomArchers = new List(); - if (!Directory.Exists(path)) + if (!ModFs.IsDirectoryOrFileExists(path)) { if(warnNotFound) Console.WriteLine($"\nNo Archer Found in \"{path}\" Folder"); return allCustomArchers; } - var customArchersFound = Directory.GetDirectories(path); + var customArchersFound = ModFs.GetDirectories(path); foreach (var directory in customArchersFound) { @@ -413,25 +408,19 @@ private static List LoadContent(FortContent content, string di var archerName = directory.Split(Convert.ToChar(_separator)).Last(); var path = $"{directory}{_separator}".Replace($"Content{_separator}", $""); - var pathModContentFolder = false; - if (contentAccess == ContentAccess.ModContent) - { - path = path.Replace(Content.GetContentPath(), ""); - path = Content.GetContentPath() + path; - contentAccess = ContentAccess.Root; - } var pathWithContentPrefix = addContentPrefix ? Calc.LOADPATH + path : path; Atlas atlas = null; - if (File.Exists($"{pathWithContentPrefix}atlas.xml") && File.Exists($"{pathWithContentPrefix}atlas.png")) + if (ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}atlas.xml") && + ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}atlas.png")) { - atlas = content.CreateAtlas($"{path}atlas.xml", $"{path}atlas.png", true, contentAccess); + atlas = AtlasExt.CreateAtlas(Content, $"{path}atlas.xml", $"{path}atlas.png", contentAccess); customAtlasList.Add(atlas); } - if (!File.Exists($"{pathWithContentPrefix}spriteData.xml") || atlas == null) + if (!ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}spriteData.xml") || atlas == null) { return newArchers; } @@ -469,10 +458,10 @@ private static List LoadContent(FortContent content, string di var atlasArcherMenu = atlas; SpriteData spriteDataMenu = spriteData; - if (File.Exists($"{pathWithContentPrefix}menuAtlas.xml") && - File.Exists($"{pathWithContentPrefix}menuAtlas.png")) + if (ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}menuAtlas.xml") && + ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}menuAtlas.png")) { - atlasArcherMenu = content.CreateAtlas($"{path}menuAtlas.xml", $"{path}menuAtlas.png", true, contentAccess); + atlasArcherMenu = AtlasExt.CreateAtlas(Content, $"{path}menuAtlas.xml", $"{path}menuAtlas.png", contentAccess); customAtlasList.Add(atlasArcherMenu); spriteDataMenu = content.CreateSpriteData($"{path}menuSpriteData.xml", atlasArcherMenu, contentAccess); customSpriteDataList.Add(spriteDataMenu); @@ -480,7 +469,7 @@ private static List LoadContent(FortContent content, string di } var filePath = $"{pathWithContentPrefix}archerData.xml"; - if (!File.Exists(filePath)) return newArchers; + if (!ModFs.IsDirectoryOrFileExists(filePath)) return newArchers; var newArchersFromPack = InitializeArcherData(pathWithContentPrefix, atlas, atlasArcherMenu, spriteData, spriteDataMenu, archerName.ToUpper()); return newArchersFromPack; diff --git a/Source/ArcherCustomData/ArcherCustomManager.cs b/Source/ArcherCustomData/ArcherCustomManager.cs index f51c1dd..f7d96c5 100644 --- a/Source/ArcherCustomData/ArcherCustomManager.cs +++ b/Source/ArcherCustomData/ArcherCustomManager.cs @@ -1,19 +1,18 @@ -using System; -using System.Collections.Generic; -using System.Xml; +using System.Xml; +using FortRise.IO; using Monocle; using TowerFall; namespace ArcherLoaderMod { - public class ArcherCustomManager + public class ArcherCustomManager { public static ArcherCustomDataValidator validator; public static List Initialize(string path, Atlas atlas, Atlas menuAtlas, SpriteData spriteData, SpriteData menuSpriteData, string archerId, bool validate = false) { var filePath = $"{path}archerData.xml"; - var xmlDocument = Calc.LoadXML(filePath); + var xmlDocument = ModFs.LoadXml(filePath); var archers = xmlDocument["Archers"]; var archersArray = new List(); validator ??= new ArcherCustomDataValidator(); From c03058a7a003fc25e0b36bf1d4e350335659bc48 Mon Sep 17 00:00:00 2001 From: Terria-K Date: Tue, 16 Apr 2024 18:02:26 +0800 Subject: [PATCH 03/10] Removed some example comment --- FortEntrance.cs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/FortEntrance.cs b/FortEntrance.cs index 3063d5f..a673414 100644 --- a/FortEntrance.cs +++ b/FortEntrance.cs @@ -56,24 +56,6 @@ private void OnPreInitialize() } } - // Harmony can be supported - - //[HarmonyPatch(typeof(MainMenu), "BoolToString")] - //public class MyPatcher - //{ - // static void Postfix(ref string __result) - // { - // if (__result == "ON") - // { - // __result = "ENABLED"; - // return; - // } - - // __result = "DISABLED"; - // } - //} - - /* Example of interppting with libraries Learn more: https://github.com/MonoMod/MonoMod/blob/master/README-ModInterop.md From 1697c57df44c5415f22254e43d768c90c6f77af7 Mon Sep 17 00:00:00 2001 From: Terria-K Date: Tue, 16 Apr 2024 18:02:49 +0800 Subject: [PATCH 04/10] LoopAllMods --- Mod.cs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Mod.cs b/Mod.cs index 0a929d8..da776db 100644 --- a/Mod.cs +++ b/Mod.cs @@ -142,6 +142,15 @@ public static void LoadArcherContents() { allCustomArchers.AddRange(LoadContentAtPath($"{Calc.LOADPATH}{_contentCustomArchersPath}", ContentAccess.Content)); allCustomArchers.AddRange(LoadContentAtPath($"{_customArchersPath}", ContentAccess.Root)); + ModFs.LoopAllModsContent(x => { + string archerFolder = Path.Combine(x.MetadataPath, "Content", "Archers"); + + if (ModFs.IsDirectoryOrFileExists(archerFolder)) + { + List archerData = LoadContent(x, archerFolder, ContentAccess.ModContent, false); + allCustomArchers.AddRange(archerData); + } + }); // I removed two of those, because the ContentAccess.ModContent will be replaced with the new format, // and I don't know what the other one does @@ -375,7 +384,7 @@ private static List LoadContentAtPath(string path, ContentAcce // if(directory.EndsWith("Content")) // continue; - allCustomArchers.AddRange(LoadContent(Content, directory, contentAccess, contentAccess == ContentAccess.Content)); + allCustomArchers.AddRange(LoadContent(null, directory, contentAccess, contentAccess == ContentAccess.Content)); } if (warnNotFound && allCustomArchers.Count == 0) @@ -404,19 +413,18 @@ private static List LoadContentAtPath(string path, ContentAcce private static List LoadContent(FortContent content, string directory, ContentAccess contentAccess, bool addContentPrefix = false) { var newArchers = new List(); - newArchers.AddRange(LoadContentAtPath(directory, contentAccess, false)); var archerName = directory.Split(Convert.ToChar(_separator)).Last(); - var path = $"{directory}{_separator}".Replace($"Content{_separator}", $""); + var path = directory; - var pathWithContentPrefix = addContentPrefix ? Calc.LOADPATH + path : path; + var pathWithContentPrefix = path; Atlas atlas = null; if (ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}atlas.xml") && ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}atlas.png")) { - atlas = AtlasExt.CreateAtlas(Content, $"{path}atlas.xml", $"{path}atlas.png", contentAccess); + atlas = AtlasExt.CreateAtlas(content, $"{path}atlas.xml", $"{path}atlas.png", contentAccess); customAtlasList.Add(atlas); } @@ -425,7 +433,7 @@ private static List LoadContent(FortContent content, string di return newArchers; } - var spriteData = content.CreateSpriteData($"{path}spriteData.xml", atlas, contentAccess); + var spriteData = SpriteDataExt.CreateSpriteData(content, $"{path}spriteData.xml", atlas, contentAccess); var sprites = DynamicData.For(spriteData).Get>("sprites"); if (sprites.Count > 0) @@ -461,9 +469,9 @@ private static List LoadContent(FortContent content, string di if (ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}menuAtlas.xml") && ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}menuAtlas.png")) { - atlasArcherMenu = AtlasExt.CreateAtlas(Content, $"{path}menuAtlas.xml", $"{path}menuAtlas.png", contentAccess); + atlasArcherMenu = AtlasExt.CreateAtlas(content, $"{path}menuAtlas.xml", $"{path}menuAtlas.png", contentAccess); customAtlasList.Add(atlasArcherMenu); - spriteDataMenu = content.CreateSpriteData($"{path}menuSpriteData.xml", atlasArcherMenu, contentAccess); + spriteDataMenu = SpriteDataExt.CreateSpriteData(content, $"{path}menuSpriteData.xml", atlasArcherMenu, contentAccess); customSpriteDataList.Add(spriteDataMenu); customSpriteDataPath.Add(spriteDataMenu, $"{path}menuSpriteData.xml"); } From 146f836c6186ed2a495897faf15b75e2db108e0a Mon Sep 17 00:00:00 2001 From: Terria-K Date: Mon, 16 Dec 2024 19:42:09 +0800 Subject: [PATCH 05/10] ModIO implementation for Archer Loader --- ArcherLoaderMod.csproj | 24 +++---- Mod.cs | 69 ++++++++++--------- Source/ArcherCustomData/ArcherCustomData.cs | 10 +-- .../ArcherCustomData/ArcherCustomManager.cs | 2 +- Source/Patch/ContentLoaderPatcher.cs | 1 - Source/Taunt/TauntVariant.cs | 6 +- 6 files changed, 54 insertions(+), 58 deletions(-) diff --git a/ArcherLoaderMod.csproj b/ArcherLoaderMod.csproj index af06fbd..729f2c0 100644 --- a/ArcherLoaderMod.csproj +++ b/ArcherLoaderMod.csproj @@ -6,8 +6,8 @@ enable false false - D:\Games\TowerFall-FortRise\Mods\$(AssemblyName) - D:\Games\TowerFall-FortRise\Mods\$(AssemblyName)-Debug + ..\..\Mods\$(AssemblyName) + ..\..\Mods\$(AssemblyName)-Debug @@ -30,28 +30,28 @@ - - D:\Games\TowerFall-FortRise\0Harmony.dll + + ..\..\0Harmony.dll false - - D:\Games\TowerFall-FortRise\FNA.dll + + ..\..\FNA.dll false - D:\Games\TowerFall-FortRise\MMHOOK_TowerFall.dll + ..\..\MMHOOK_TowerFall.dll false - - D:\Games\TowerFall-FortRise\MonoMod.RuntimeDetour.dll + + ..\..\MonoMod.RuntimeDetour.dll false - - D:\Games\TowerFall-FortRise\MonoMod.Utils.dll + + ..\..\MonoMod.Utils.dll false - D:\Games\TowerFall-FortRise\TowerFall.exe + ..\..\TowerFall.exe false diff --git a/Mod.cs b/Mod.cs index da776db..0b0d816 100644 --- a/Mod.cs +++ b/Mod.cs @@ -82,11 +82,11 @@ public static void Load() PortraitLayerPatch.Load(); PrismaticPatcher.Load(); TeamsPatcher.Load(); + RiseCore.Events.OnPostLoadContent += OnPostLoadContent; HandleQuickStart(); } - private static void HandleQuickStart() { if (!FortEntrance.Settings.QuickStart) return; @@ -137,23 +137,20 @@ void OnMainMenuOnUpdate(On.TowerFall.MainMenu.orig_Update orig, MainMenu self) On.TowerFall.MainMenu.Update += OnMainMenuOnUpdate; } - - public static void LoadArcherContents() + + private static void OnPostLoadContent(FortContent content) { - allCustomArchers.AddRange(LoadContentAtPath($"{Calc.LOADPATH}{_contentCustomArchersPath}", ContentAccess.Content)); - allCustomArchers.AddRange(LoadContentAtPath($"{_customArchersPath}", ContentAccess.Root)); - ModFs.LoopAllModsContent(x => { - string archerFolder = Path.Combine(x.MetadataPath, "Content", "Archers"); + allCustomArchers.AddRange(LoadContentAtPath(null, $"{Calc.LOADPATH}{_contentCustomArchersPath}", ContentAccess.Content)); + allCustomArchers.AddRange(LoadContentAtPath(null, $"{_customArchersPath}", ContentAccess.Root)); - if (ModFs.IsDirectoryOrFileExists(archerFolder)) - { - List archerData = LoadContent(x, archerFolder, ContentAccess.ModContent, false); - allCustomArchers.AddRange(archerData); - } - }); + string archerFolder = Path.Combine(content.MetadataPath, "Content", "Archers"); + Logger.Log(archerFolder); - // I removed two of those, because the ContentAccess.ModContent will be replaced with the new format, - // and I don't know what the other one does + if (ModIO.IsDirectoryOrFileExists(archerFolder)) + { + List archerData = LoadContentAtPath(content, archerFolder, ContentAccess.ModContent, true); + allCustomArchers.AddRange(archerData); + } } public static void Start() @@ -367,22 +364,28 @@ private static void LoadAltArcher(List newAltCustom, Dictionar } } - private static List LoadContentAtPath(string path, ContentAccess contentAccess, bool warnNotFound = true) + private static List LoadContentAtPath(FortContent content, string path, ContentAccess contentAccess, bool warnNotFound = true) { var allCustomArchers = new List(); - if (!ModFs.IsDirectoryOrFileExists(path)) + if (!ModIO.IsDirectoryOrFileExists(path)) { if(warnNotFound) Console.WriteLine($"\nNo Archer Found in \"{path}\" Folder"); return allCustomArchers; } - var customArchersFound = ModFs.GetDirectories(path); + var customArchersFound = ModIO.GetDirectories(path); foreach (var directory in customArchersFound) { // if(directory.EndsWith("Content")) // continue; + + if (contentAccess == ContentAccess.ModContent) + { + allCustomArchers.AddRange(LoadContent(content, directory, contentAccess, contentAccess == ContentAccess.Content)); + continue; + } allCustomArchers.AddRange(LoadContent(null, directory, contentAccess, contentAccess == ContentAccess.Content)); } @@ -415,25 +418,23 @@ private static List LoadContent(FortContent content, string di var newArchers = new List(); var archerName = directory.Split(Convert.ToChar(_separator)).Last(); - var path = directory; - - var pathWithContentPrefix = path; + var path = directory + "/"; Atlas atlas = null; - if (ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}atlas.xml") && - ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}atlas.png")) + if (ModIO.IsDirectoryOrFileExists($"{path}atlas.xml") && + ModIO.IsDirectoryOrFileExists($"{path}atlas.png")) { - atlas = AtlasExt.CreateAtlas(content, $"{path}atlas.xml", $"{path}atlas.png", contentAccess); + atlas = AtlasExt.CreateAtlas($"{path}atlas.xml", $"{path}atlas.png"); customAtlasList.Add(atlas); } - if (!ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}spriteData.xml") || atlas == null) + if (!ModIO.IsDirectoryOrFileExists($"{path}spriteData.xml") || atlas == null) { return newArchers; } - var spriteData = SpriteDataExt.CreateSpriteData(content, $"{path}spriteData.xml", atlas, contentAccess); + var spriteData = SpriteDataExt.CreateSpriteData($"{path}spriteData.xml", atlas); var sprites = DynamicData.For(spriteData).Get>("sprites"); if (sprites.Count > 0) @@ -466,20 +467,20 @@ private static List LoadContent(FortContent content, string di var atlasArcherMenu = atlas; SpriteData spriteDataMenu = spriteData; - if (ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}menuAtlas.xml") && - ModFs.IsDirectoryOrFileExists($"{pathWithContentPrefix}menuAtlas.png")) + if (ModIO.IsDirectoryOrFileExists($"{path}menuAtlas.xml") && + ModIO.IsDirectoryOrFileExists($"{path}menuAtlas.png")) { - atlasArcherMenu = AtlasExt.CreateAtlas(content, $"{path}menuAtlas.xml", $"{path}menuAtlas.png", contentAccess); + atlasArcherMenu = AtlasExt.CreateAtlas($"{path}menuAtlas.xml", $"{path}menuAtlas.png"); customAtlasList.Add(atlasArcherMenu); - spriteDataMenu = SpriteDataExt.CreateSpriteData(content, $"{path}menuSpriteData.xml", atlasArcherMenu, contentAccess); + spriteDataMenu = SpriteDataExt.CreateSpriteData($"{path}menuSpriteData.xml", atlasArcherMenu); customSpriteDataList.Add(spriteDataMenu); customSpriteDataPath.Add(spriteDataMenu, $"{path}menuSpriteData.xml"); } - var filePath = $"{pathWithContentPrefix}archerData.xml"; - if (!ModFs.IsDirectoryOrFileExists(filePath)) return newArchers; + var filePath = $"{path}archerData.xml"; + if (!ModIO.IsDirectoryOrFileExists(filePath)) return newArchers; var newArchersFromPack = - InitializeArcherData(pathWithContentPrefix, atlas, atlasArcherMenu, spriteData, spriteDataMenu, archerName.ToUpper()); + InitializeArcherData(path, atlas, atlasArcherMenu, spriteData, spriteDataMenu, archerName.ToUpper()); return newArchersFromPack; } @@ -612,6 +613,8 @@ public static void Unload() PortraitLayerPatch.Unload(); PrismaticPatcher.Unload(); TeamsPatcher.Unload(); + + RiseCore.Events.OnPostLoadContent -= OnPostLoadContent; } public static void OnVariantsRegister(VariantManager variants, bool noPerPlayer = false) diff --git a/Source/ArcherCustomData/ArcherCustomData.cs b/Source/ArcherCustomData/ArcherCustomData.cs index e0b8a56..4b771b8 100644 --- a/Source/ArcherCustomData/ArcherCustomData.cs +++ b/Source/ArcherCustomData/ArcherCustomData.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Xml; +using System.Xml; using ArcherLoaderMod.Hair; using ArcherLoaderMod.Layer; using ArcherLoaderMod.Layers; @@ -14,7 +10,7 @@ namespace ArcherLoaderMod { - public class ArcherCustomData + public class ArcherCustomData { public string ID; public int Order; @@ -503,7 +499,7 @@ public void HandleSFX(XmlElement xml, ArcherData archerData = null) } var originalAudiosPath = Audio.LOAD_PREFIX; - Audio.LOAD_PREFIX = $"{FolderPath}SFX{Path.DirectorySeparatorChar.ToString()}"; + Audio.LOAD_PREFIX = $"{FolderPath}SFX{Path.DirectorySeparatorChar}"; CharacterSounds = new CharacterSounds(sfxName, Sounds.Characters[SFXID]); Mod.customSFXList.Add(CharacterSounds); victory = CharacterSounds.Load("VICTORY"); diff --git a/Source/ArcherCustomData/ArcherCustomManager.cs b/Source/ArcherCustomData/ArcherCustomManager.cs index f7d96c5..84d904b 100644 --- a/Source/ArcherCustomData/ArcherCustomManager.cs +++ b/Source/ArcherCustomData/ArcherCustomManager.cs @@ -12,7 +12,7 @@ public class ArcherCustomManager public static List Initialize(string path, Atlas atlas, Atlas menuAtlas, SpriteData spriteData, SpriteData menuSpriteData, string archerId, bool validate = false) { var filePath = $"{path}archerData.xml"; - var xmlDocument = ModFs.LoadXml(filePath); + var xmlDocument = ModIO.LoadXml(filePath); var archers = xmlDocument["Archers"]; var archersArray = new List(); validator ??= new ArcherCustomDataValidator(); diff --git a/Source/Patch/ContentLoaderPatcher.cs b/Source/Patch/ContentLoaderPatcher.cs index eb87cbc..5cc9833 100644 --- a/Source/Patch/ContentLoaderPatcher.cs +++ b/Source/Patch/ContentLoaderPatcher.cs @@ -31,7 +31,6 @@ public static void Unload() private static void OnArcherDataOnInitialize(On.TowerFall.ArcherData.orig_Initialize orig) { - Mod.LoadArcherContents(); orig(); Mod.Start(); } diff --git a/Source/Taunt/TauntVariant.cs b/Source/Taunt/TauntVariant.cs index cd454f7..90d2ee6 100644 --- a/Source/Taunt/TauntVariant.cs +++ b/Source/Taunt/TauntVariant.cs @@ -1,9 +1,7 @@ -using System; -using System.Collections.Generic; -using System.IO; using System.Reflection; using System.Xml; using FortRise; +using FortRise.IO; using Microsoft.Xna.Framework.Input; using Monocle; using MonoMod.RuntimeDetour; @@ -696,7 +694,7 @@ public static SFXVaried LoadVaried(string name) public static SFXLooped LoadLooped(string name) => Exists(name) ? new SFXLooped(name) : (SFXLooped) null; - private static bool Exists(string name) => File.Exists(Audio.LOAD_PREFIX + name + ".wav"); + private static bool Exists(string name) => ModIO.IsFileExists(Audio.LOAD_PREFIX + name + ".wav"); private static string VariedSuffix(int num) { From 966018772a73281f05102fd0030baaad9763b45d Mon Sep 17 00:00:00 2001 From: Terria-K Date: Mon, 16 Dec 2024 19:48:33 +0800 Subject: [PATCH 06/10] Removed Logger.Log --- Mod.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Mod.cs b/Mod.cs index 0b0d816..dd0449c 100644 --- a/Mod.cs +++ b/Mod.cs @@ -144,7 +144,6 @@ private static void OnPostLoadContent(FortContent content) allCustomArchers.AddRange(LoadContentAtPath(null, $"{_customArchersPath}", ContentAccess.Root)); string archerFolder = Path.Combine(content.MetadataPath, "Content", "Archers"); - Logger.Log(archerFolder); if (ModIO.IsDirectoryOrFileExists(archerFolder)) { From 787a4a529c4210edd0e38f6823f710ed0cce468d Mon Sep 17 00:00:00 2001 From: Terria-K Date: Mon, 16 Dec 2024 22:58:04 +0800 Subject: [PATCH 07/10] OnAfterLoadContent --- Mod.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Mod.cs b/Mod.cs index dd0449c..f744ec3 100644 --- a/Mod.cs +++ b/Mod.cs @@ -82,7 +82,7 @@ public static void Load() PortraitLayerPatch.Load(); PrismaticPatcher.Load(); TeamsPatcher.Load(); - RiseCore.Events.OnPostLoadContent += OnPostLoadContent; + RiseCore.Events.OnAfterLoadContent += OnAfterLoadContent; HandleQuickStart(); } @@ -138,7 +138,7 @@ void OnMainMenuOnUpdate(On.TowerFall.MainMenu.orig_Update orig, MainMenu self) On.TowerFall.MainMenu.Update += OnMainMenuOnUpdate; } - private static void OnPostLoadContent(FortContent content) + private static void OnAfterLoadContent(FortContent content) { allCustomArchers.AddRange(LoadContentAtPath(null, $"{Calc.LOADPATH}{_contentCustomArchersPath}", ContentAccess.Content)); allCustomArchers.AddRange(LoadContentAtPath(null, $"{_customArchersPath}", ContentAccess.Root)); @@ -613,7 +613,7 @@ public static void Unload() PrismaticPatcher.Unload(); TeamsPatcher.Unload(); - RiseCore.Events.OnPostLoadContent -= OnPostLoadContent; + RiseCore.Events.OnAfterLoadContent -= OnAfterLoadContent; } public static void OnVariantsRegister(VariantManager variants, bool noPerPlayer = false) From e004a4316d23aa538bc3938b7f74e7380954b28f Mon Sep 17 00:00:00 2001 From: Terria-K Date: Sat, 4 Jan 2025 16:01:43 +0800 Subject: [PATCH 08/10] Update AfterLoadContent to AfterModdedLoadContent --- Mod.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Mod.cs b/Mod.cs index f744ec3..ac7f7a8 100644 --- a/Mod.cs +++ b/Mod.cs @@ -82,7 +82,7 @@ public static void Load() PortraitLayerPatch.Load(); PrismaticPatcher.Load(); TeamsPatcher.Load(); - RiseCore.Events.OnAfterLoadContent += OnAfterLoadContent; + RiseCore.Events.OnAfterModdedLoadContent += OnAfterLoadContent; HandleQuickStart(); } @@ -613,7 +613,7 @@ public static void Unload() PrismaticPatcher.Unload(); TeamsPatcher.Unload(); - RiseCore.Events.OnAfterLoadContent -= OnAfterLoadContent; + RiseCore.Events.OnAfterModdedLoadContent -= OnAfterLoadContent; } public static void OnVariantsRegister(VariantManager variants, bool noPerPlayer = false) From 1f438eaeaeb008aebbcb679f13cdff4d2f78a5c2 Mon Sep 17 00:00:00 2001 From: Terria-K Date: Sun, 2 Feb 2025 21:05:49 +0800 Subject: [PATCH 09/10] Load the old way the correct way --- Mod.cs | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/Mod.cs b/Mod.cs index ac7f7a8..8f8d00c 100644 --- a/Mod.cs +++ b/Mod.cs @@ -140,8 +140,6 @@ void OnMainMenuOnUpdate(On.TowerFall.MainMenu.orig_Update orig, MainMenu self) private static void OnAfterLoadContent(FortContent content) { - allCustomArchers.AddRange(LoadContentAtPath(null, $"{Calc.LOADPATH}{_contentCustomArchersPath}", ContentAccess.Content)); - allCustomArchers.AddRange(LoadContentAtPath(null, $"{_customArchersPath}", ContentAccess.Root)); string archerFolder = Path.Combine(content.MetadataPath, "Content", "Archers"); @@ -154,6 +152,9 @@ private static void OnAfterLoadContent(FortContent content) public static void Start() { + allCustomArchers.AddRange(LoadContentAtPath(null, $"{Calc.LOADPATH}{_contentCustomArchersPath}", ContentAccess.Content)); + allCustomArchers.AddRange(LoadContentAtPath(null, $"{_customArchersPath}", ContentAccess.Root)); + var newNormalCustom = allCustomArchers.FindAll(a => a.ArcherType == ArcherData.ArcherTypes.Normal); var newAltCustom = allCustomArchers.FindAll(a => a.ArcherType == ArcherData.ArcherTypes.Alt); var newSecretCustom = allCustomArchers.FindAll(a => a.ArcherType == ArcherData.ArcherTypes.Secret); @@ -427,13 +428,35 @@ private static List LoadContent(FortContent content, string di atlas = AtlasExt.CreateAtlas($"{path}atlas.xml", $"{path}atlas.png"); customAtlasList.Add(atlas); } + else + { + // we fallback to the main atlas, incase the user uses the standard mod pathing. + atlas = TFGame.Atlas; + customAtlasList.Add(atlas); + } - if (!ModIO.IsDirectoryOrFileExists($"{path}spriteData.xml") || atlas == null) + // we'll need to provide a fallback for SpriteData as well, but due to how differs + // the spriteData is on ArcherLoader, this is not possible. + SpriteData spriteData; + if (!ModIO.IsDirectoryOrFileExists($"{path}spriteData.xml")) + { + // So, we might need to load it separately if it exists + var archerSpriteDataPath = Path.Combine(content.MetadataPath, "Content", "Atlas", "SpriteData", "spriteData.xml"); + if (ModIO.IsDirectoryOrFileExists(archerSpriteDataPath)) + { + spriteData = SpriteDataExt.CreateSpriteData(archerSpriteDataPath, atlas); + } + else + { + // Well, everything's invalid anyway + return newArchers; + } + } + else { - return newArchers; + spriteData = SpriteDataExt.CreateSpriteData($"{path}spriteData.xml", atlas); } - var spriteData = SpriteDataExt.CreateSpriteData($"{path}spriteData.xml", atlas); var sprites = DynamicData.For(spriteData).Get>("sprites"); if (sprites.Count > 0) @@ -475,6 +498,16 @@ private static List LoadContent(FortContent content, string di customSpriteDataList.Add(spriteDataMenu); customSpriteDataPath.Add(spriteDataMenu, $"{path}menuSpriteData.xml"); } + else + { + // we fallback if atlas does not exists incase if the user uses the standard mod loading. + // we would likely need to fallback the spriteData correctly since this is tied to the + // menuAtlas.png but for now, this should work + atlasArcherMenu = TFGame.MenuAtlas; + customAtlasList.Add(atlasArcherMenu); + spriteDataMenu = TFGame.MenuSpriteData; + customSpriteDataList.Add(spriteDataMenu); + } var filePath = $"{path}archerData.xml"; if (!ModIO.IsDirectoryOrFileExists(filePath)) return newArchers; From 6764e587818627e48fc680aa0a4ffcc8c2a4f831 Mon Sep 17 00:00:00 2001 From: Terria-K Date: Sat, 15 Mar 2025 00:42:31 +0800 Subject: [PATCH 10/10] SpriteData mapping --- Mod.cs | 5 ++++- Source/ArcherCustomData/ArcherCustomData.cs | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Mod.cs b/Mod.cs index 8f8d00c..62ea507 100644 --- a/Mod.cs +++ b/Mod.cs @@ -438,6 +438,7 @@ private static List LoadContent(FortContent content, string di // we'll need to provide a fallback for SpriteData as well, but due to how differs // the spriteData is on ArcherLoader, this is not possible. SpriteData spriteData; + SpriteData spriteData2; if (!ModIO.IsDirectoryOrFileExists($"{path}spriteData.xml")) { // So, we might need to load it separately if it exists @@ -445,6 +446,7 @@ private static List LoadContent(FortContent content, string di if (ModIO.IsDirectoryOrFileExists(archerSpriteDataPath)) { spriteData = SpriteDataExt.CreateSpriteData(archerSpriteDataPath, atlas); + spriteData2 = TFGame.SpriteData; } else { @@ -455,6 +457,7 @@ private static List LoadContent(FortContent content, string di else { spriteData = SpriteDataExt.CreateSpriteData($"{path}spriteData.xml", atlas); + spriteData2 = spriteData; } var sprites = DynamicData.For(spriteData).Get>("sprites"); @@ -512,7 +515,7 @@ private static List LoadContent(FortContent content, string di var filePath = $"{path}archerData.xml"; if (!ModIO.IsDirectoryOrFileExists(filePath)) return newArchers; var newArchersFromPack = - InitializeArcherData(path, atlas, atlasArcherMenu, spriteData, spriteDataMenu, archerName.ToUpper()); + InitializeArcherData(path, atlas, atlasArcherMenu, spriteData2, spriteDataMenu, archerName.ToUpper()); return newArchersFromPack; } diff --git a/Source/ArcherCustomData/ArcherCustomData.cs b/Source/ArcherCustomData/ArcherCustomData.cs index 4b771b8..49db0f1 100644 --- a/Source/ArcherCustomData/ArcherCustomData.cs +++ b/Source/ArcherCustomData/ArcherCustomData.cs @@ -4,6 +4,7 @@ using ArcherLoaderMod.Layers; using ArcherLoaderMod.Particles; using ArcherLoaderMod.Source.Layers.PortraitLayers; +using FortRise; using Microsoft.Xna.Framework; using Monocle; using TowerFall;