Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
EgardA committed Dec 16, 2024
1 parent cb85952 commit 19c92fe
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 180 deletions.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void SettlementChangeOwner_Publishes_AllClients()
var capturerId = "Capturer Id";
var detail = 2;

var message = new LocalSettlementOwnershipChange(settlementId, ownerId, capturerId, detail);
var message = new SettlementOwnershipChanged(settlementId, ownerId, capturerId, detail);

var client1 = TestEnvironment.Clients.First();
var server = TestEnvironment.Server;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
using Common.Logging;
using Autofac.Features.OwnedInstances;
using Common.Logging;
using Common.Messaging;
using Common.Network;
using GameInterface.Services.MobileParties.Handlers;
using GameInterface.Services.ObjectManager;
using GameInterface.Services.Settlements.Messages;
using GameInterface.Services.Settlements.Patches;
using Serilog;
using System;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using TaleWorlds.CampaignSystem;
using TaleWorlds.CampaignSystem.Actions;
using TaleWorlds.CampaignSystem.Party;
Expand All @@ -20,21 +24,38 @@ public class SettlementOwnershipHandler : IHandler
{
private readonly IMessageBroker messageBroker;
private readonly IObjectManager objectManager;
private readonly INetwork network;
private static readonly ILogger Logger = LogManager.GetLogger<SettlementOwnershipHandler>();

public SettlementOwnershipHandler(IMessageBroker messageBroker, IObjectManager objectManager)
public SettlementOwnershipHandler(IMessageBroker messageBroker, IObjectManager objectManager, INetwork network)
{
this.messageBroker = messageBroker;
this.objectManager = objectManager;
messageBroker.Subscribe<ChangeSettlementOwnership>(Handle);
this.network = network;
messageBroker.Subscribe<SettlementOwnershipChanged>(Handle);
messageBroker.Subscribe<NetworkChangeSettlementOwnership>(Handle);
}

public void Dispose()
{
messageBroker.Unsubscribe<ChangeSettlementOwnership>(Handle);
messageBroker.Unsubscribe<SettlementOwnershipChanged>(Handle);
messageBroker.Unsubscribe<NetworkChangeSettlementOwnership>(Handle);
}

private void Handle(MessagePayload<ChangeSettlementOwnership> obj)
private void Handle(MessagePayload<SettlementOwnershipChanged> obj)
{
var payload = obj.What;

var message = new NetworkChangeSettlementOwnership(
payload.SettlementId,
payload.OwnerId,
payload.CapturerId,
payload.Detail);

network.SendAll(message);
}

private void Handle(MessagePayload<NetworkChangeSettlementOwnership> obj)
{
var payload = obj.What;

Expand All @@ -56,7 +77,7 @@ private void Handle(MessagePayload<ChangeSettlementOwnership> obj)
return;
}

ChangeOwnerOfSettlementPatch.RunOriginalApplyInternal(settlement, owner, capturer,
ChangeOwnerOfSettlementPatch.RunOriginalApplyInternal(settlement, owner, capturer,
(ChangeOwnerOfSettlementAction.ChangeOwnerOfSettlementDetail)payload.Detail);
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
using Common.Messaging;
using ProtoBuf;

namespace Coop.Core.Client.Services.Settlements.Messages
namespace GameInterface.Services.Settlements.Messages
{
/// <summary>
/// Event for settlement ownership change request sent from client to server
/// Network settlement ownership change
/// </summary>
[ProtoContract(SkipConstructor = true)]
public class SettlementOwnershipChangeRequest : ICommand
public record NetworkChangeSettlementOwnership : ICommand
{
[ProtoMember(1)]
public string SettlementId { get; }
Expand All @@ -18,12 +18,12 @@ public class SettlementOwnershipChangeRequest : ICommand
[ProtoMember(4)]
public int Detail { get; }

public SettlementOwnershipChangeRequest(string settlementId, string ownerId, string capturerId, int detail)
public NetworkChangeSettlementOwnership(string settlementId, string ownerId, string capturerId, int detail)
{
SettlementId = settlementId;
OwnerId = ownerId;
CapturerId = capturerId;
Detail = detail;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
namespace GameInterface.Services.Settlements.Messages
{
/// <summary>
/// Event to complete settlement ownership change
/// Event for settlement ownership change
/// </summary>
public record ChangeSettlementOwnership : IEvent
public record SettlementOwnershipChanged : IEvent
{
public string SettlementId { get; }
public string OwnerId { get; }
public string CapturerId { get; }
public int Detail { get; }

public ChangeSettlementOwnership(string settlementId, string ownerId, string capturerId, int detail)
public SettlementOwnershipChanged(string settlementId, string ownerId, string capturerId, int detail)
{
SettlementId = settlementId;
OwnerId = ownerId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
using Common;
using Common.Extensions;
using Common.Logging;
using Common.Messaging;
using Common.Util;
using GameInterface.Policies;
using GameInterface.Services.Settlements.Messages;
using HarmonyLib;
using Serilog;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using TaleWorlds.CampaignSystem;
using TaleWorlds.CampaignSystem.Actions;
using TaleWorlds.CampaignSystem.Settlements;
using TaleWorlds.Library.NewsManager;
using static TaleWorlds.CampaignSystem.Actions.ChangeOwnerOfSettlementAction;

namespace GameInterface.Services.Settlements.Patches
Expand All @@ -22,14 +19,28 @@ namespace GameInterface.Services.Settlements.Patches
/// </summary>
[HarmonyPatch(typeof(ChangeOwnerOfSettlementAction), "ApplyInternal")]
public class ChangeOwnerOfSettlementPatch
{
{
static readonly ILogger Logger = LogManager.GetLogger<ChangeOwnerOfSettlementPatch>();

public static bool Prefix(Settlement settlement, Hero newOwner, Hero capturerHero, ChangeOwnerOfSettlementDetail detail)
{
if (CallOriginalPolicy.IsOriginalAllowed()) return true;

if (ModInformation.IsClient)
{
Logger.Error("Client called unmanaged {name}\n"
+ "Callstack: {callstack}", typeof(ChangeOwnerOfSettlementAction), Environment.StackTrace);
return false;
}

MessageBroker.Instance.Publish(settlement,
new LocalSettlementOwnershipChange(settlement.StringId, newOwner?.StringId, capturerHero?.StringId, Convert.ToInt32(detail)));
new SettlementOwnershipChanged(
settlement.StringId,
newOwner?.StringId,
capturerHero?.StringId,
Convert.ToInt32(detail)));

RunOriginalApplyInternal(settlement, newOwner, capturerHero,detail);
return false;
}

Expand Down

0 comments on commit 19c92fe

Please sign in to comment.