diff options
Diffstat (limited to 'test-client/main.ts')
| -rw-r--r-- | test-client/main.ts | 94 | 
1 files changed, 56 insertions, 38 deletions
| diff --git a/test-client/main.ts b/test-client/main.ts index 1b034f28..7b515752 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -17,7 +17,7 @@ document.addEventListener("DOMContentLoaded", () => {      ws.onclose = () => console.log("close")      ws.onopen = () => {          console.log("open") -        send({ join: { name: "test" } }) +        send({ type: "join", name: "test" })      }      canvas = document.createElement("canvas"); @@ -49,41 +49,59 @@ let scale = 0  function send(p: PacketS) { ws.send(JSON.stringify(p)) }  function packet(p: PacketC) { -    if (!("position" in p) && !("set_active" in p)) console.log(p); -    if ("joined" in p) { -        my_id = p.joined.id -        data = p.joined.data -    } else if ("add_player" in p) { -        if (p.add_player.hand) items.set(p.add_player.hand[0], { kind: p.add_player.hand[1], player: p.add_player.id, tracking_player: true, x: 0, y: 0 }) -        players.set(p.add_player.id, { x: 0, y: 0, name: p.add_player.name, rot: 0, hand: p.add_player.hand?.[0], facing: { x: 0, y: 1 } }) -    } else if ("remove_player" in p) { -        players.delete(p.remove_player.id) -    } else if ("position" in p) { -        if (p.position.player == my_id) return; // we know better where we are -        const pl = players.get(p.position.player)! -        pl.x = p.position.pos[0] -        pl.y = p.position.pos[1] -        pl.rot = p.position.rot -    } else if ("take_item" in p) { -        const item = items.get(p.take_item.item)! -        item.tracking_player = true -        item.player = p.take_item.player -    } else if ("put_item" in p) { -        const item = items.get(p.put_item.item)! -        item.tracking_player = false -        item.tile = { x: p.put_item.pos[0], y: p.put_item.pos[1] } -    } else if ("produce_item" in p) { -        items.set(p.produce_item.id, { kind: p.produce_item.kind, x: p.produce_item.pos[0] + 0.5, y: p.produce_item.pos[1] + 0.5, tracking_player: false, tile: { x: p.produce_item.pos[0], y: p.produce_item.pos[1] } }) -        tiles.get(p.produce_item.pos.toString())!.items.push(p.produce_item.id) -    } else if ("consume_item" in p) { -        const t = tiles.get(p.consume_item.pos.toString())! -        t.items.splice(t.items.indexOf(p.consume_item.id)) -        items.delete(p.consume_item.id) -    } else if ("set_active" in p) { -        tiles.get(p.set_active.tile.toString())!.active_progress = p.set_active.progress -    } else if ("update_map" in p) { -        tiles.set(p.update_map.pos.toString(), { x: p.update_map.pos[0], y: p.update_map.pos[1], kind: p.update_map.tile, items: [] }) -    } else console.warn("unknown packet", p); +    if (!["position", "set_active"].includes(p.type)) console.log(p); +    switch (p.type) { +        case "joined": +            my_id = p.id +            data = p.data +            break; +        case "add_player": +            if (p.hand) items.set(p.hand[0], { kind: p.hand[1], player: p.id, tracking_player: true, x: 0, y: 0 }) +            players.set(p.id, { x: 0, y: 0, name: p.name, rot: 0, hand: p.hand?.[0], facing: { x: 0, y: 1 } }) +            break; +        case "remove_player": +            players.delete(p.id) +            break; +        case "position": { +            if (p.player == my_id) return; // we know better where we are +            const pl = players.get(p.player)! +            pl.x = p.pos[0] +            pl.y = p.pos[1] +            pl.rot = p.rot +            break; +        } +        case "take_item": { +            const item = items.get(p.item)! +            item.tracking_player = true +            item.player = p.player +            break; +        } +        case "put_item": { +            const item = items.get(p.item)! +            item.tracking_player = false +            item.tile = { x: p.pos[0], y: p.pos[1] } +            break; +        } +        case "produce_item": +            items.set(p.id, { kind: p.kind, x: p.pos[0] + 0.5, y: p.pos[1] + 0.5, tracking_player: false, tile: { x: p.pos[0], y: p.pos[1] } }) +            tiles.get(p.pos.toString())!.items.push(p.id) +            break; +        case "consume_item": { +            const t = tiles.get(p.pos.toString())! +            t.items.splice(t.items.indexOf(p.id)) +            items.delete(p.id) +            break; +        } +        case "set_active": { +            tiles.get(p.tile.toString())!.active_progress = p.progress +            break; +        } +        case "update_map": +            tiles.set(p.pos.toString(), { x: p.pos[0], y: p.pos[1], kind: p.tile, items: [] }) +            break; +        default: +            console.warn("unknown packet", p); +    }  }  const keys_down = new Set(); @@ -109,14 +127,14 @@ function get_interact_target(): V2 | undefined {  function interact(edge: boolean) {      const { x, y } = get_interact_target()!; -    send({ interact: { pos: [x, y], edge } }) +    send({ type: "interact", pos: [x, y], edge })  }  function tick_update() {      const p = players.get(my_id)      if (!p) return -    send({ position: { pos: [p.x, p.y], rot: p.rot } }) +    send({ type: "position", pos: [p.x, p.y], rot: p.rot })  }  function frame_update(dt: number) {      const p = players.get(my_id) | 
