diff options
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 |