-using Impostor.Api.Net.Custom;
+using Impostor.Api.Events.Managers;
+using Impostor.Api.Net.Custom;
using Impostor.Api.Net.Inner.Objects.GameManager;
using Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
using Impostor.Server.Net.State;
internal partial class InnerHideAndSeekManager : InnerGameManager, IInnerHideAndSeekManager
{
- public InnerHideAndSeekManager(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, ILogger<InnerGameManager> logger) : base(customMessageManager, game, logger)
+ public InnerHideAndSeekManager(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, ILogger<InnerGameManager> logger, IEventManager eventManager) : base(customMessageManager, game, logger)
{
LogicMusic = AddGameLogic(new LogicHnSMusic());
LogicMinigame = AddGameLogic(new LogicMinigameHnS());
LogicFlow = AddGameLogic(LogicFlowHnS);
LogicUsables = AddGameLogic(new LogicUsablesHnS());
LogicRoleSelection = AddGameLogic(new LogicRoleSelectionHnS());
- LogicOptionsHnS = new LogicOptionsHnS(game);
+ LogicOptionsHnS = new LogicOptionsHnS(game, eventManager);
LogicOptions = AddGameLogic(this.LogicOptionsHnS);
LogicDangerLevel = AddGameLogic(new LogicHnSDangerLevel());
LogicPing = AddGameLogic(new LogicPingsHnS());
-using Impostor.Api.Net.Custom;
+using Impostor.Api.Events.Managers;
+using Impostor.Api.Net.Custom;
using Impostor.Api.Net.Inner.Objects.GameManager;
using Impostor.Server.Net.Inner.Objects.GameManager.Logic;
using Impostor.Server.Net.Inner.Objects.GameManager.Logic.Normal;
internal class InnerNormalGameManager : InnerGameManager, IInnerNormalGameManager
{
- public InnerNormalGameManager(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, ILogger<InnerGameManager> logger) : base(customMessageManager, game, logger)
+ public InnerNormalGameManager(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, ILogger<InnerGameManager> logger, IEventManager eventManager) : base(customMessageManager, game, logger)
{
LogicFlow = AddGameLogic(new LogicGameFlowNormal());
LogicMinigame = AddGameLogic(new LogicMinigame());
LogicRoleSelection = AddGameLogic(new LogicRoleSelectionNormal());
LogicUsables = AddGameLogic(new LogicUsablesBasic());
- LogicOptions = AddGameLogic(new LogicOptionsNormal(game));
+ LogicOptions = AddGameLogic(new LogicOptionsNormal(game, eventManager));
}
}
-using Impostor.Server.Net.State;
+using Impostor.Api.Events.Managers;
+using Impostor.Server.Net.State;
namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
internal class LogicOptionsHnS : LogicOptions
{
- public LogicOptionsHnS(Game game) : base(game)
+ public LogicOptionsHnS(Game game, IEventManager eventManager) : base(game, eventManager)
{
}
}
-using Impostor.Api.Innersloth.GameOptions;
+using Impostor.Api.Events.Managers;
+using Impostor.Api.Innersloth.GameOptions;
+using Impostor.Server.Events;
using Impostor.Server.Net.State;
namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic;
internal abstract class LogicOptions : GameLogicComponent
{
private readonly Game _game;
+ private readonly IEventManager _eventManager;
- protected LogicOptions(Game game)
+ protected LogicOptions(Game game, IEventManager eventManager)
{
_game = game;
+ _eventManager = eventManager;
}
public override bool Serialize(IMessageWriter writer, bool initialState)
return true;
}
- public override void Deserialize(IMessageReader reader, bool initialState)
+ public override async void Deserialize(IMessageReader reader, bool initialState)
{
GameOptionsFactory.DeserializeInto(reader, _game.Options);
+ await _eventManager.CallAsync(new GameOptionsChangedEvent(
+ _game,
+ Api.Events.IGameOptionsChangedEvent.ChangeReason.Rpc));
}
}
-using Impostor.Server.Net.State;
+using Impostor.Api.Events.Managers;
+using Impostor.Server.Net.State;
namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.Normal;
internal class LogicOptionsNormal : LogicOptions
{
- public LogicOptionsNormal(Game game) : base(game)
+ public LogicOptionsNormal(Game game, IEventManager eventManager) : base(game, eventManager)
{
}
}
}
Rpc02SyncSettings.DeserializeInto(reader, Game.Options);
- await _eventManager.CallAsync(new GameOptionsChangedEvent(
- Game,
- Api.Events.IGameOptionsChangedEvent.ChangeReason.Rpc));
break;
}
}
else
{
- alreadyCallingOptionsChangedEvent = true;
- await _eventManager.CallAsync(new GameOptionsChangedEvent(
- this,
- Api.Events.IGameOptionsChangedEvent.ChangeReason.Api));
- alreadyCallingOptionsChangedEvent = false;
+ try
+ {
+ alreadyCallingOptionsChangedEvent = true;
+ await _eventManager.CallAsync(new GameOptionsChangedEvent(
+ this,
+ Api.Events.IGameOptionsChangedEvent.ChangeReason.Api));
+ }
+ finally
+ {
+ alreadyCallingOptionsChangedEvent = false;
+ }
}
}