This commit is contained in:
aixianling
2025-01-09 17:45:40 +08:00
commit 5c9f1dae4a
3482 changed files with 1146531 additions and 0 deletions

View File

@@ -0,0 +1,183 @@
#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);
};