forked from metin2/client
222 lines
4.7 KiB
C
222 lines
4.7 KiB
C
|
#ifndef __MapType_Header__
|
|||
|
#define __MapType_Header__
|
|||
|
|
|||
|
class CProperty;
|
|||
|
|
|||
|
#include "../eterLib/SkyBox.h"
|
|||
|
#include "../mileslib/SoundManager.h"
|
|||
|
|
|||
|
/////////////////////////////////////////////////////////////////
|
|||
|
// Property
|
|||
|
namespace prt
|
|||
|
{
|
|||
|
enum EPropertyType
|
|||
|
{
|
|||
|
PROPERTY_TYPE_NONE,
|
|||
|
PROPERTY_TYPE_TREE,
|
|||
|
PROPERTY_TYPE_BUILDING,
|
|||
|
PROPERTY_TYPE_EFFECT,
|
|||
|
PROPERTY_TYPE_AMBIENCE,
|
|||
|
PROPERTY_TYPE_DUNGEON_BLOCK,
|
|||
|
PROPERTY_TYPE_MAX_NUM,
|
|||
|
};
|
|||
|
|
|||
|
const char c_szPropertyTypeName[PROPERTY_TYPE_MAX_NUM][32] =
|
|||
|
{
|
|||
|
"None",
|
|||
|
"Tree",
|
|||
|
"Building",
|
|||
|
"Effect",
|
|||
|
"Ambience",
|
|||
|
"DungeonBlock"
|
|||
|
};
|
|||
|
|
|||
|
const char c_szPropertyExtension[PROPERTY_TYPE_MAX_NUM][16] =
|
|||
|
{
|
|||
|
".pr",
|
|||
|
".prt",
|
|||
|
".prb",
|
|||
|
".pre",
|
|||
|
".pra",
|
|||
|
".prd"
|
|||
|
};
|
|||
|
|
|||
|
DWORD GetPropertyType(const char * c_szTypeName);
|
|||
|
const char * GetPropertyExtension(DWORD dwType);
|
|||
|
|
|||
|
struct TPropertyTree
|
|||
|
{
|
|||
|
std::string strName;
|
|||
|
std::string strFileName;
|
|||
|
|
|||
|
float fSize;
|
|||
|
float fVariance;
|
|||
|
};
|
|||
|
|
|||
|
struct TPropertyBuilding
|
|||
|
{
|
|||
|
std::string strName;
|
|||
|
std::string strFileName;
|
|||
|
std::string strAttributeDataFileName;
|
|||
|
BOOL isShadowFlag;
|
|||
|
};
|
|||
|
|
|||
|
struct TPropertyEffect
|
|||
|
{
|
|||
|
std::string strName;
|
|||
|
std::string strFileName;
|
|||
|
};
|
|||
|
|
|||
|
enum EAmbiencePlayType
|
|||
|
{
|
|||
|
AMBIENCE_PLAY_TYPE_ONCE,
|
|||
|
AMBIENCE_PLAY_TYPE_STEP,
|
|||
|
AMBIENCE_PLAY_TYPE_LOOP,
|
|||
|
AMBIENCE_PLAY_TYPE_MAX_NUM,
|
|||
|
};
|
|||
|
|
|||
|
const char c_szPlayTypeName[AMBIENCE_PLAY_TYPE_MAX_NUM][8] =
|
|||
|
{
|
|||
|
"ONCE",
|
|||
|
"STEP",
|
|||
|
"LOOP",
|
|||
|
};
|
|||
|
|
|||
|
struct TPropertyAmbience
|
|||
|
{
|
|||
|
std::string strName;
|
|||
|
std::string strPlayType;
|
|||
|
|
|||
|
float fPlayInterval;
|
|||
|
float fPlayIntervalVariation;
|
|||
|
float fMaxVolumeAreaPercentage;
|
|||
|
std::vector<std::string> AmbienceSoundVector;
|
|||
|
};
|
|||
|
|
|||
|
struct TPropertyDungeonBlock
|
|||
|
{
|
|||
|
std::string strName;
|
|||
|
std::string strFileName;
|
|||
|
std::string strAttributeDataFileName;
|
|||
|
};
|
|||
|
|
|||
|
bool PropertyTreeDataToString(TPropertyTree * pData, CProperty * pProperty);
|
|||
|
bool PropertyTreeStringToData(CProperty * pProperty, TPropertyTree * pData);
|
|||
|
bool PropertyBuildingDataToString(TPropertyBuilding * pData, CProperty * pProperty);
|
|||
|
bool PropertyBuildingStringToData(CProperty * pProperty, TPropertyBuilding * pData);
|
|||
|
bool PropertyEffectDataToString(TPropertyEffect * pData, CProperty * pProperty);
|
|||
|
bool PropertyEffectStringToData(CProperty * pProperty, TPropertyEffect * pData);
|
|||
|
bool PropertyAmbienceDataToString(TPropertyAmbience * pData, CProperty * pProperty);
|
|||
|
bool PropertyAmbienceStringToData(CProperty * pProperty, TPropertyAmbience * pData);
|
|||
|
bool PropertyDungeonBlockDataToString(TPropertyDungeonBlock * pData, CProperty * pProperty);
|
|||
|
bool PropertyDungeonBlockStringToData(CProperty * pProperty, TPropertyDungeonBlock * pData);
|
|||
|
};
|
|||
|
/////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
/////////////////////////////////////////////////////////////////
|
|||
|
// Environment
|
|||
|
//
|
|||
|
enum
|
|||
|
{
|
|||
|
ENV_DIRLIGHT_BACKGROUND,
|
|||
|
ENV_DIRLIGHT_CHARACTER,
|
|||
|
ENV_DIRLIGHT_NUM
|
|||
|
};
|
|||
|
|
|||
|
typedef struct SEnvironmentData
|
|||
|
{
|
|||
|
// Light
|
|||
|
BOOL bDirLightsEnable[ENV_DIRLIGHT_NUM];
|
|||
|
D3DLIGHT8 DirLights[ENV_DIRLIGHT_NUM];
|
|||
|
|
|||
|
// Material
|
|||
|
D3DMATERIAL8 Material;
|
|||
|
|
|||
|
// Fog
|
|||
|
BOOL bFogEnable;
|
|||
|
BOOL bDensityFog;
|
|||
|
|
|||
|
float m_fFogNearDistance;
|
|||
|
float m_fFogFarDistance;
|
|||
|
|
|||
|
float GetFogNearDistance() const;
|
|||
|
float GetFogFarDistance() const;
|
|||
|
|
|||
|
D3DXCOLOR FogColor;
|
|||
|
|
|||
|
// Filtering
|
|||
|
BOOL bFilteringEnable;
|
|||
|
D3DXCOLOR FilteringColor;
|
|||
|
BYTE byFilteringAlphaSrc;
|
|||
|
BYTE byFilteringAlphaDest;
|
|||
|
|
|||
|
// Wind
|
|||
|
float fWindStrength;
|
|||
|
float fWindRandom;
|
|||
|
|
|||
|
// SkyBox
|
|||
|
D3DXVECTOR3 v3SkyBoxScale;
|
|||
|
BOOL bSkyBoxTextureRenderMode;
|
|||
|
|
|||
|
BYTE bySkyBoxGradientLevelUpper;
|
|||
|
BYTE bySkyBoxGradientLevelLower;
|
|||
|
|
|||
|
std::string strSkyBoxFaceFileName[6]; //order : front/back/left/right/top/bottom
|
|||
|
|
|||
|
|
|||
|
D3DXVECTOR2 v2CloudScale;
|
|||
|
float fCloudHeight;
|
|||
|
D3DXVECTOR2 v2CloudTextureScale;
|
|||
|
D3DXVECTOR2 v2CloudSpeed;
|
|||
|
std::string strCloudTextureFileName;
|
|||
|
TGradientColor CloudGradientColor;
|
|||
|
|
|||
|
std::vector<TGradientColor> SkyBoxGradientColorVector;
|
|||
|
|
|||
|
// LensFlare
|
|||
|
BOOL bLensFlareEnable;
|
|||
|
D3DXCOLOR LensFlareBrightnessColor;
|
|||
|
float fLensFlareMaxBrightness;
|
|||
|
|
|||
|
BOOL bMainFlareEnable;
|
|||
|
std::string strMainFlareTextureFileName;
|
|||
|
float fMainFlareSize;
|
|||
|
|
|||
|
BOOL bReserve; // <20>ܺο<DCBA><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD>
|
|||
|
} TEnvironmentData;
|
|||
|
|
|||
|
typedef std::map<DWORD, TEnvironmentData*> TEnvironmentDataMap;
|
|||
|
/////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
typedef struct SScreenPosition {
|
|||
|
int x;
|
|||
|
int y;
|
|||
|
} TScreenPosition;
|
|||
|
|
|||
|
typedef D3DXVECTOR3 TPixelPosition;
|
|||
|
|
|||
|
float SPixelPosition_CalculateDistanceSq3d(const TPixelPosition& c_rkPPosLeft, const TPixelPosition& c_rkPPosRight);
|
|||
|
|
|||
|
typedef struct SCellPosition
|
|||
|
{
|
|||
|
SCellPosition()
|
|||
|
{
|
|||
|
this->x = 0;
|
|||
|
this->y = 0;
|
|||
|
}
|
|||
|
|
|||
|
SCellPosition(int x, int y)
|
|||
|
{
|
|||
|
this->x = x;
|
|||
|
this->y = y;
|
|||
|
}
|
|||
|
|
|||
|
int x, y;
|
|||
|
} TCellPosition;
|
|||
|
|
|||
|
const int c_Section_xAttributeCellSize = 50;
|
|||
|
const int c_Section_yAttributeCellSize = 50;
|
|||
|
const int c_Section_xCellSize = 100;
|
|||
|
const int c_Section_yCellSize = 100;
|
|||
|
|
|||
|
#endif
|