/** @file SceneDesignerConfig.h @brief 场景编辑器中用户配置数据
*	Copyright (c) 2007,第九城市游戏研发中心
*	All rights reserved.
*
*	当前版本:
*	作    者:史亚征
*	完成日期:2008-03-14
*
*	取代版本:
*	作    者:
*	完成日期:
*
*  备    注:本类只在场景编辑器中使用
*/ #pragma once #ifndef CODE_INGAME #include "TextureSearchPath.h" // 配置文件名 #define CONFIG_FILE_XML "scene_designer_config.xml" // 地表属性 struct MAIN_ENTRY stTerrainSurfaceProperty { stTerrainSurfaceProperty(){} int iID; char szName[64]; NiColor kColor; }; #pragma make_public(stTerrainSurfaceProperty) // 区域属性 struct MAIN_ENTRY stRegionProperty { stRegionProperty(){} int nType; string strName; string strViewName; int nShape; int nColorR; int nColorG; int nColorB; int nColorA; }; #pragma make_public(stRegionProperty) //081007 add by 和萌 //纹理区域属性 struct MAIN_ENTRY stMaterialRegPro { //纹理名及其对应区域属性 map mapMtlRegPro; }; /// 场景编辑器配置数据 class MAIN_ENTRY CSceneDesignerConfig { public: /// 析构 ~CSceneDesignerConfig(void); /// 获取唯一实例 static CSceneDesignerConfig* GetInstance(); /// 添加/删除/获取 地表属性 bool AddTerrainSurfaceProperty(const stTerrainSurfaceProperty& terrProperty); bool RemoveTerrainSurfaceProperty(const char* pszPropertyName); bool SetTerrainSurfacePropertyColor(const char* pszPropertyName, const NiColor& kColor); vector& GetTerrainSurfacePropertyList(); /// 获取地表属性数量 int GetNumTerrainSurfaceProerties(); /// 按顺序获取地表属性 stTerrainSurfaceProperty& GetTerrainSurfaceProperty(unsigned int iNum); /// 获取 iPropertyID 对应的颜色 const NiColor& GetTerrainSurfacePropertyColor(int iPropertyID) { // 暂时放在 .h 中,记得移到 .cpp for (unsigned int i=0; i& GetEntityCategoryList() const; /// 通过9位类型名获取 template 的 显示名称 const char* GetTemplateViewName(string strTypeName); /// 保存配置文件 bool SaveToXml(); /// 获取纹理搜索路径 NiSearchPath* GetTextureSearchPath(); vector& GetTexturePathList() {return m_TexturePathList;} //获取区域属性信息 string GetRegionPropViewName(int nIndex); stRegionProperty* GetRegionPropByIndex(int nIndex); int GetRegionShapeByType(int nType); int GetRegionColorByType(int nType, int nColorType); int GetRegionShapyeByMaterial(const string strMtlName); private: /// 构造 CSceneDesignerConfig(void); /// 保存/载入 配置文件 bool _LoadFromXml(); /// 根据名称搜索 property vector::iterator _FindTerrainSurfaceProperty(const char* pszPropertyName, int iID); /// 属性 vector m_TerrainSurfacePropertyList; // 地表属性列表 float m_fCameraFOV; // game camera 的 fov float m_fPlayerToCamera; // game camera 到 角色的距离 vector m_EntityCategoryList; // entity 类型列表. 目前包含地上不可行走 地上可行走物体 地下物体 标尺 map m_mapTypeName2TemplateName; // 9位的类型名称(文件名前9位)到模板名的影射 CTextureSearchPath m_TextureSearchPath; // 纹理的搜索路径 vector m_TexturePathList; vector m_RegionPropertyList; // 区域属性列表 stMaterialRegPro m_MtlRegionProperty; // 纹理区域属性列表 }; #pragma make_public(CSceneDesignerConfig) #endif