Files
OnlineRpg/include/server/BattleRoomManager.h
2025-10-26 20:44:58 +08:00

72 lines
1.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
#include "BattleRoom.h"
#include <map>
#include <mutex>
#include <memory>
// 前向声明
class GameServer;
/**
* @brief 战斗房间管理器
*
* 技术点: STL - std::map, std::mutex
*/
class BattleRoomManager {
private:
GameServer* m_server;
std::map<int, std::shared_ptr<BattleRoom>> 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<BattleRoom> 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<ICharacter> createCharacter(const std::string& className,
const std::string& name,
int level = 1);
};