diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-20 19:52:04 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-20 19:52:04 +0200 |
commit | 73c46431783c3496ef6fdf0441b047f49b7a9bb4 (patch) | |
tree | 092a4e74b05cd5464c0bb5ad9a5340868055dbc0 | |
parent | febbc005cfac682257af0b74be5b307d4f23f91c (diff) | |
download | hurrycurry-73c46431783c3496ef6fdf0441b047f49b7a9bb4.tar hurrycurry-73c46431783c3496ef6fdf0441b047f49b7a9bb4.tar.bz2 hurrycurry-73c46431783c3496ef6fdf0441b047f49b7a9bb4.tar.zst |
implement movement_sync in test-client
-rw-r--r-- | test-client/main.ts | 6 | ||||
-rw-r--r-- | test-client/protocol.ts | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/test-client/main.ts b/test-client/main.ts index d56cf7e6..b497ee36 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -115,6 +115,7 @@ export let interact_possible_anim: number = 0 export let interact_active_anim: number = 0 export let nametag_scale_anim: number = 0 let interacting: V2 | undefined; +let last_server_sent_position: V2 = { x: 0, y: 0 } function get_item_location(loc: ItemLocation): PlayerData | TileData { if ("tile" in loc) return tiles.get(loc.tile.toString())! @@ -161,7 +162,7 @@ function packet(p: PacketC) { // const dist = length(sub_v2(pl.position, pos));a // TODO this is actually not a good idea if latency is too high // if (p.player == my_id && dist < 3) return; // we know better where we are - if (p.player == my_id) return + if (p.player == my_id) return last_server_sent_position = pos pl.position.x = pos.x pl.position.y = pos.y pl.boosting = p.boosting @@ -231,6 +232,9 @@ function packet(p: PacketC) { case "set_ingame": console.log(`ingame ${p.state}`); break; + case "movement_sync": + players.get(my_id)!.position = last_server_sent_position + break; default: console.warn("unknown packet", p); } diff --git a/test-client/protocol.ts b/test-client/protocol.ts index 940c8cdc..376ebd58 100644 --- a/test-client/protocol.ts +++ b/test-client/protocol.ts @@ -58,6 +58,7 @@ export type PacketC = | { type: "server_message", text: string } // Text message from the server | { type: "score" } & Score // Supplies information for score OSD | { type: "menu" } & Menu // Open a menu on the client-side + | { type: "movement_sync" } // Your movement is difference on the server, you should update your position from a `position` packet | { type: "set_ingame", state: boolean, lobby: boolean } // Set to false when entering the game or switching maps | { type: "error", message: string } // Your client did something wrong. |