diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-06-20 01:20:51 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-23 19:21:49 +0200 | 
| commit | 6f7b995dd9fa3bea95be8c24e2452f015b410839 (patch) | |
| tree | 2c1d2d03a759ee4597a07d5998dae8480bd73a67 /test-client | |
| parent | 67ccafad4d7d481bdf60be750f96a086ae452e27 (diff) | |
| download | hurrycurry-6f7b995dd9fa3bea95be8c24e2452f015b410839.tar hurrycurry-6f7b995dd9fa3bea95be8c24e2452f015b410839.tar.bz2 hurrycurry-6f7b995dd9fa3bea95be8c24e2452f015b410839.tar.zst | |
change the protocol yet again
Diffstat (limited to 'test-client')
| -rw-r--r-- | test-client/main.ts | 26 | ||||
| -rw-r--r-- | test-client/protocol.ts | 6 | 
2 files changed, 15 insertions, 17 deletions
| diff --git a/test-client/main.ts b/test-client/main.ts index b34220df..fd49fca2 100644 --- a/test-client/main.ts +++ b/test-client/main.ts @@ -85,15 +85,12 @@ function packet(p: PacketC) {              data = p.data              break;          case "add_player": { -            let item = undefined -            if (p.item) item = { kind: p.item, x: 0, y: 0 };              players.set(p.id, {                  x: p.position[0],                  y: p.position[1],                  character: p.character,                  name: p.name,                  rot: 0, -                item,                  facing: { x: 0, y: 1 },                  vel: { x: 0, y: 0 },              }) @@ -126,15 +123,18 @@ function packet(p: PacketC) {              player.item = undefined              break;          } -        case "produce_item": { -            const item = { kind: p.item, x: p.tile[0] + 0.5, y: p.tile[1] + 0.5 } -            tiles.get(p.tile.toString())!.item = item -            break; -        } -        case "consume_item": { +        case "set_tile_item": {              const tile = tiles.get(p.tile.toString())! -            if (tile.item) items_removed.add(tile.item) +            if (tile.item !== undefined && tile.item !== null) items_removed.add(tile.item)              tile.item = undefined +            if (p.item !== undefined && p.item !== null) tile.item = { kind: p.item, x: p.tile[0] + 0.5, y: p.tile[1] + 0.5 } +            break; +        } +        case "set_player_item": { +            const player = players.get(p.player)! +            if (player.item !== undefined && player.item !== null) items_removed.add(player.item) +            player.item = undefined +            if (p.item !== undefined && p.item !== null) player.item = { kind: p.item, x: player.x + 0.5, y: player.y + 0.5 }              break;          }          case "set_active": { @@ -212,10 +212,10 @@ function frame_update(dt: number) {          if (item.tracking) lerp_exp_v2_mut(item, item.tracking, dt * 10.)      }      for (const [_, player] of players) { -        if (player.item) update_item(player.item) +        if (player.item !== undefined && player.item !== null) update_item(player.item)      }      for (const [_, tile] of tiles) { -        if (tile.item) update_item(tile.item) +        if (tile.item !== undefined && tile.item !== null) update_item(tile.item)      }      const remove = [] @@ -269,7 +269,5 @@ function collide_player(p: PlayerData) {          const vdotn = (grad_x * p.vel.x) + (grad_y * p.vel.y)          p.vel.x -= grad_x * vdotn          p.vel.y -= grad_y * vdotn - -      }  } diff --git a/test-client/protocol.ts b/test-client/protocol.ts index c20588ce..f9592ab9 100644 --- a/test-client/protocol.ts +++ b/test-client/protocol.ts @@ -17,13 +17,13 @@ export type PacketS =  export type PacketC =      { type: "init", id: PlayerID, data: Gamedata } // You joined -    | { type: "add_player", id: PlayerID, name: string, item?: ItemIndex, position: Vec2, character: number } // Somebody else joined (or was already in the game) +    | { type: "add_player", id: PlayerID, name: string, position: Vec2, character: number } // Somebody else joined (or was already in the game)      | { type: "remove_player", id: PlayerID }  // Somebody left      | { type: "position", player: PlayerID, pos: Vec2, rot: number } // Update the position of a players (your own position is included here)      | { type: "take_item", tile: Vec2, player: PlayerID }  // An item was taken from a tile      | { type: "put_item", tile: Vec2, player: PlayerID } // An item was put on a tile -    | { type: "produce_item", tile: Vec2, item: ItemIndex } // A tile generated a new item -    | { type: "consume_item", tile: Vec2 } // A tile removed an item +    | { type: "set_tile_item", tile: Vec2, item?: ItemIndex } // A tile generated a new item +    | { type: "set_player_item", player: PlayerID, item?: ItemIndex } // A tile removed an item      | { type: "set_active", tile: Vec2, progress?: number } // A tile is doing something. progress goes from 0 to 1, then null when finished      | { type: "update_map", pos: Vec2, tile: TileIndex, neighbors: [TileIndex | null] } // A map tile was changed      | { type: "communicate", player: PlayerID, message?: Message } // A map tile was changed | 
