feat(stats): Player com a font de veritat de vides/score/tresors i sarcs amb recompensa
This commit is contained in:
1 parent
d186f66c2c
commit
f5d251c33b
14 files changed
+226
-34
No files matched your search
@@ -1272,6 +1272,37 @@ void Player::applyDyingMovement(float delta_time) {
|
||||
|
||||
void Player::resetForJoin() {
|
||||
lives_remaining_ = death_config.initial_lives;
|
||||
score_ = 0;
|
||||
treasures_ = 0;
|
||||
// Publica l'estat inicial perquè el HUD reompla el bloc en el moment
|
||||
// de fer join (no només quan el comptador canvia després). Sense açò
|
||||
// el HUD es quedaria amb la caché prèvia fins al primer event.
|
||||
publishStatsChanged();
|
||||
}
|
||||
|
||||
void Player::publishStatsChanged() {
|
||||
if (bus_ == nullptr) { return; }
|
||||
bus_->publish(Event{
|
||||
.name = "player_stats_changed",
|
||||
.payload = PlayerStatsPayload{
|
||||
.lives = lives_remaining_,
|
||||
.score = score_,
|
||||
.treasures = treasures_,
|
||||
},
|
||||
.player_id = id_,
|
||||
});
|
||||
}
|
||||
|
||||
void Player::addScore(int delta) {
|
||||
if (delta == 0) { return; }
|
||||
score_ += delta;
|
||||
publishStatsChanged();
|
||||
}
|
||||
|
||||
void Player::addTreasures(int delta) {
|
||||
if (delta == 0) { return; }
|
||||
treasures_ += delta;
|
||||
publishStatsChanged();
|
||||
}
|
||||
|
||||
void Player::respawnFromDying() {
|
||||
@@ -1283,6 +1314,12 @@ void Player::respawnFromDying() {
|
||||
--lives_remaining_;
|
||||
death_animation_complete_ = false;
|
||||
respawn_remaining_ms_ = 0.0F;
|
||||
// Notifica al HUD del nou comptador de vides abans de qualsevol
|
||||
// transició d'estat. Aquesta crida tanca el bucle de qualsevol via
|
||||
// de mort (mòmia, traps, rolling rock, FORAT…): totes acaben aquí, i
|
||||
// ningú més ha de recordar publicar res. Era exactament el punt que
|
||||
// s'oblidava al camí del forat.
|
||||
publishStatsChanged();
|
||||
if (lives_remaining_ <= 0) {
|
||||
disable();
|
||||
if (bus_ != nullptr) {
|
||||
|
||||
Reference in new issue
Block a user