34 lines
1.0 KiB
C++
34 lines
1.0 KiB
C++
#pragma once
|
||
|
||
#include <SDL3/SDL.h>
|
||
|
||
#include "core/rendering/sprite/animated_sprite.hpp"
|
||
|
||
class Player : public AnimatedSprite {
|
||
public:
|
||
// Mapeig de tecles per al moviment del jugador. Cada jugador local en pot
|
||
// tenir unes diferents; així podem afegir-ne més sense tocar el codi del
|
||
// Player, només instanciant amb Controls distints.
|
||
struct Controls {
|
||
SDL_Scancode up;
|
||
SDL_Scancode down;
|
||
SDL_Scancode left;
|
||
SDL_Scancode right;
|
||
};
|
||
|
||
// Sprite 12×24 amb perspectiva falsa: la base real del jugador són els
|
||
// 12×12 inferiors. Per això el bounding horitzontal és l'amplada completa,
|
||
// però verticalment permetem que el cap (12px superiors) isca fora de la
|
||
// pantalla — s'hi fa clipping natural al render.
|
||
static constexpr int SPRITE_WIDTH = 12;
|
||
static constexpr int SPRITE_HEIGHT = 24;
|
||
static constexpr int COLLISION_HEIGHT = 12;
|
||
|
||
Player(float x, float y, const Controls& controls);
|
||
|
||
void update(float delta_time) override;
|
||
|
||
private:
|
||
Controls controls_;
|
||
};
|