#include "StdAfx.h" #include "../eterBase/Filename.h" #include "Property.h" float SEnvironmentData::GetFogNearDistance() const { return m_fFogNearDistance; } float SEnvironmentData::GetFogFarDistance() const { return m_fFogFarDistance; } float SPixelPosition_CalculateDistanceSq3d(const TPixelPosition& c_rkPPosLeft, const TPixelPosition& c_rkPPosRight) { float dx=c_rkPPosLeft.x-c_rkPPosRight.x; float dy=c_rkPPosLeft.y-c_rkPPosRight.y; float dz=c_rkPPosLeft.z-c_rkPPosRight.z; return dx*dx+dy*dy+dz*dz; } namespace prt { DWORD GetPropertyType(const char * c_szTypeName) { for (DWORD i = 0; i < PROPERTY_TYPE_MAX_NUM; ++i) { if (!strcmp(c_szPropertyTypeName[i], c_szTypeName)) return i; } return PROPERTY_TYPE_NONE; } const char * GetPropertyExtension(DWORD dwType) { if (dwType >= PROPERTY_TYPE_MAX_NUM) return c_szPropertyExtension[0]; return c_szPropertyExtension[dwType]; } const char * IntegerNumberToString(int iNumber) { static char szString[16+1]; _snprintf(szString, sizeof(szString), "%d", iNumber); return szString; } const char * FloatNumberToString(float fNumber) { static char szString[16+1]; _snprintf(szString, sizeof(szString), "%f", fNumber); return szString; } bool PropertyTreeDataToString(TPropertyTree * pData, CProperty * pProperty) { pProperty->Clear(); pProperty->PutString("PropertyType", "Tree"); pProperty->PutString("PropertyName", pData->strName.c_str()); pProperty->PutString("TreeFile", pData->strFileName.c_str()); pProperty->PutString("TreeSize", FloatNumberToString(pData->fSize)); pProperty->PutString("TreeVariance", FloatNumberToString(pData->fVariance)); return true; } bool PropertyTreeStringToData(CProperty * pProperty, TPropertyTree * pData) { const char * c_pszPropertyType; const char * c_pszPropertyName; if (!pProperty->GetString("PropertyType", &c_pszPropertyType)) return false; if (!pProperty->GetString("PropertyName", &c_pszPropertyName)) return false; if (strcmp(c_pszPropertyType, "Tree")) return false; pData->strName = c_pszPropertyName; /////////////////////////////////////////////////////////////////////////////////// const char * c_pszTreeName; const char * c_pszTreeSize; const char * c_pszTreeVariance; if (!pProperty->GetString("TreeFile", &c_pszTreeName)) return false; if (!pProperty->GetString("TreeSize", &c_pszTreeSize)) return false; if (!pProperty->GetString("TreeVariance", &c_pszTreeVariance)) return false; pData->strFileName = c_pszTreeName; pData->fSize = atof(c_pszTreeSize); pData->fVariance = atof(c_pszTreeVariance); return true; } bool PropertyBuildingDataToString(TPropertyBuilding * pData, CProperty * pProperty) { pProperty->Clear(); pProperty->PutString("PropertyType", "Building"); pProperty->PutString("PropertyName", pData->strName.c_str()); pProperty->PutString("BuildingFile", pData->strFileName.c_str()); pProperty->PutString("ShadowFlag", IntegerNumberToString(pData->isShadowFlag)); return true; } bool PropertyBuildingStringToData(CProperty * pProperty, TPropertyBuilding * pData) { const char * c_pszPropertyType; const char * c_pszPropertyName; if (!pProperty->GetString("PropertyType", &c_pszPropertyType)) return false; if (!pProperty->GetString("PropertyName", &c_pszPropertyName)) return false; if (strcmp(c_pszPropertyType, "Building")) return false; pData->strName = c_pszPropertyName; /////////////////////////////////////////////////////////////////////////////////// const char * c_pszBuildingName; if (!pProperty->GetString("BuildingFile", &c_pszBuildingName)) return false; pData->strFileName = c_pszBuildingName; pData->strAttributeDataFileName = CFileNameHelper::NoExtension(pData->strFileName) + ".mdatr"; const char * c_pszShadowFlag; if (!pProperty->GetString("ShadowFlag", &c_pszShadowFlag)) { pData->isShadowFlag = FALSE; } else { pData->isShadowFlag = atoi(c_pszShadowFlag); } return true; } bool PropertyEffectDataToString(TPropertyEffect * pData, CProperty * pProperty) { pProperty->Clear(); pProperty->PutString("PropertyType", "Effect"); pProperty->PutString("PropertyName", pData->strName.c_str()); pProperty->PutString("EffectFile", pData->strFileName.c_str()); return true; } bool PropertyEffectStringToData(CProperty * pProperty, TPropertyEffect * pData) { const char * c_pszPropertyType; const char * c_pszPropertyName; if (!pProperty->GetString("PropertyType", &c_pszPropertyType)) return false; if (!pProperty->GetString("PropertyName", &c_pszPropertyName)) return false; if (strcmp(c_pszPropertyType, "Effect")) return false; pData->strName = c_pszPropertyName; /////////////////////////////////////////////////////////////////////////////////// const char * c_pszEffectName; if (!pProperty->GetString("EffectFile", &c_pszEffectName)) return false; pData->strFileName = c_pszEffectName; return true; } bool PropertyAmbienceDataToString(TPropertyAmbience * pData, CProperty * pProperty) { pProperty->Clear(); pProperty->PutString("PropertyType", "Ambience"); pProperty->PutString("PropertyName", pData->strName.c_str()); pProperty->PutString("PlayType", pData->strPlayType.c_str()); pProperty->PutString("PlayInterval", FloatNumberToString(pData->fPlayInterval)); pProperty->PutString("PlayIntervalVariation", FloatNumberToString(pData->fPlayIntervalVariation)); pProperty->PutString("MaxVolumeAreaPercentage", FloatNumberToString(pData->fMaxVolumeAreaPercentage)); CTokenVector AmbienceSoundVector; std::vector::iterator itor = pData->AmbienceSoundVector.begin(); for (; itor != pData->AmbienceSoundVector.end(); ++itor) { std::string & rstrToken = *itor; AmbienceSoundVector.push_back(rstrToken.c_str()); } pProperty->PutVector("AmbienceSoundVector", AmbienceSoundVector); return true; } bool PropertyAmbienceStringToData(CProperty * pProperty, TPropertyAmbience * pData) { const char * c_pszPropertyType; const char * c_pszPropertyName; if (!pProperty->GetString("PropertyType", &c_pszPropertyType)) return false; if (!pProperty->GetString("PropertyName", &c_pszPropertyName)) return false; if (strcmp(c_pszPropertyType, "Ambience")) return false; pData->strName = c_pszPropertyName; /////////////////////////////////////////////////////////////////////////////////// const char * c_pszPlayType; const char * c_pszPlayInterval; const char * c_pszPlayIntervalVariation; const char * c_pszMaxVolumeAreaPercentage = NULL; CTokenVector AmbienceSoundVector; if (!pProperty->GetString("PlayType", &c_pszPlayType)) return false; if (!pProperty->GetString("PlayInterval", &c_pszPlayInterval)) return false; if (!pProperty->GetString("PlayIntervalVariation", &c_pszPlayIntervalVariation)) return false; if (!pProperty->GetString("MaxVolumeAreaPercentage", &c_pszMaxVolumeAreaPercentage)) { pData->fMaxVolumeAreaPercentage = 0.0f; } if (!pProperty->GetVector("AmbienceSoundVector", AmbienceSoundVector)) return false; pData->strPlayType = c_pszPlayType; pData->fPlayInterval = atof(c_pszPlayInterval); pData->fPlayIntervalVariation = atof(c_pszPlayIntervalVariation); if (c_pszMaxVolumeAreaPercentage) pData->fMaxVolumeAreaPercentage = atof(c_pszMaxVolumeAreaPercentage); for (CTokenVector::iterator itor = AmbienceSoundVector.begin(); itor != AmbienceSoundVector.end(); ++itor) pData->AmbienceSoundVector.push_back(*itor); return true; } bool PropertyDungeonBlockDataToString(TPropertyDungeonBlock * pData, CProperty * pProperty) { pProperty->Clear(); pProperty->PutString("PropertyType", "DungeonBlock"); pProperty->PutString("PropertyName", pData->strName.c_str()); pProperty->PutString("DungeonBlockFile", pData->strFileName.c_str()); return true; } bool PropertyDungeonBlockStringToData(CProperty * pProperty, TPropertyDungeonBlock * pData) { const char * c_pszPropertyType; const char * c_pszPropertyName; if (!pProperty->GetString("PropertyType", &c_pszPropertyType)) return false; if (!pProperty->GetString("PropertyName", &c_pszPropertyName)) return false; if (strcmp(c_pszPropertyType, "DungeonBlock")) return false; pData->strName = c_pszPropertyName; /////////////////////////////////////////////////////////////////////////////////// const char * c_pszDungeonBlockFileName = NULL; if (!pProperty->GetString("dungeonblockfile", &c_pszDungeonBlockFileName)) return false; pData->strFileName = c_pszDungeonBlockFileName; pData->strAttributeDataFileName = CFileNameHelper::NoExtension(pData->strFileName) + std::string(".mdatr"); return true; } }; // namespace prt;