diff options
Diffstat (limited to 'test-client/main.ts')
-rw-r--r-- | test-client/main.ts | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/test-client/main.ts b/test-client/main.ts index 2990c685..c2843192 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -68,10 +68,14 @@ export interface ItemData { x: number, y: number, tracking?: V2, - progress?: number - progress_warn?: boolean + active?: Involvement remove_anim?: number } +export interface Involvement { + position: number, + speed: number, + warn: boolean +} export interface PlayerData extends MovementBase { id: number, name: string, @@ -125,7 +129,7 @@ function get_item_location(loc: ItemLocation): PlayerData | TileData { function send(p: PacketS) { ws.send(JSON.stringify(p)) } function packet(p: PacketC) { - if (!["movement", "set_progress", "update_map"].includes(p.type)) + if (!["movement", "update_map"].includes(p.type)) console.log(p); switch (p.type) { case "version": @@ -186,11 +190,18 @@ function packet(p: PacketC) { if (p.item !== undefined && p.item !== null) slot.item = { kind: p.item, x: slot.position.x, y: slot.position.y, tracking: slot.position } break; } + case "clear_progress": { + delete get_item_location(p.item).item!.active + break; + } case "set_progress": { const slot = get_item_location(p.item) if (!slot.item) return - slot.item.progress = p.progress - slot.item.progress_warn = p.warn + slot.item.active = { + position: p.position, + speed: p.speed, + warn: p.warn + } break; } case "update_map": @@ -336,6 +347,8 @@ function frame_update(dt: number) { const update_item = (item: ItemData) => { if (item.tracking) lerp_exp_v2_mut(item, item.tracking, dt * 10.) + if (item.active) item.active.position += item.active.speed * dt + } for (const [pid, player] of players) { if (pid == my_id) player.anim_position.x = player.position.x, player.anim_position.y = player.position.y |