aboutsummaryrefslogtreecommitdiff
path: root/test-client
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-20 19:52:04 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-20 19:52:04 +0200
commit73c46431783c3496ef6fdf0441b047f49b7a9bb4 (patch)
tree092a4e74b05cd5464c0bb5ad9a5340868055dbc0 /test-client
parentfebbc005cfac682257af0b74be5b307d4f23f91c (diff)
downloadhurrycurry-73c46431783c3496ef6fdf0441b047f49b7a9bb4.tar
hurrycurry-73c46431783c3496ef6fdf0441b047f49b7a9bb4.tar.bz2
hurrycurry-73c46431783c3496ef6fdf0441b047f49b7a9bb4.tar.zst
implement movement_sync in test-client
Diffstat (limited to 'test-client')
-rw-r--r--test-client/main.ts6
-rw-r--r--test-client/protocol.ts1
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.