diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-09-17 16:57:23 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-09-17 16:57:34 +0200 | 
| commit | 7cacd111e2b443bac291244b168c20e2c8bf69ec (patch) | |
| tree | 277ace5a4e8223df4b156e766c2660406101a82b /test-client/main.ts | |
| parent | 77a73b415888b0285ba64b27c3f69440216e475c (diff) | |
| download | hurrycurry-7cacd111e2b443bac291244b168c20e2c8bf69ec.tar hurrycurry-7cacd111e2b443bac291244b168c20e2c8bf69ec.tar.bz2 hurrycurry-7cacd111e2b443bac291244b168c20e2c8bf69ec.tar.zst | |
add hint-based tutorial for item crafting
Diffstat (limited to 'test-client/main.ts')
| -rw-r--r-- | test-client/main.ts | 17 | 
1 files changed, 15 insertions, 2 deletions
| diff --git a/test-client/main.ts b/test-client/main.ts index 6ed3c6e1..875e420d 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -97,12 +97,13 @@ export interface MessageData {      inner: Message      anim_position: V2,      anim_size: number, -    timeout: MessageTimeout, +    timeout?: MessageTimeout,  }  export const players = new Map<PlayerID, PlayerData>()  export const tiles = new Map<string, TileData>()  export const items_removed = new Set<ItemData>() +export const server_hints = new Map<string, MessageData>()  export let data: Gamedata = { item_names: [], tile_names: [], spawn: [0, 0], tile_collide: [], tile_interact: [], maps: [] } @@ -245,6 +246,12 @@ function packet(p: PacketC) {          case "movement_sync":              players.get(my_id)!.position = last_server_sent_position              break; +        case "server_hint": +            if (p.message) server_hints.set(p.position + "", { inner: p.message, anim_size: 0., anim_position: p.position ? { x: p.position[0] + 0.5, y: p.position[1] + 0.5 } : players.get(my_id)!.anim_position }) +            else server_hints.delete(p.position + "") +            break; +        case "environment": +            break          case "menu":              switch (p.menu) {                  case "book": open("https://s.metamuffin.org/static/hurrycurry/book.pdf"); break @@ -272,6 +279,8 @@ function keyboard(ev: KeyboardEvent, down: boolean) {      if (down && ev.code == "Numpad3") send({ player: my_id, type: "communicate", message: { text: "/start sophomore" } })      if (down && ev.code == "Numpad4") send({ player: my_id, type: "communicate", message: { text: "/start debug" } })      if (down && ev.code == "Numpad5") send({ player: my_id, type: "communicate", message: { text: "/start bus" } }) +    if (down && ev.code == "Numpad8") send({ player: my_id, type: "communicate", message: { text: "/start-tutorial plate:seared-patty,sliced-bun" } }) +    if (down && ev.code == "Numpad9") send({ player: my_id, type: "communicate", message: { text: "/start-tutorial plate:bun" } })      if (down && ev.code == "Numpad0") send({ player: my_id, type: "communicate", message: { text: "/end" } })      if (down) keys_down.add(ev.code)      else keys_down.delete(ev.code) @@ -364,6 +373,9 @@ function frame_update(dt: number) {      }      remove.forEach(i => items_removed.delete(i)) +    for (const [_, h] of server_hints) +        tick_message(h, dt); +      lerp_exp_v2_mut(camera, p.position, dt * 10.)      if (global_message && tick_message(global_message, dt)) global_message = undefined @@ -399,7 +411,8 @@ function draw() {  function tick_message(m: MessageData | undefined, dt: number): boolean {      if (!m) return true -    m.anim_size = lerp_exp(m.anim_size, m.timeout.remaining > 0.3 ? 1 : 0, dt * 3) +    m.anim_size = lerp_exp(m.anim_size, m.timeout ? m.timeout.remaining > 0.3 ? 1 : 0 : 1, dt * 3) +    if (!m.timeout) return false      m.timeout.remaining -= dt;      return m.timeout.remaining <= 0  } | 
