summaryrefslogtreecommitdiff
path: root/test-client/main.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test-client/main.ts')
-rw-r--r--test-client/main.ts22
1 files changed, 16 insertions, 6 deletions
diff --git a/test-client/main.ts b/test-client/main.ts
index 72e88c90..e3185c67 100644
--- a/test-client/main.ts
+++ b/test-client/main.ts
@@ -78,6 +78,7 @@ export interface PlayerData extends MovementBase {
character: number,
anim_position: V2,
message?: MessageData,
+ message_clear?: number,
}
export interface TileData {
@@ -98,6 +99,8 @@ export const items_removed = new Set<ItemData>()
export let data: Gamedata = { item_names: [], tile_names: [], spawn: [0, 0], tile_collide: [], tile_interact: [] }
+export let global_message: MessageData | undefined = undefined
+let global_message_clear: number | undefined = undefined
export let my_id: PlayerID = -1
export let points = 0
export let demands_completed = 0
@@ -191,8 +194,10 @@ function packet(p: PacketC) {
break;
case "communicate": {
const player = players.get(p.player)!
+ if (player.message_clear) clearTimeout(player.message_clear)
if (p.message) player.message = { inner: p.message, anim_size: 0., anim_position: player.anim_position }
- else player.message = undefined
+ if (p.persist && !p.message) player.message = undefined
+ if (!p.persist) player.message_clear = setTimeout(() => delete player.message, 3000)
break;
}
case "score":
@@ -201,8 +206,14 @@ function packet(p: PacketC) {
points = p.points
break;
case "error":
+ if (global_message_clear) clearTimeout(global_message_clear)
+ global_message = { inner: { text: p.message }, anim_size: 0., anim_position: { x: 0, y: 0 } }
+ global_message_clear = setTimeout(() => global_message = undefined, 4000)
console.warn(p.message)
break;
+ case "set_ingame":
+ console.log(`ingame ${p.state}`);
+ break;
default:
console.warn("unknown packet", p);
}
@@ -218,9 +229,9 @@ function keyboard(ev: KeyboardEvent, down: boolean) {
if (HANDLED_KEYS.includes(ev.code)) ev.preventDefault()
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 && ev.code == "Numpad1") send({ type: "communicate", message: { text: "/start default-small-default" }, persist: false })
+ if (down && ev.code == "Numpad2") send({ type: "communicate", message: { text: "/start default-big-default" }, persist: false })
+ if (down && ev.code == "Numpad0") send({ type: "communicate", message: { text: "/end" }, persist: false })
if (down) keys_down.add(ev.code)
else keys_down.delete(ev.code)
}
@@ -233,8 +244,7 @@ function close_chat() {
}
function toggle_chat() {
if (chat) {
- if (chat.value.length) send({ type: "communicate", message: { text: chat.value } })
- else send({ type: "communicate" })
+ if (chat.value.length) send({ type: "communicate", message: { text: chat.value }, persist: false })
chat.remove()
canvas.focus()
chat = null;