From: Laszlo T. <ave...@us...> - 2005-01-27 17:28:17
|
Update of /cvsroot/gemrb/gemrb/gemrb/plugins/CREImporter In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv526/plugins/CREImporter Modified Files: CREImp.cpp CREImpCD.cpp Log Message: Load randcolr.2da into memory in creature importer Cache.h is now Win32 compatible Index: CREImp.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/CREImporter/CREImp.cpp,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** CREImp.cpp 22 Jan 2005 20:28:48 -0000 1.55 --- CREImp.cpp 27 Jan 2005 17:27:28 -0000 1.56 *************** *** 9,18 **** * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of ! * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software ! * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Header$ --- 9,18 ---- * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of ! * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software ! * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Header$ *************** *** 25,30 **** #include "../../includes/ie_stats.h" ! static int RandColor; ! static TableMgr *rndcol=NULL; CREImp::CREImp(void) --- 25,44 ---- #include "../../includes/ie_stats.h" ! #define MAXCOLOR 12 ! typedef unsigned char ColorSet[MAXCOLOR]; ! static int RandColor=-1; ! static int RandRows; ! static ColorSet* randcolors=NULL; ! ! //static int RandColor; ! //static TableMgr *rndcol=NULL; ! ! void ReleaseMemory() ! { ! if(randcolors) { ! delete [] randcolors; ! randcolors = NULL; ! } ! } CREImp::CREImp(void) *************** *** 146,160 **** void CREImp::SetupColor(ieDword &stat) { ! if(!RandColor) { ! RandColor = core->LoadTable( "RANDCOLR" ); ! rndcol = core->GetTable( RandColor ); } ! if (stat >= 200) { ! if(rndcol) { ! stat = atoi( rndcol->QueryField( ( rand() % 10 ) + 1, stat - 200 ) ); } ! else { ! stat -= 200; } } --- 160,202 ---- void CREImp::SetupColor(ieDword &stat) { ! if (RandColor==-1) { ! int table = core->LoadTable( "RANDCOLR" ); ! TableMgr *rndcol = core->GetTable( table ); ! RandColor=rndcol->GetColumnCount(); ! RandRows=rndcol->GetRowCount(); ! if (RandRows>MAXCOLOR) RandRows=MAXCOLOR; ! if (RandRows>1 && RandColor>0) { ! randcolors = new ColorSet[RandColor]; ! int cols = RandColor; ! while(cols--) ! { ! for (int i=0;i<RandRows;i++) { ! randcolors[cols][i]=atoi( rndcol->QueryField( i, cols ) ); ! } ! randcolors[cols][0]-=200; ! } ! } ! else { ! RandColor=0; ! } ! core->DelTable( table ); } ! if (stat<200) return; ! if (RandColor>0) { ! stat-=200; ! //assuming an ordered list, so looking in the middle first ! int i; ! for (i=(int) stat;i>=0;i--) { ! if (randcolors[i][0]==stat) { ! stat=randcolors[i][ rand()%RandRows + 1]; ! return; ! } } ! for(i=(int) stat+1;i<RandColor;i++) { ! if (randcolors[i][0]==stat) { ! stat=randcolors[i][ rand()%RandRows + 1]; ! return; ! } } } Index: CREImpCD.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/CREImporter/CREImpCD.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CREImpCD.cpp 24 Feb 2004 22:20:42 -0000 1.3 --- CREImpCD.cpp 27 Jan 2005 17:27:28 -0000 1.4 *************** *** 27,32 **** --- 27,35 ---- } + extern void ReleaseMemory(); + CREImpCD::~CREImpCD(void) { + ReleaseMemory(); } |