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
|
// consumir events tipats amb `std::get_if`. Si apareixen més tipus de
|
||||||
// payload, s'amplia aquí sense tocar cridants existents.
|
// payload, s'amplia aquí sense tocar cridants existents.
|
||||||
|
|
||||||
// Tile (col, row) — payload de `on_tile_entered`. No és un `pair<int,int>`
|
// Tile (col, row) — payload de `tile_painted` (i altres events de tile sense
|
||||||
// per evitar alias ambigus al variant (dos ints sense nom).
|
// metadada extra). No és un `pair<int,int>` per evitar alias ambigus al
|
||||||
|
// variant (dos ints sense nom).
|
||||||
struct TilePos {
|
struct TilePos {
|
||||||
int col{0};
|
int col{0};
|
||||||
int row{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 {
|
struct Event {
|
||||||
std::string name;
|
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;
|
Payload payload;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -71,6 +82,9 @@ class EventBus {
|
|||||||
void publish(const std::string& name, TilePos tile) {
|
void publish(const std::string& name, TilePos tile) {
|
||||||
publish(Event{.name = name, .payload = tile});
|
publish(Event{.name = name, .payload = tile});
|
||||||
}
|
}
|
||||||
|
void publish(const std::string& name, PaintedTile painted) {
|
||||||
|
publish(Event{.name = name, .payload = painted});
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct Subscription {
|
struct Subscription {
|
||||||
|
|||||||
Reference in new issue
Block a user