aboutsummaryrefslogtreecommitdiff
path: root/test-client/main.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test-client/main.ts')
-rw-r--r--test-client/main.ts23
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