diff --git a/src/net/LockstepClient.ts b/src/net/LockstepClient.ts index 8e64b8e..16655c4 100644 --- a/src/net/LockstepClient.ts +++ b/src/net/LockstepClient.ts @@ -42,7 +42,7 @@ export type ClientMessage = export type ServerMessage = | Packet - | Packet }> + | Packet }> | Packet | Packet ; @@ -51,7 +51,7 @@ export type Server = Callbag { - private playerNumber = -1; + private playerNumber: number | null = null; private state: LockstepState; private serverTalkback: Server | null = null; @@ -100,7 +100,7 @@ export abstract class LockstepClient { private sampleInput = () => { if (this.serverTalkback) { const input = this.gatherInput(); - if(this.playerNumber >= 0) { + if(this.playerNumber !== null) { this.state.addLocalInput(this.playerNumber, input); this.serverTalkback(1, { t: MessageTypes.INPUT, i: input }); } diff --git a/src/net/mod.rs b/src/net/mod.rs index 1525fad..dd8284a 100644 --- a/src/net/mod.rs +++ b/src/net/mod.rs @@ -3,6 +3,8 @@ use serde_json::Value; pub mod server; +pub type PlayerId = usize; + #[derive(Deserialize, Debug)] #[serde(tag = "t")] pub enum ClientMessage { @@ -14,13 +16,13 @@ pub enum ClientMessage { GetState { c: usize, s: S }, } -#[derive(Serialize, Debug)] +#[derive(Serialize, Debug, Clone)] pub struct Meta { pub helo: Option, pub version: &'static str, } -#[derive(Serialize, Debug)] +#[derive(Serialize, Debug, Clone)] #[serde(tag = "t")] pub enum ServerMessage, S = Value> { #[serde(rename = "m")] @@ -29,7 +31,7 @@ pub enum ServerMessage, S = Value> { m: Meta, }, #[serde(rename = "s")] - SetState { u: i8, s: S }, + SetState { u: Option, s: S }, #[serde(rename = "i")] Input { i: I }, #[serde(rename = "g")] diff --git a/src/net/server.rs b/src/net/server.rs index abde3ef..b74a16d 100644 --- a/src/net/server.rs +++ b/src/net/server.rs @@ -16,7 +16,7 @@ where helo: Some("Dedicated base2020 server".into()), }, }, - ServerMessage::SetState { u: 0, s: json!({}) }, + ServerMessage::SetState { u: Some(0), s: json!({}) }, ]) .map(Ok);