From 766b2e414b907163c1fd34f3b22b1aa8ae51a9e2 Mon Sep 17 00:00:00 2001 From: Mueller Wayan Date: Mon, 21 Apr 2025 19:19:26 +0200 Subject: [PATCH] Modified Logger --- .vs/Firebird2D/DesignTimeBuild/.dtbcache.v2 | Bin 189448 -> 189448 bytes .vs/Firebird2D/v17/.futdcache.v2 | Bin 1913 -> 1913 bytes .vs/Firebird2D/v17/.suo | Bin 138752 -> 156160 bytes .vs/Firebird2D/v17/DocumentLayout.json | 266 +++++++++++++----- .../firebird2d.metadata.v8.bin | Bin 2953 -> 2957 bytes .../firebird2d.projects.v8.bin | Bin 608303 -> 635694 bytes .../firebird2d.strings.v8.bin | Bin 158596 -> 158765 bytes .../Firebird2D.Interfaces.csproj | 9 + FireBird2D.Interfaces/IGame.cs | 13 + Firebird2D.Logger/Firebird2D.Logger.csproj | 4 + Firebird2D.Logger/GameLogger.cs | 74 +++-- Firebird2D.Logger/ILogger.cs | 28 ++ .../net8.0/Firebird2D.Logger.AssemblyInfo.cs | 2 +- ...Firebird2D.Logger.AssemblyInfoInputs.cache | 2 +- ...Firebird2D.Logger.csproj.nuget.dgspec.json | 81 +++++- Firebird2D.Logger/obj/project.assets.json | 31 +- Firebird2D.Logger/obj/project.nuget.cache | 2 +- Firebird2D.Requirement/Require.cs | 58 +++- .../Firebird2D.Requirement.AssemblyInfo.cs | 2 +- ...ird2D.Requirement.AssemblyInfoInputs.cache | 2 +- .../Firebird2D.Requirement.assets.cache | Bin 228 -> 365 bytes ...ird2D.Requirement.csproj.nuget.dgspec.json | 73 ++++- .../obj/project.assets.json | 18 ++ .../obj/project.nuget.cache | 2 +- .../Firebird2D.SFMLExtensions.AssemblyInfo.cs | 2 +- ...2D.SFMLExtensions.AssemblyInfoInputs.cache | 2 +- Firebird2D.sln | 8 +- Firebird2D/Configuration/GameConfig.cs | 4 +- .../Debug/net8.0/Firebird2D.AssemblyInfo.cs | 2 +- .../Firebird2D.AssemblyInfoInputs.cache | 2 +- .../obj/Debug/net8.0/Firebird2D.assets.cache | Bin 66629 -> 66731 bytes .../obj/Firebird2D.csproj.nuget.dgspec.json | 73 ++++- Firebird2D/obj/project.assets.json | 18 ++ Firebird2D/obj/project.nuget.cache | 2 +- 34 files changed, 652 insertions(+), 128 deletions(-) create mode 100644 FireBird2D.Interfaces/Firebird2D.Interfaces.csproj create mode 100644 FireBird2D.Interfaces/IGame.cs create mode 100644 Firebird2D.Logger/ILogger.cs diff --git a/.vs/Firebird2D/DesignTimeBuild/.dtbcache.v2 b/.vs/Firebird2D/DesignTimeBuild/.dtbcache.v2 index 5a113d9e4d9f0137ffb77f1444dbd383b34848e6..b2f1499ed5e5c7865d036aeb025351834cad7667 100644 GIT binary patch literal 189448 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 literal 189448 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 diff --git a/.vs/Firebird2D/v17/.futdcache.v2 b/.vs/Firebird2D/v17/.futdcache.v2 index 58a806a791c305455b4962e759582480fb780a5f..1476eae48f268edc83710df6b75d5669124f77de 100644 GIT binary patch delta 23 fcmey#_mgi!0vp%L_DE=icvp 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 delta 7704 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 S+PL}tEaztUQ#yGc*LeV&c^9z& diff --git a/.vs/ProjectEvaluation/firebird2d.projects.v8.bin b/.vs/ProjectEvaluation/firebird2d.projects.v8.bin index 21be9672ec7adfec577056611bf8a7141daaec8b..a1d5214acfeb051d741e4ec92ecee3cf0c5c6a4b 100644 GIT binary patch delta 134 zcmZ2KL3Q0TwT2eP7N!>F7M2#)7Pc1l7LF~P`X194M6t1|3NbJ+C@>qX-RdW;y})Tf ztVjHkwEawKZPv^ISF7M2#)7Pc1l7LF~P`W^t28VMHw diff --git a/.vs/ProjectEvaluation/firebird2d.strings.v8.bin b/.vs/ProjectEvaluation/firebird2d.strings.v8.bin index 3a4d4ec1a981d49153c567befa8ffaf56f6b4d22..b9682f676191691240c65345856d9fd6824b4ff9 100644 GIT binary patch delta 173 zcmZp<&bjsmCo3Zl1B2sq#ZQcClbpGxpZU$m-RRKjz_`_c$t7FH(6uZzuf(w^y)+j{ z7st3|7NsU-7NvOQR~An{o5iG-4ioWCt%Rv9)=MtdgK^L_`sSAwr#h9El;r2ZRDhH# Vz&KFlo_PhOC1A0T%7Rp&0sxZLL1zE} delta 35 rcmZ2`gR|v2C+lBs1_sCJik}$OCOLCWKl7WByV0T5fpMz?lS?)L?==jF diff --git a/FireBird2D.Interfaces/Firebird2D.Interfaces.csproj b/FireBird2D.Interfaces/Firebird2D.Interfaces.csproj new file mode 100644 index 0000000..fa71b7a --- /dev/null +++ b/FireBird2D.Interfaces/Firebird2D.Interfaces.csproj @@ -0,0 +1,9 @@ + + + + net8.0 + enable + enable + + + diff --git a/FireBird2D.Interfaces/IGame.cs b/FireBird2D.Interfaces/IGame.cs new file mode 100644 index 0000000..63de045 --- /dev/null +++ b/FireBird2D.Interfaces/IGame.cs @@ -0,0 +1,13 @@ +using Firebird2D.Interfaces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Firebird2D.Interfaces +{ + public interface IGame + { + } +} diff --git a/Firebird2D.Logger/Firebird2D.Logger.csproj b/Firebird2D.Logger/Firebird2D.Logger.csproj index fa71b7a..0e7576a 100644 --- a/Firebird2D.Logger/Firebird2D.Logger.csproj +++ b/Firebird2D.Logger/Firebird2D.Logger.csproj @@ -6,4 +6,8 @@ enable + + + + diff --git a/Firebird2D.Logger/GameLogger.cs b/Firebird2D.Logger/GameLogger.cs index 0608647..60f48cb 100644 --- a/Firebird2D.Logger/GameLogger.cs +++ b/Firebird2D.Logger/GameLogger.cs @@ -1,4 +1,5 @@ -using System; +using Firebird2D.Interfaces; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -6,51 +7,72 @@ using System.Threading.Tasks; namespace Firebird2D.Logger { - public enum LogType - { - Info, - Warning, - Error - } - public static class GameLogger + public class GameLogger : ILogger { - private static readonly string LogFilePath = "Logs/Log.txt"; + private string LogFilePath = "Logs/"; - public static bool logActive { get { return _logActive; } set { _logActive = value; if (value == false) Log("Logger", LogType.Info, "Log Deactivated"); } } + public bool LogActive { get { return _logActive; } set { _logActive = value; if (value == false) Log("Logger", LogType.Info, "Log Deactivated"); } } - private static bool _logActive = true; + private bool _logActive = true; - public static void Initalize() + private FileStream? fileStream; + + private readonly object _fileLock = new(); + + private static readonly List instances = []; + + public int InstanceNumber { get; private set; } + + private GameLogger(int instanceNumber, string instanceName) + { + LogFilePath += $"Log_{instanceName}.txt"; + InstanceNumber = instanceNumber; + Initalize(); + } + + public static ILogger GetNewInstance(string instanceName) + { + GameLogger instance = new(instances.Count, instanceName); + instances.Add(instance); + return instance; + } + + public static ILogger GetInstance(int instanceNumber) + { + return instances[instanceNumber]; + } + + private void Initalize() { if (!Directory.Exists("Logs")) { Directory.CreateDirectory("Logs"); - - using (FileStream fileStream = File.Open(LogFilePath, FileMode.OpenOrCreate | FileMode.Append)) - { - AddText(fileStream, "===================" + System.DateTime.Today.ToString("dd,MM,yy") + "==================="); - } } + fileStream = File.Open(LogFilePath, FileMode.OpenOrCreate | FileMode.Append, FileAccess.Write, FileShare.Read); + + lock (_fileLock) + { + AddText(fileStream, "===================" + DateTime.Now.ToString("dd.MM.yy HH:mm:ss") + "===================" + Environment.NewLine); + } } - public static void Log(string loggingInstance, LogType type, string message) + public void Log(string loggingInstance, LogType type, string message) { - if (_logActive) - { - using (FileStream fileStream = File.Open(LogFilePath, FileMode.OpenOrCreate | FileMode.Append)) + if (_logActive && fileStream != null) + { + lock (_fileLock) { - AddText(fileStream, type.ToString("g") + ": " + loggingInstance + " -> " + message); - fileStream.Close(); + AddText(fileStream, $"{DateTime.Now:HH:mm:ss} {type}: {loggingInstance} -> {message}{Environment.NewLine}"); } - } } + private static void AddText(FileStream fs, string value) { - byte[] info = new UTF8Encoding(true).GetBytes(value); - fs.Write(info, 0, info.Length); + using StreamWriter writer = new(fs, Encoding.UTF8, 1024, leaveOpen: true); + writer.Write(value); } } } diff --git a/Firebird2D.Logger/ILogger.cs b/Firebird2D.Logger/ILogger.cs new file mode 100644 index 0000000..8cc0135 --- /dev/null +++ b/Firebird2D.Logger/ILogger.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Firebird2D.Logger +{ + public enum LogType + { + Info, + Warning, + Error + } + + public interface ILogger + { + public bool LogActive { get; set; } + + public int InstanceNumber { get; } + + public abstract static ILogger GetNewInstance(string instanceName); + + public abstract static ILogger GetInstance(int instanceNumber); + + public void Log(string loggingInstance, LogType type, string message); + } +} diff --git a/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfo.cs b/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfo.cs index 1692793..cb3582b 100644 --- a/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfo.cs +++ b/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b4d5afc4ba4c2fb1fde6fb769da0e6c84003d734")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+51493135dfc8aa77e4285d80e32310c1f02be5b0")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfoInputs.cache b/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfoInputs.cache index b52536c..ac2441c 100644 --- a/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfoInputs.cache +++ b/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfoInputs.cache @@ -1 +1 @@ -affe20a17e8e88d1b9a30dd26c0c5847166b5692d8b48ab665b103d74ddc8438 +112eff4245416fbc9f49d96f1eeefaf18aad8e2f51adfc91c39b7f223783ed14 diff --git a/Firebird2D.Logger/obj/Firebird2D.Logger.csproj.nuget.dgspec.json b/Firebird2D.Logger/obj/Firebird2D.Logger.csproj.nuget.dgspec.json index 1ce3d90..0b859c4 100644 --- a/Firebird2D.Logger/obj/Firebird2D.Logger.csproj.nuget.dgspec.json +++ b/Firebird2D.Logger/obj/Firebird2D.Logger.csproj.nuget.dgspec.json @@ -4,14 +4,14 @@ "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj": {} }, "projects": { - "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj": { + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", - "projectName": "Firebird2D.Logger", - "projectPath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", + "projectUniqueName": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", + "projectName": "Firebird2D.Interfaces", + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", "packagesPath": "C:\\Users\\wayan\\.nuget\\packages\\", - "outputPath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\obj\\", + "outputPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -70,6 +70,77 @@ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json" } } + }, + "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", + "projectName": "Firebird2D.Logger", + "projectPath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", + "packagesPath": "C:\\Users\\wayan\\.nuget\\packages\\", + "outputPath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\wayan\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\Infrastructure\\Packages": {}, + "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\References": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json" + } + } } } } \ No newline at end of file diff --git a/Firebird2D.Logger/obj/project.assets.json b/Firebird2D.Logger/obj/project.assets.json index 0d852b0..a42ba01 100644 --- a/Firebird2D.Logger/obj/project.assets.json +++ b/Firebird2D.Logger/obj/project.assets.json @@ -1,11 +1,30 @@ { "version": 3, "targets": { - "net8.0": {} + "net8.0": { + "Firebird2D.Interfaces/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/Firebird2D.Interfaces.dll": {} + }, + "runtime": { + "bin/placeholder/Firebird2D.Interfaces.dll": {} + } + } + } + }, + "libraries": { + "Firebird2D.Interfaces/1.0.0": { + "type": "project", + "path": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj", + "msbuildProject": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj" + } }, - "libraries": {}, "projectFileDependencyGroups": { - "net8.0": [] + "net8.0": [ + "Firebird2D.Interfaces >= 1.0.0" + ] }, "packageFolders": { "C:\\Users\\wayan\\.nuget\\packages\\": {}, @@ -41,7 +60,11 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": {} + "projectReferences": { + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj" + } + } } }, "warningProperties": { diff --git a/Firebird2D.Logger/obj/project.nuget.cache b/Firebird2D.Logger/obj/project.nuget.cache index c784785..3d6821f 100644 --- a/Firebird2D.Logger/obj/project.nuget.cache +++ b/Firebird2D.Logger/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "tcqAw3429hg=", + "dgSpecHash": "DP1d2KMGQuQ=", "success": true, "projectFilePath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", "expectedPackageFiles": [], diff --git a/Firebird2D.Requirement/Require.cs b/Firebird2D.Requirement/Require.cs index b68288d..a541080 100644 --- a/Firebird2D.Requirement/Require.cs +++ b/Firebird2D.Requirement/Require.cs @@ -1,16 +1,64 @@ -using Firebird2D.Logger; + +using Firebird2D.Logger; using System.Runtime.CompilerServices; namespace Firebird2D.Requirement { public class Require { - public static void NotNull(object input, string name, [CallerMemberName] string callerName = "", [CallerFilePath] string callerPath = "", [CallerLineNumber] int callerLineNumber = 0) + public static void NotNull(object input, string name, int loggerInstanceNumber, + [CallerMemberName] string callerName = "", + [CallerFilePath] string callerPath = "", + [CallerLineNumber] int callerLineNumber = 0) { - if (input == null) { - GameLogger.Log(callerName, LogType.Error, string.Format("{0}, was Null at Line {1} in {2} from {3}.", name, callerLineNumber, callerName, callerPath)); - throw new ArgumentNullException(string.Format("{0}, was Null at Line {1} in {2} from {3}.", name, callerLineNumber, callerName, callerPath)); + if (input == null) + { + LogAndThrow(loggerInstanceNumber, callerName, callerPath, callerLineNumber, + $"{name} was null."); } } + + public static void NotEmpty(string input, string name, int loggerInstanceNumber, + [CallerMemberName] string callerName = "", + [CallerFilePath] string callerPath = "", + [CallerLineNumber] int callerLineNumber = 0) + { + if (string.IsNullOrEmpty(input)) + { + LogAndThrow(loggerInstanceNumber, callerName, callerPath, callerLineNumber, + $"{name} must not be null or empty."); + } + } + + public static void Range(int value, int min, int max, string name, int loggerInstanceNumber, + [CallerMemberName] string callerName = "", + [CallerFilePath] string callerPath = "", + [CallerLineNumber] int callerLineNumber = 0) + { + if (value < min || value > max) + { + LogAndThrow(loggerInstanceNumber, callerName, callerPath, callerLineNumber, + $"{name} must be in range [{min}, {max}], but was {value}."); + } + } + + public static void IsTrue(bool condition, string message, int loggerInstanceNumber, + [CallerMemberName] string callerName = "", + [CallerFilePath] string callerPath = "", + [CallerLineNumber] int callerLineNumber = 0) + { + if (!condition) + { + LogAndThrow(loggerInstanceNumber, callerName, callerPath, callerLineNumber, message); + } + } + + private static void LogAndThrow(int loggerInstanceNumber, string callerName, string callerPath, int lineNumber, string message) + { + string fullMessage = $"{message} (at {callerName} in {callerPath}, line {lineNumber})"; + + GameLogger.GetInstance(loggerInstanceNumber).Log(callerName, LogType.Error, fullMessage); + throw new ArgumentException(fullMessage); + } } } diff --git a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfo.cs b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfo.cs index ff3bece..bd35599 100644 --- a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfo.cs +++ b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b4d5afc4ba4c2fb1fde6fb769da0e6c84003d734")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+51493135dfc8aa77e4285d80e32310c1f02be5b0")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfoInputs.cache b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfoInputs.cache index 8545fac..d9504b1 100644 --- a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfoInputs.cache +++ b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfoInputs.cache @@ -1 +1 @@ -e39a5a8fa70529a2443df64310c68b2a15058d3b8161dad3c45da459c8bf1c38 +40d7aae7c923ca3d4454d246c52e8a64820bf9653fadbe515530b8637584741e diff --git a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.assets.cache b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.assets.cache index 85afab9414eeb6717e09fe82a4503d0c2e9b3911..3b15747bae1d9348fcbbed3787165fd5a8fdfb8a 100644 GIT binary patch delta 169 zcmaFD_?Bsc29p-!L__6?4(t;{TIv}Y7#K|T^kUpHi&C93i&BhS^gQ!QQj5|OlT(Yq zqDknYddbBFMfq7wK%F1}G6BS9262FZ1&I0lO5IaS0uqz66Vp>YQ$#_gW0)fhR3rvh S6_#35oSC1;YN%(RX8-`$^e?ag delta 20 ccmaFM^n`JO2IGT?hRPEiI3|X)OmyG@091?zasU7T diff --git a/Firebird2D.Requirement/obj/Firebird2D.Requirement.csproj.nuget.dgspec.json b/Firebird2D.Requirement/obj/Firebird2D.Requirement.csproj.nuget.dgspec.json index ecf7b85..a0e3149 100644 --- a/Firebird2D.Requirement/obj/Firebird2D.Requirement.csproj.nuget.dgspec.json +++ b/Firebird2D.Requirement/obj/Firebird2D.Requirement.csproj.nuget.dgspec.json @@ -4,6 +4,73 @@ "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Firebird2D.Requirement.csproj": {} }, "projects": { + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", + "projectName": "Firebird2D.Interfaces", + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", + "packagesPath": "C:\\Users\\wayan\\.nuget\\packages\\", + "outputPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\wayan\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\Infrastructure\\Packages": {}, + "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\References": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json" + } + } + }, "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj": { "version": "1.0.0", "restore": { @@ -34,7 +101,11 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": {} + "projectReferences": { + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj" + } + } } }, "warningProperties": { diff --git a/Firebird2D.Requirement/obj/project.assets.json b/Firebird2D.Requirement/obj/project.assets.json index 59992ea..66e28ea 100644 --- a/Firebird2D.Requirement/obj/project.assets.json +++ b/Firebird2D.Requirement/obj/project.assets.json @@ -2,9 +2,22 @@ "version": 3, "targets": { "net8.0": { + "Firebird2D.Interfaces/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/Firebird2D.Interfaces.dll": {} + }, + "runtime": { + "bin/placeholder/Firebird2D.Interfaces.dll": {} + } + }, "Firebird2D.Logger/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "Firebird2D.Interfaces": "1.0.0" + }, "compile": { "bin/placeholder/Firebird2D.Logger.dll": {} }, @@ -15,6 +28,11 @@ } }, "libraries": { + "Firebird2D.Interfaces/1.0.0": { + "type": "project", + "path": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj", + "msbuildProject": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj" + }, "Firebird2D.Logger/1.0.0": { "type": "project", "path": "../Firebird2D.Logger/Firebird2D.Logger.csproj", diff --git a/Firebird2D.Requirement/obj/project.nuget.cache b/Firebird2D.Requirement/obj/project.nuget.cache index 9693734..7b6690a 100644 --- a/Firebird2D.Requirement/obj/project.nuget.cache +++ b/Firebird2D.Requirement/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "Cnwm1cp4iIM=", + "dgSpecHash": "UvsIOKD4Be8=", "success": true, "projectFilePath": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Firebird2D.Requirement.csproj", "expectedPackageFiles": [], diff --git a/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfo.cs b/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfo.cs index 5bce199..f15009f 100644 --- a/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfo.cs +++ b/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b4d5afc4ba4c2fb1fde6fb769da0e6c84003d734")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+51493135dfc8aa77e4285d80e32310c1f02be5b0")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfoInputs.cache b/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfoInputs.cache index ccb5cd9..b33eb8a 100644 --- a/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfoInputs.cache +++ b/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfoInputs.cache @@ -1 +1 @@ -cc9869897aeaa6a5dfabc87ead78ab52b0a4f6484df7ba1391f0a03cd3a7749c +fa9b95393a1d4670d93070836ffe1fceddd4879784341915bf008e4e9f86cbb7 diff --git a/Firebird2D.sln b/Firebird2D.sln index e119f4f..801de71 100644 --- a/Firebird2D.sln +++ b/Firebird2D.sln @@ -18,7 +18,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentat EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Firebird2D.EventPipelines", "Firebird2D.EventPipelines\Firebird2D.EventPipelines.csproj", "{FB2B6835-02BF-4AE7-B85F-290472787ED3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebird2D.KeyMapping", "Firebird2D.KeyMapper\Firebird2D.KeyMapping.csproj", "{38CCA723-C113-4E44-B074-F9B709B0EEB4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Firebird2D.KeyMapping", "Firebird2D.KeyMapper\Firebird2D.KeyMapping.csproj", "{38CCA723-C113-4E44-B074-F9B709B0EEB4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebird2D.Interfaces", "FireBird2D.Interfaces\Firebird2D.Interfaces.csproj", "{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -50,6 +52,10 @@ Global {38CCA723-C113-4E44-B074-F9B709B0EEB4}.Debug|Any CPU.Build.0 = Debug|Any CPU {38CCA723-C113-4E44-B074-F9B709B0EEB4}.Release|Any CPU.ActiveCfg = Release|Any CPU {38CCA723-C113-4E44-B074-F9B709B0EEB4}.Release|Any CPU.Build.0 = Release|Any CPU + {7F6F9690-3BD3-4D44-BE62-3A7282DA671D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F6F9690-3BD3-4D44-BE62-3A7282DA671D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F6F9690-3BD3-4D44-BE62-3A7282DA671D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F6F9690-3BD3-4D44-BE62-3A7282DA671D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Firebird2D/Configuration/GameConfig.cs b/Firebird2D/Configuration/GameConfig.cs index 4f5e758..7267be8 100644 --- a/Firebird2D/Configuration/GameConfig.cs +++ b/Firebird2D/Configuration/GameConfig.cs @@ -14,7 +14,7 @@ namespace Firebird2D.Configuration public bool FullScreen { get { return _fullScreen; } set { _fullScreen = value; updateConfig(); } } - public bool LogActive { get { return _logActive; } set { _logActive = value; GameLogger.logActive = value; updateConfig(); } } + public bool LogActive { get { return _logActive; } set { _logActive = value; GameLogger.LogActive = value; updateConfig(); } } private static readonly string ConfigSchema = "Configuration/ConfigurationSchema/ConfigSchema.json"; @@ -61,7 +61,7 @@ namespace Firebird2D.Configuration _videoMode.Height = uint.Parse(_configurationSection["ScreenResolution:y"]); _fullScreen = bool.Parse(_configurationSection["Fullscreen"]); _logActive = bool.Parse(_configurationSection["Log"]); - GameLogger.logActive = _logActive; + GameLogger.LogActive = _logActive; } catch(Exception ex) { diff --git a/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfo.cs b/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfo.cs index 92d98be..a33ff92 100644 --- a/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfo.cs +++ b/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b4d5afc4ba4c2fb1fde6fb769da0e6c84003d734")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+51493135dfc8aa77e4285d80e32310c1f02be5b0")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfoInputs.cache b/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfoInputs.cache index ec709c2..2565287 100644 --- a/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfoInputs.cache +++ b/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfoInputs.cache @@ -1 +1 @@ -c0a24d86bf21784cd90312be0fc44d53210fd1ff433ae25e4a8ab483ba3e79a7 +9d9bedf3152c73b5d358c9740a2af87d4522a5c313195cccdcb155cc37e3b9c4 diff --git a/Firebird2D/obj/Debug/net8.0/Firebird2D.assets.cache b/Firebird2D/obj/Debug/net8.0/Firebird2D.assets.cache index 65711478d780e188f88c88c566835addb996dd32..e8747d34c0ad1fb53dd907349ecfef4d57af6f63 100644 GIT binary patch delta 141 zcmX@w!LquOWr7A<|8xchMuy1(ZAu#h-cAcX(32=? delta 38 pcmZ48$#S%VWr7Bq>vRSNMuy1(ZAu#h-cI9WfC9PA6Q=*q0RY~n3t#{M diff --git a/Firebird2D/obj/Firebird2D.csproj.nuget.dgspec.json b/Firebird2D/obj/Firebird2D.csproj.nuget.dgspec.json index f7d2634..897d85e 100644 --- a/Firebird2D/obj/Firebird2D.csproj.nuget.dgspec.json +++ b/Firebird2D/obj/Firebird2D.csproj.nuget.dgspec.json @@ -77,6 +77,73 @@ } } }, + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", + "projectName": "Firebird2D.Interfaces", + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", + "packagesPath": "C:\\Users\\wayan\\.nuget\\packages\\", + "outputPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\wayan\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\Infrastructure\\Packages": {}, + "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\References": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json" + } + } + }, "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj": { "version": "1.0.0", "restore": { @@ -178,7 +245,11 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": {} + "projectReferences": { + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj" + } + } } }, "warningProperties": { diff --git a/Firebird2D/obj/project.assets.json b/Firebird2D/obj/project.assets.json index bbf0d54..349054a 100644 --- a/Firebird2D/obj/project.assets.json +++ b/Firebird2D/obj/project.assets.json @@ -1056,6 +1056,16 @@ "bin/placeholder/Firebird2D.EventPipelines.dll": {} } }, + "Firebird2D.Interfaces/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/Firebird2D.Interfaces.dll": {} + }, + "runtime": { + "bin/placeholder/Firebird2D.Interfaces.dll": {} + } + }, "Firebird2D.KeyMapping/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", @@ -1072,6 +1082,9 @@ "Firebird2D.Logger/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "Firebird2D.Interfaces": "1.0.0" + }, "compile": { "bin/placeholder/Firebird2D.Logger.dll": {} }, @@ -1790,6 +1803,11 @@ "path": "../Firebird2D.EventPipelines/Firebird2D.EventPipelines.csproj", "msbuildProject": "../Firebird2D.EventPipelines/Firebird2D.EventPipelines.csproj" }, + "Firebird2D.Interfaces/1.0.0": { + "type": "project", + "path": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj", + "msbuildProject": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj" + }, "Firebird2D.KeyMapping/1.0.0": { "type": "project", "path": "../Firebird2D.KeyMapper/Firebird2D.KeyMapping.csproj", diff --git a/Firebird2D/obj/project.nuget.cache b/Firebird2D/obj/project.nuget.cache index 0314e33..9d24d44 100644 --- a/Firebird2D/obj/project.nuget.cache +++ b/Firebird2D/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "TRKtJseqRqc=", + "dgSpecHash": "62iPCpiCzS8=", "success": true, "projectFilePath": "G:\\Coding\\Firebird2D\\Firebird2D\\Firebird2D.csproj", "expectedPackageFiles": [