Files
mir_server/server/robot/Scene/SceneConfigLoader.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

183 lines
4.1 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 "JXAbsGameMap.h"
#include <functional>
typedef struct tagNpcName
{
int nId;
char sName[32];
}NPCNAME,*PNPCNAME;
struct tagSceneMapConf: public tagSceneConfig
{
jxcomm::gameMap::CAbstractMap m_MapData; //地图点数据
tagSceneMapConf():m_MapData(){}
};
typedef struct tagSceneMapConf SCENEMAPCONF, *PSCENEMAPCONF;
struct SceneMapConfigList
{
int nCount;
SCENEMAPCONF* pList;
};
class CSceneConfigLoader : public CCustomLogicLuaConfig
{
public:
const static LPCTSTR szEnvirConfigFileName;
const static int snNormalFubenID = 0; // 常规副本普通场景的副本Id
CSceneConfigLoader();
/*
* Comments: 加载场景相关的配置文件并且读取配置
* Param LPCTSTR szFileName: 配置文件名
* @Return bool:
* @Remark:
*/
bool Load();
/*
* Comments: 获取场景配置
* Param int nSceneId: 场景Id
* @Return SCENECONFIG*:
* @Remark:
*/
SCENEMAPCONF* GetSceneConfig(int nSceneId);
/*
* Comments: 获取随机的刷新点坐标
* Param const int nSceneId:场景Id
* Param int & nX:
* Param int & nY:
* @Return void:
* @Remark: 用于给挂机找合适的传送点
*/
void GetRandomRefreshPos(const int nSceneId, int& nX, int& nY);
/*
* Comments: 判断场景指定点是否可以移动
* Param const int nSceneId: 场景Id
* Param const int nX: 场景中的位置坐标X
* Param const int nY: 场景中的位置坐标Y
* @Return bool: 如果可以移动返回true否则返回false
* @Remark:
*/
bool CanMove(const int nSceneId, const int nX, const int nY);
/*
* Comments: 判断指定场景中的某个点是否是传送门
* Param const int nSceneId: 场景Id
* Param const int nX: 场景中的位置坐标X
* Param const int nY: 场景中的位置坐标Y
* @Return bool: 如果是传送门返回true否则返回false
* @Remark:
*/
bool IsTeleport(const int nSceneId, const int nX, const int nY);
/*
* Comments: 获取场景默认点
* Param int& nX:
* Param int& nY:
* @Return void:
* @Remark: 默认点是第一个区域的中心店
*/
static void GetSceneDefaultPoint(SCENECONFIG* sc, int& nX, int& nY);
/*
* Comments:通过场景id和实体id取x,y坐标
* Param int nSceneId:
* Param int nEntityId:
* Param int & nX:
* Param int & nY:
* @Return bool:
*/
bool GetMonsterPos(int nSceneId, int nEntityId, int & nX, int & nY);
private:
CObjectAllocator<char> m_DataAllocator;
SceneMapConfigList m_sceneConfigList; // 场景(公共地图,不处理副本了)
protected:
/*
* Comments: 输出错误信息
* Param LPCTSTR sError:
* @Return void:
* @Remark:
*/
void showError(LPCTSTR sError);
/*
* Comments: 读取配置
* @Return bool:
* @Remark:
*/
bool LoadSceneConfig();
/*
* Comments: 加载区域配置
* Param SCENECONFIG * sceneConf:
* @Return bool:
* @Remark:
*/
bool LoadAreasConfig(SCENECONFIG* sceneConf);
/*
* Comments:加载npc配置
* Param SCENECONFIG * sceneConf:
* @Return bool:
*/
bool LoadNpcConfig(SCENECONFIG * sceneConf);
/*
* Comments: 读取单个FB配置数据
* Param int nId: 副本索引
* Param int nFBId: 副本Id
* @Return bool:
* @Remark: 配置需要保证副本ID和索引是相同的
*/
bool ReadSingleFBConfig(int nId, int nFBId);
/*
* Comments: 加载区域范围配置
* Param SCENECONFIG * sceneConf:
* Param SCENEAREA * area:
* @Return bool:
* @Remark:
*/
bool LoadAreaRangeConfig(SCENECONFIG* sceneConf, SCENEAREA* area);
/*
* Comments: 加载区域中心配置
* Param SCENECONFIG * sceneConf:
* Param SCENEAREA * area:
* @Return bool:
* @Remark:
*/
bool LoadAreaCenterConfig(SCENECONFIG* sceneConf, SCENEAREA* area);
/*
* Comments: 加载传送点配置
* Param SCENECONFIG * sceneConf:
* @Return bool:
* @Remark:
*/
bool LoadTelePortConfig(SCENECONFIG* sceneConf);
/*
* Comments: 加载挂机点配置
* Param SCENECONFIG * sceneConf:
*/
bool LoadHookConfig(SCENECONFIG* sceneConf);
/*
* Comments: 加载刷新点配置
* Param SCENECONFIG * sceneConf:
* @Return bool:
* @Remark:
*/
bool LoadRefreshConfig(SCENECONFIG* sceneConf);
/*
* Comments: 加载场景地图
* @Return bool:
* @Remark:
*/
bool LoadSceneMap(SCENEMAPCONF* sceneConf);
};