#pragma once #include "core/Common.hpp" #include "dungeon/Player.hpp" namespace dnr { class RestRoom { public: RestRoom(); void init(Player& player, int completedFloor); void update(float dt, Player& player); bool tryMove(int dx, int dy, Player& player); bool isFacingGateway(const Player& player) const; bool isFacingRechargeMatrix(const Player& player) const; bool isFacingTerminal(const Player& player) const; int getNextFloor() const { return m_completedFloor + 1; } int getCompletedFloor() const { return m_completedFloor; } bool isRecharged() const { return m_recharged; } void triggerRecharge(Player& player); int getWidth() const { return m_width; } int getHeight() const { return m_height; } Vector3 getGatewayPosition() const { return m_gatewayPos; } Vector3 getRechargePosition() const { return m_rechargePos; } Vector3 getTerminalPosition() const { return m_terminalPos; } private: int m_width = 7; int m_height = 7; int m_completedFloor = 1; bool m_recharged = false; Vector3 m_gatewayPos{ 6.0f, 1.2f, 2.0f }; Vector3 m_rechargePos{ 6.0f, 0.8f, 6.0f }; Vector3 m_terminalPos{ 2.0f, 0.8f, 6.0f }; }; } // namespace dnr