diff options
Diffstat (limited to 'test-client/main.ts')
-rw-r--r-- | test-client/main.ts | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/test-client/main.ts b/test-client/main.ts index 831513fc..cfda74b5 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -22,6 +22,16 @@ import { Gamedata, ItemIndex, Message, PacketC, PacketS, PlayerID, TileIndex } f 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"; +const KEY_INTERACT = "KeyJ" +const KEY_BOOST = "KeyK" +const KEY_UP = "KeyW" +const KEY_DOWN = "KeyS" +const KEY_LEFT = "KeyA" +const KEY_RIGHT = "KeyD" +const KEY_CHAT = "Enter" +const KEY_CLOSE = "Escape" +const HANDLED_KEYS = [KEY_BOOST, KEY_CHAT, KEY_CLOSE, KEY_DOWN, KEY_UP, KEY_LEFT, KEY_RIGHT] + export let ctx: CanvasRenderingContext2D; export let canvas: HTMLCanvasElement; let ws: WebSocket; @@ -193,16 +203,16 @@ function packet(p: PacketC) { export let chat: null | HTMLInputElement = null; export const keys_down = new Set(); -const HANDLED_KEYS = ["KeyW", "KeyA", "KeyS", "KeyD", "Space"] function keyboard(ev: KeyboardEvent, down: boolean) { - if (down && ev.code == "Enter") return toggle_chat() - else if (down && ev.code == "Escape" && chat) return close_chat() + if (down && ev.code == KEY_CHAT) return toggle_chat() + else if (down && ev.code == KEY_CLOSE && chat) return close_chat() else if (chat) return if (HANDLED_KEYS.includes(ev.code)) ev.preventDefault() - if (!keys_down.has("Space") && ev.code == "Space" && down) set_interact(true) - if (keys_down.has("Space") && ev.code == "Space" && !down) set_interact(false) - if (down && !ev.shiftKey && ev.code == "KeyK") send({ type: "communicate", message: { text: "/start" } }) - if (down && ev.shiftKey && ev.code == "KeyK") send({ type: "communicate", message: { text: "/end" } }) + if (!keys_down.has(KEY_INTERACT) && ev.code == KEY_INTERACT && down) set_interact(true) + if (keys_down.has(KEY_INTERACT) && ev.code == KEY_INTERACT && !down) set_interact(false) + if (down && ev.code == "Numpad1") send({ type: "communicate", message: { text: "/start default-small-default" } }) + if (down && ev.code == "Numpad2") send({ type: "communicate", message: { text: "/start default-big-default" } }) + if (down && ev.code == "Numpad0") send({ type: "communicate", message: { text: "/end" } }) if (down) keys_down.add(ev.code) else keys_down.delete(ev.code) } @@ -256,11 +266,11 @@ function frame_update(dt: number) { if (!p) return const input = normalize({ - x: (+keys_down.has("KeyD") - +keys_down.has("KeyA")), - y: (+keys_down.has("KeyS") - +keys_down.has("KeyW")) + x: (+keys_down.has(KEY_RIGHT) - +keys_down.has(KEY_LEFT)), + y: (+keys_down.has(KEY_DOWN) - +keys_down.has(KEY_UP)) }) if (interacting) input.x *= 0, input.y *= 0 - update_movement(p, dt, input, keys_down.has("KeyN")) + update_movement(p, dt, input, keys_down.has("KeyK")) const update_item = (item: ItemData) => { if (item.tracking) lerp_exp_v2_mut(item, item.tracking, dt * 10.) |