return _logicComponents.IndexOf(logic);
}
- public override ValueTask<bool> HandleRpcAsync(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
+ public override async ValueTask<bool> HandleRpcAsync(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
{
foreach (var logicComponent in _logicComponents)
{
- logicComponent.HandleRpc(call, reader);
+ await logicComponent.HandleRpcAsync(call, reader);
}
- return ValueTask.FromResult(true);
+ return true;
}
public override ValueTask<bool> SerializeAsync(IMessageWriter writer, bool initialState)
internal abstract class GameLogicComponent
{
- public virtual void HandleRpc(RpcCalls callId, IMessageReader reader)
+ public virtual ValueTask HandleRpcAsync(RpcCalls callId, IMessageReader reader)
{
throw new NotImplementedException($"Unhandled RpcCall {callId}");
}
- public virtual bool Serialize(IMessageWriter writer, bool initialState)
+ public virtual ValueTask<bool> SerializeAsync(IMessageWriter writer, bool initialState)
{
throw new NotImplementedException();
}
_eventManager = eventManager;
}
- public override bool Serialize(IMessageWriter writer, bool initialState)
+ public override ValueTask<bool> SerializeAsync(IMessageWriter writer, bool initialState)
{
GameOptionsFactory.Serialize(writer, _game.Options);
- return true;
+ return ValueTask.FromResult(true);
}
public override async ValueTask DeserializeAsync(IMessageReader reader, bool initialState)
writer.WritePacked(GameNet.GameManager.NetId);
writer.StartMessage((byte)gameOptionsTag);
- GameNet.GameManager.LogicOptions.Serialize(writer, false);
+ await GameNet.GameManager.LogicOptions.SerializeAsync(writer, false);
writer.EndMessage();
writer.EndMessage();