eclass_t *Eclass_ForName (char *name, qboolean has_brushes) { eclass_t *e; char init[1024]; #ifdef _DEBUG // grouping stuff, not an eclass if (strcmp(name, "group_info")==0) Sys_Printf("WARNING: unexpected group_info entity in Eclass_ForName\n"); #endif if (!name) return eclass_bad; for (e=eclass ; e ; e=e->next) if (!strcmp (name, e->name)) return e; // create a new class for it if (has_brushes) { sprintf (init, "/*QUAKED %s (0 0.5 0) ?\nNot found in source.\n", name); e = Eclass_InitFromText (init); } else { sprintf (init, "/*QUAKED %s (0 0.5 0) (-8 -8 -8) (8 8 8)\nNot found in source.\n", name); e = Eclass_InitFromText (init); } Eclass_InsertAlphabetized (e); return e; }
eclass_t *Eclass_ForName (char *name, qboolean has_brushes) { eclass_t *e; char init[1024]; if (!name) return eclass_bad; for (e=eclass ; e ; e=e->next) if (!strcmp (name, e->name)) return e; // create a new class for it if (has_brushes) { sprintf (init, "/*QUAKED %s (0 0.5 0) ?\nNot found in source.\n", name); e = Eclass_InitFromText (init); } else { sprintf (init, "/*QUAKED %s (0 0.5 0) (-8 -8 -8) (8 8 8)\nNot found in source.\n", name); e = Eclass_InitFromText (init); } Eclass_InsertAlphabetized (e); return e; }
void Eclass_InitForSourceDirectory (char *path) { struct _finddata_t fileinfo; int handle; char filename[1024]; char filebase[1024]; char temp[1024]; char *s; QE_ConvertDOSToUnixName( temp, path ); Sys_Printf ("Eclass_InitForSourceDirectory: %s\n", temp ); strcpy (filebase, path); s = filebase + strlen(filebase)-1; while (*s != '\\' && *s != '/' && s!=filebase) s--; *s = 0; eclass = NULL; handle = _findfirst (path, &fileinfo); if (handle != -1) { do { sprintf (filename, "%s\\%s", filebase, fileinfo.name); Eclass_ScanFile (filename); } while (_findnext( handle, &fileinfo ) != -1); _findclose (handle); } eclass_bad = Eclass_InitFromText ("/*QUAKED UNKNOWN_CLASS (0 0.5 0) ?"); }
/* ================= Eclass_ScanFile ================= */ void Eclass_ScanFile (char *filename) { int size; char *data; eclass_t *e; int i; char temp[1024]; QE_ConvertDOSToUnixName( temp, filename ); Sys_Printf ("ScanFile: %s\n", temp); size = LoadFile (filename, (void *)&data); for (i=0 ; i<size ; i++) if (!strncmp(data+i, "/*QUAKED",8)) { e = Eclass_InitFromText (data+i); if (e) Eclass_InsertAlphabetized (e); else printf ("Error parsing: %s in %s\n",debugname, filename); } free (data); }
void Eclass_InitForSourceDirectory (char *path) { struct _finddata_t fileinfo; int handle; char filename[1024]; char filebase[1024]; char temp[1024]; char *s; QE_ConvertDOSToUnixName( temp, path ); Sys_Printf ("Eclass_InitForSourceDirectory: %s\n", temp ); strcpy (filebase, path); s = filebase + strlen(filebase)-1; while (*s != '\\' && *s != '/' && s!=filebase) s--; *s = 0; CleanUpEntities(); eclass = NULL; //#ifdef BUILD_LIST if (g_bBuildList) strDefFile = ""; //#endif handle = _findfirst (path, &fileinfo); if (handle != -1) { do { sprintf (filename, "%s\\%s", filebase, fileinfo.name); Eclass_ScanFile (filename); } while (_findnext( handle, &fileinfo ) != -1); _findclose (handle); } //#ifdef BUILD_LIST if (g_bBuildList) { CFile file; if (file.Open("c:\\entities.def", CFile::modeCreate | CFile::modeWrite)) { file.Write(strDefFile.GetBuffer(0), strDefFile.GetLength()); file.Close(); } } //#endif eclass_bad = Eclass_InitFromText ("/*QUAKED UNKNOWN_CLASS (0 0.5 0) ?"); }
//#endif void Eclass_ScanFile (char *filename) { int size; char *data; eclass_t *e; int i; char temp[1024]; QE_ConvertDOSToUnixName( temp, filename ); Sys_Printf ("ScanFile: %s\n", temp); // BUG size = LoadFile (filename, (void**)&data); eclass_found = false; for (i=0 ; i<size ; i++) if (!strncmp(data+i, "/*QUAKED",8)) { //#ifdef BUILD_LIST if (g_bBuildList) { CString strDef = ""; int j = i; while (1) { strDef += *(data+j); if (*(data+j) == '/' && *(data+j-1) == '*') break; j++; } strDef += "\r\n\r\n\r\n"; strDefFile += strDef; } //#endif e = Eclass_InitFromText (data+i); if (e) Eclass_InsertAlphabetized (e); else printf ("Error parsing: %s in %s\n",debugname, filename); // single ? eclass_e = e; eclass_found = true; if ( parsing_single ) break; } free (data); }