diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-26 16:53:07 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-26 16:53:07 +0200 |
commit | 2ca6ac7ab329036d0155de2de4b0a11f3a785414 (patch) | |
tree | 7472368efb282a4380b45931f3462e9930f48a36 /test-client/main.ts | |
parent | c4b0f8d698b574c711b1e205371adfd3e3339487 (diff) | |
download | hurrycurry-2ca6ac7ab329036d0155de2de4b0a11f3a785414.tar hurrycurry-2ca6ac7ab329036d0155de2de4b0a11f3a785414.tar.bz2 hurrycurry-2ca6ac7ab329036d0155de2de4b0a11f3a785414.tar.zst |
boosting
Diffstat (limited to 'test-client/main.ts')
-rw-r--r-- | test-client/main.ts | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/test-client/main.ts b/test-client/main.ts index 42c1a3e0..831513fc 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -17,7 +17,7 @@ */ /// <reference lib="dom" /> -import { player_movement_update } from "./movement.ts"; +import { MovementBase, update_movement } from "./movement.ts"; import { Gamedata, ItemIndex, Message, PacketC, PacketS, PlayerID, TileIndex } from "./protocol.ts"; import { V2, add_v2, lerp_exp_v2_mut, normalize, lerp_exp, sub_v2, length } from "./util.ts"; import { draw_ingame, draw_wait } from "./visual.ts"; @@ -62,18 +62,14 @@ export interface ItemData { progress_warn?: boolean remove_anim?: number } -export interface PlayerData { - x: number, - y: number, +export interface PlayerData extends MovementBase { name: string, - rot: number, item?: ItemData, - facing: V2, character: number, anim_position: V2, - vel: V2, message?: MessageData, } + export interface TileData { x: number y: number @@ -112,14 +108,18 @@ function packet(p: PacketC) { break; case "add_player": { players.set(p.id, { - x: p.position[0], - y: p.position[1], + position: { + x: p.position[0], + y: p.position[1], + }, character: p.character, name: p.name, rot: 0, anim_position: { x: 0, y: 1 }, facing: { x: 0, y: 1 }, vel: { x: 0, y: 0 }, + stamina: 0, + boosting: false, }) break; } @@ -129,10 +129,10 @@ function packet(p: PacketC) { case "position": { const pl = players.get(p.player)! const pos = { x: p.pos[0], y: p.pos[1] } - const dist = length(sub_v2(pl, pos)); + const dist = length(sub_v2(pl.position, pos)); if (p.player == my_id && dist < 3) return; // we know better where we are - pl.x = pos.x - pl.y = pos.y + pl.position.x = pos.x + pl.position.y = pos.y pl.rot = p.rot break; } @@ -140,7 +140,7 @@ function packet(p: PacketC) { const player = players.get(p.player)! const tile = tiles.get(p.tile.toString())! player.item = tile.item; - player.item!.tracking = player + player.item!.tracking = player.position tile.item = undefined break; } @@ -163,7 +163,7 @@ function packet(p: PacketC) { const player = players.get(p.player)! if (player.item !== undefined && player.item !== null) items_removed.add(player.item) player.item = undefined - if (p.item !== undefined && p.item !== null) player.item = { kind: p.item, x: player.x + 0.5, y: player.y + 0.5 } + if (p.item !== undefined && p.item !== null) player.item = { kind: p.item, x: player.position.x + 0.5, y: player.position.y + 0.5 } break; } case "set_active": { @@ -234,8 +234,8 @@ export function get_interact_target(): V2 | undefined { const me = players.get(my_id) if (!me) return return { - x: Math.floor(me.x + Math.sin(me.rot)), - y: Math.floor(me.y + Math.cos(me.rot)) + x: Math.floor(me.position.x + Math.sin(me.rot)), + y: Math.floor(me.position.y + Math.cos(me.rot)) } } @@ -248,7 +248,7 @@ function set_interact(edge: boolean) { function tick_update() { const p = players.get(my_id) if (!p) return - send({ type: "position", pos: [p.x, p.y], rot: p.rot }) + send({ type: "position", pos: [p.position.x, p.position.y], rot: p.rot }) } function frame_update(dt: number) { @@ -260,14 +260,14 @@ function frame_update(dt: number) { y: (+keys_down.has("KeyS") - +keys_down.has("KeyW")) }) if (interacting) input.x *= 0, input.y *= 0 - player_movement_update(p, dt, input) + update_movement(p, dt, input, keys_down.has("KeyN")) const update_item = (item: ItemData) => { if (item.tracking) lerp_exp_v2_mut(item, item.tracking, dt * 10.) } for (const [pid, player] of players) { - if (pid == my_id) player.anim_position.x = player.x, player.anim_position.y = player.y - else lerp_exp_v2_mut(player.anim_position, player, dt * 15) + if (pid == my_id) player.anim_position.x = player.position.x, player.anim_position.y = player.position.y + else lerp_exp_v2_mut(player.anim_position, player.position, dt * 15) if (player.item !== undefined && player.item !== null) update_item(player.item) if (player.message) player.message.anim_size = lerp_exp(player.message.anim_size, 1, dt * 3) } @@ -284,7 +284,7 @@ function frame_update(dt: number) { } remove.forEach(i => items_removed.delete(i)) - lerp_exp_v2_mut(camera, p, dt * 10.) + lerp_exp_v2_mut(camera, p.position, dt * 10.) const it = get_interact_target() ?? { x: 0, y: 0 }; const possible = data.tile_interact[tiles.get([it.x, it.y].toString())?.kind ?? 0] ?? false |