diff options
Diffstat (limited to 'Impostor-dev/src/Impostor.Server/Net/Inner/InnerNetObject.cs')
-rw-r--r-- | Impostor-dev/src/Impostor.Server/Net/Inner/InnerNetObject.cs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Impostor-dev/src/Impostor.Server/Net/Inner/InnerNetObject.cs b/Impostor-dev/src/Impostor.Server/Net/Inner/InnerNetObject.cs new file mode 100644 index 0000000..78f1a55 --- /dev/null +++ b/Impostor-dev/src/Impostor.Server/Net/Inner/InnerNetObject.cs @@ -0,0 +1,31 @@ +using System.Threading.Tasks; +using Impostor.Api.Net; +using Impostor.Api.Net.Inner; +using Impostor.Api.Net.Messages; +using Impostor.Server.Net.State; + +namespace Impostor.Server.Net.Inner +{ + internal abstract class InnerNetObject : GameObject, IInnerNetObject + { + private const int HostInheritId = -2; + + public uint NetId { get; internal set; } + + public int OwnerId { get; internal set; } + + public SpawnFlags SpawnFlags { get; internal set; } + + public abstract ValueTask HandleRpc(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader); + + public abstract bool Serialize(IMessageWriter writer, bool initialState); + + public abstract void Deserialize(IClientPlayer sender, IClientPlayer? target, IMessageReader reader, bool initialState); + + public bool IsOwnedBy(IClientPlayer player) + { + return OwnerId == player.Client.Id || + (OwnerId == HostInheritId && player.IsHost); + } + } +}
\ No newline at end of file |