/// so changes made to Game.Options are not synced until
/// SyncSettingsAsync is called afterwards.
/// </remarks>
- Rpc,
+ Host,
/// <summary>
/// The options were changed by a plugin using the
}
[EventListener]
- public async void OnGameOptionsChanged(IGameOptionsChangedEvent e)
+ public void OnGameOptionsChanged(IGameOptionsChangedEvent e)
{
_logger.LogInformation(
"Game {code} > new options because of {source}",
using System;
+using System.Threading.Tasks;
using Impostor.Api.Net.Inner;
namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic;
throw new NotImplementedException();
}
- public virtual void Deserialize(IMessageReader reader, bool initialState)
+ public virtual ValueTask Deserialize(IMessageReader reader, bool initialState)
{
+ return default;
}
}
-using Impostor.Api.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
+using System.Threading.Tasks;
+using Impostor.Api.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
namespace Impostor.Server.Net.Inner.Objects.GameManager.Logic.HideAndSeek;
public float CurrentHideTime { get; private set; }
- public override void Deserialize(IMessageReader reader, bool initialState)
+ public override ValueTask Deserialize(IMessageReader reader, bool initialState)
{
var num = reader.ReadSingle();
CurrentFinalHideTime = reader.ReadSingle();
CurrentHideTime = num;
+ return default;
}
}
+using System.Threading.Tasks;
using Impostor.Api.Events.Managers;
using Impostor.Api.Innersloth.GameOptions;
using Impostor.Server.Events;
return true;
}
- public override async void Deserialize(IMessageReader reader, bool initialState)
+ public override async ValueTask Deserialize(IMessageReader reader, bool initialState)
{
GameOptionsFactory.DeserializeInto(reader, _game.Options);
await _eventManager.CallAsync(new GameOptionsChangedEvent(
_game,
- Api.Events.IGameOptionsChangedEvent.ChangeReason.Rpc));
+ Api.Events.IGameOptionsChangedEvent.ChangeReason.Host)
+ );
}
}
{
internal partial class Game : IGame
{
- private bool alreadyCallingOptionsChangedEvent = false;
+ private bool _alreadyCallingOptionsChangedEvent = false;
IClientPlayer? IGame.Host => Host;
await SendToAllAsync(writer);
// Prevent bad plugins from causing a server crash by recursing into this function
- if (alreadyCallingOptionsChangedEvent)
+ if (_alreadyCallingOptionsChangedEvent)
{
_logger.LogError("Plugin called SyncSettingsAsync while processing a GameOptionsChangedEvent, aborting to prevent recursion");
}
{
try
{
- alreadyCallingOptionsChangedEvent = true;
+ _alreadyCallingOptionsChangedEvent = true;
await _eventManager.CallAsync(new GameOptionsChangedEvent(
this,
- Api.Events.IGameOptionsChangedEvent.ChangeReason.Api));
+ Api.Events.IGameOptionsChangedEvent.ChangeReason.Api)
+ );
}
finally
{
- alreadyCallingOptionsChangedEvent = false;
+ _alreadyCallingOptionsChangedEvent = false;
}
}
}