#pragma once #include "BattleRoom.h" #include #include #include // 前向声明 class GameServer; /** * @brief 战斗房间管理器 * * 技术点: STL - std::map, std::mutex */ class BattleRoomManager { private: GameServer* m_server; std::map> m_rooms; // STL std::mutex m_mutex; // STL int m_nextRoomId; public: /** * @brief 构造函数 */ explicit BattleRoomManager(GameServer* server); /** * @brief 析构函数 */ ~BattleRoomManager(); /** * @brief 创建战斗房间 * @param player1 玩家1用户名 * @param player2 玩家2用户名 * @return int 房间ID,失败返回 -1 */ int createBattle(const std::string& player1, const std::string& player2); /** * @brief 获取战斗房间 */ std::shared_ptr getBattleRoom(int roomId); /** * @brief 处理战斗行动 */ bool handleBattleAction(int roomId, const std::string& username, int skillIndex, const std::string& targetName); /** * @brief 移除战斗房间 */ void removeBattleRoom(int roomId); /** * @brief 检查玩家是否在战斗中 */ bool isPlayerInBattle(const std::string& username); private: /** * @brief 创建角色实例 */ std::shared_ptr createCharacter(const std::string& className, const std::string& name, int level = 1); };