Skip to content

Commit b1c7990

Browse files
committed
implement xref and models check for gameobjects
1 parent f4e373e commit b1c7990

18 files changed

Lines changed: 195 additions & 160 deletions

src/ModVerify/DefaultGameVerifiersProvider.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
using System.Collections.Generic;
33
using AET.ModVerify.Settings;
44
using AET.ModVerify.Verifiers;
5+
using AET.ModVerify.Verifiers.CommandBar;
6+
using AET.ModVerify.Verifiers.GameObjects;
57
using AET.ModVerify.Verifiers.GuiDialogs;
68
using AET.ModVerify.Verifiers.SfxEvents;
79
using PG.StarWarsGame.Engine;
@@ -11,14 +13,14 @@ namespace AET.ModVerify;
1113
public sealed class DefaultGameVerifiersProvider : IGameVerifiersProvider
1214
{
1315
public IEnumerable<GameVerifier> GetVerifiers(
14-
IStarWarsGameEngine database,
16+
IStarWarsGameEngine gameEngine,
1517
GameVerifySettings settings,
1618
IServiceProvider serviceProvider)
1719
{
1820
//yield break;
19-
yield return new ReferencedModelsVerifier(database, settings, serviceProvider);
20-
yield return new SfxEventVerifier(database, settings, serviceProvider);
21-
yield return new GuiDialogsVerifier(database, settings, serviceProvider);
22-
yield return new CommandBarVerifier(database, settings, serviceProvider);
21+
yield return new SfxEventVerifier(gameEngine, settings, serviceProvider);
22+
yield return new GuiDialogsVerifier(gameEngine, settings, serviceProvider);
23+
yield return new GameObjectTypeVerifier(gameEngine, settings, serviceProvider);
24+
yield return new CommandBarVerifier(gameEngine, settings, serviceProvider);
2325
}
2426
}

src/ModVerify/GameVerifyPipeline.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using AET.ModVerify.Settings;
1212
using AET.ModVerify.Utilities;
1313
using AET.ModVerify.Verifiers;
14+
using AET.ModVerify.Verifiers.Engine;
1415
using AET.ModVerify.Verifiers.Utilities;
1516
using AnakinRaW.CommonUtilities.SimplePipeline;
1617
using AnakinRaW.CommonUtilities.SimplePipeline.Runners;

src/ModVerify/IGameVerifiersProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace AET.ModVerify;
99
public interface IGameVerifiersProvider
1010
{
1111
IEnumerable<GameVerifier> GetVerifiers(
12-
IStarWarsGameEngine database,
12+
IStarWarsGameEngine gameEngine,
1313
GameVerifySettings settings,
1414
IServiceProvider serviceProvider);
1515
}

src/ModVerify/ModVerify.csproj.DotSettings

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=reporting_005Creporters_005Cjson/@EntryIndexedValue">True</s:Boolean>
55
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=reporting_005Creporters_005Ctext/@EntryIndexedValue">True</s:Boolean>
66
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=reporting_005Csuppressions_005Cjson/@EntryIndexedValue">False</s:Boolean>
7-
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Ccommandbar/@EntryIndexedValue">True</s:Boolean>
7+
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Ccommandbar/@EntryIndexedValue">False</s:Boolean>
88
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Ccommons_005Caudio/@EntryIndexedValue">True</s:Boolean>
99
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Ccommons_005Cduplicates/@EntryIndexedValue">True</s:Boolean>
1010
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Cdatabaseerror/@EntryIndexedValue">True</s:Boolean>
11-
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Cengine/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
11+
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Cengine/@EntryIndexedValue">True</s:Boolean>
12+
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=verifiers_005Csfxevents/@EntryIndexedValue">False</s:Boolean></wpf:ResourceDictionary>

src/ModVerify/Verifiers/GameEngineErrorCollector.cs renamed to src/ModVerify/Verifiers/Engine/GameEngineErrorCollector.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using AET.ModVerify.Settings;
77
using PG.StarWarsGame.Engine;
88

9-
namespace AET.ModVerify.Verifiers;
9+
namespace AET.ModVerify.Verifiers.Engine;
1010

1111
public sealed class GameEngineErrorCollector(
1212
IGameEngineErrorCollection errorCollection,

src/ModVerify/Verifiers/CommandBar/CommandBarVerifier.Components.cs renamed to src/ModVerify/Verifiers/GameObjects/CommandBar/CommandBarVerifier.Components.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
using AET.ModVerify.Reporting;
1+
using System;
2+
using System.Linq;
3+
using AET.ModVerify.Reporting;
24
using PG.StarWarsGame.Engine.CommandBar;
35
using PG.StarWarsGame.Engine.CommandBar.Components;
4-
using System;
5-
using System.Linq;
66

7-
namespace AET.ModVerify.Verifiers;
7+
namespace AET.ModVerify.Verifiers.CommandBar;
88

99
partial class CommandBarVerifier
1010
{
1111
private void VerifyCommandBarComponents()
1212
{
13-
var occupiedComponentIds = SupportedCommandBarComponentData.GetComponentIdsForEngine(Repository.EngineType).Keys
13+
var occupiedComponentIds = SupportedCommandBarComponentData
14+
.GetComponentIdsForEngine(Repository.EngineType).Keys
1415
.ToDictionary(value => value, _ => false);
1516

1617
foreach (var component in GameEngine.CommandBar.Components)
@@ -32,7 +33,7 @@ private void VerifyCommandBarComponents()
3233
if (alreadyOccupied)
3334
{
3435
AddError(VerificationError.Create(VerifierChain,
35-
CommandBarDuplicateComponent,
36+
VerifierErrorCodes.Duplicate,
3637
$"The CommandBar component '{component.Name}' with ID '{component.Id}' already exists.",
3738
VerificationSeverity.Warning,
3839
component.Name));

src/ModVerify/Verifiers/CommandBar/CommandBarVerifier.Groups.cs renamed to src/ModVerify/Verifiers/GameObjects/CommandBar/CommandBarVerifier.Groups.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using PG.StarWarsGame.Engine.CommandBar;
55
using PG.StarWarsGame.Engine.CommandBar.Components;
66

7-
namespace AET.ModVerify.Verifiers;
7+
namespace AET.ModVerify.Verifiers.CommandBar;
88

99
partial class CommandBarVerifier
1010
{

src/ModVerify/Verifiers/CommandBar/CommandBarVerifier.Base.cs renamed to src/ModVerify/Verifiers/GameObjects/CommandBar/CommandBarVerifier.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,25 @@
33
using AET.ModVerify.Settings;
44
using PG.StarWarsGame.Engine;
55

6-
namespace AET.ModVerify.Verifiers;
6+
namespace AET.ModVerify.Verifiers.CommandBar;
77

88
public partial class CommandBarVerifier(IStarWarsGameEngine gameEngine, GameVerifySettings settings, IServiceProvider serviceProvider)
99
: GameVerifier(null, gameEngine, settings, serviceProvider)
1010
{
1111
public const string CommandBarNoShellsGroup = "CMDBAR00";
1212
public const string CommandBarManyShellsGroup = "CMDBAR01";
1313
public const string CommandBarNoShellsComponentInShellGroup = "CMDBAR02";
14-
public const string CommandBarDuplicateComponent = "CMDBAR03";
15-
public const string CommandBarUnsupportedComponent = "CMDBAR04";
16-
public const string CommandBarShellNoModel = "CMDBAR05";
14+
public const string CommandBarUnsupportedComponent = "CMDBAR03";
15+
public const string CommandBarShellNoModel = "CMDBAR04";
1716

1817
public override string FriendlyName => "CommandBar";
1918

2019
public override void Verify(CancellationToken token)
2120
{
21+
OnProgress(0.0, "Verifying CommandBar Shell");
2222
VerifyCommandBarShellsGroups();
23+
OnProgress(0.5d, "Verifying CommandBar components");
2324
VerifyCommandBarComponents();
25+
OnProgress(1.0d, null);
2426
}
2527
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using PG.StarWarsGame.Engine.GameObjects;
2+
using System.Threading;
3+
4+
namespace AET.ModVerify.Verifiers.GameObjects;
5+
6+
public sealed partial class GameObjectTypeVerifier
7+
{
8+
private void VerifyModels(GameObject gameObject, string[] context, CancellationToken token)
9+
{
10+
foreach (var model in GameEngine.GameObjectTypeManager.GetModels(gameObject))
11+
_singleModelVerifier.Verify(model, context, token);
12+
}
13+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using AET.ModVerify.Reporting;
2+
using PG.StarWarsGame.Engine.GameObjects;
3+
4+
namespace AET.ModVerify.Verifiers.GameObjects;
5+
6+
public sealed partial class GameObjectTypeVerifier
7+
{
8+
private void VerifyXRefs(GameObject gameObject, string[] context)
9+
{
10+
if (!string.IsNullOrEmpty(gameObject.VariantOfExistingTypeName) && gameObject.VariantOfExistingType is null)
11+
{
12+
AddError(VerificationError.Create(
13+
VerifierChain,
14+
VerifierErrorCodes.MissingXRef,
15+
$"Missing base type '{gameObject.VariantOfExistingTypeName}' for GameObject '{gameObject.Name}'",
16+
VerificationSeverity.Critical,
17+
context,
18+
gameObject.VariantOfExistingTypeName));
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)