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.ts26
1 files changed, 12 insertions, 14 deletions
diff --git a/test-client/main.ts b/test-client/main.ts
index f6aa7e97..7146a3d1 100644
--- a/test-client/main.ts
+++ b/test-client/main.ts
@@ -80,6 +80,7 @@ let my_id: PlayerID = -1
export const camera: V2 = { x: 0, y: 0 }
export const interact_target_anim: V2 = { x: 0, y: 0 }
export let interact_possible_anim: number = 0
+export let interact_active_anim: number = 0
let interacting: V2 | undefined;
function send(p: PacketS) { ws.send(JSON.stringify(p)) }
@@ -169,11 +170,14 @@ export const keys_down = new Set();
const HANDLED_KEYS = ["KeyW", "KeyA", "KeyS", "KeyD", "Space"]
function keyboard(ev: KeyboardEvent, down: boolean) {
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) keys_down.add(ev.code)
else keys_down.delete(ev.code)
}
export function get_interact_target(): V2 | undefined {
+ if (interacting) return interacting
const me = players.get(my_id)
if (!me) return
return {
@@ -182,23 +186,16 @@ export function get_interact_target(): V2 | undefined {
}
}
+function set_interact(edge: boolean) {
+ if (edge) interacting = get_interact_target()
+ if (interacting) send({ type: "interact", pos: [interacting.x, interacting.y], edge })
+ if (!edge) interacting = undefined
+}
+
function tick_update() {
const p = players.get(my_id)
if (!p) return
-
send({ type: "position", pos: [p.x, p.y], rot: p.rot })
-
- const { x, y } = get_interact_target()!;
- if (interacting && !keys_down.has("Space")) {
- send({ type: "interact", pos: [interacting.x, interacting.y], edge: false })
- interacting = undefined;
- }
- if (keys_down.has("Space") && x != interacting?.x && y != interacting?.y) {
- if (interacting)
- send({ type: "interact", pos: [interacting.x, interacting.y], edge: false })
- send({ type: "interact", pos: [x, y], edge: true })
- interacting = { x, y }
- }
}
function frame_update(dt: number) {
@@ -209,7 +206,7 @@ function frame_update(dt: number) {
x: (+keys_down.has("KeyD") - +keys_down.has("KeyA")),
y: (+keys_down.has("KeyS") - +keys_down.has("KeyW"))
})
-
+ if (interacting) input.x *= 0, input.y *= 0
player_movement_update(p, dt, input)
const update_item = (item: ItemData) => {
@@ -240,6 +237,7 @@ function frame_update(dt: number) {
const possible = data.tile_interact[tiles.get([it.x, it.y].toString())?.kind ?? 0] ?? false
lerp_exp_v2_mut(interact_target_anim, it, dt * 15.)
interact_possible_anim = lerp_exp(interact_possible_anim, +possible, dt * 18.)
+ interact_active_anim = lerp_exp(interact_active_anim, +!!interacting, dt * 15.)
}
function resize() {