feat(event_bus): afegeix PaintedTile al payload
This commit is contained in:
1 parent
01145464ed
commit
48ff1839bc
1 file changed
+17
-3
@@ -23,16 +23,27 @@ class Entity;
|
||||
// consumir events tipats amb `std::get_if`. Si apareixen més tipus de
|
||||
// payload, s'amplia aquí sense tocar cridants existents.
|
||||
|
||||
// Tile (col, row) — payload de `on_tile_entered`. No és un `pair<int,int>`
|
||||
// per evitar alias ambigus al variant (dos ints sense nom).
|
||||
// Tile (col, row) — payload de `tile_painted` (i altres events de tile sense
|
||||
// metadada extra). No és un `pair<int,int>` per evitar alias ambigus al
|
||||
// variant (dos ints sense nom).
|
||||
struct TilePos {
|
||||
int col{0};
|
||||
int row{0};
|
||||
};
|
||||
|
||||
// Tile pintat pel jugador — payload de `on_tile_entered`. Porta l'índex
|
||||
// de tile amb què el jugador pinta (cada Player pot pintar amb un tile
|
||||
// diferent, llegit del YAML del mapa). El PaintLayer filtra pintabilitat,
|
||||
// marca i re-publica `tile_painted` amb només la posició.
|
||||
struct PaintedTile {
|
||||
int col{0};
|
||||
int row{0};
|
||||
int tile_index{-1};
|
||||
};
|
||||
|
||||
struct Event {
|
||||
std::string name;
|
||||
using Payload = std::variant<std::monostate, int, std::string, Entity*, TilePos>;
|
||||
using Payload = std::variant<std::monostate, int, std::string, Entity*, TilePos, PaintedTile>;
|
||||
Payload payload;
|
||||
};
|
||||
|
||||
@@ -71,6 +82,9 @@ class EventBus {
|
||||
void publish(const std::string& name, TilePos tile) {
|
||||
publish(Event{.name = name, .payload = tile});
|
||||
}
|
||||
void publish(const std::string& name, PaintedTile painted) {
|
||||
publish(Event{.name = name, .payload = painted});
|
||||
}
|
||||
|
||||
private:
|
||||
struct Subscription {
|
||||
|
||||
Reference in new issue
Block a user