Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
afa2677
Heavy WIP
Gerseras Mar 14, 2025
cfc4ddb
Fixes for Assembly to build
Gerseras Mar 14, 2025
26937e4
Fixes to allow client/server start
Gerseras Mar 16, 2025
11173c8
Merge branch 'development' into sync-rework
garrettluskey Mar 16, 2025
09da8e8
Added scriban
garrettluskey Mar 16, 2025
0b6257f
sciban property prefix class example
garrettluskey Mar 18, 2025
6f10b86
added back tests and updated tempates
garrettluskey Mar 19, 2025
16fe4eb
added back template
garrettluskey Mar 19, 2025
c004058
Update DynamicSyncRegistry.cs
garrettluskey Mar 19, 2025
0e50ac1
Use different assemblies based on executing framework version
Gerseras Mar 19, 2025
1ffc702
Working PropertySync
Gerseras Mar 25, 2025
b878ec7
Added TryGetIntercept for testing field set sync
Gerseras Mar 25, 2025
9a2a4d9
Merge branch '928-sync-town-collections' into sync-rework
Gerseras Mar 25, 2025
56eb299
Temporary fix to have development running
EgardA Apr 16, 2025
d6fa024
Rework in the making still heavy wip
Gerseras Apr 16, 2025
32ca76a
Working Property sync with reworked codebase
Gerseras Apr 21, 2025
4b1e68b
Further work on field sync one issue remaining
Gerseras May 12, 2025
0290e79
Fixed InternalsVisibleToError
Gerseras May 13, 2025
2b0a58b
Fix rebinding of handlers for mutliple test runs
Gerseras May 13, 2025
18a2c5b
minor updates
garrettluskey May 20, 2025
ea1d763
updated syntax tre to linq
garrettluskey May 20, 2025
6f6cf15
Update DynamicSyncBuilder.cs
garrettluskey May 20, 2025
e358252
Update DynamicSyncBuilder.cs
garrettluskey May 20, 2025
b0c2433
Cleanup and Revert on loadedAssemblyMap as it was no longer running
Gerseras May 20, 2025
82dda6b
Merge branch 'development' into sync-rework
garrettluskey Jun 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

8 changes: 4 additions & 4 deletions source/Coop.IntegrationTests/Template/TestTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ public void ServerReceivesTemplateEventMessage_PublishesTemplateCommandMessage_A

// Assert
// Verify the server sends a single message to it's game interface
Assert.Equal(1, server.InternalMessages.GetMessageCount<TemplateCommandMessage>());
Assert.Equal(1, server.InternalMessages.GetMessageCount<TemplateNetworkMessage>());

// Verify the all clients send a single message to their game interfaces
foreach (EnvironmentInstance client in TestEnvironment.Clients)
{
Assert.Equal(1, client.InternalMessages.GetMessageCount<TemplateCommandMessage>());
Assert.Equal(1, client.InternalMessages.GetMessageCount<TemplateNetworkMessage>());
}
}

Expand All @@ -52,12 +52,12 @@ public void ClientReceivesTemplateEventMessage_PublishesTemplateCommandMessage_A

// Assert
// Verify the server sends a single message to it's game interface
Assert.Equal(1, server.InternalMessages.GetMessageCount<TemplateCommandMessage>());
Assert.Equal(1, server.InternalMessages.GetMessageCount<TemplateNetworkMessage>());

// Verify the all clients send a single message to their game interfaces
foreach (EnvironmentInstance client in TestEnvironment.Clients)
{
Assert.Equal(1, client.InternalMessages.GetMessageCount<TemplateCommandMessage>());
Assert.Equal(1, client.InternalMessages.GetMessageCount<TemplateNetworkMessage>());
}
}
}
66 changes: 66 additions & 0 deletions source/E2E.Tests/AutoSync/AutoSyncTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using Autofac;
using E2E.Tests.Environment;
using GameInterface.AutoSync;
using GameInterface.AutoSync.Builders;
using GameInterface.Registry;
using HarmonyLib;
using Xunit.Abstractions;

namespace E2E.Tests.AutoSync;

public class AutoSyncTests : IDisposable
{
E2ETestEnvironment TestEnvironment { get; }

public AutoSyncTests(ITestOutputHelper output)
{
TestEnvironment = new E2ETestEnvironment(output);
}

public void Dispose()
{
TestEnvironment.Dispose();
}

[Fact]
public void FieldTest()
{
var server = TestEnvironment.Server;
const string instanceId = "MyObj";
const int newMyIntValue = 2002;

var containers = TestEnvironment.Clients.Select(client => client.Container).AddItem(TestEnvironment.Server.Container);

foreach (var container in containers)
{
var testClass = new AutoSyncTestClass();

var registry = new AutoSyncTestClassRegistry(container.Resolve<IRegistryCollection>());

registry.RegisterExistingObject(instanceId, testClass);

var autosyncBuilder = container.Resolve<IAutoSyncBuilder>();

autosyncBuilder.AddField(AccessTools.Field(typeof(AutoSyncTestClass), nameof(AutoSyncTestClass.MyInt)));
autosyncBuilder.Build();
}

server.Resolve<IAutoSyncPatchCollector>().PatchAll();

server.Call(() =>
{
var testClass = server.GetRegisteredObject<AutoSyncTestClass>(instanceId);

testClass.SetMyInt(newMyIntValue);
});


foreach (var client in TestEnvironment.Clients)
{
var testClass = client.GetRegisteredObject<AutoSyncTestClass>(instanceId);

Assert.Equal(newMyIntValue, testClass.MyInt);
}
}
}

66 changes: 66 additions & 0 deletions source/E2E.Tests/AutoSync/DynamicSyncTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using Autofac;
using E2E.Tests.Environment;
using GameInterface.AutoSync;
using GameInterface.AutoSync.Builders;
using GameInterface.Registry;
using HarmonyLib;
using Xunit.Abstractions;

namespace E2E.Tests.AutoSync;

public class DynamicSyncTests : IDisposable
{
E2ETestEnvironment TestEnvironment { get; }

public DynamicSyncTests(ITestOutputHelper output)
{
TestEnvironment = new E2ETestEnvironment(output);
}

public void Dispose()
{
TestEnvironment.Dispose();
}

[Fact]
public void FieldTest()
{
var server = TestEnvironment.Server;
const string instanceId = "MyObj";
const int newMyIntValue = 2002;

var containers = TestEnvironment.Clients.Select(client => client.Container).AddItem(TestEnvironment.Server.Container);

foreach (var container in containers)
{
var testClass = new AutoSyncTestClass();

var registry = new AutoSyncTestClassRegistry(container.Resolve<IRegistryCollection>());

registry.RegisterExistingObject(instanceId, testClass);

var autosyncBuilder = container.Resolve<IAutoSyncBuilder>();

autosyncBuilder.AddField(AccessTools.Field(typeof(AutoSyncTestClass), nameof(AutoSyncTestClass.MyInt)));
autosyncBuilder.Build();
}

server.Resolve<IAutoSyncPatchCollector>().PatchAll();

server.Call(() =>
{
var testClass = server.GetRegisteredObject<AutoSyncTestClass>(instanceId);

testClass.SetMyInt(newMyIntValue);
});


foreach (var client in TestEnvironment.Clients)
{
var testClass = client.GetRegisteredObject<AutoSyncTestClass>(instanceId);

Assert.Equal(newMyIntValue, testClass.MyInt);
}
}
}

12 changes: 12 additions & 0 deletions source/E2E.Tests/AutoSync/TestClasses/AutoSyncTestClass.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace GameInterface.AutoSync.Builders;
internal class AutoSyncTestClass
{
public string Name = "hi";
public int MyInt = 1;
public AutoSyncRefClass? RefClass = null;
public int MyProp { get; set; }

public void SetMyInt(int val) { MyInt = val; }
}

internal class AutoSyncRefClass { }
22 changes: 22 additions & 0 deletions source/E2E.Tests/AutoSync/TestClasses/AutoSyncTestClassRegistry.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using GameInterface.Registry;
using GameInterface.Services.Registry;
using System;
using System.Collections.Generic;
using System.Text;

namespace GameInterface.AutoSync.Builders;
internal class AutoSyncTestClassRegistry : RegistryBase<AutoSyncTestClass>
{
public AutoSyncTestClassRegistry(IRegistryCollection collection) : base(collection)
{
}

public override void RegisterAll()
{
}

protected override string GetNewId(AutoSyncTestClass obj)
{
return Guid.NewGuid().ToString();
}
}
3 changes: 3 additions & 0 deletions source/E2E.Tests/E2E.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,7 @@
<Publicize Include="TaleWorlds.ObjectSystem" />
<Publicize Include="TaleWorlds.SaveSystem" />
</ItemGroup>
<ItemGroup>
<Folder Include="AutoSync\TestClasses\" />
</ItemGroup>
Comment on lines +85 to +87
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<ItemGroup>
<Folder Include="AutoSync\TestClasses\" />
</ItemGroup>

</Project>
Loading
Loading