// MapStorage.cpp: implementation of the CMapStorage class. // ////////////////////////////////////////////////////////////////////// #include "MapStorage.h" #include "RenderOption.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// /* List CMapStorage::m_DundeonMap; List CMapStorage::m_HeightMap; List CMapStorage::m_MeshMap; List CMapStorage::m_PlantMap; List CMapStorage::m_WideMap; List CMapStorage::m_HouseMap; List CMapStorage::m_WaterMap; List CMapStorage::m_FallMap; List CMapStorage::m_InHouseMap; List CMapStorage::m_MustDivideVertexMap; List CMapStorage::m_EffectMap; long CMapStorage::m_TotalHouseSceneCount; long CMapStorage::m_TotalInHouseLightSceneCount; long CMapStorage::m_TotalInHouseObjectSceneCount; long CMapStorage::m_TotalObjectSceneCount; */ CMapStorage::CMapStorage() { m_TotalHouseSceneCount=0; m_TotalInHouseLightSceneCount=0; m_TotalInHouseObjectSceneCount=0; m_TotalObjectSceneCount=0; m_TotalLightCount = 0; m_LoadMode=0; } CMapStorage::~CMapStorage() { DeleteAllObject(); } void CMapStorage::Load(char *strFilename) { FILE *fp=fopen(strFilename,"rb"); if(fp==NULL) return; strcpy(m_strMapFilename,strFilename); DeleteAllData(); char strRead[MAX_NAMEBUFFER]; fread(strRead,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(&m_TotalHouseSceneCount,sizeof(long),1,fp); fread(&m_TotalInHouseLightSceneCount,sizeof(long),1,fp); fread(&m_TotalInHouseObjectSceneCount,sizeof(long),1,fp); fread(&m_TotalObjectSceneCount,sizeof(long),1,fp); // Height-Value Loading int cSavedHeightData=0; fread(&cSavedHeightData,sizeof(int),1,fp); if(m_LoadMode==0) { for(int cHeightData=0;cHeightDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); AddNode->m_pHeightData=new float[SECTORSX*SECTORSY]; fread(AddNode->m_pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); m_HeightMap.Add(AddNode); } } else { float pHeightData[SECTORSX*SECTORSY]; for(int cHeightData=0;cHeightDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); AddNode->m_FilePos=ftell(fp); fread(&pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); m_HeightMap.Add(AddNode); } } //Water loading int cSavedWaterData=0; fread(&cSavedWaterData,sizeof(int),1,fp); for(int cWaterData=0;cWaterDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(&AddNode->m_fWaterPosX,sizeof(float),1,fp); fread(&AddNode->m_fWaterPosY,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeX,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeY,sizeof(float),1,fp); fread(&AddNode->m_fWaterHeight,sizeof(float),1,fp); fread(&AddNode->m_bWaterRelection,sizeof(bool),1,fp); fread(&AddNode->m_WaterColor,sizeof(color),1,fp); m_WaterMap.Add(AddNode); } //Widemap loading int cSavedWideData=0; fread(&cSavedWideData,sizeof(int),1,fp); for(int cWideData=0;cWideDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(AddNode->m_strWidemapName[0],sizeof(char)*MAX_NAMEBUFFER,1,fp); strcpy(AddNode->m_strDetailName[0],"detail.dds"); m_WideMap.Add(AddNode); } //Fallmap loading int cSavedFallData=0; fread(&cSavedFallData,sizeof(int),1,fp); for(int cFallData=0;cFallDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(&AddNode->m_fFallPosX,sizeof(float),1,fp); fread(&AddNode->m_fFallPosY,sizeof(float),1,fp); fread(&AddNode->m_fFallRot,sizeof(float),1,fp); int cSavedFallList; fread(&cSavedFallList,sizeof(int),1,fp); for(int cFallList=0;cFallListm_FallHeightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallLeftList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallRightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallAddXList.Add(ReadFallData); fread(&ReadFallColor,sizeof(color),1,fp); AddNode->m_FallColor.Add(ReadFallColor); } m_FallMap.Add(AddNode); } // HouseMap loading int cSavedHouseData=0; fread(&cSavedHouseData,sizeof(int),1,fp); for(int cHouseData=0;cHouseDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedHouseList=0; fread(&cSavedHouseList,sizeof(int),1,fp); for(int cHouseList=0;cHouseListm_TM.Add(ReadHouseTM); fread(&ReadHouseID,sizeof(int),1,fp); AddNode->m_HouseSceneID.Add(ReadHouseID); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strOutName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strMedName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strInName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; strcpy(ReadHouseName,""); AddNode->m_strBspName.Add(ReadHouseName); } m_HouseMap.Add(AddNode); } int cSavedInHouseData=0; fread(&cSavedInHouseData,sizeof(int),1,fp); for(int cInHouseData=0;cInHouseDatam_strOutName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strMedName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strInName,sizeof(char)*MAX_NAMEBUFFER,1,fp); strcpy(AddNode->m_strOutName,strlwr(AddNode->m_strOutName)); strcpy(AddNode->m_strMedName,strlwr(AddNode->m_strMedName)); strcpy(AddNode->m_strInName,strlwr(AddNode->m_strInName)); strcpy(AddNode->m_strBspName,""); int cSavedObject,cSavedLight; fread(&cSavedObject,sizeof(int),1,fp); for(int cObject=0;cObjectm_strObjectNameList.Add(ReadObjectName); fread(&ReadObjectID,sizeof(long),1,fp); AddNode->m_ObjectID.Add(ReadObjectID); fread(&ReadObjectTM,sizeof(matrix),1,fp); AddNode->m_matObjectList.Add(ReadObjectTM); fread(&ReadAlpha,sizeof(bool),1,fp); AddNode->m_isAlpha.Add(true); fread(&ReadLight,sizeof(bool),1,fp); AddNode->m_isLight.Add(true); } fread(&cSavedLight,sizeof(int),1,fp); for(int cLight=0;cLightm_strLightNameList.Add(ReadLightName); fread(&ReadLightID,sizeof(long),1,fp); AddNode->m_LightID.Add(ReadLightID); fread(&ReadLightTM,sizeof(matrix),1,fp); AddNode->m_matLightList.Add(ReadLightTM); fread(&ReadLightRange,sizeof(float),1,fp); AddNode->m_fLightRange.Add(ReadLightRange); fread(&ReadLightColor,sizeof(color),1,fp); AddNode->m_LightColor.Add(ReadLightColor); } m_InHouseMap.Add(AddNode); } // PlantMap loading int cSavedPlantData=0; fread(&cSavedPlantData,sizeof(int),1,fp); for(int cPlantData=0;cPlantDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedSubPlant; int ReadKind; unsigned char ReadPosX,ReadPosZ; //vector3 ReadPos; fread(&cSavedSubPlant,sizeof(int),1,fp); for(int cSubPlant=0;cSubPlantm_PlantKind.num;cNowPlant++) { if( AddNode->m_PlantPosX[cNowPlant]==ReadPosX && AddNode->m_PlantPosZ[cNowPlant]==ReadPosZ) { AddNode->m_PlantKind[cNowPlant]=ReadKind; AddNode->m_PlantPosX[cNowPlant]=ReadPosX; AddNode->m_PlantPosZ[cNowPlant]=ReadPosZ; isAlready=true; } } if(isAlready==false) { AddNode->m_PlantKind.Add(ReadKind); AddNode->m_PlantPosX.Add(ReadPosX); AddNode->m_PlantPosZ.Add(ReadPosZ); } //AddNode->m_vecPlantPos.Add(ReadPos); } m_PlantMap.Add(AddNode); } // MeshMap loading int cSavedMeshData=0; fread(&cSavedMeshData,sizeof(int),1,fp); for(int cMeshData=0;cMeshDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedObject=0; fread(&cSavedObject,sizeof(int),1,fp); int ReadObjectSceneID; matrix ReadMatrixTM; bool ReadAlpha,ReadLight; for(int cObject=0;cObjectm_ObjectSceneID.Add(ReadObjectSceneID); AddNode->m_strObjectName.Add(ReadObjectName); AddNode->m_TM.Add(ReadMatrixTM); AddNode->m_isAlpha.Add(true); AddNode->m_isLight.Add(true); } m_MeshMap.Add(AddNode); } fclose(fp); BugFix_Tree(); //BugFix_Hangul2English(); } void CMapStorage::Save(char *strFilename) { FILE *fp=fopen(strFilename,"wb"); if(fp==NULL) return; char strWrite[MAX_NAMEBUFFER]; sprintf(strWrite,"ZallA-3D Scene Data File Build#1"); fwrite(strWrite,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_TotalHouseSceneCount,sizeof(long),1,fp); fwrite(&m_TotalInHouseLightSceneCount,sizeof(long),1,fp); fwrite(&m_TotalInHouseObjectSceneCount,sizeof(long),1,fp); fwrite(&m_TotalObjectSceneCount,sizeof(long),1,fp); // Height-Value Saving fwrite(&m_HeightMap.num,sizeof(int),1,fp); for(int cHeightData=0;cHeightDatam_IndexX,sizeof(int),1,fp); fwrite(&m_HeightMap[cHeightData]->m_IndexY,sizeof(int),1,fp); fwrite(m_HeightMap[cHeightData]->m_pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); } //Water Saving fwrite(&m_WaterMap.num,sizeof(int),1,fp); for(int cWaterData=0;cWaterDatam_IndexX,sizeof(int),1,fp); fwrite(&m_WaterMap[cWaterData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterPosX,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterPosY,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterSizeX,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterSizeY,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterHeight,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_bWaterRelection,sizeof(bool),1,fp); fwrite(&m_WaterMap[cWaterData]->m_WaterColor,sizeof(color),1,fp); } //Widemap saving fwrite(&m_WideMap.num,sizeof(int),1,fp); for(int cWideData=0;cWideDatam_IndexX,sizeof(int),1,fp); fwrite(&m_WideMap[cWideData]->m_IndexY,sizeof(int),1,fp); fwrite(m_WideMap[cWideData]->m_strWidemapName,sizeof(char)*MAX_NAMEBUFFER,1,fp); } //Fallmap saving fwrite(&m_FallMap.num,sizeof(int),1,fp); for(int cFallData=0;cFallDatam_IndexX,sizeof(int),1,fp); fwrite(&m_FallMap[cFallData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallPosX,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallPosY,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallRot,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallHeightList.num,sizeof(int),1,fp); for(int cFallList=0;cFallListm_FallHeightList.num;cFallList++) { fwrite(&m_FallMap[cFallData]->m_FallHeightList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallLeftList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallRightList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallAddXList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallColor[cFallList],sizeof(color),1,fp); } } //HouseMap saving fwrite(&m_HouseMap.num,sizeof(int),1,fp); for(int cHouseData=0;cHouseDatam_IndexX,sizeof(int),1,fp); fwrite(&m_HouseMap[cHouseData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_HouseMap[cHouseData]->m_TM.num,sizeof(int),1,fp); for(int cHouseList=0;cHouseListm_TM.num;cHouseList++) { fwrite(&m_HouseMap[cHouseData]->m_TM[cHouseList],sizeof(matrix),1,fp); fwrite(&m_HouseMap[cHouseData]->m_HouseSceneID[cHouseList],sizeof(int),1,fp); fwrite(m_HouseMap[cHouseData]->m_strOutName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_HouseMap[cHouseData]->m_strMedName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_HouseMap[cHouseData]->m_strInName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); } } //InHouseObjectMap saving fwrite(&m_InHouseMap.num,sizeof(int),1,fp); for(int cInHouseData=0;cInHouseDatam_strOutName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_InHouseMap[cInHouseData]->m_strMedName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_InHouseMap[cInHouseData]->m_strInName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_strObjectNameList.num,sizeof(int),1,fp); for(int cObject=0;cObjectm_strObjectNameList.num;cObject++) { fwrite(m_InHouseMap[cInHouseData]->m_strObjectNameList[cObject],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_ObjectID[cObject],sizeof(long),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_matObjectList[cObject],sizeof(matrix),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_isAlpha[cObject],sizeof(bool),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_isLight[cObject],sizeof(bool),1,fp); } fwrite(&m_InHouseMap[cInHouseData]->m_strLightNameList.num,sizeof(int),1,fp); for(int cLight=0;cLightm_strLightNameList.num;cLight++) { fwrite(m_InHouseMap[cInHouseData]->m_strLightNameList[cLight],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_LightID[cLight],sizeof(long),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_matLightList[cLight],sizeof(matrix),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_fLightRange[cLight],sizeof(float),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_LightColor[cLight],sizeof(color),1,fp); } } // PlantMap saving fwrite(&m_PlantMap.num,sizeof(int),1,fp); for(int cPlantData=0;cPlantDatam_IndexX,sizeof(int),1,fp); fwrite(&m_PlantMap[cPlantData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantKind.num,sizeof(int),1,fp); for(int cSubPlant=0;cSubPlantm_PlantKind.num;cSubPlant++) { fwrite(&m_PlantMap[cPlantData]->m_PlantKind[cSubPlant],sizeof(unsigned char),1,fp); //fwrite(&m_PlantMap[cPlantData]->m_vecPlantPos[cSubPlant],sizeof(vector3),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantPosX[cSubPlant],sizeof(unsigned char),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantPosZ[cSubPlant],sizeof(unsigned char),1,fp); } } // MeshMap saving fwrite(&m_MeshMap.num,sizeof(int),1,fp); for(int cMeshData=0;cMeshDatam_IndexX,sizeof(int),1,fp); fwrite(&m_MeshMap[cMeshData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_MeshMap[cMeshData]->m_ObjectSceneID.num,sizeof(int),1,fp); for(int cObject=0;cObjectm_ObjectSceneID.num;cObject++) { fwrite(&m_MeshMap[cMeshData]->m_ObjectSceneID[cObject],sizeof(long),1,fp); fwrite(m_MeshMap[cMeshData]->m_strObjectName[cObject],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_MeshMap[cMeshData]->m_TM[cObject],sizeof(matrix),1,fp); fwrite(&m_MeshMap[cMeshData]->m_isAlpha[cObject],sizeof(bool),1,fp); fwrite(&m_MeshMap[cMeshData]->m_isLight[cObject],sizeof(bool),1,fp); } } fclose(fp); } CSectorDungeonMap* CMapStorage::FindDungeonMap(float fFindx, float fFindy) { return NULL; } CSectorHeightMap* CMapStorage::FindHeightMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_HeightMap[cStorage]->m_IndexY==indexy) { if(m_HeightMap[cStorage]->m_FilePos!=0) { FILE *fp=fopen(m_strMapFilename,"rb"); fseek(fp,m_HeightMap[cStorage]->m_FilePos,SEEK_CUR); m_HeightMap[cStorage]->m_pHeightData=new float[SECTORSX*SECTORSY]; fread(m_HeightMap[cStorage]->m_pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); fclose(fp); } return m_HeightMap[cStorage]; } } return NULL; } CSectorMeshMap* CMapStorage::FindMeshMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_MeshMap[cStorage]->m_IndexY==indexy) { return m_MeshMap[cStorage]; } } return NULL; } CSectorPlantMap* CMapStorage::FindPlantMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_PlantMap[cStorage]->m_IndexY==indexy) { return m_PlantMap[cStorage]; } } return NULL; } CSectorWideMap* CMapStorage::FindWideMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_WideMap[cStorage]->m_IndexY==indexy) { return m_WideMap[cStorage]; } } return NULL; } CSectorHouseMap* CMapStorage::FindHouseMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_HouseMap[cStorage]->m_IndexY==indexy) { return m_HouseMap[cStorage]; } } return NULL; } void CMapStorage::AddHouseMap(float fAddx, float fAddy, float fAddz,char *strOutName,char *strMedName,char *strInName,char *strBspName) { if(strcmp(strOutName,"")==0 && strcmp(strBspName,"")==0 ) return; int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); char *strAddInName=new char[MAX_NAMEBUFFER]; char *strAddMedName=new char[MAX_NAMEBUFFER]; char *strAddOutName=new char[MAX_NAMEBUFFER]; char *strAddBspName=new char[MAX_NAMEBUFFER]; strcpy(strAddInName,strInName); strcpy(strAddMedName,strMedName); strcpy(strAddOutName,strOutName); strcpy(strAddBspName,strBspName); matrix tm; tm.Translation(vector3(fAddx,fAddy,fAddz)); for(int i=0;im_IndexX==indexx && m_HouseMap[i]->m_IndexY==indexy) { m_HouseMap[i]->m_strInName.Add(strAddInName); m_HouseMap[i]->m_strMedName.Add(strAddMedName); m_HouseMap[i]->m_strOutName.Add(strAddOutName); m_HouseMap[i]->m_strBspName.Add(strAddBspName); m_HouseMap[i]->m_TM.Add(tm); m_HouseMap[i]->m_HouseSceneID.Add(m_TotalHouseSceneCount++); return; } } CSectorHouseMap *AddSectorHouseMap=new CSectorHouseMap; AddSectorHouseMap->m_IndexX=indexx; AddSectorHouseMap->m_IndexY=indexy; AddSectorHouseMap->m_strInName.Add(strAddInName); AddSectorHouseMap->m_strMedName.Add(strAddMedName); AddSectorHouseMap->m_strOutName.Add(strAddOutName); AddSectorHouseMap->m_strBspName.Add(strAddBspName); AddSectorHouseMap->m_TM.Add(tm); AddSectorHouseMap->m_HouseSceneID.Add(m_TotalHouseSceneCount++); m_HouseMap.Add(AddSectorHouseMap); } void CMapStorage::DelHouseMap(float fDelx,float fDely,float fDelz,long HouseSceneID) { int indexx=(int)(fDelx/SECTORSIZE); int indexy=(int)(fDelz/SECTORSIZE); for(int i=0;im_TM.num;cObject++) { char *sddfs = m_HouseMap[i]->m_strOutName[cObject]; if(strcmp(m_HouseMap[i]->m_strOutName[cObject],"collision02.r3s") == 0) { int a = 10; } if(strcmp(m_HouseMap[i]->m_strOutName[cObject],"collision03.r3s") == 0) { int a = 10; } if(strcmp(m_HouseMap[i]->m_strOutName[cObject],"collision04.r3s") == 0) { int a = 10; } if(strcmp(m_HouseMap[i]->m_strOutName[cObject],"collision01.r3s") == 0) { m_HouseMap[i]->m_TM.DelIndex(cObject); char *delNode; delNode=m_HouseMap[i]->m_strOutName[cObject]; m_HouseMap[i]->m_strOutName.DelIndex(cObject); delete [] delNode; delNode=m_HouseMap[i]->m_strMedName[cObject]; m_HouseMap[i]->m_strMedName.DelIndex(cObject); delete [] delNode; delNode=m_HouseMap[i]->m_strInName[cObject]; m_HouseMap[i]->m_strInName.DelIndex(cObject); delete [] delNode; delNode=m_HouseMap[i]->m_strBspName[cObject]; m_HouseMap[i]->m_strBspName.DelIndex(cObject); delete [] delNode; } if(m_HouseMap[i]->m_TM.num==0) // Minotaurs Áö¿ì±â { delete m_HouseMap[i]; m_HouseMap.DelIndex(i); } } } // if( m_HouseMap[i]->m_IndexX==indexx && // m_HouseMap[i]->m_IndexY==indexy) // { // for(int cObject=0;cObjectm_TM.num;cObject++) // { // // if(m_HouseMap[i]->m_HouseSceneID[cObject]==HouseSceneID) // { // m_HouseMap[i]->m_TM.DelIndex(cObject); // char *delNode; // delNode=m_HouseMap[i]->m_strOutName[cObject]; // m_HouseMap[i]->m_strOutName.DelIndex(cObject); // delete [] delNode; // delNode=m_HouseMap[i]->m_strMedName[cObject]; // m_HouseMap[i]->m_strMedName.DelIndex(cObject); // delete [] delNode; // delNode=m_HouseMap[i]->m_strInName[cObject]; // m_HouseMap[i]->m_strInName.DelIndex(cObject); // delete [] delNode; // delNode=m_HouseMap[i]->m_strBspName[cObject]; // m_HouseMap[i]->m_strBspName.DelIndex(cObject); // delete [] delNode; // // } // } // if(m_HouseMap[i]->m_TM.num==0) // Minotaurs Áö¿ì±â // { // delete m_HouseMap[i]; // m_HouseMap.DelIndex(i); // } // return; // } //} } void CMapStorage::AddHeightMap(float fAddx, float fAddy, float fAddz, float *fHeightData) { if(fHeightData==NULL) return; int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int i=0;im_IndexX == indexx && m_HeightMap[i]->m_IndexY == indexy) { memcpy(m_HeightMap[i]->m_pHeightData,fHeightData,sizeof(float)*SECTORSX*SECTORSY); return; } } CSectorHeightMap *AddHeightMap=new CSectorHeightMap(); AddHeightMap->m_IndexX=indexx; AddHeightMap->m_IndexY=indexy; if(m_LoadMode==0) { AddHeightMap->m_pHeightData=new float[SECTORSX*SECTORSY]; } memcpy(AddHeightMap->m_pHeightData,fHeightData,sizeof(float)*SECTORSX*SECTORSY); m_HeightMap.Add(AddHeightMap); } void CMapStorage::AddWideMap(float fAddx, float fAddy, float fAddz, char *strWideMapName,char *strDetailMapName,char *strWideMapName1,char *strDetailMapName1,char *strWideMapName2,char *strDetailMapName2) { if(strcmp(strWideMapName,"")==0) return; int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int i=0;im_IndexX == indexx && m_WideMap[i]->m_IndexY == indexy) { strcpy(m_WideMap[i]->m_strWidemapName[0],strWideMapName); strcpy(m_WideMap[i]->m_strWidemapName[1],strWideMapName1); strcpy(m_WideMap[i]->m_strWidemapName[2],strWideMapName2); strcpy(m_WideMap[i]->m_strDetailName[0],strDetailMapName); strcpy(m_WideMap[i]->m_strDetailName[1],strDetailMapName1); strcpy(m_WideMap[i]->m_strDetailName[2],strDetailMapName2); return; } } CSectorWideMap *AddWideMap=new CSectorWideMap(); AddWideMap->m_IndexX=indexx; AddWideMap->m_IndexY=indexy; strcpy(AddWideMap->m_strWidemapName[0],strWideMapName); strcpy(AddWideMap->m_strWidemapName[1],strWideMapName1); strcpy(AddWideMap->m_strWidemapName[2],strWideMapName2); strcpy(AddWideMap->m_strDetailName[0],strDetailMapName); strcpy(AddWideMap->m_strDetailName[1],strDetailMapName1); strcpy(AddWideMap->m_strDetailName[2],strDetailMapName2); m_WideMap.Add(AddWideMap); } void CMapStorage::AddWaterMap(float fAddx, float fAddy, float fAddz,float fWaterHeight,float fWaterSizeX,float fWaterSizeY,float fWaterPosX,float fWaterPosY,color WaterColor,bool bWaterRelection) { int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int i=0;im_IndexX == indexx && m_WaterMap[i]->m_IndexY == indexy) { m_WaterMap[i]->m_fWaterHeight=fWaterHeight; m_WaterMap[i]->m_fWaterPosX=fWaterPosX; m_WaterMap[i]->m_fWaterPosY=fWaterPosY; m_WaterMap[i]->m_fWaterSizeX=fWaterSizeX; m_WaterMap[i]->m_fWaterSizeY=fWaterSizeY; m_WaterMap[i]->m_bWaterRelection=bWaterRelection; m_WaterMap[i]->m_WaterColor=WaterColor; return; } } CSectorWaterMap *AddWaterMap=new CSectorWaterMap(); AddWaterMap->m_IndexX=indexx; AddWaterMap->m_IndexY=indexy; AddWaterMap->m_fWaterHeight=fWaterHeight; AddWaterMap->m_fWaterPosX=fWaterPosX; AddWaterMap->m_fWaterPosY=fWaterPosY; AddWaterMap->m_fWaterSizeX=fWaterSizeX; AddWaterMap->m_fWaterSizeY=fWaterSizeY; AddWaterMap->m_bWaterRelection=bWaterRelection; AddWaterMap->m_WaterColor=WaterColor; m_WaterMap.Add(AddWaterMap); } CSectorWaterMap* CMapStorage::FindWaterMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_WaterMap[cStorage]->m_IndexY==indexy) { return m_WaterMap[cStorage]; } } return NULL; } void CMapStorage::AddFallMap(float fAddx, float fAddy,float fAddz,float fFallPosX,float fFallPosY,float fFallRot,List &FallHeight,List &FallLeft,List &FallRight,List &FallAddX,List &WaterFallColor) { int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int i=0;im_IndexX == indexx && m_FallMap[i]->m_IndexY == indexy) { m_FallMap[i]->m_fFallPosX=fFallPosX; m_FallMap[i]->m_fFallPosY=fFallPosY; m_FallMap[i]->m_fFallRot=fFallRot; m_FallMap[i]->m_FallHeightList.num=0; m_FallMap[i]->m_FallLeftList.num=0; m_FallMap[i]->m_FallRightList.num=0; m_FallMap[i]->m_FallAddXList.num=0; for(int cElement=0;cElementm_FallHeightList.Add(FallHeight[cElement]); m_FallMap[i]->m_FallLeftList.Add(FallLeft[cElement]); m_FallMap[i]->m_FallRightList.Add(FallRight[cElement]); m_FallMap[i]->m_FallAddXList.Add(FallAddX[cElement]); m_FallMap[i]->m_FallColor.Add(WaterFallColor[cElement]); } } } CSectorFallMap *AddFallMap=new CSectorFallMap(); AddFallMap->m_IndexX=indexx; AddFallMap->m_IndexY=indexy; AddFallMap->m_fFallPosX=fFallPosX; AddFallMap->m_fFallPosY=fFallPosY; AddFallMap->m_fFallRot=fFallRot; for(i=0;im_FallHeightList.Add(FallHeight[i]); AddFallMap->m_FallLeftList.Add(FallLeft[i]); AddFallMap->m_FallRightList.Add(FallRight[i]); AddFallMap->m_FallAddXList.Add(FallAddX[i]); AddFallMap->m_FallColor.Add(WaterFallColor[i]); } m_FallMap.Add(AddFallMap); } CSectorFallMap* CMapStorage::FindFallMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_FallMap[cStorage]->m_IndexY==indexy) { return m_FallMap[cStorage]; } } return NULL; } void CMapStorage::AddInHouseObject(char *strOutName, char *strMedName, char *strInName,char *strBspName, char *strObjectName, matrix matTM,bool isAlpha,bool isLight) { strOutName=strlwr(strOutName); strMedName=strlwr(strMedName); strInName=strlwr(strInName); strBspName=strlwr(strBspName); for(int cHouse=0;cHousem_strOutName,strOutName)==0 && strcmp(m_InHouseMap[cHouse]->m_strMedName,strMedName)==0 && strcmp(m_InHouseMap[cHouse]->m_strInName,strInName)==0 && strcmp(m_InHouseMap[cHouse]->m_strBspName,strBspName)==0 ) { char *pStrObjectName=new char[MAX_NAMEBUFFER]; strcpy(pStrObjectName,strObjectName); m_InHouseMap[cHouse]->m_strObjectNameList.Add(pStrObjectName); m_InHouseMap[cHouse]->m_matObjectList.Add(matTM); m_InHouseMap[cHouse]->m_isAlpha.Add(isAlpha); m_InHouseMap[cHouse]->m_isLight.Add(isLight); m_InHouseMap[cHouse]->m_ObjectID.Add(m_TotalInHouseObjectSceneCount++); return; } } CInHouseObjectMap *AddInHouseMap=new CInHouseObjectMap(); char *pStrObjectName=new char[MAX_NAMEBUFFER]; strcpy(pStrObjectName,strObjectName); AddInHouseMap->m_strObjectNameList.Add(pStrObjectName); AddInHouseMap->m_matObjectList.Add(matTM); AddInHouseMap->m_isAlpha.Add(isAlpha); AddInHouseMap->m_isLight.Add(isLight); strcpy(AddInHouseMap->m_strOutName,strOutName); strcpy(AddInHouseMap->m_strMedName,strMedName); strcpy(AddInHouseMap->m_strInName,strInName); strcpy(AddInHouseMap->m_strBspName,strBspName); AddInHouseMap->m_ObjectID.Add(m_TotalInHouseObjectSceneCount++); m_InHouseMap.Add(AddInHouseMap); } void CMapStorage::AddInHouseLight(char *strOutName, char *strMedName, char *strInName, char *strBspName, char *strLightName, matrix matTM,float fLightRange,color LightColor) { strOutName=strlwr(strOutName); strMedName=strlwr(strMedName); strInName=strlwr(strInName); strBspName=strlwr(strBspName); for(int cHouse=0;cHousem_strOutName,strOutName)==0 && strcmp(m_InHouseMap[cHouse]->m_strMedName,strMedName)==0 && strcmp(m_InHouseMap[cHouse]->m_strInName,strInName)==0 && strcmp(m_InHouseMap[cHouse]->m_strBspName,strBspName)==0 ) { char *pStrLightName=new char[MAX_NAMEBUFFER]; strcpy(pStrLightName,strLightName); m_InHouseMap[cHouse]->m_strLightNameList.Add(pStrLightName); m_InHouseMap[cHouse]->m_matLightList.Add(matTM); m_InHouseMap[cHouse]->m_fLightRange.Add(fLightRange); m_InHouseMap[cHouse]->m_LightColor.Add(LightColor); m_InHouseMap[cHouse]->m_LightID.Add(m_TotalInHouseLightSceneCount++); return; } } CInHouseObjectMap *AddInHouseMap=new CInHouseObjectMap(); char *pStrObjectName=new char[MAX_NAMEBUFFER]; strcpy(pStrObjectName,strLightName); AddInHouseMap->m_strLightNameList.Add(pStrObjectName); AddInHouseMap->m_matLightList.Add(matTM); AddInHouseMap->m_fLightRange.Add(fLightRange); AddInHouseMap->m_LightColor.Add(LightColor); strcpy(AddInHouseMap->m_strOutName,strOutName); strcpy(AddInHouseMap->m_strMedName,strMedName); strcpy(AddInHouseMap->m_strInName,strInName); strcpy(AddInHouseMap->m_strBspName,strBspName); AddInHouseMap->m_LightID.Add(m_TotalInHouseLightSceneCount++); m_InHouseMap.Add(AddInHouseMap); } CInHouseObjectMap* CMapStorage::FindInHouseMap(char *strOutName, char *strMedName, char *strInName,char *strBspName) { strOutName=strlwr(strOutName); strMedName=strlwr(strMedName); strInName=strlwr(strInName); strBspName=strlwr(strBspName); for(int i=0;im_strOutName,strOutName)==0 && strcmp(m_InHouseMap[i]->m_strMedName,strMedName)==0 && strcmp(m_InHouseMap[i]->m_strInName,strInName)==0 && strcmp(m_InHouseMap[i]->m_strBspName,strBspName)==0 ) { return m_InHouseMap[i]; } } return NULL; } void CMapStorage::DeleteAllData() { int i; for(i=0;im_strOutName,strOutName)==0 && strcmp(m_InHouseMap[cHouse]->m_strMedName,strMedName)==0 && strcmp(m_InHouseMap[cHouse]->m_strInName,strInName)==0) { for(int cObject=0;cObjectm_strObjectNameList.num;cObject++) { if(m_InHouseMap[cHouse]->m_ObjectID[cObject]==ObjectID) { delete m_InHouseMap[cHouse]->m_strObjectNameList[cObject]; m_InHouseMap[cHouse]->m_strObjectNameList.DelIndex(cObject); m_InHouseMap[cHouse]->m_ObjectID.DelIndex(cObject); m_InHouseMap[cHouse]->m_matObjectList.DelIndex(cObject); m_InHouseMap[cHouse]->m_isAlpha.DelIndex(cObject); m_InHouseMap[cHouse]->m_isLight.DelIndex(cObject); } } } } } void CMapStorage::DelInHouseLight(char *strOutName, char *strMedName, char *strInName,long LightID) { for(int cHouse=0;cHousem_strOutName,strOutName)==0 && strcmp(m_InHouseMap[cHouse]->m_strMedName,strMedName)==0 && strcmp(m_InHouseMap[cHouse]->m_strInName,strInName)==0) { for(int cLight=0;cLightm_strLightNameList.num;cLight++) { if(m_InHouseMap[cHouse]->m_LightID[cLight]==LightID) { delete m_InHouseMap[cHouse]->m_strLightNameList[cLight]; m_InHouseMap[cHouse]->m_LightID.DelIndex(cLight); m_InHouseMap[cHouse]->m_strLightNameList.DelIndex(cLight); m_InHouseMap[cHouse]->m_matLightList.DelIndex(cLight); m_InHouseMap[cHouse]->m_fLightRange.DelIndex(cLight); m_InHouseMap[cHouse]->m_LightColor.DelIndex(cLight); } } return; } } } void CMapStorage::AddPlantMap(float fAddx, float fAddy, float fAddz, unsigned char PlantKind) { int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int cPlant=0;cPlantm_IndexX == indexx && m_PlantMap[cPlant]->m_IndexY == indexy) { int ix=(fAddx-(indexx*SECTORSIZE))/LINTERVAL; int iz=(fAddz-(indexy*SECTORSIZE))/LINTERVAL; bool isAlready=false; for(int cSubPlant=0;cSubPlantm_PlantKind.num;cSubPlant++) { if( m_PlantMap[cPlant]->m_PlantPosX[cSubPlant]==ix && m_PlantMap[cPlant]->m_PlantPosZ[cSubPlant]==iz) { m_PlantMap[cPlant]->m_PlantPosX[cSubPlant]=ix; m_PlantMap[cPlant]->m_PlantPosZ[cSubPlant]=iz; m_PlantMap[cPlant]->m_PlantKind[cSubPlant]=PlantKind; isAlready=true; break; } } if(isAlready==false) { m_PlantMap[cPlant]->m_PlantPosX.Add(ix); m_PlantMap[cPlant]->m_PlantPosZ.Add(iz); m_PlantMap[cPlant]->m_PlantKind.Add(PlantKind); } //m_PlantMap[cPlant]->m_vecPlantPos.Add(vector3(fAddx-(indexx*SECTORSIZE),fAddy,fAddz-(indexy*SECTORSIZE))); return; } } CSectorPlantMap *AddPlantMap=new CSectorPlantMap(); AddPlantMap->m_IndexX=indexx; AddPlantMap->m_IndexY=indexy; int ix=(fAddx-(indexx*SECTORSIZE))/LINTERVAL; int iz=(fAddz-(indexy*SECTORSIZE))/LINTERVAL; AddPlantMap->m_PlantKind.Add(PlantKind); //AddPlantMap->m_vecPlantPos.Add(vector3(fAddx-(indexx*SECTORSIZE),fAddy,fAddz-(indexy*SECTORSIZE))); AddPlantMap->m_PlantPosX.Add(ix); AddPlantMap->m_PlantPosZ.Add(iz); m_PlantMap.Add(AddPlantMap); } void CMapStorage::DelPlantMap(float fDelx, float fDelY, float fDelz) { int indexx=(int)(fDelx/SECTORSIZE); int indexy=(int)(fDelz/SECTORSIZE); int Findx,Findz,Delx,Delz; for(int cPlant=0;cPlantm_IndexX == indexx && m_PlantMap[cPlant]->m_IndexY == indexy) { for(int cInPlant=0;cInPlantm_PlantKind.num;cInPlant++) { Delx=m_PlantMap[cPlant]->m_PlantPosX[cInPlant]; Delz=m_PlantMap[cPlant]->m_PlantPosZ[cInPlant]; Findx=(int)( (fDelx-(indexx*SECTORSIZE)) /LINTERVAL); Findz=(int)( (fDelz-(indexy*SECTORSIZE)) /LINTERVAL); if(Delx==Findx && Delz==Findz) { m_PlantMap[cPlant]->m_PlantKind.DelIndex(cInPlant); m_PlantMap[cPlant]->m_PlantPosX.DelIndex(cInPlant); m_PlantMap[cPlant]->m_PlantPosZ.DelIndex(cInPlant); //m_PlantMap[cPlant]->m_vecPlantPos.DelIndex(cInPlant); } } return; } } } void CMapStorage::AddMeshMap(float fAddx, float fAddy, float fAddz,char *strObjectName,matrix matTM, bool isAlpha, bool isLight) { int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int cObject=0;cObjectm_IndexX == indexx && m_MeshMap[cObject]->m_IndexY == indexy) { char *AddObjectName=new char[MAX_NAMEBUFFER]; strcpy(AddObjectName,strObjectName); m_MeshMap[cObject]->m_strObjectName.Add(AddObjectName); m_MeshMap[cObject]->m_TM.Add(matTM); m_MeshMap[cObject]->m_isAlpha.Add(isAlpha); m_MeshMap[cObject]->m_isLight.Add(isLight); m_MeshMap[cObject]->m_ObjectSceneID.Add(m_TotalObjectSceneCount++); return; } } CSectorMeshMap *AddMeshMap=new CSectorMeshMap(); AddMeshMap->m_IndexX=indexx; AddMeshMap->m_IndexY=indexy; char *AddObjectName=new char[MAX_NAMEBUFFER]; strcpy(AddObjectName,strObjectName); AddMeshMap->m_strObjectName.Add(AddObjectName); AddMeshMap->m_TM.Add(matTM); AddMeshMap->m_isAlpha.Add(isAlpha); AddMeshMap->m_isLight.Add(isLight); AddMeshMap->m_ObjectSceneID.Add(m_TotalObjectSceneCount++); m_MeshMap.Add(AddMeshMap); } void CMapStorage::DelMeshMap(float fDelx, float fDely, float fDelz, long ObjectSceneID) { int indexx=(int)(fDelx/SECTORSIZE); int indexy=(int)(fDelz/SECTORSIZE); //for(int i=0;im_TM.num;cObject++) // { // char *sddfs = m_MeshMap[i]->m_strObjectName[cObject]; // if(strcmp(m_MeshMap[i]->m_strObjectName[cObject],"collision02.r3s") == 0) // { // int a = 10; // } // if(strcmp(m_MeshMap[i]->m_strObjectName[cObject],"collision03.r3s") == 0) // { // int a = 10; // } // if(strcmp(m_MeshMap[i]->m_strObjectName[cObject],"collision04.r3s") == 0) // { // int a = 10; // } // if(strcmp(m_MeshMap[i]->m_strObjectName[cObject],"collision01.r3s") == 0) // { // m_MeshMap[i]->m_TM.DelIndex(cObject); // m_MeshMap[i]->m_isAlpha.DelIndex(cObject); // m_MeshMap[i]->m_isLight.DelIndex(cObject); // m_MeshMap[i]->m_ObjectSceneID.DelIndex(cObject); // char *delNode; // delNode=m_MeshMap[i]->m_strObjectName[cObject]; // delete [] delNode; // m_MeshMap[i]->m_strObjectName.DelIndex(cObject); // // } // if( m_MeshMap[i]->m_TM.num==0) // { // delete m_MeshMap[i]; // m_MeshMap.DelIndex(i); // } // } //} for(int i=0;im_IndexX==indexx && m_MeshMap[i]->m_IndexY==indexy) { for(int cObject=0;cObjectm_TM.num;cObject++) { if(ObjectSceneID==m_MeshMap[i]->m_ObjectSceneID[cObject]) { m_MeshMap[i]->m_TM.DelIndex(cObject); m_MeshMap[i]->m_isAlpha.DelIndex(cObject); m_MeshMap[i]->m_isLight.DelIndex(cObject); m_MeshMap[i]->m_ObjectSceneID.DelIndex(cObject); char *delNode; delNode=m_MeshMap[i]->m_strObjectName[cObject]; delete [] delNode; m_MeshMap[i]->m_strObjectName.DelIndex(cObject); } } if( m_MeshMap[i]->m_TM.num==0) { delete m_MeshMap[i]; m_MeshMap.DelIndex(i); } return; } } } void CMapStorage::SaveSector(char *strFilename,long SectorX,long SectorY) { FILE *fp=fopen(strFilename,"wb"); if(fp==NULL) return; char strWrite[MAX_NAMEBUFFER]; sprintf(strWrite,"ZallA-3D Sector Scene Data File Build#1"); fwrite(strWrite,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_TotalHouseSceneCount,sizeof(long),1,fp); fwrite(&m_TotalInHouseLightSceneCount,sizeof(long),1,fp); fwrite(&m_TotalInHouseObjectSceneCount,sizeof(long),1,fp); fwrite(&m_TotalObjectSceneCount,sizeof(long),1,fp); bool HaveHeightMap=false; for(int cHeightData=0;cHeightDatam_IndexX==SectorX && m_HeightMap[cHeightData]->m_IndexY==SectorY) { HaveHeightMap=true; fwrite(&HaveHeightMap,sizeof(bool),1,fp); fwrite(m_HeightMap[cHeightData]->m_pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); break; } } if(HaveHeightMap==false) { fwrite(&HaveHeightMap,sizeof(bool),1,fp); } bool HaveWaterMap=false; for(int cWaterData=0;cWaterDatam_IndexX==SectorX && m_WaterMap[cWaterData]->m_IndexY==SectorY) { HaveWaterMap=true; fwrite(&HaveWaterMap,sizeof(bool),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterPosX,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterPosY,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterSizeX,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterSizeY,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterHeight,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_bWaterRelection,sizeof(bool),1,fp); fwrite(&m_WaterMap[cWaterData]->m_WaterColor,sizeof(color),1,fp); break; } } if(HaveWaterMap==false) { fwrite(&HaveWaterMap,sizeof(bool),1,fp); } bool HaveWideMap=false; for(int cWideData=0;cWideDatam_IndexX==SectorX && m_WideMap[cWideData]->m_IndexY==SectorY)\ { HaveWideMap=true; fwrite(&HaveWideMap,sizeof(bool),1,fp); fwrite(m_WideMap[cWideData]->m_strWidemapName,sizeof(char)*MAX_NAMEBUFFER,1,fp); break; } } if(HaveWideMap==false) { fwrite(&HaveWideMap,sizeof(bool),1,fp); } bool HaveFallMap=false; for(int cFallData=0;cFallDatam_IndexX==SectorX && m_FallMap[cFallData]->m_IndexY==SectorY) { HaveFallMap=true; fwrite(&HaveFallMap,sizeof(bool),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallPosX,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallPosY,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallRot,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallHeightList.num,sizeof(int),1,fp); for(int cFallList=0;cFallListm_FallHeightList.num;cFallList++) { fwrite(&m_FallMap[cFallData]->m_FallHeightList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallLeftList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallRightList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallAddXList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallColor[cFallList],sizeof(color),1,fp); } break; } } if(HaveFallMap==false) { fwrite(&HaveFallMap,sizeof(bool),1,fp); } bool HaveHouseMap=false; for(int cHouseData=0;cHouseDatam_IndexX==SectorX && m_HouseMap[cHouseData]->m_IndexY==SectorY) { HaveHouseMap=true; fwrite(&HaveHouseMap,sizeof(bool),1,fp); fwrite(&m_HouseMap[cHouseData]->m_TM.num,sizeof(int),1,fp); for(int cHouseList=0;cHouseListm_TM.num;cHouseList++) { matrix matTM=m_HouseMap[cHouseData]->m_TM[cHouseList]; matTM._41-=SectorX*SECTORSIZE; matTM._43-=SectorY*SECTORSIZE; //fwrite(&m_HouseMap[cHouseData]->m_TM[cHouseList],sizeof(matrix),1,fp); fwrite(&matTM,sizeof(matrix),1,fp); fwrite(&m_HouseMap[cHouseData]->m_HouseSceneID[cHouseList],sizeof(int),1,fp); fwrite(m_HouseMap[cHouseData]->m_strOutName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_HouseMap[cHouseData]->m_strMedName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_HouseMap[cHouseData]->m_strInName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); } break; } } if(HaveHouseMap==false) { fwrite(&HaveHouseMap,sizeof(bool),1,fp); } bool HavePlantMap=false; for(int cPlantData=0;cPlantDatam_IndexX==SectorX && m_PlantMap[cPlantData]->m_IndexY==SectorY) { HavePlantMap=true; fwrite(&HavePlantMap,sizeof(bool),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantKind.num,sizeof(int),1,fp); for(int cSubPlant=0;cSubPlantm_PlantKind.num;cSubPlant++) { /* fwrite(&m_PlantMap[cPlantData]->m_PlantKind[cSubPlant],sizeof(unsigned char),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantPosX[cSubPlant],sizeof(unsigned char),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantPosZ[cSubPlant],sizeof(unsigned char),1,fp); */ fwrite(&m_PlantMap[cPlantData]->m_PlantKind[cSubPlant],sizeof(unsigned char),1,fp); //fwrite(&m_PlantMap[cPlantData]->m_vecPlantPos[cSubPlant],sizeof(vector3),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantPosX[cSubPlant],sizeof(unsigned char),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantPosZ[cSubPlant],sizeof(unsigned char),1,fp); //fwrite(&m_PlantMap[cPlantData]->m_vecPlantPos[cSubPlant],sizeof(vector3),1,fp); } break; } } if(HavePlantMap==false) { fwrite(&HavePlantMap,sizeof(bool),1,fp); } bool HaveMeshMap=false; for(int cMeshData=0;cMeshDatam_IndexX==SectorX&& m_MeshMap[cMeshData]->m_IndexY==SectorY) { HaveMeshMap=true; fwrite(&HaveMeshMap,sizeof(bool),1,fp); fwrite(&m_MeshMap[cMeshData]->m_ObjectSceneID.num,sizeof(int),1,fp); for(int cObject=0;cObjectm_ObjectSceneID.num;cObject++) { fwrite(&m_MeshMap[cMeshData]->m_ObjectSceneID[cObject],sizeof(long),1,fp); fwrite(m_MeshMap[cMeshData]->m_strObjectName[cObject],sizeof(char)*MAX_NAMEBUFFER,1,fp); matrix matTM=m_MeshMap[cMeshData]->m_TM[cObject]; matTM._41-=SectorX*SECTORSIZE; matTM._43-=SectorY*SECTORSIZE; fwrite(&matTM,sizeof(matrix),1,fp); //fwrite(&m_MeshMap[cMeshData]->m_TM[cObject],sizeof(matrix),1,fp); fwrite(&m_MeshMap[cMeshData]->m_isAlpha[cObject],sizeof(bool),1,fp); fwrite(&m_MeshMap[cMeshData]->m_isLight[cObject],sizeof(bool),1,fp); } break; } } if(HaveMeshMap==false) { fwrite(&HaveMeshMap,sizeof(bool),1,fp); } fclose(fp); } void CMapStorage::LoadSector(char *strFilename, long SectorX, long SectorY) { FILE *fp=fopen(strFilename,"rb"); if(fp==NULL) return; char strRead[MAX_NAMEBUFFER]; fread(strRead,sizeof(char)*MAX_NAMEBUFFER,1,fp); int ReadJunk; fread(&ReadJunk,sizeof(long),1,fp); fread(&ReadJunk,sizeof(long),1,fp); fread(&ReadJunk,sizeof(long),1,fp); fread(&ReadJunk,sizeof(long),1,fp); bool HaveHeightData=false; fread(&HaveHeightData,sizeof(bool),1,fp); if(HaveHeightData) { CSectorHeightMap *AddNode=new CSectorHeightMap(); AddNode->m_IndexX=SectorX; AddNode->m_IndexY=SectorY; fread(AddNode->m_pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); AddHeightMap(SectorX*SECTORSIZE,0.0f,SectorY*SECTORSIZE,AddNode->m_pHeightData); //m_HeightMap.Add(AddNode); delete AddNode; } else { for(int cHeight=0;cHeightm_IndexX==SectorX && m_HeightMap[cHeight]->m_IndexY==SectorY) { m_HeightMap.DelIndex(cHeight); } } } bool HaveWaterData=false; fread(&HaveWaterData,sizeof(bool),1,fp); if(HaveWaterData) { CSectorWaterMap *AddNode=new CSectorWaterMap(); AddNode->m_IndexX=SectorX; AddNode->m_IndexY=SectorY; fread(&AddNode->m_fWaterPosX,sizeof(float),1,fp); fread(&AddNode->m_fWaterPosY,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeX,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeY,sizeof(float),1,fp); fread(&AddNode->m_fWaterHeight,sizeof(float),1,fp); fread(&AddNode->m_bWaterRelection,sizeof(bool),1,fp); fread(&AddNode->m_WaterColor,sizeof(color),1,fp); AddWaterMap(SectorX*SECTORSIZE,0.0f,SectorY*SECTORSIZE,AddNode->m_fWaterHeight,AddNode->m_fWaterSizeX, AddNode->m_fWaterSizeY,AddNode->m_fWaterPosX,AddNode->m_fWaterPosY,AddNode->m_WaterColor,AddNode->m_bWaterRelection); delete AddNode; //m_WaterMap.Add(AddNode); } else { for(int cWater=0;cWaterm_IndexX==SectorX && m_WaterMap[cWater]->m_IndexY==SectorY) { m_WaterMap.DelIndex(cWater); } } } bool HaveWideData=false; fread(&HaveWideData,sizeof(bool),1,fp); if(HaveWideData) { CSectorWideMap *AddNode=new CSectorWideMap(); AddNode->m_IndexX=SectorX; AddNode->m_IndexY=SectorY; fread(AddNode->m_strWidemapName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddWideMap(SectorX*SECTORSIZE,0.0f,SectorY*SECTORSIZE,AddNode->m_strWidemapName[0],AddNode->m_strDetailName[0],AddNode->m_strWidemapName[1],AddNode->m_strDetailName[1],AddNode->m_strWidemapName[2],AddNode->m_strDetailName[2]); delete AddNode; //m_WideMap.Add(AddNode); } else { for(int cWide=0;cWidem_IndexX==SectorX && m_WideMap[cWide]->m_IndexY==SectorY) { m_WideMap.DelIndex(cWide); } } } bool HaveFallData=false; fread(&HaveFallData,sizeof(bool),1,fp); if(HaveFallData) { CSectorFallMap *AddNode=new CSectorFallMap(); AddNode->m_IndexX=SectorX; AddNode->m_IndexY=SectorY; fread(&AddNode->m_fFallPosX,sizeof(float),1,fp); fread(&AddNode->m_fFallPosY,sizeof(float),1,fp); fread(&AddNode->m_fFallRot,sizeof(float),1,fp); int cSavedFallList; fread(&cSavedFallList,sizeof(int),1,fp); for(int cFallList=0;cFallListm_FallHeightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallLeftList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallRightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallAddXList.Add(ReadFallData); fread(&ReadFallColor,sizeof(color),1,fp); AddNode->m_FallColor.Add(ReadFallColor); } AddFallMap(SectorX*SECTORSIZE,0.0f,SectorY*SECTORSIZE,AddNode->m_fFallPosX,AddNode->m_fFallPosY, AddNode->m_fFallRot,AddNode->m_FallHeightList,AddNode->m_FallLeftList,AddNode->m_FallRightList, AddNode->m_FallAddXList,AddNode->m_FallColor); delete AddNode; //m_FallMap.Add(AddNode); } else { for(int cFall=0;cFallm_IndexX==SectorX && m_FallMap[cFall]->m_IndexY==SectorY) { m_FallMap.DelIndex(cFall); } } } bool HaveHouseData=false; fread(&HaveHouseData,sizeof(bool),1,fp); if(HaveHouseData) { CSectorHouseMap *AddNode=new CSectorHouseMap(); AddNode->m_IndexX=SectorX; AddNode->m_IndexY=SectorY; int cSavedHouseList=0; fread(&cSavedHouseList,sizeof(int),1,fp); for(int cHouseList=0;cHouseListm_TM.Add(ReadHouseTM); AddNode->m_TM.Add(matTM); fread(&ReadHouseID,sizeof(int),1,fp); AddNode->m_HouseSceneID.Add(m_TotalHouseSceneCount++); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strOutName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strMedName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strInName.Add(ReadHouseName); } for(int cHouseMap=0;cHouseMapm_IndexX==SectorX && m_HouseMap[cHouseMap]->m_IndexY==SectorY) { break; } } if(cHouseMap==m_HouseMap.num) m_HouseMap.Add(AddNode); else m_HouseMap[cHouseMap]=AddNode; } else { for(int cHouse=0;cHousem_IndexX==SectorX && m_HouseMap[cHouse]->m_IndexY==SectorY) { m_HouseMap.DelIndex(cHouse); } } } bool HavePlantData=false; fread(&HavePlantData,sizeof(bool),1,fp); if(HavePlantData) { CSectorPlantMap *AddNode=new CSectorPlantMap(); AddNode->m_IndexX=SectorX; AddNode->m_IndexY=SectorY; int cSavedSubPlant; int ReadKind; vector3 ReadPos; unsigned char ReadPosX,ReadPosZ; fread(&cSavedSubPlant,sizeof(int),1,fp); for(int cSubPlant=0;cSubPlantm_PlantKind.Add(ReadKind); AddNode->m_PlantPosX.Add(ReadPosX); AddNode->m_PlantPosZ.Add(ReadPosZ); //*/ //AddNode->m_vecPlantPos.Add(ReadPos); /* fread(&ReadKind,sizeof(unsigned char),1,fp); fread(&ReadPosX,sizeof(unsigned char),1,fp); fread(&ReadPosZ,sizeof(unsigned char),1,fp); //fread(&ReadPos,sizeof(vector3),1,fp); bool isAlready=false; for(int cNowPlant=0;cNowPlantm_PlantKind.num;cNowPlant++) { if( AddNode->m_PlantPosX[cNowPlant]==ReadPosX && AddNode->m_PlantPosZ[cNowPlant]==ReadPosZ) { AddNode->m_PlantKind[cNowPlant]=ReadKind; AddNode->m_PlantPosX[cNowPlant]=ReadPosX; AddNode->m_PlantPosZ[cNowPlant]=ReadPosZ; isAlready=true; } } if(isAlready==false) { AddNode->m_PlantKind.Add(ReadKind); AddNode->m_PlantPosX.Add(ReadPosX); AddNode->m_PlantPosZ.Add(ReadPosZ); } */ } for(int cPlantMap=0;cPlantMapm_IndexX==SectorX && m_PlantMap[cPlantMap]->m_IndexY==SectorY) { break; } } if(cPlantMap==m_PlantMap.num) m_PlantMap.Add(AddNode); else m_PlantMap[cPlantMap]=AddNode; } else { for(int cPlant=0;cPlantm_IndexX==SectorX && m_PlantMap[cPlant]->m_IndexY==SectorY) { m_PlantMap.DelIndex(cPlant); } } } bool HaveMeshData=false; fread(&HaveMeshData,sizeof(bool),1,fp); if(HaveMeshData) { CSectorMeshMap *AddNode=new CSectorMeshMap(); AddNode->m_IndexX=SectorX; AddNode->m_IndexY=SectorY; int cSavedObject=0; fread(&cSavedObject,sizeof(int),1,fp); int ReadObjectSceneID; matrix ReadMatrixTM; bool ReadAlpha,ReadLight; for(int cObject=0;cObjectm_ObjectSceneID.Add(m_TotalObjectSceneCount++); AddNode->m_strObjectName.Add(ReadObjectName); matrix matTM=ReadMatrixTM; matTM._41+=SectorX*SECTORSIZE; matTM._43+=SectorY*SECTORSIZE; AddNode->m_TM.Add(matTM); //AddNode->m_TM.Add(ReadMatrixTM); AddNode->m_isAlpha.Add(ReadAlpha); AddNode->m_isLight.Add(ReadLight); } for(int cMeshMap=0;cMeshMapm_IndexX==SectorX && m_MeshMap[cMeshMap]->m_IndexY==SectorY) { break; //m_MeshMap.DelIndex(cMeshMap); } } if(cMeshMap==m_MeshMap.num) m_MeshMap.Add(AddNode); else m_MeshMap[cMeshMap]=AddNode; } else { for(int cMesh=0;cMeshm_IndexX==SectorX && m_MeshMap[cMesh]->m_IndexY==SectorY) { m_MeshMap.DelIndex(cMesh); } } } fclose(fp); } void CMapStorage::OldLoad(char *strFilename) { FILE *fp=fopen(strFilename,"rb"); if(fp==NULL) return; DeleteAllData(); char strRead[MAX_NAMEBUFFER]; fread(strRead,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(&m_TotalHouseSceneCount,sizeof(long),1,fp); fread(&m_TotalInHouseLightSceneCount,sizeof(long),1,fp); fread(&m_TotalInHouseObjectSceneCount,sizeof(long),1,fp); fread(&m_TotalObjectSceneCount,sizeof(long),1,fp); // Height-Value Loading int cSavedHeightData=0; fread(&cSavedHeightData,sizeof(int),1,fp); for(int cHeightData=0;cHeightDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(AddNode->m_pHeightData,sizeof(float)*(SECTORSX-1)*(SECTORSY-1),1,fp); //m_HeightMap.Add(AddNode); } //Water loading int cSavedWaterData=0; fread(&cSavedWaterData,sizeof(int),1,fp); for(int cWaterData=0;cWaterDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(&AddNode->m_fWaterPosX,sizeof(float),1,fp); fread(&AddNode->m_fWaterPosY,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeX,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeY,sizeof(float),1,fp); fread(&AddNode->m_fWaterHeight,sizeof(float),1,fp); fread(&AddNode->m_bWaterRelection,sizeof(bool),1,fp); fread(&AddNode->m_WaterColor,sizeof(color),1,fp); m_WaterMap.Add(AddNode); } //Widemap loading int cSavedWideData=0; fread(&cSavedWideData,sizeof(int),1,fp); for(int cWideData=0;cWideDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(AddNode->m_strWidemapName,sizeof(char)*MAX_NAMEBUFFER,1,fp); m_WideMap.Add(AddNode); } //Fallmap loading int cSavedFallData=0; fread(&cSavedFallData,sizeof(int),1,fp); for(int cFallData=0;cFallDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(&AddNode->m_fFallPosX,sizeof(float),1,fp); fread(&AddNode->m_fFallPosY,sizeof(float),1,fp); fread(&AddNode->m_fFallRot,sizeof(float),1,fp); int cSavedFallList; fread(&cSavedFallList,sizeof(int),1,fp); for(int cFallList=0;cFallListm_FallHeightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallLeftList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallRightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallAddXList.Add(ReadFallData); fread(&ReadFallColor,sizeof(color),1,fp); AddNode->m_FallColor.Add(ReadFallColor); } m_FallMap.Add(AddNode); } // HouseMap loading int cSavedHouseData=0; fread(&cSavedHouseData,sizeof(int),1,fp); for(int cHouseData=0;cHouseDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedHouseList=0; fread(&cSavedHouseList,sizeof(int),1,fp); for(int cHouseList=0;cHouseListm_TM.Add(ReadHouseTM); fread(&ReadHouseID,sizeof(int),1,fp); AddNode->m_HouseSceneID.Add(ReadHouseID); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strOutName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strMedName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strInName.Add(ReadHouseName); } m_HouseMap.Add(AddNode); } int cSavedInHouseData=0; fread(&cSavedInHouseData,sizeof(int),1,fp); for(int cInHouseData=0;cInHouseDatam_strOutName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strMedName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strInName,sizeof(char)*MAX_NAMEBUFFER,1,fp); int cSavedObject,cSavedLight; fread(&cSavedObject,sizeof(int),1,fp); for(int cObject=0;cObjectm_strObjectNameList.Add(ReadObjectName); fread(&ReadObjectID,sizeof(long),1,fp); AddNode->m_ObjectID.Add(ReadObjectID); fread(&ReadObjectTM,sizeof(matrix),1,fp); AddNode->m_matObjectList.Add(ReadObjectTM); fread(&ReadAlpha,sizeof(bool),1,fp); AddNode->m_isAlpha.Add(ReadAlpha); fread(&ReadLight,sizeof(bool),1,fp); AddNode->m_isLight.Add(ReadLight); } fread(&cSavedLight,sizeof(int),1,fp); for(int cLight=0;cLightm_strLightNameList.Add(ReadLightName); fread(&ReadLightID,sizeof(long),1,fp); AddNode->m_LightID.Add(ReadLightID); fread(&ReadLightTM,sizeof(matrix),1,fp); AddNode->m_matLightList.Add(ReadLightTM); fread(&ReadLightRange,sizeof(float),1,fp); AddNode->m_fLightRange.Add(ReadLightRange); fread(&ReadLightColor,sizeof(color),1,fp); AddNode->m_LightColor.Add(ReadLightColor); } /* AddNode->m_strLightNameList.num=0; AddNode->m_LightID.num=0; AddNode->m_matLightList.num=0; AddNode->m_fLightRange.num=0; AddNode->m_LightColor.num=0; m_TotalInHouseLightSceneCount=0; */ m_InHouseMap.Add(AddNode); } // PlantMap loading int cSavedPlantData=0; fread(&cSavedPlantData,sizeof(int),1,fp); for(int cPlantData=0;cPlantDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedSubPlant; int ReadKind; vector3 ReadPos; fread(&cSavedSubPlant,sizeof(int),1,fp); for(int cSubPlant=0;cSubPlantm_PlantKind.Add(ReadKind); //AddNode->m_vecPlantPos.Add(ReadPos); } //m_PlantMap.Add(AddNode); } // MeshMap loading int cSavedMeshData=0; fread(&cSavedMeshData,sizeof(int),1,fp); for(int cMeshData=0;cMeshDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedObject=0; fread(&cSavedObject,sizeof(int),1,fp); int ReadObjectSceneID; matrix ReadMatrixTM; bool ReadAlpha,ReadLight; for(int cObject=0;cObjectm_ObjectSceneID.Add(ReadObjectSceneID); AddNode->m_strObjectName.Add(ReadObjectName); AddNode->m_TM.Add(ReadMatrixTM); AddNode->m_isAlpha.Add(ReadAlpha); AddNode->m_isLight.Add(ReadLight); } m_MeshMap.Add(AddNode); } fclose(fp); } void CMapStorage::SaveInHouseMap(char *strFilename) { FILE *fp=fopen(strFilename,"wb"); if(fp==NULL) return; fwrite(&m_InHouseMap.num,sizeof(int),1,fp); for(int cInHouseData=0;cInHouseDatam_strOutName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_InHouseMap[cInHouseData]->m_strMedName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_InHouseMap[cInHouseData]->m_strInName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_strObjectNameList.num,sizeof(int),1,fp); for(int cObject=0;cObjectm_strObjectNameList.num;cObject++) { fwrite(m_InHouseMap[cInHouseData]->m_strObjectNameList[cObject],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_ObjectID[cObject],sizeof(long),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_matObjectList[cObject],sizeof(matrix),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_isAlpha[cObject],sizeof(bool),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_isLight[cObject],sizeof(bool),1,fp); } fwrite(&m_InHouseMap[cInHouseData]->m_strLightNameList.num,sizeof(int),1,fp); for(int cLight=0;cLightm_strLightNameList.num;cLight++) { fwrite(m_InHouseMap[cInHouseData]->m_strLightNameList[cLight],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_LightID[cLight],sizeof(long),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_matLightList[cLight],sizeof(matrix),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_fLightRange[cLight],sizeof(float),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_LightColor[cLight],sizeof(color),1,fp); } } fclose(fp); } void CMapStorage::LoadInHouseMap(char *strFilename) { int cSavedInHouseData=0; FILE *fp=fopen(strFilename,"rb"); fread(&cSavedInHouseData,sizeof(int),1,fp); if(cSavedInHouseData==0) return; m_InHouseMap.num=0; for(int cInHouseData=0;cInHouseDatam_strOutName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strMedName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strInName,sizeof(char)*MAX_NAMEBUFFER,1,fp); strcpy(AddNode->m_strOutName,strlwr(AddNode->m_strOutName)); strcpy(AddNode->m_strMedName,strlwr(AddNode->m_strMedName)); strcpy(AddNode->m_strInName,strlwr(AddNode->m_strInName)); int cSavedObject,cSavedLight; fread(&cSavedObject,sizeof(int),1,fp); for(int cObject=0;cObjectm_strObjectNameList.Add(ReadObjectName); fread(&ReadObjectID,sizeof(long),1,fp); AddNode->m_ObjectID.Add(ReadObjectID); fread(&ReadObjectTM,sizeof(matrix),1,fp); AddNode->m_matObjectList.Add(ReadObjectTM); fread(&ReadAlpha,sizeof(bool),1,fp); AddNode->m_isAlpha.Add(true); fread(&ReadLight,sizeof(bool),1,fp); AddNode->m_isLight.Add(true); } fread(&cSavedLight,sizeof(int),1,fp); for(int cLight=0;cLightm_strLightNameList.Add(ReadLightName); fread(&ReadLightID,sizeof(long),1,fp); AddNode->m_LightID.Add(ReadLightID); fread(&ReadLightTM,sizeof(matrix),1,fp); AddNode->m_matLightList.Add(ReadLightTM); fread(&ReadLightRange,sizeof(float),1,fp); AddNode->m_fLightRange.Add(ReadLightRange); fread(&ReadLightColor,sizeof(color),1,fp); AddNode->m_LightColor.Add(ReadLightColor); } /* AddNode->m_strLightNameList.num=0; AddNode->m_LightID.num=0; AddNode->m_matLightList.num=0; AddNode->m_fLightRange.num=0; AddNode->m_LightColor.num=0; m_TotalInHouseLightSceneCount=0; */ m_InHouseMap.Add(AddNode); } fclose(fp); } void CMapStorage::BugFix_Tree() { for(int cPlantMap=0;cPlantMap DelTreeList; for(int cPlant=0;cPlantm_PlantKind.num;cPlant++) { //ix=PlantMap->m_vecPlantPos[cPlant].x/LINTERVAL; //iy=PlantMap->m_vecPlantPos[cPlant].z/LINTERVAL; //if( ix < 0 || ix>= SECTORSX || iy < 0 || iy>=SECTORSY) //DelTreeList.Add(cPlant); } for(cPlant=DelTreeList.num-1;cPlant>=0;cPlant--) { PlantMap->m_PlantKind.DelIndex(DelTreeList[cPlant]); //PlantMap->m_vecPlantPos.DelIndex(DelTreeList[cPlant]); } } } List strHangulList; List strEnglishList; void ConvertH2E(char *strHangle) { strHangle=strlwr(strHangle); for(int cHangul=0;cHangulm_strWidemapName[0]); } for(int cHouseData=0;cHouseDatam_HouseSceneID.num;cHouseList++) { ConvertH2E(m_HouseMap[cHouseData]->m_strOutName[cHouseList]); ConvertH2E(m_HouseMap[cHouseData]->m_strMedName[cHouseList]); ConvertH2E(m_HouseMap[cHouseData]->m_strInName[cHouseList]); } } for(int cInHouseData=0;cInHouseDatam_strOutName); ConvertH2E(m_InHouseMap[cInHouseData]->m_strMedName); ConvertH2E(m_InHouseMap[cInHouseData]->m_strInName); for(int cObject=0;cObjectm_strObjectNameList.num;cObject++) { ConvertH2E(m_InHouseMap[cInHouseData]->m_strObjectNameList[cObject]); } for(int cLight=0;cLightm_strLightNameList.num;cLight++) { ConvertH2E(m_InHouseMap[cInHouseData]->m_strLightNameList[cLight]); } } for(int cMeshData=0;cMeshDatam_ObjectSceneID.num;cObject++) { ConvertH2E(m_MeshMap[cMeshData]->m_strObjectName[cObject]); } } } void CMapStorage::BugFix_Tree2(char *strFilename) { FILE *fp=fopen(strFilename,"rb"); if(fp==NULL) return; DeleteAllData(); char strRead[MAX_NAMEBUFFER]; fread(strRead,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(&m_TotalHouseSceneCount,sizeof(long),1,fp); fread(&m_TotalInHouseLightSceneCount,sizeof(long),1,fp); fread(&m_TotalInHouseObjectSceneCount,sizeof(long),1,fp); fread(&m_TotalObjectSceneCount,sizeof(long),1,fp); // Height-Value Loading int cSavedHeightData=0; fread(&cSavedHeightData,sizeof(int),1,fp); for(int cHeightData=0;cHeightDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(AddNode->m_pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); m_HeightMap.Add(AddNode); } //Water loading int cSavedWaterData=0; fread(&cSavedWaterData,sizeof(int),1,fp); for(int cWaterData=0;cWaterDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(&AddNode->m_fWaterPosX,sizeof(float),1,fp); fread(&AddNode->m_fWaterPosY,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeX,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeY,sizeof(float),1,fp); fread(&AddNode->m_fWaterHeight,sizeof(float),1,fp); fread(&AddNode->m_bWaterRelection,sizeof(bool),1,fp); fread(&AddNode->m_WaterColor,sizeof(color),1,fp); m_WaterMap.Add(AddNode); } //Widemap loading int cSavedWideData=0; fread(&cSavedWideData,sizeof(int),1,fp); for(int cWideData=0;cWideDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(AddNode->m_strWidemapName,sizeof(char)*MAX_NAMEBUFFER,1,fp); m_WideMap.Add(AddNode); } //Fallmap loading int cSavedFallData=0; fread(&cSavedFallData,sizeof(int),1,fp); for(int cFallData=0;cFallDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(&AddNode->m_fFallPosX,sizeof(float),1,fp); fread(&AddNode->m_fFallPosY,sizeof(float),1,fp); fread(&AddNode->m_fFallRot,sizeof(float),1,fp); int cSavedFallList; fread(&cSavedFallList,sizeof(int),1,fp); for(int cFallList=0;cFallListm_FallHeightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallLeftList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallRightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallAddXList.Add(ReadFallData); fread(&ReadFallColor,sizeof(color),1,fp); AddNode->m_FallColor.Add(ReadFallColor); } m_FallMap.Add(AddNode); } // HouseMap loading int cSavedHouseData=0; fread(&cSavedHouseData,sizeof(int),1,fp); for(int cHouseData=0;cHouseDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedHouseList=0; fread(&cSavedHouseList,sizeof(int),1,fp); for(int cHouseList=0;cHouseListm_TM.Add(ReadHouseTM); fread(&ReadHouseID,sizeof(int),1,fp); AddNode->m_HouseSceneID.Add(ReadHouseID); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strOutName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strMedName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strInName.Add(ReadHouseName); } m_HouseMap.Add(AddNode); } int cSavedInHouseData=0; fread(&cSavedInHouseData,sizeof(int),1,fp); for(int cInHouseData=0;cInHouseDatam_strOutName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strMedName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strInName,sizeof(char)*MAX_NAMEBUFFER,1,fp); strcpy(AddNode->m_strOutName,strlwr(AddNode->m_strOutName)); strcpy(AddNode->m_strMedName,strlwr(AddNode->m_strMedName)); strcpy(AddNode->m_strInName,strlwr(AddNode->m_strInName)); int cSavedObject,cSavedLight; fread(&cSavedObject,sizeof(int),1,fp); for(int cObject=0;cObjectm_strObjectNameList.Add(ReadObjectName); fread(&ReadObjectID,sizeof(long),1,fp); AddNode->m_ObjectID.Add(ReadObjectID); fread(&ReadObjectTM,sizeof(matrix),1,fp); AddNode->m_matObjectList.Add(ReadObjectTM); fread(&ReadAlpha,sizeof(bool),1,fp); AddNode->m_isAlpha.Add(true); fread(&ReadLight,sizeof(bool),1,fp); AddNode->m_isLight.Add(true); } fread(&cSavedLight,sizeof(int),1,fp); for(int cLight=0;cLightm_strLightNameList.Add(ReadLightName); fread(&ReadLightID,sizeof(long),1,fp); AddNode->m_LightID.Add(ReadLightID); fread(&ReadLightTM,sizeof(matrix),1,fp); AddNode->m_matLightList.Add(ReadLightTM); fread(&ReadLightRange,sizeof(float),1,fp); AddNode->m_fLightRange.Add(ReadLightRange); fread(&ReadLightColor,sizeof(color),1,fp); AddNode->m_LightColor.Add(ReadLightColor); } /* AddNode->m_strLightNameList.num=0; AddNode->m_LightID.num=0; AddNode->m_matLightList.num=0; AddNode->m_fLightRange.num=0; AddNode->m_LightColor.num=0; m_TotalInHouseLightSceneCount=0; */ m_InHouseMap.Add(AddNode); } // PlantMap loading int cSavedPlantData=0; fread(&cSavedPlantData,sizeof(int),1,fp); for(int cPlantData=0;cPlantDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedSubPlant; int ReadKind; vector3 ReadPos; fread(&cSavedSubPlant,sizeof(int),1,fp); for(int cSubPlant=0;cSubPlantm_PlantKind.Add(ReadKind); AddNode->m_PlantPosX.Add(ix); AddNode->m_PlantPosZ.Add(iy); } m_PlantMap.Add(AddNode); } // MeshMap loading int cSavedMeshData=0; fread(&cSavedMeshData,sizeof(int),1,fp); for(int cMeshData=0;cMeshDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedObject=0; fread(&cSavedObject,sizeof(int),1,fp); int ReadObjectSceneID; matrix ReadMatrixTM; bool ReadAlpha,ReadLight; for(int cObject=0;cObjectm_ObjectSceneID.Add(ReadObjectSceneID); AddNode->m_strObjectName.Add(ReadObjectName); AddNode->m_TM.Add(ReadMatrixTM); AddNode->m_isAlpha.Add(true); AddNode->m_isLight.Add(true); } m_MeshMap.Add(AddNode); } fclose(fp); } CSectorMustDivideVertexMap* CMapStorage::FindMustDivideVertexMap(float fFindX, float fFindY) { int indexx=(int)(fFindX/SECTORSIZE); int indexy=(int)(fFindY/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_MustDivideVertexMap[cStorage]->m_IndexY==indexy) { return m_MustDivideVertexMap[cStorage]; } } return NULL; } void CMapStorage::AddMustDivideVertex(CSectorMustDivideVertexMap *pMustDivideVertex) { m_MustDivideVertexMap.Add(pMustDivideVertex); } void CMapStorage::AddSectorLight(float fAddx,float fAddy,float fAddz,float fR,float fG,float fB,float fRad,int iLightSam,int iShadowSam,float fShadowFactor,int iAmb,char *strEffect,float fExpose) { int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int i = 0; i < m_LightMap.num; i++ ) { if((m_LightMap[i]->m_IndexX == indexx) && (m_LightMap[i]->m_IndexY == indexy)) { CSectorLight pNode; pNode.m_fRange = fRad; pNode.m_vecColor.x = fR; pNode.m_vecColor.y = fG; pNode.m_vecColor.z = fB; pNode.m_vecPos.x = fAddx; pNode.m_vecPos.y = fAddy; pNode.m_vecPos.z = fAddz; pNode.m_iLightSamples = iLightSam; pNode.m_iShadowSamples = iShadowSam; pNode.m_fShadowFactors = fShadowFactor; pNode.m_iAmbient = iAmb; pNode.m_fExpose = fExpose; strcpy(pNode.m_strEffect,strEffect); m_LightMap[i]->m_lstLights.push_back(pNode); return; } } CSectorLightMap *pMap = new CSectorLightMap; pMap->m_IndexX = indexx; pMap->m_IndexY = indexy; CSectorLight pNode; pNode.m_fRange = fRad; pNode.m_vecColor.x = fR; pNode.m_vecColor.y = fG; pNode.m_vecColor.z = fB; pNode.m_vecPos.x = fAddx; pNode.m_vecPos.y = fAddy; pNode.m_vecPos.z = fAddz; pNode.m_iLightSamples = iLightSam; pNode.m_iShadowSamples = iShadowSam; pNode.m_fShadowFactors = fShadowFactor; pNode.m_iAmbient = iAmb; pNode.m_fExpose = fExpose; strcpy(pNode.m_strEffect,strEffect); pMap->m_lstLights.push_back(pNode); m_LightMap.Add(pMap); } void CMapStorage::DeleteSectorLight(float fAddx,float fAddy,float fAddz) { int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int i = 0; i < m_LightMap.num; i++ ) { if((m_LightMap[i]->m_IndexX == indexx) && (m_LightMap[i]->m_IndexY == indexy)) { for(int k = 0; k < m_LightMap[i]->m_lstLights.size(); i++) { if((m_LightMap[i]->m_lstLights[k].m_vecPos.x == fAddx) && (m_LightMap[i]->m_lstLights[k].m_vecPos.y == fAddy) && (m_LightMap[i]->m_lstLights[k].m_vecPos.z == fAddz)) { m_LightMap[i]->m_lstLights.erase(&(m_LightMap[i]->m_lstLights[k])); return; } } } } } CSectorLightMap *CMapStorage::FindLightMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int i = 0; i < m_LightMap.num; i++) { if((m_LightMap[i]->m_IndexX == indexx) && (m_LightMap[i]->m_IndexY == indexy)) { return m_LightMap[i]; } } return (CSectorLightMap *)NULL; } void CMapStorage::AddEffectMap(float fAddx,float fAddy, float fAddz,char *strFilename,float xrot,float yrot,float zrot) { int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); // List m_vecEffectPos; // List m_vecEffectName; for(int i=0;im_IndexX==indexx && m_EffectMap[i]->m_IndexY==indexy ) { m_EffectMap[i]->m_vecEffectPos.Add(vector3(fAddx,fAddy,fAddz)); m_EffectMap[i]->m_vecEffectRot.Add(vector3(xrot,yrot,zrot)); char *pAddName = new char[256]; strcpy(pAddName,strFilename); m_EffectMap[i]->m_strEffectName.Add(pAddName); m_EffectMap[i]->Sector_EffectNum++; return; } } CSectorEffectMap *AddEffectMap=new CSectorEffectMap(); AddEffectMap->m_IndexX=indexx; AddEffectMap->m_IndexY=indexy; AddEffectMap->m_vecEffectPos.Add(vector3(fAddx,fAddy,fAddz)); AddEffectMap->m_vecEffectRot.Add(vector3(xrot,yrot,zrot)); char *pAddName = new char[256]; strcpy(pAddName,strFilename); AddEffectMap->m_strEffectName.Add(pAddName); m_EffectMap.Add(AddEffectMap); m_EffectMap[i]->Sector_EffectNum++; } void CMapStorage::DelEffectMap(float fAddx,float fAddy,float fAddz,char *filename) { int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); int j; for(int cStorage=0;cStoragem_IndexX==indexx && m_EffectMap[cStorage]->m_IndexY==indexy) { for(j=0;jSector_EffectNum;j++) { if(m_EffectMap[cStorage]->m_vecEffectPos[j].x == fAddx && m_EffectMap[cStorage]->m_vecEffectPos[j].y == fAddy && m_EffectMap[cStorage]->m_vecEffectPos[j].z == fAddz) { m_EffectMap[cStorage]->m_vecEffectPos.DelIndex(j); m_EffectMap[cStorage]->m_strEffectName.DelIndex(j); m_EffectMap[cStorage]->Sector_EffectNum--; return; } } } } return; } CSectorEffectMap *CMapStorage::FindEffectMap(int indexX,int indexY) { for(int cStorage=0;cStoragem_IndexX==indexX && m_EffectMap[cStorage]->m_IndexY==indexY) { return m_EffectMap[cStorage]; //return &m_EffectMap.m_Effect[cStorage]; } } return NULL; } CSectorEffectMap *CMapStorage::FindEffectMap(int &index) { if(index >= m_EffectMap.num) index = 0; return m_EffectMap[index]; } CSectorEffectMap *CMapStorage::FindEffectMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_EffectMap[cStorage]->m_IndexY==indexy) { return m_EffectMap[cStorage]; //return &m_EffectMap.m_Effect[cStorage]; } } return NULL; } void CMapStorage::DeleteAllObject() { int i; for(i=0;im_IndexX == indexx && m_SoundMap[i]->m_IndexY == indexy) { char *pFilename=new char[256]; strcpy(pFilename,strFilename); m_SoundMap[i]->m_strSoundFilenameList.Add(pFilename); m_SoundMap[i]->m_SoundPosList.Add(vector3(fAddx,fAddy,fAddz)); m_SoundMap[i]->m_SoundMinRangeList.Add(fMinRange); m_SoundMap[i]->m_SoundMaxRangeList.Add(fMaxRange); return; } } CSectorSoundMap *AddNode=new CSectorSoundMap(); AddNode->m_IndexX=indexx; AddNode->m_IndexY=indexy; AddNode->m_SoundPosList.Add(vector3(fAddx,fAddy,fAddz)); AddNode->m_SoundMinRangeList.Add(fMinRange); AddNode->m_SoundMaxRangeList.Add(fMaxRange); char *pFilename=new char[256]; strcpy(pFilename,strFilename); AddNode->m_strSoundFilenameList.Add(pFilename); m_SoundMap.Add(AddNode); /* if(fHeightData==NULL) return; int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); for(int i=0;im_IndexX == indexx && m_HeightMap[i]->m_IndexY == indexy) { memcpy(m_HeightMap[i]->m_pHeightData,fHeightData,sizeof(float)*SECTORSX*SECTORSY); return; } } CSectorHeightMap *AddHeightMap=new CSectorHeightMap(); AddHeightMap->m_IndexX=indexx; AddHeightMap->m_IndexY=indexy; if(m_LoadMode==0) { AddHeightMap->m_pHeightData=new float[SECTORSX*SECTORSY]; } memcpy(AddHeightMap->m_pHeightData,fHeightData,sizeof(float)*SECTORSX*SECTORSY); m_HeightMap.Add(AddHeightMap); */ /* } CSectorSoundMap* CMapStorage::FindSoundMap(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_SoundMap[cStorage]->m_IndexY==indexy) { return m_SoundMap[cStorage]; } } return NULL; } void CMapStorage::SaveSoundMap(char *strSoundMapFilename) { FILE *fp=fopen(strSoundMapFilename,"wb"); fwrite(&m_SoundMap.num,sizeof(int),1,fp); for(int cStorage=0;cStoragem_IndexX,sizeof(int),1,fp); fwrite(&m_SoundMap[cStorage]->m_IndexY,sizeof(int),1,fp); fwrite(&m_SoundMap[cStorage]->m_SoundMaxRangeList.num,sizeof(int),1,fp); for(int i=0;im_SoundMaxRangeList.num;i++) { fwrite(m_SoundMap[cStorage]->m_strSoundFilenameList[i],sizeof(char)*256,1,fp); fwrite(&m_SoundMap[cStorage]->m_SoundPosList[i],sizeof(vector3),1,fp); fwrite(&m_SoundMap[cStorage]->m_SoundMaxRangeList[i],sizeof(float),1,fp); fwrite(&m_SoundMap[cStorage]->m_SoundMinRangeList[i],sizeof(float),1,fp); } } } void CMapStorage::LoadSoundMap(char *strSoundMapFilename) { FILE *fp=fopen(strSoundMapFilename,"rb"); if(fp==NULL) return; int nStorage=0; fread(&nStorage,sizeof(int),1,fp); for(int cStorage=0;cStoragem_IndexY; fread(&AddNode->m_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int c; fread(&c,sizeof(int),1,fp); for(int i=0;im_strSoundFilenameList.Add(strName); vector3 vecPos; fread(&vecPos,sizeof(vector3),1,fp); AddNode->m_SoundPosList.Add(vecPos); float fRange; fread(&fRange,sizeof(float),1,fp); AddNode->m_SoundMaxRangeList.Add(fRange); fread(&fRange,sizeof(float),1,fp); AddNode->m_SoundMinRangeList.Add(fRange); } m_SoundMap.Add(AddNode); } } */ void CMapStorage::SaveGF3(char *strFilename) { FILE *fp=fopen(strFilename,"wb"); if(fp==NULL) return; char strWrite[MAX_NAMEBUFFER]; sprintf(strWrite,"ZallA-3D Scene Data File Build#2"); fwrite(strWrite,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_TotalHouseSceneCount,sizeof(long),1,fp); fwrite(&m_TotalInHouseLightSceneCount,sizeof(long),1,fp); fwrite(&m_TotalInHouseObjectSceneCount,sizeof(long),1,fp); fwrite(&m_TotalObjectSceneCount,sizeof(long),1,fp); // Height-Value Saving fwrite(&m_HeightMap.num,sizeof(int),1,fp); for(int cHeightData=0;cHeightDatam_IndexX,sizeof(int),1,fp); fwrite(&m_HeightMap[cHeightData]->m_IndexY,sizeof(int),1,fp); fwrite(m_HeightMap[cHeightData]->m_pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); } //Water Saving fwrite(&m_WaterMap.num,sizeof(int),1,fp); for(int cWaterData=0;cWaterDatam_IndexX,sizeof(int),1,fp); fwrite(&m_WaterMap[cWaterData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterPosX,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterPosY,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterSizeX,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterSizeY,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_fWaterHeight,sizeof(float),1,fp); fwrite(&m_WaterMap[cWaterData]->m_bWaterRelection,sizeof(bool),1,fp); fwrite(&m_WaterMap[cWaterData]->m_WaterColor,sizeof(color),1,fp); } //Widemap saving fwrite(&m_WideMap.num,sizeof(int),1,fp); for(int cWideData=0;cWideDatam_IndexX,sizeof(int),1,fp); fwrite(&m_WideMap[cWideData]->m_IndexY,sizeof(int),1,fp); fwrite(m_WideMap[cWideData]->m_strWidemapName[0],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_WideMap[cWideData]->m_strDetailName[0],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_WideMap[cWideData]->m_strWidemapName[1],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_WideMap[cWideData]->m_strDetailName[1],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_WideMap[cWideData]->m_strWidemapName[2],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_WideMap[cWideData]->m_strDetailName[2],sizeof(char)*MAX_NAMEBUFFER,1,fp); } //Fallmap saving fwrite(&m_FallMap.num,sizeof(int),1,fp); for(int cFallData=0;cFallDatam_IndexX,sizeof(int),1,fp); fwrite(&m_FallMap[cFallData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallPosX,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallPosY,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_fFallRot,sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallHeightList.num,sizeof(int),1,fp); for(int cFallList=0;cFallListm_FallHeightList.num;cFallList++) { fwrite(&m_FallMap[cFallData]->m_FallHeightList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallLeftList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallRightList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallAddXList[cFallList],sizeof(float),1,fp); fwrite(&m_FallMap[cFallData]->m_FallColor[cFallList],sizeof(color),1,fp); } } //HouseMap saving fwrite(&m_HouseMap.num,sizeof(int),1,fp); for(int cHouseData=0;cHouseDatam_IndexX,sizeof(int),1,fp); fwrite(&m_HouseMap[cHouseData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_HouseMap[cHouseData]->m_TM.num,sizeof(int),1,fp); for(int cHouseList=0;cHouseListm_TM.num;cHouseList++) { fwrite(&m_HouseMap[cHouseData]->m_TM[cHouseList],sizeof(matrix),1,fp); fwrite(&m_HouseMap[cHouseData]->m_HouseSceneID[cHouseList],sizeof(int),1,fp); fwrite(m_HouseMap[cHouseData]->m_strOutName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); /* if(strstr(m_HouseMap[cHouseData]->m_strMedName[cHouseList],"snowwood01(a)_gg_6000o.r3s")|| strstr(m_HouseMap[cHouseData]->m_strMedName[cHouseList],"snowwood01(b)_gg_6000o.r3s")|| strstr(m_HouseMap[cHouseData]->m_strMedName[cHouseList],"snowwood01(c)_gg_6000o.r3s")|| strstr(m_HouseMap[cHouseData]->m_strMedName[cHouseList],"snowwood02(a)_gg_6000o.r3s")|| strstr(m_HouseMap[cHouseData]->m_strMedName[cHouseList],"snowwood02(b)_gg_6000o.r3s")|| strstr(m_HouseMap[cHouseData]->m_strMedName[cHouseList],"snowwood02(c)_gg_6000o.r3s")|| strstr(m_HouseMap[cHouseData]->m_strMedName[cHouseList],"snowwood02(d)_gg_6000o.r3s") ) { char strName[256] = {0}; sprintf(strName,"_QWE_%s",m_HouseMap[cHouseData]->m_strMedName[cHouseList]); fwrite(strName,sizeof(char)*MAX_NAMEBUFFER,1,fp); } else*/ fwrite(m_HouseMap[cHouseData]->m_strMedName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_HouseMap[cHouseData]->m_strInName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_HouseMap[cHouseData]->m_strBspName[cHouseList],sizeof(char)*MAX_NAMEBUFFER,1,fp); } } //InHouseObjectMap saving fwrite(&m_InHouseMap.num,sizeof(int),1,fp); for(int cInHouseData=0;cInHouseDatam_strOutName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_InHouseMap[cInHouseData]->m_strMedName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_InHouseMap[cInHouseData]->m_strInName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(m_InHouseMap[cInHouseData]->m_strBspName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_strObjectNameList.num,sizeof(int),1,fp); for(int cObject=0;cObjectm_strObjectNameList.num;cObject++) { fwrite(m_InHouseMap[cInHouseData]->m_strObjectNameList[cObject],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_ObjectID[cObject],sizeof(long),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_matObjectList[cObject],sizeof(matrix),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_isAlpha[cObject],sizeof(bool),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_isLight[cObject],sizeof(bool),1,fp); } fwrite(&m_InHouseMap[cInHouseData]->m_strLightNameList.num,sizeof(int),1,fp); for(int cLight=0;cLightm_strLightNameList.num;cLight++) { fwrite(m_InHouseMap[cInHouseData]->m_strLightNameList[cLight],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_LightID[cLight],sizeof(long),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_matLightList[cLight],sizeof(matrix),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_fLightRange[cLight],sizeof(float),1,fp); fwrite(&m_InHouseMap[cInHouseData]->m_LightColor[cLight],sizeof(color),1,fp); } } // PlantMap saving fwrite(&m_PlantMap.num,sizeof(int),1,fp); for(int cPlantData=0;cPlantDatam_IndexX,sizeof(int),1,fp); fwrite(&m_PlantMap[cPlantData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantKind.num,sizeof(int),1,fp); for(int cSubPlant=0;cSubPlantm_PlantKind.num;cSubPlant++) { fwrite(&m_PlantMap[cPlantData]->m_PlantKind[cSubPlant],sizeof(unsigned char),1,fp); //fwrite(&m_PlantMap[cPlantData]->m_vecPlantPos[cSubPlant],sizeof(vector3),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantPosX[cSubPlant],sizeof(unsigned char),1,fp); fwrite(&m_PlantMap[cPlantData]->m_PlantPosZ[cSubPlant],sizeof(unsigned char),1,fp); } } // MeshMap saving fwrite(&m_MeshMap.num,sizeof(int),1,fp); for(int cMeshData=0;cMeshDatam_IndexX,sizeof(int),1,fp); fwrite(&m_MeshMap[cMeshData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_MeshMap[cMeshData]->m_ObjectSceneID.num,sizeof(int),1,fp); for(int cObject=0;cObjectm_ObjectSceneID.num;cObject++) { fwrite(&m_MeshMap[cMeshData]->m_ObjectSceneID[cObject],sizeof(long),1,fp); fwrite(m_MeshMap[cMeshData]->m_strObjectName[cObject],sizeof(char)*MAX_NAMEBUFFER,1,fp); fwrite(&m_MeshMap[cMeshData]->m_TM[cObject],sizeof(matrix),1,fp); fwrite(&m_MeshMap[cMeshData]->m_isAlpha[cObject],sizeof(bool),1,fp); fwrite(&m_MeshMap[cMeshData]->m_isLight[cObject],sizeof(bool),1,fp); } } fwrite(&m_EffectMap.num,sizeof(int),1,fp); for(int cEffectData=0;cEffectDatam_IndexX,sizeof(int),1,fp); fwrite(&m_EffectMap[cEffectData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_EffectMap[cEffectData]->m_vecEffectPos.num,sizeof(int),1,fp); for(int cEffect=0;cEffectm_vecEffectPos.num;cEffect++) { fwrite(&m_EffectMap[cEffectData]->m_vecEffectPos[cEffect],sizeof(vector3),1,fp); fwrite(&m_EffectMap[cEffectData]->m_vecEffectRot[cEffect],sizeof(vector3),1,fp); fwrite(m_EffectMap[cEffectData]->m_strEffectName[cEffect],sizeof(char)*256,1,fp); } } // landscapeeffect save fwrite(&m_LandscapeEffectMap.num,sizeof(int),1,fp); for(int cLandscapeEffectData = 0;cLandscapeEffectDatam_IndexX,sizeof(int),1,fp); fwrite(&m_LandscapeEffectMap[cLandscapeEffectData]->m_IndexY,sizeof(int),1,fp); fwrite(&m_LandscapeEffectMap[cLandscapeEffectData]->m_LandscapeEffect.num,sizeof(int),1,fp); for(int cLand = 0;cLand m_LandscapeEffect.num;cLand++) { fwrite(&m_LandscapeEffectMap[cLandscapeEffectData]->m_LandscapeEffect[cLand].m_nEffectMethod,sizeof(int),1,fp); fwrite(&m_LandscapeEffectMap[cLandscapeEffectData]->m_LandscapeEffect[cLand].m_vecCenterPos,sizeof(vector3),1,fp); fwrite(&m_LandscapeEffectMap[cLandscapeEffectData]->m_LandscapeEffect[cLand].m_Name,sizeof(char)* 50,1,fp); fwrite(&m_LandscapeEffectMap[cLandscapeEffectData]->m_LandscapeEffect[cLand].m_Param,sizeof(float) * 50,1,fp); fwrite(&m_LandscapeEffectMap[cLandscapeEffectData]->m_LandscapeEffect[cLand].m_IntParam,sizeof(int) * 20,1,fp); fwrite(&m_LandscapeEffectMap[cLandscapeEffectData]->m_LandscapeEffect[cLand].m_dwBlend,sizeof(DWORD) * 2,1,fp); } } // Sector Light Save fwrite(&m_LightMap.num,sizeof(int),1,fp); for(int iLightMap = 0; iLightMap < m_LightMap.num; iLightMap++) { int iNum = m_LightMap[iLightMap]->m_lstLights.size(); fwrite((int *)&(m_LightMap[iLightMap]->m_IndexX),sizeof(int),1,fp); fwrite((int *)&(m_LightMap[iLightMap]->m_IndexY),sizeof(int),1,fp); fwrite((int *)&(iNum),sizeof(int),1,fp); for(int iLight = 0; iLight < m_LightMap[iLightMap]->m_lstLights.size(); iLight++) { fwrite((CSectorLight *)&(m_LightMap[iLightMap]->m_lstLights[iLight]),sizeof(CSectorLight),1,fp); } } fclose(fp); } void CMapStorage::LoadGF3(char *strFilename) { FILE *fp=fopen(strFilename,"rb"); if(fp==NULL) return; /// °­Á¦·Î ¸ðµç ¿ÀºêÁ§Æ®ÀÇ ³ôÀÌÁ¶Àý float ft = 3000.0f; ft = 0.0f; strcpy(m_strMapFilename,strFilename); DeleteAllData(); char strRead[MAX_NAMEBUFFER]; fread(strRead,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(&m_TotalHouseSceneCount,sizeof(long),1,fp); fread(&m_TotalInHouseLightSceneCount,sizeof(long),1,fp); fread(&m_TotalInHouseObjectSceneCount,sizeof(long),1,fp); fread(&m_TotalObjectSceneCount,sizeof(long),1,fp); // Height-Value Loading int cSavedHeightData=0; fread(&cSavedHeightData,sizeof(int),1,fp); if(m_LoadMode==0) { for(int cHeightData=0;cHeightDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); AddNode->m_pHeightData=new float[SECTORSX*SECTORSY]; fread(AddNode->m_pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); if(ft != 0.0f) { for(int i = 0; i < SECTORSX*SECTORSY; ++i) { AddNode->m_pHeightData[i] += ft; } } m_HeightMap.Add(AddNode); } } else { float pHeightData[SECTORSX*SECTORSY]; for(int cHeightData=0;cHeightDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); AddNode->m_FilePos=ftell(fp); fread(&pHeightData,sizeof(float)*SECTORSX*SECTORSY,1,fp); if(ft != 0.0f) { for(int i = 0; i < SECTORSX*SECTORSY; ++i) { AddNode->m_pHeightData[i] += ft; } } m_HeightMap.Add(AddNode); } } //Water loading int cSavedWaterData=0; fread(&cSavedWaterData,sizeof(int),1,fp); for(int cWaterData=0;cWaterDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(&AddNode->m_fWaterPosX,sizeof(float),1,fp); fread(&AddNode->m_fWaterPosY,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeX,sizeof(float),1,fp); fread(&AddNode->m_fWaterSizeY,sizeof(float),1,fp); fread(&AddNode->m_fWaterHeight,sizeof(float),1,fp); /// ¹°³ôÀÌÁ¶Àý if(ft != 0.0f) AddNode->m_fWaterHeight += ft; fread(&AddNode->m_bWaterRelection,sizeof(bool),1,fp); fread(&AddNode->m_WaterColor,sizeof(color),1,fp); m_WaterMap.Add(AddNode); } //Widemap loading int cSavedWideData=0; fread(&cSavedWideData,sizeof(int),1,fp); for(int cWideData=0;cWideDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(AddNode->m_strWidemapName[0],sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strDetailName[0],sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strWidemapName[1],sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strDetailName[1],sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strWidemapName[2],sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strDetailName[2],sizeof(char)*MAX_NAMEBUFFER,1,fp); if(CRenderOption::m_TerrainMultiDetalTexture) { } else { strcpy(AddNode->m_strDetailName[0],"detail.dds"); strcpy(AddNode->m_strWidemapName[1],""); strcpy(AddNode->m_strDetailName[1],""); strcpy(AddNode->m_strWidemapName[2],""); strcpy(AddNode->m_strDetailName[2],""); } m_WideMap.Add(AddNode); } //Fallmap loading int cSavedFallData=0; fread(&cSavedFallData,sizeof(int),1,fp); for(int cFallData=0;cFallDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); fread(&AddNode->m_fFallPosX,sizeof(float),1,fp); fread(&AddNode->m_fFallPosY,sizeof(float),1,fp); fread(&AddNode->m_fFallRot,sizeof(float),1,fp); int cSavedFallList; fread(&cSavedFallList,sizeof(int),1,fp); for(int cFallList=0;cFallListm_FallHeightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallLeftList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallRightList.Add(ReadFallData); fread(&ReadFallData,sizeof(float),1,fp); AddNode->m_FallAddXList.Add(ReadFallData); fread(&ReadFallColor,sizeof(color),1,fp); AddNode->m_FallColor.Add(ReadFallColor); } m_FallMap.Add(AddNode); } // HouseMap loading int cSavedHouseData=0; fread(&cSavedHouseData,sizeof(int),1,fp); for(int cHouseData=0;cHouseDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedHouseList=0; fread(&cSavedHouseList,sizeof(int),1,fp); for(int cHouseList=0;cHouseListm_TM.Add(ReadHouseTM); fread(&ReadHouseID,sizeof(int),1,fp); AddNode->m_HouseSceneID.Add(ReadHouseID); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strOutName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strMedName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strInName.Add(ReadHouseName); ReadHouseName=new char[MAX_NAMEBUFFER]; fread(ReadHouseName,sizeof(char)*MAX_NAMEBUFFER,1,fp); AddNode->m_strBspName.Add(ReadHouseName); } m_HouseMap.Add(AddNode); } int cSavedInHouseData=0; fread(&cSavedInHouseData,sizeof(int),1,fp); for(int cInHouseData=0;cInHouseDatam_strOutName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strMedName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strInName,sizeof(char)*MAX_NAMEBUFFER,1,fp); fread(AddNode->m_strBspName,sizeof(char)*MAX_NAMEBUFFER,1,fp); strcpy(AddNode->m_strOutName,strlwr(AddNode->m_strOutName)); strcpy(AddNode->m_strMedName,strlwr(AddNode->m_strMedName)); strcpy(AddNode->m_strInName,strlwr(AddNode->m_strInName)); strcpy(AddNode->m_strBspName,strlwr(AddNode->m_strBspName)); int cSavedObject,cSavedLight; fread(&cSavedObject,sizeof(int),1,fp); for(int cObject=0;cObjectm_strObjectNameList.Add(ReadObjectName); fread(&ReadObjectID,sizeof(long),1,fp); AddNode->m_ObjectID.Add(ReadObjectID); fread(&ReadObjectTM,sizeof(matrix),1,fp); AddNode->m_matObjectList.Add(ReadObjectTM); fread(&ReadAlpha,sizeof(bool),1,fp); AddNode->m_isAlpha.Add(true); fread(&ReadLight,sizeof(bool),1,fp); AddNode->m_isLight.Add(true); } fread(&cSavedLight,sizeof(int),1,fp); for(int cLight=0;cLightm_strLightNameList.Add(ReadLightName); fread(&ReadLightID,sizeof(long),1,fp); AddNode->m_LightID.Add(ReadLightID); fread(&ReadLightTM,sizeof(matrix),1,fp); AddNode->m_matLightList.Add(ReadLightTM); fread(&ReadLightRange,sizeof(float),1,fp); AddNode->m_fLightRange.Add(ReadLightRange); fread(&ReadLightColor,sizeof(color),1,fp); AddNode->m_LightColor.Add(ReadLightColor); } m_InHouseMap.Add(AddNode); } // PlantMap loading int cSavedPlantData=0; fread(&cSavedPlantData,sizeof(int),1,fp); for(int cPlantData=0;cPlantDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedSubPlant; int ReadKind; unsigned char ReadPosX,ReadPosZ; //vector3 ReadPos; fread(&cSavedSubPlant,sizeof(int),1,fp); for(int cSubPlant=0;cSubPlantm_PlantKind.num;cNowPlant++) { if( AddNode->m_PlantPosX[cNowPlant]==ReadPosX && AddNode->m_PlantPosZ[cNowPlant]==ReadPosZ) { AddNode->m_PlantKind[cNowPlant]=ReadKind; AddNode->m_PlantPosX[cNowPlant]=ReadPosX; AddNode->m_PlantPosZ[cNowPlant]=ReadPosZ; isAlready=true; } } if(isAlready==false) { AddNode->m_PlantKind.Add(ReadKind); AddNode->m_PlantPosX.Add(ReadPosX); AddNode->m_PlantPosZ.Add(ReadPosZ); } //AddNode->m_vecPlantPos.Add(ReadPos); } m_PlantMap.Add(AddNode); } // MeshMap loading int cSavedMeshData=0; fread(&cSavedMeshData,sizeof(int),1,fp); for(int cMeshData=0;cMeshDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int cSavedObject=0; fread(&cSavedObject,sizeof(int),1,fp); int ReadObjectSceneID; matrix ReadMatrixTM; bool ReadAlpha,ReadLight; for(int cObject=0;cObjectm_ObjectSceneID.Add(ReadObjectSceneID); AddNode->m_strObjectName.Add(ReadObjectName); AddNode->m_TM.Add(ReadMatrixTM); AddNode->m_isAlpha.Add(true); AddNode->m_isLight.Add(true); } m_MeshMap.Add(AddNode); } int cSavedEffectData=0; fread(&cSavedEffectData,sizeof(int),1,fp); for(int cEffectData=0;cEffectDatam_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int nEffect; fread(&nEffect,sizeof(int),1,fp); vector3 vecEffectPos; vector3 vecEffectRot; char* strEffectName; for(int cEffect=0;cEffectm_vecEffectPos.Add(vecEffectPos); AddNode->m_strEffectName.Add(strEffectName); AddNode->m_vecEffectRot.Add(vecEffectRot); } m_EffectMap.Add(AddNode); } //landscape effect int cSaveLandscapeEffectData = 0; fread((int *)&cSaveLandscapeEffectData,sizeof(int),1,fp); for(int cLandscape = 0;cLandscapem_IndexX,sizeof(int),1,fp); fread(&AddNode->m_IndexY,sizeof(int),1,fp); int nLandscapeEffect; fread(&nLandscapeEffect,sizeof(int),1,fp); for(int cLEffect =0;cLEffectm_nEffectMethod),sizeof(int),1,fp); fread(&(tmpLandscape->m_vecCenterPos),sizeof(vector3),1,fp); if(ft != 0.0f) tmpLandscape->m_vecCenterPos.y += ft; fread(tmpLandscape->m_Name,sizeof(char)* 50,1,fp); fread(tmpLandscape->m_Param,sizeof(float)* 50,1,fp); fread(tmpLandscape->m_IntParam,sizeof(int)* 20,1,fp); fread(tmpLandscape->m_dwBlend,sizeof(DWORD)*2,1,fp); AddNode->m_LandscapeEffect.Add(*tmpLandscape); delete tmpLandscape; //AddNode->m_LandscapeEffect.Add } m_LandscapeEffectMap.Add(AddNode); } // Sector Light Load if(feof(fp) == 0) { int iLightMapNum; fread((int *)&iLightMapNum,sizeof(int),1,fp); if(iLightMapNum >0 && iLightMapNum < 100) { for(int iLightMap = 0; iLightMap < iLightMapNum; iLightMap++) { CSectorLightMap *pAddNode = new CSectorLightMap; fread((int *)&(pAddNode->m_IndexX),sizeof(int),1,fp); fread((int *)&(pAddNode->m_IndexY),sizeof(int),1,fp); int iLightNum; fread((int *)&iLightNum,sizeof(int),1,fp); for(int iLight = 0; iLight < iLightNum; iLight++) { CSectorLight Node; fread((CSectorLight *)&(Node),sizeof(CSectorLight),1,fp); if(ft != 0.0f) Node.m_vecPos.y += ft; pAddNode->m_lstLights.push_back(Node); } m_LightMap.Add(pAddNode); } } } fclose(fp); BugFix_Tree(); //BugFix_Hangul2English(); } void CMapStorage::DeleteLandscapeEffect(CSectorLandscapeEffectMap* pmap){ int del_map = 0; for(del_map = 0;del_map < m_LandscapeEffectMap.num;del_map++) { if(m_LandscapeEffectMap[del_map] == pmap) { m_LandscapeEffectMap.DelIndex(del_map); } } } void CMapStorage::AddLandscapeEffect(float fAddx, float fAddy, float fAddz,int nEffectMethod,DWORD dwBlend[2],float Param[50],int IntParam[20],char *strTextureName,char *eff) { /* */ int indexx=(int)(fAddx/SECTORSIZE); int indexy=(int)(fAddz/SECTORSIZE); bool new_sector = false; fAddy+=100.0f; for(int i=0;im_IndexX == indexx && m_LandscapeEffectMap[i]->m_IndexY == indexy ) { CSectorLandscapeEffectMap::LandscapeEffect AddEffectNode; AddEffectNode.m_vecCenterPos=vector3(fAddx,fAddy,fAddz); AddEffectNode.m_nEffectMethod=nEffectMethod; AddEffectNode.m_dwBlend[0]=dwBlend[0]; AddEffectNode.m_dwBlend[1]=dwBlend[1]; memcpy(AddEffectNode.m_Param,Param,sizeof(float)*50); memcpy(AddEffectNode.m_IntParam,IntParam,sizeof(int)*20); if(strTextureName != NULL) strncpy(AddEffectNode.m_Name,strTextureName,49); // strcpy(AddEffectNode.m_EffName,eff); m_LandscapeEffectMap[i]->m_LandscapeEffect.Add(AddEffectNode); new_sector = true; } } if(!new_sector) { CSectorLandscapeEffectMap *AddLandscapeEffect=new CSectorLandscapeEffectMap(); AddLandscapeEffect->m_IndexX=indexx; AddLandscapeEffect->m_IndexY=indexy; CSectorLandscapeEffectMap::LandscapeEffect AddEffectNode; AddEffectNode.m_vecCenterPos=vector3(fAddx,fAddy,fAddz); AddEffectNode.m_nEffectMethod=nEffectMethod; AddEffectNode.m_dwBlend[0]=dwBlend[0]; AddEffectNode.m_dwBlend[1]=dwBlend[1]; memcpy(AddEffectNode.m_Param,Param,sizeof(float)*50); memcpy(AddEffectNode.m_IntParam,IntParam,sizeof(int)*20); if(strTextureName != NULL) strncpy(AddEffectNode.m_Name,strTextureName,49); // strcpy(AddEffectNode.m_EffName,eff); AddLandscapeEffect->m_LandscapeEffect.Add(AddEffectNode); m_LandscapeEffectMap.Add(AddLandscapeEffect); } } CSectorLandscapeEffectMap* CMapStorage::FindLandscapeEffect(float fFindx, float fFindy) { int indexx=(int)(fFindx/SECTORSIZE); int indexy=(int)(fFindy/SECTORSIZE); for(int cStorage=0;cStoragem_IndexX==indexx && m_LandscapeEffectMap[cStorage]->m_IndexY==indexy) { return m_LandscapeEffectMap[cStorage]; } } return NULL; }