/*
* @file LevelMatching.hpp
* @brief
*
* レベルによるマッチング処理
*
* Copyright MONOBIT Inc. All rights reserved.
*/
#ifndef __LEVEL_MATCHING_HPP__
#define __LEVEL_MATCHING_HPP__
#include "./MatchingBase.hpp"
class LevelMatching : public MatchingBase
{
public:
// テーブル作成情報構造体
struct CreateTableInfo {
uint32 level; // レベル
};
// 検索用ルーム情報構造体
struct SearchRoomInfo {
RoomInfo roomInfo; // ルーム情報
};
typedef std::vector<SearchRoomInfo> SearchRoomInfoList; // 検索用ルーム情報リスト型
public:
/**
* コンストラクタ
*/
LevelMatching();
/**
* デストラクタ
*/
virtual ~LevelMatching();
/**
* ルームの新規作成
*
* @info 所有者の入室も同時に行う
*
* @param createRoomInfo ルーム作成情報
* @param pCreateTableInfo テーブル作成情報
*
* @return trueなら成功、falseなら失敗
*/
virtual bool CreateRoom( CreateRoomInfo& createRoomInfo, CreateTableInfo* pCreateTableInfo );
/**
* ルームの検索
*
* @param level_min レベル最小値
* @param level_max レベル最大値
* @param searchRoomInfoList 検索用ルーム情報リスト
* @param limit 最大数
* @param offset 開始オフセット
*
* @return trueなら成功、falseなら失敗
*/
virtual bool SearchRoom( uint32 level_min, uint32 level_max, SearchRoomInfoList& searchRoomInfoList, uint32 limit = 0, uint32 offset = 0 );
protected:
/**
* テーブル作成クエリ
*
* @return trueなら成功、falseなら失敗
*/
virtual bool QueryCreateTable();
/**
* ルーム作成クエリ
*
* @param createRoomInfo ルーム作成情報
* @param pArg 汎用引数
*
* @return trueなら成功、falseなら失敗
*/
virtual bool QueryCreateRoom( CreateRoomInfo& createRoomInfo, void* pArg );
/**
* ルームの削除クエリ
*
* @param roomId ルームID
*
* @return trueなら成功、falseなら失敗
*/
virtual bool QueryDeleteRoom( uint64 roomId );
};
#endif