From 8dc78ff374391be3de3465dcec1c8515cd5a77f7 Mon Sep 17 00:00:00 2001 From: theHostileNegotiator <61142710+theHostileNegotiator@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:50:14 +1000 Subject: [PATCH] Added UpgradeTemplate --- README.md | 2 +- .../BinaryAssetBuilder/XmlCompiler/Plugin.cs | 9 +++ .../SageBinaryData/UpgradeTemplate.cs | 67 +++++++++---------- 3 files changed, 43 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index ac6bd345..3fc56306 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ BinaryAssetBuilder implementation for Kane's Wrath in .Net * [ ] ObjectCreationList 0x683D4DE5 * [ ] ObjectFilterAsset 0x25970AF7 * [ ] SpecialPowerTemplate 0x5EF0ACA9 -* [ ] UpgradeTemplate 0x1E53F384 +* [x] UpgradeTemplate * [ ] SkirmishOpeningMove 0x21EE29FA * [ ] AIStateDefinition 0x262BE85F * [ ] AIStrategicStateDefinition 0x1E27DA26 diff --git a/source/BinaryAssetBuilder.XmlCompiler/BinaryAssetBuilder/XmlCompiler/Plugin.cs b/source/BinaryAssetBuilder.XmlCompiler/BinaryAssetBuilder/XmlCompiler/Plugin.cs index 92c7f28d..ac5fddc5 100644 --- a/source/BinaryAssetBuilder.XmlCompiler/BinaryAssetBuilder/XmlCompiler/Plugin.cs +++ b/source/BinaryAssetBuilder.XmlCompiler/BinaryAssetBuilder/XmlCompiler/Plugin.cs @@ -142,6 +142,15 @@ public void Initialize(TargetPlatform platform) 0x6D59C409u, #endif false), + + + (typeof(UpgradeTemplate), +#if TIBERIUMWARS + 0x1E53F384u, +#elif KANESWRATH + 0x163BC89Du, +#endif + false), }) { CreateTypeInfo(type, num, hash, hasCustomData); diff --git a/source/SageBinaryData/SageBinaryData/UpgradeTemplate.cs b/source/SageBinaryData/SageBinaryData/UpgradeTemplate.cs index c37a0e64..fa3040ef 100644 --- a/source/SageBinaryData/SageBinaryData/UpgradeTemplate.cs +++ b/source/SageBinaryData/SageBinaryData/UpgradeTemplate.cs @@ -2,39 +2,38 @@ using System.Runtime.InteropServices; using AnsiString = Relo.String; -namespace SageBinaryData +namespace SageBinaryData; + +[StructLayout(LayoutKind.Sequential)] +public struct UpgradeTemplate { - [StructLayout(LayoutKind.Sequential)] - public struct UpgradeTemplate - { - public BaseInheritableAsset Base; - public AnsiString DisplayName; - public AnsiString Description; - public AnsiString TypeDescription; - public AnsiString AcquireHint; - public UpgradeType Type; - public Time BuildTime; - public int BuildCost; - public AssetReference ResearchSound; - public AnsiString ResearchCompleteEvaEvent; - public AssetReference UnitSpecificSound; - public AssetReference UpgradeFX; - public AnsiString LocalPlayerGainsUpgradeEvaEvent; - public AnsiString AlliedPlayerGainsUpgradeEvaEvent; - public AnsiString EnemyPlayerGainsUpgradeEvaEvent; - public AnsiString LocalPlayerLosesUpgradeEvaEvent; - public AnsiString AlliedPlayerLosesUpgradeEvaEvent; - public AnsiString EnemyPlayerLosesUpgradeEvaEvent; - public unsafe AnsiString* LocalPlayerProductionStartedEvaEvent; - public unsafe AnsiString* LocalPlayerBuildOnHoldEvaEvent; - public unsafe AnsiString* LocalPlayerBuildCancelledEvaEvent; - public TypedAssetId UseObjectTemplateForCostDiscount; // should be TypedAssetId but .net thinks it might be a circular reference - public AnsiString GroupName; - public uint GroupOrder; - public AIUpgradeHeuristicType SkirmishAIHeuristic; - public UpgradeOptions Options; - public AnsiString IconImage; - public unsafe GameDependencyType* GameDependency; - public SageBool WaypointQueueable; - } + public BaseInheritableAsset Base; + public AnsiString DisplayName; + public AnsiString Description; + public AnsiString TypeDescription; + public AnsiString AcquireHint; + public UpgradeType Type; + public Time BuildTime; + public int BuildCost; + public AssetReference ResearchSound; + public AnsiString ResearchCompleteEvaEvent; + public AssetReference UnitSpecificSound; + public AssetReference UpgradeFX; + public AnsiString LocalPlayerGainsUpgradeEvaEvent; + public AnsiString AlliedPlayerGainsUpgradeEvaEvent; + public AnsiString EnemyPlayerGainsUpgradeEvaEvent; + public AnsiString LocalPlayerLosesUpgradeEvaEvent; + public AnsiString AlliedPlayerLosesUpgradeEvaEvent; + public AnsiString EnemyPlayerLosesUpgradeEvaEvent; + public unsafe AnsiString* LocalPlayerProductionStartedEvaEvent; + public unsafe AnsiString* LocalPlayerBuildOnHoldEvaEvent; + public unsafe AnsiString* LocalPlayerBuildCancelledEvaEvent; + public TypedAssetId UseObjectTemplateForCostDiscount; // should be TypedAssetId but .net thinks it might be a circular reference + public AnsiString GroupName; + public uint GroupOrder; + public AIUpgradeHeuristicType SkirmishAIHeuristic; + public UpgradeOptions Options; + public AnsiString IconImage; + public unsafe GameDependencyType* GameDependency; + public SageBool WaypointQueueable; }