feat(player): direcció preferida al HURT segons l'offset d'impacte
This commit is contained in:
1 parent
4667e0abf9
commit
c38c80753a
2 files changed
+108
-64
No files matched your search
@@ -411,13 +411,30 @@ class Player : public AnimatedSprite {
|
||||
static void readHurtBlock(const fkyaml::node& yaml);
|
||||
|
||||
// Activa l'estat HURT: el jugador queda projectat amb velocitat
|
||||
// inicial `hurt_config.initial_speed_px_per_s` cap a la direcció que
|
||||
// doni més recorregut lliure (provem els 4 cardinals i triem el de
|
||||
// major distància fins a topar amb un mur). Decelera linealment fins
|
||||
// a parar i, en eixe instant, torna a GROUNDED. Sense col·lisió amb
|
||||
// altres jugadors mentre dura — ja que es travessa l'eventual
|
||||
// solapament inicial.
|
||||
void enterHurt();
|
||||
// inicial `hurt_config.initial_speed_px_per_s`. La direcció es tria
|
||||
// així:
|
||||
// - Si `preferred != NONE` i hi cap el recorregut natural complet
|
||||
// (sense topar amb mur abans d'esgotar la inèrcia), s'usa
|
||||
// `preferred`.
|
||||
// - Altrament (o si `preferred == NONE`), prova els 4 cardinals
|
||||
// i tria el que dóna més recorregut lliure.
|
||||
// Decelera linealment fins a parar i, en eixe instant, torna a
|
||||
// GROUNDED. Sense col·lisió amb altres jugadors mentre dura.
|
||||
void enterHurt(Cardinal preferred = Cardinal::NONE);
|
||||
|
||||
// Tria la direcció definitiva del HURT. Si `preferred` cabe el
|
||||
// recorregut natural complet, la retorna; d'altra manera tria la
|
||||
// direcció amb més recorregut lliure entre els 4 cardinals.
|
||||
[[nodiscard]] auto chooseHurtDirection(Cardinal preferred) const -> Cardinal;
|
||||
|
||||
// Recorregut lliure (en píxels, fins a `max_px`) en la direcció
|
||||
// (dx, dy) abans de topar amb un mur o eixir del playfield. La
|
||||
// base-box es projecta `i` píxels i es comprova; retorna `i-1` al
|
||||
// primer xoc.
|
||||
[[nodiscard]] auto reachInDirection(float dx, float dy, int max_px) const -> int;
|
||||
|
||||
// Vectors unitaris dels 4 cardinals. `NONE` retorna (0, 0).
|
||||
[[nodiscard]] static auto deltasFor(Cardinal c) -> std::pair<float, float>;
|
||||
|
||||
// Estat de la màquina d'estats. Mutat per `tick`/`applyMovement`. Per
|
||||
// defecte GROUNDED al spawn.
|
||||
|
||||
Reference in new issue
Block a user