44 lines
1.2 KiB
C++
44 lines
1.2 KiB
C++
#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
|