#pragma once
#include <boost/unordered_map.hpp>
#include <vector>
struct Fish_RoomCFGData
{
	//房间id
	int mRoomID;
	//房间类型
	int mRoomType;
	//房间名
	std::string mRoomName;
	//房间图片
	std::string mRoomImage;
	//房间名字
	std::string mArmatureName;
	//房间路径
	std::string mArmaturePath;
	//出鱼配置
	std::string mOutFishConfig;
	//鱼阵配置
	std::string mLargetFishConfig;
	//BOSS鱼阵
	int mBOSSID;
	//普通刷鱼时间（秒）
	int mNormalOutFishTime;
	//特殊BOSSID
	int mSpecialBoss;
	//BOSS路径分组
	int mBossGroup;
	//金币条件
	int mGoldCondition;
	//vip条件
	int mVipCondition;
	//场次顺序
	int mOrder;
	//礼券条件
	int mTicketCondition;
	//解锁礼包到达等级
	int mLockBagLv;
	//等级条件
	int mLevelCondition;
	//机器人最少金币
	int mRobotMinGold;
	//机器人最多金币
	int mRobotMaxGold;
	//最低倍率
	int mMinRate;
	//最大倍率
	int mMaxRate;
	//是否开放高炮
	int mSkillTurret;
	//倍率列表
	std::vector<int> mRateList;
	//桌子数
	int mTableCount;
	//时间检测
	std::string mTimeCheck;
	//红包次数
	int mRedPackage;
	//红包数量
	std::vector<int> mRedQuantity;
	//是否显示
	bool mIsShow;
	//是否开放
	bool mIsOpen;
	//能量系数
	int mPowerParam;
	//购买能量消耗
	int mBuyPowerCost;
	//导弹倍率
	int mMissileRate;
	//导弹消耗
	int mMissileCost;
	//开启保护
	bool mOpenProtect;
	//是否可以获得捕鱼经验
	bool mExpGet;
	//是否可以换桌
	bool mChangeTable;
	//提示离开房间等级
	int mWarnLeaveLv;
	//不可进入等级
	int mNoEnterLv;
	//期望盈利率千分比
	int mWinRateAverage;
	//最大盈利率
	int mWinRateMax;
	//最小盈利率
	int mWinRateMin;
	//盈利率起始控制值
	int mWinRateCtrValue;
	//场景id列表
	std::vector<int> mSceneIds;
	//开放时间
	std::vector<int> mOpenTime;
	//免费锁定道具ID
	std::vector<int> mFreeLockId;
	//免费狂暴道具ID
	std::vector<int> mFreeViolentId;
};

class Fish_RoomCFG
{
public:
private:
	static std::auto_ptr<Fish_RoomCFG> msSingleton;
public:
	int GetCount();
	const Fish_RoomCFGData* GetData(int RoomID);
	boost::unordered_map<int, Fish_RoomCFGData>& GetMapData();
	void Reload();
	void Load(const std::string& path);
	void Load();
	static Fish_RoomCFG* GetSingleton();
private:
	boost::unordered_map<int, Fish_RoomCFGData> mMapData;
};
