123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- #pragma warning(disable:4267) // 'size_t' to 'unsigned int', possible loss of data
- #include "csg.h"
- #ifdef HAVE_UNISTD_E
- #include <unistd.h>
- #endif
- void LoadWadincludeFile(const char* const filename)
- {
- char* fname;
- int i, x;
- char* pData = NULL;
- char* pszData;
- unsigned len = strlen(filename) + 5;
- fname = (char*)Alloc(len);
- safe_snprintf(fname, len, "%s.wic", filename);
- if (q_exists(fname))
- {
- i = LoadFile(fname, &pData);
- if (i == 0)
- {
- goto LoadWadincludeFileReturn;
- }
- }
- else
- {
- Warning("WadInclude file %s does not exist", fname);
- goto LoadWadincludeFileReturn;
- }
- for (pszData = pData, x = 0; x < i; x++)
- {
- if (pData[x] == ';')
- {
- pData[x] = 0;
- g_WadInclude.push_back(pszData);
- pszData = pData + x + 1;
- }
- }
- LoadWadincludeFileReturn:;
- Free(fname);
- if (pData)
- {
- Free(pData);
- }
- }
- void SaveWadincludeFile(const char* const filename)
- {
- char* fname;
- FILE* file;
- int x;
- unsigned len = strlen(filename) + 5;
- fname = (char*)Alloc(len);
- safe_snprintf(fname, len, "%s.wic", filename);
- _unlink(fname);
- file = SafeOpenWrite(fname);
- WadInclude_i it;
- for (it = g_WadInclude.begin(); it != g_WadInclude.end(); it++)
- {
- x = it->size();
- if (x)
- {
- SafeWrite(file, it->c_str(), x);
- SafeWrite(file, ";", 1);
- }
- }
- Free(fname);
- fclose(file);
- }
- // this function is called in place of tex_initfromwad for onlyents compiles
- void HandleWadinclude()
- {
- int i;
- char szTmpWad[1024]; // arbitrary, but needs to be large.
- char* pszWadFile;
- wadpath_t* currentwad;
- Log("\n\nChecking Wadfiles:\n\n"); //SILENCER //Indentation and blank lines make it much easier to view
- szTmpWad[0] = 0;
- #ifdef HLCSG_AUTOWAD
- if (g_bWadAutoDetect)
- {
- autowad_UpdateUsedWads();
- }
- #endif
- // for eachwadpath
- for (i = 0; i < g_iNumWadPaths; i++)
- {
- bool bExcludeThisWad = false;
- currentwad = g_pWadPaths[i];
- pszWadFile = currentwad->path;
-
- #ifdef HLCSG_AUTOWAD/*
- #ifdef _DEBUG
- Log("[dbg] HandleWIC: attempting to parse wad '%s'\n", currentwad->path);
- #endif*/
- if (g_bWadAutoDetect && !currentwad->usedtextures)
- continue;/*
- #ifdef _DEBUG
- Log("[dbg] HandleWIC: parsing wad\n");
- #endif*/
- #endif // HLCSG_AUTOWAD
- // look and see if we're supposed to include the textures from this WAD in the bsp.
- WadInclude_i it;
- for (it = g_WadInclude.begin(); it != g_WadInclude.end(); it++)
- {
- if (stristr(pszWadFile, it->c_str()))
- {
- Log(" Including Wadfile: %s:\n", pszWadFile); //SILENCER //Indentation and blank lines make it much easier to view
- bExcludeThisWad = true; // wadincluding this one
- }
- }
- if (!bExcludeThisWad)
- {
- Log(" Using Wadfile: %s:\n", pszWadFile); //SILENCER //Indentation and blank lines make it much easier to view
- safe_snprintf(szTmpWad, 1024, "%s%s;", szTmpWad, pszWadFile);
- }
- }
- Log("\"wad\" is \"%s\"\n", szTmpWad);
- SetKeyValue(&g_entities[0], "wad", szTmpWad);
- Log("\n");
- CheckFatal();
- }
- #if 0
- void HandleWadinclude()
- {
- // Code somewhat copied from TEX_InitFromWad()
- char szTmpPath[MAXTOKEN];
- char szNewWad[MAXTOKEN];
- char* pszWadFile;
- bool bExcludeThisWad;
- const char* path = ValueForKey(&g_entities[0], "wad");
-
- szNewWad[0] = 0;
- safe_strncpy(szTmpPath, path, MAXTOKEN);
- // temporary kludge so we don't have to deal with no occurances of a semicolon
- // in the path name ..
- if (strchr(szTmpPath, ';') == NULL)
- {
- safe_strncat(szTmpPath, ";", MAXTOKEN);
- }
- pszWadFile = strtok(szTmpPath, ";");
- while (pszWadFile)
- {
- bExcludeThisWad = false;
- // look and see if we're supposed to include the textures from this WAD in the bsp.
- WadInclude_i it;
- for (it = g_WadInclude.begin(); it != g_WadInclude.end(); it++)
- {
- if (stristr(pszWadFile, it->c_str()))
- {
- Log("Embedding textures from WAD File [%s] into BSP\n", pszWadFile);
- bExcludeThisWad = true;
- }
- }
- if (!bExcludeThisWad)
- {
- safe_strncat(szNewWad, pszWadFile, MAXTOKEN);
- safe_strncat(szNewWad, ";", MAXTOKEN);
- }
- if (!bExcludeThisWad)
- {
- Log("Using WAD File: %s\n", pszWadFile);
- }
- // next wad file
- pszWadFile = strtok(NULL, ";");
- }
- SetKeyValue(&g_entities[0], "wad", szNewWad);
- }
- #endif
|