From: Laszlo T. <ave...@us...> - 2005-12-21 16:54:29
|
Update of /cvsroot/gemrb/gemrb/gemrb/plugins/AREImporter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5198/plugins/AREImporter Modified Files: AREImp.cpp Log Message: fixed several problems causing incorrect areas saved in the cache changed some char * to const char * to protect data Index: AREImp.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/AREImporter/AREImp.cpp,v retrieving revision 1.145 retrieving revision 1.146 diff -C2 -d -r1.145 -r1.146 *** AREImp.cpp 20 Dec 2005 08:25:44 -0000 1.145 --- AREImp.cpp 21 Dec 2005 16:53:52 -0000 1.146 *************** *** 249,253 **** str->ReadDword( map->SongHeader.SongList + i ); } ! str->Seek( RestHeader, GEM_STREAM_START ); for (i = 0; i < MAX_RESCOUNT; i++) { str->ReadDword( map->RestHeader.Strref + i ); --- 249,253 ---- str->ReadDword( map->SongHeader.SongList + i ); } ! str->Seek( RestHeader + 32, GEM_STREAM_START ); for (i = 0; i < MAX_RESCOUNT; i++) { str->ReadDword( map->RestHeader.Strref + i ); *************** *** 970,976 **** i = map->GetExploredMapSize(); if (ExploredBitmapSize==i) { ! map->ExploredBitmap = (ieByte *) malloc(ExploredBitmapSize); str->Seek( ExploredBitmapOffset, GEM_STREAM_START ); ! str->Read( map->ExploredBitmap, ExploredBitmapSize ); } else { --- 970,976 ---- i = map->GetExploredMapSize(); if (ExploredBitmapSize==i) { ! map->ExploredBitmap = (ieByte *) malloc(i); str->Seek( ExploredBitmapOffset, GEM_STREAM_START ); ! str->Read( map->ExploredBitmap, i ); } else { *************** *** 1113,1122 **** NoteCount = (ieDword) map->GetMapNoteCount(); headersize += NoteCount * (pst?0x214: 0x22); - RestHeader = headersize; - - headersize += 0xe4; SongHeader = headersize; headersize += 0x90; return headersize; } --- 1113,1122 ---- NoteCount = (ieDword) map->GetMapNoteCount(); headersize += NoteCount * (pst?0x214: 0x22); SongHeader = headersize; headersize += 0x90; + RestHeader = headersize; + + headersize += 0xe4; return headersize; } *************** *** 1435,1439 **** stream->Write( ip->GetScriptName(), 32); ! tmpWord = (ieWord) ip->Type; stream->WriteWord( &tmpWord); //outline bounding box --- 1435,1442 ---- stream->Write( ip->GetScriptName(), 32); ! //this is a hack, we abuse a coincidence ! //ST_PROXIMITY = 1, ST_TRIGGER = 2, ST_TRAVEL = 3 ! //translates to trap = 0, info = 1, travel = 2 ! tmpWord = ((ieWord) ip->Type) - 1; stream->WriteWord( &tmpWord); //outline bounding box *************** *** 1786,1790 **** memset(filling,0,sizeof(filling) ); for(i=0;i<MAX_RESCOUNT;i++) { ! stream->WriteDword( map->SongHeader.SongList); } //day --- 1789,1793 ---- memset(filling,0,sizeof(filling) ); for(i=0;i<MAX_RESCOUNT;i++) { ! stream->WriteDword( &map->SongHeader.SongList[i]); } //day *************** *** 1798,1803 **** //song flag stream->WriteDword( &tmpDword); ! //lots of empty crap ! for(i=0;i<23;i++) { stream->WriteDword( &tmpDword); } --- 1801,1806 ---- //song flag stream->WriteDword( &tmpDword); ! //lots of empty crap (15x4) ! for(i=0;i<15;i++) { stream->WriteDword( &tmpDword); } *************** *** 1811,1814 **** --- 1814,1820 ---- ieWord tmpWord = 0; + char filling[32]; + memset(filling,0,sizeof(filling) ); + stream->Write( filling, 32); //empty label for(i=0;i<MAX_RESCOUNT;i++) { stream->WriteDword( &map->RestHeader.Strref[i]); *************** *** 1916,1925 **** } ! ret = PutRestHeader( stream, map); if (ret) { return ret; } ! ret = PutSongHeader( stream, map); return ret; --- 1922,1931 ---- } ! ret = PutSongHeader( stream, map); if (ret) { return ret; } ! ret = PutRestHeader( stream, map); return ret; |