barrallantse en la colisió en les habitacions dels costats
fix: surface no clipejava be la copia de surfaces a surfaces que eixien per la dreta amb el flip activat
This commit is contained in:
@@ -76,6 +76,12 @@ class Player {
|
||||
[[nodiscard]] auto getVY() const -> float { return vy_; }
|
||||
void applyPlatformDisplacement(float dx, float surface_y);
|
||||
void clearPlatformFlag() { on_platform_ = false; }
|
||||
|
||||
// Cross-room collision: rooms adyacentes (TOP=0, RIGHT=1, BOTTOM=2, LEFT=3, TR=4, BR=5, BL=6, TL=7)
|
||||
static constexpr int BORDER_ROOM_COUNT = 8;
|
||||
void setBorderRoom(int index, std::shared_ptr<Room> room);
|
||||
void clearBorderRooms();
|
||||
|
||||
void setPaused(bool value) { is_paused_ = value; }
|
||||
void setIgnoreInput(bool value) { ignore_input_ = value; }
|
||||
[[nodiscard]] auto getIgnoreInput() const -> bool { return ignore_input_; }
|
||||
@@ -136,6 +142,9 @@ class Player {
|
||||
Room::Border border_ = Room::Border::TOP;
|
||||
int last_grounded_position_ = 0;
|
||||
|
||||
// --- Cross-room collision ---
|
||||
std::shared_ptr<Room> border_rooms_[BORDER_ROOM_COUNT]{};
|
||||
|
||||
// --- Renderizado y sonido ---
|
||||
JA_Sound_t* jump_sound_ = nullptr;
|
||||
JA_Sound_t* land_sound_ = nullptr;
|
||||
@@ -147,6 +156,21 @@ class Player {
|
||||
void handleJumpAndDrop();
|
||||
void moveHorizontal(float delta_time);
|
||||
void moveVertical(float delta_time);
|
||||
|
||||
// Cross-room collision helpers
|
||||
struct CrossRoomEntry {
|
||||
const TileCollider* tc;
|
||||
float ox;
|
||||
float oy;
|
||||
};
|
||||
struct CrossRoomChecks {
|
||||
CrossRoomEntry entries[BORDER_ROOM_COUNT]{};
|
||||
int count{0};
|
||||
};
|
||||
auto getCrossRoomChecks() const -> CrossRoomChecks;
|
||||
void checkCrossRoomWallH(float& new_x, const CrossRoomChecks& checks) const;
|
||||
void checkCrossRoomFloor(float old_y, const CrossRoomChecks& checks);
|
||||
auto hasCrossRoomGround(const CrossRoomChecks& checks) const -> bool;
|
||||
void followSlope();
|
||||
void exitSlope();
|
||||
void detectSlopeEntry();
|
||||
|
||||
Reference in New Issue
Block a user