diff options
author | zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-08-26 17:39:27 +0000 |
---|---|---|
committer | zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-08-26 17:39:27 +0000 |
commit | 6bf20c78f5b69d40bcc4931df93d29198435ab67 (patch) | |
tree | e3eda937a05d7db42de725b7013bd0344b987f34 /code/bspc/l_utils.c | |
parent | 872d4d7f55af706737ffb361bb76ad13e7496770 (diff) | |
download | ioquake3-aero-6bf20c78f5b69d40bcc4931df93d29198435ab67.tar.gz ioquake3-aero-6bf20c78f5b69d40bcc4931df93d29198435ab67.zip |
newlines fixed
git-svn-id: svn://svn.icculus.org/quake3/trunk@6 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/bspc/l_utils.c')
-rwxr-xr-x | code/bspc/l_utils.c | 518 |
1 files changed, 259 insertions, 259 deletions
diff --git a/code/bspc/l_utils.c b/code/bspc/l_utils.c index f9d6d5f..8b229aa 100755 --- a/code/bspc/l_utils.c +++ b/code/bspc/l_utils.c @@ -1,259 +1,259 @@ -/*
-===========================================================================
-Copyright (C) 1999-2005 Id Software, Inc.
-
-This file is part of Quake III Arena source code.
-
-Quake III Arena source code is free software; you can redistribute it
-and/or modify it under the terms of the GNU General Public License as
-published by the Free Software Foundation; either version 2 of the License,
-or (at your option) any later version.
-
-Quake III Arena source code 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 Foobar; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-===========================================================================
-*/
-
-//#ifndef BOTLIB
-//#define BOTLIB
-//#endif //BOTLIB
-
-#ifdef BOTLIB
-#include "q_shared.h"
-#include "qfiles.h"
-#include "botlib.h"
-#include "l_log.h"
-#include "l_libvar.h"
-#include "l_memory.h"
-//#include "l_utils.h"
-#include "be_interface.h"
-#else //BOTLIB
-#include "qbsp.h"
-#include "l_mem.h"
-#endif //BOTLIB
-
-#ifdef BOTLIB
-//========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//========================================================================
-void Vector2Angles(vec3_t value1, vec3_t angles)
-{
- float forward;
- float yaw, pitch;
-
- if (value1[1] == 0 && value1[0] == 0)
- {
- yaw = 0;
- if (value1[2] > 0) pitch = 90;
- else pitch = 270;
- } //end if
- else
- {
- yaw = (int) (atan2(value1[1], value1[0]) * 180 / M_PI);
- if (yaw < 0) yaw += 360;
-
- forward = sqrt (value1[0]*value1[0] + value1[1]*value1[1]);
- pitch = (int) (atan2(value1[2], forward) * 180 / M_PI);
- if (pitch < 0) pitch += 360;
- } //end else
-
- angles[PITCH] = -pitch;
- angles[YAW] = yaw;
- angles[ROLL] = 0;
-} //end of the function Vector2Angles
-#endif //BOTLIB
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void ConvertPath(char *path)
-{
- while(*path)
- {
- if (*path == '/' || *path == '\\') *path = PATHSEPERATOR_CHAR;
- path++;
- } //end while
-} //end of the function ConvertPath
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void AppendPathSeperator(char *path, int length)
-{
- int pathlen = strlen(path);
-
- if (strlen(path) && length-pathlen > 1 && path[pathlen-1] != '/' && path[pathlen-1] != '\\')
- {
- path[pathlen] = PATHSEPERATOR_CHAR;
- path[pathlen+1] = '\0';
- } //end if
-} //end of the function AppenPathSeperator
-
-#if 0
-//===========================================================================
-// returns pointer to file handle
-// sets offset to and length of 'filename' in the pak file
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-qboolean FindFileInPak(char *pakfile, char *filename, foundfile_t *file)
-{
- FILE *fp;
- dpackheader_t packheader;
- dpackfile_t *packfiles;
- int numdirs, i;
- char path[MAX_PATH];
-
- //open the pak file
- fp = fopen(pakfile, "rb");
- if (!fp)
- {
- return false;
- } //end if
- //read pak header, check for valid pak id and seek to the dir entries
- if ((fread(&packheader, 1, sizeof(dpackheader_t), fp) != sizeof(dpackheader_t))
- || (packheader.ident != IDPAKHEADER)
- || (fseek(fp, LittleLong(packheader.dirofs), SEEK_SET))
- )
- {
- fclose(fp);
- return false;
- } //end if
- //number of dir entries in the pak file
- numdirs = LittleLong(packheader.dirlen) / sizeof(dpackfile_t);
- packfiles = (dpackfile_t *) GetMemory(numdirs * sizeof(dpackfile_t));
- //read the dir entry
- if (fread(packfiles, sizeof(dpackfile_t), numdirs, fp) != numdirs)
- {
- fclose(fp);
- FreeMemory(packfiles);
- return false;
- } //end if
- fclose(fp);
- //
- strcpy(path, filename);
- ConvertPath(path);
- //find the dir entry in the pak file
- for (i = 0; i < numdirs; i++)
- {
- //convert the dir entry name
- ConvertPath(packfiles[i].name);
- //compare the dir entry name with the filename
- if (Q_strcasecmp(packfiles[i].name, path) == 0)
- {
- strcpy(file->filename, pakfile);
- file->offset = LittleLong(packfiles[i].filepos);
- file->length = LittleLong(packfiles[i].filelen);
- FreeMemory(packfiles);
- return true;
- } //end if
- } //end for
- FreeMemory(packfiles);
- return false;
-} //end of the function FindFileInPak
-//===========================================================================
-// find a Quake2 file
-// returns full path in 'filename'
-// sets offset and length of the file
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-qboolean FindQuakeFile2(char *basedir, char *gamedir, char *filename, foundfile_t *file)
-{
- int dir, i;
- //NOTE: 3 is necessary (LCC bug???)
- char gamedirs[3][MAX_PATH] = {"","",""};
- char filedir[MAX_PATH] = "";
-
- //
- if (gamedir) strncpy(gamedirs[0], gamedir, MAX_PATH);
- strncpy(gamedirs[1], "baseq2", MAX_PATH);
- //
- //find the file in the two game directories
- for (dir = 0; dir < 2; dir++)
- {
- //check if the file is in a directory
- filedir[0] = 0;
- if (basedir && strlen(basedir))
- {
- strncpy(filedir, basedir, MAX_PATH);
- AppendPathSeperator(filedir, MAX_PATH);
- } //end if
- if (strlen(gamedirs[dir]))
- {
- strncat(filedir, gamedirs[dir], MAX_PATH - strlen(filedir));
- AppendPathSeperator(filedir, MAX_PATH);
- } //end if
- strncat(filedir, filename, MAX_PATH - strlen(filedir));
- ConvertPath(filedir);
- Log_Write("accessing %s", filedir);
- if (!access(filedir, 0x04))
- {
- strcpy(file->filename, filedir);
- file->length = 0;
- file->offset = 0;
- return true;
- } //end if
- //check if the file is in a pak?.pak
- for (i = 0; i < 10; i++)
- {
- filedir[0] = 0;
- if (basedir && strlen(basedir))
- {
- strncpy(filedir, basedir, MAX_PATH);
- AppendPathSeperator(filedir, MAX_PATH);
- } //end if
- if (strlen(gamedirs[dir]))
- {
- strncat(filedir, gamedirs[dir], MAX_PATH - strlen(filedir));
- AppendPathSeperator(filedir, MAX_PATH);
- } //end if
- sprintf(&filedir[strlen(filedir)], "pak%d.pak\0", i);
- if (!access(filedir, 0x04))
- {
- Log_Write("searching %s in %s", filename, filedir);
- if (FindFileInPak(filedir, filename, file)) return true;
- } //end if
- } //end for
- } //end for
- file->offset = 0;
- file->length = 0;
- return false;
-} //end of the function FindQuakeFile2
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-#ifdef BOTLIB
-qboolean FindQuakeFile(char *filename, foundfile_t *file)
-{
- return FindQuakeFile2(LibVarGetString("basedir"),
- LibVarGetString("gamedir"), filename, file);
-} //end of the function FindQuakeFile
-#else //BOTLIB
-qboolean FindQuakeFile(char *basedir, char *gamedir, char *filename, foundfile_t *file)
-{
- return FindQuakeFile2(basedir, gamedir, filename, file);
-} //end of the function FindQuakeFile
-#endif //BOTLIB
-
-#endif
+/* +=========================================================================== +Copyright (C) 1999-2005 Id Software, Inc. + +This file is part of Quake III Arena source code. + +Quake III Arena source code is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +Quake III Arena source code 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 Foobar; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ + +//#ifndef BOTLIB +//#define BOTLIB +//#endif //BOTLIB + +#ifdef BOTLIB +#include "q_shared.h" +#include "qfiles.h" +#include "botlib.h" +#include "l_log.h" +#include "l_libvar.h" +#include "l_memory.h" +//#include "l_utils.h" +#include "be_interface.h" +#else //BOTLIB +#include "qbsp.h" +#include "l_mem.h" +#endif //BOTLIB + +#ifdef BOTLIB +//======================================================================== +// +// Parameter: - +// Returns: - +// Changes Globals: - +//======================================================================== +void Vector2Angles(vec3_t value1, vec3_t angles) +{ + float forward; + float yaw, pitch; + + if (value1[1] == 0 && value1[0] == 0) + { + yaw = 0; + if (value1[2] > 0) pitch = 90; + else pitch = 270; + } //end if + else + { + yaw = (int) (atan2(value1[1], value1[0]) * 180 / M_PI); + if (yaw < 0) yaw += 360; + + forward = sqrt (value1[0]*value1[0] + value1[1]*value1[1]); + pitch = (int) (atan2(value1[2], forward) * 180 / M_PI); + if (pitch < 0) pitch += 360; + } //end else + + angles[PITCH] = -pitch; + angles[YAW] = yaw; + angles[ROLL] = 0; +} //end of the function Vector2Angles +#endif //BOTLIB +//=========================================================================== +// +// Parameter: - +// Returns: - +// Changes Globals: - +//=========================================================================== +void ConvertPath(char *path) +{ + while(*path) + { + if (*path == '/' || *path == '\\') *path = PATHSEPERATOR_CHAR; + path++; + } //end while +} //end of the function ConvertPath +//=========================================================================== +// +// Parameter: - +// Returns: - +// Changes Globals: - +//=========================================================================== +void AppendPathSeperator(char *path, int length) +{ + int pathlen = strlen(path); + + if (strlen(path) && length-pathlen > 1 && path[pathlen-1] != '/' && path[pathlen-1] != '\\') + { + path[pathlen] = PATHSEPERATOR_CHAR; + path[pathlen+1] = '\0'; + } //end if +} //end of the function AppenPathSeperator + +#if 0 +//=========================================================================== +// returns pointer to file handle +// sets offset to and length of 'filename' in the pak file +// +// Parameter: - +// Returns: - +// Changes Globals: - +//=========================================================================== +qboolean FindFileInPak(char *pakfile, char *filename, foundfile_t *file) +{ + FILE *fp; + dpackheader_t packheader; + dpackfile_t *packfiles; + int numdirs, i; + char path[MAX_PATH]; + + //open the pak file + fp = fopen(pakfile, "rb"); + if (!fp) + { + return false; + } //end if + //read pak header, check for valid pak id and seek to the dir entries + if ((fread(&packheader, 1, sizeof(dpackheader_t), fp) != sizeof(dpackheader_t)) + || (packheader.ident != IDPAKHEADER) + || (fseek(fp, LittleLong(packheader.dirofs), SEEK_SET)) + ) + { + fclose(fp); + return false; + } //end if + //number of dir entries in the pak file + numdirs = LittleLong(packheader.dirlen) / sizeof(dpackfile_t); + packfiles = (dpackfile_t *) GetMemory(numdirs * sizeof(dpackfile_t)); + //read the dir entry + if (fread(packfiles, sizeof(dpackfile_t), numdirs, fp) != numdirs) + { + fclose(fp); + FreeMemory(packfiles); + return false; + } //end if + fclose(fp); + // + strcpy(path, filename); + ConvertPath(path); + //find the dir entry in the pak file + for (i = 0; i < numdirs; i++) + { + //convert the dir entry name + ConvertPath(packfiles[i].name); + //compare the dir entry name with the filename + if (Q_strcasecmp(packfiles[i].name, path) == 0) + { + strcpy(file->filename, pakfile); + file->offset = LittleLong(packfiles[i].filepos); + file->length = LittleLong(packfiles[i].filelen); + FreeMemory(packfiles); + return true; + } //end if + } //end for + FreeMemory(packfiles); + return false; +} //end of the function FindFileInPak +//=========================================================================== +// find a Quake2 file +// returns full path in 'filename' +// sets offset and length of the file +// +// Parameter: - +// Returns: - +// Changes Globals: - +//=========================================================================== +qboolean FindQuakeFile2(char *basedir, char *gamedir, char *filename, foundfile_t *file) +{ + int dir, i; + //NOTE: 3 is necessary (LCC bug???) + char gamedirs[3][MAX_PATH] = {"","",""}; + char filedir[MAX_PATH] = ""; + + // + if (gamedir) strncpy(gamedirs[0], gamedir, MAX_PATH); + strncpy(gamedirs[1], "baseq2", MAX_PATH); + // + //find the file in the two game directories + for (dir = 0; dir < 2; dir++) + { + //check if the file is in a directory + filedir[0] = 0; + if (basedir && strlen(basedir)) + { + strncpy(filedir, basedir, MAX_PATH); + AppendPathSeperator(filedir, MAX_PATH); + } //end if + if (strlen(gamedirs[dir])) + { + strncat(filedir, gamedirs[dir], MAX_PATH - strlen(filedir)); + AppendPathSeperator(filedir, MAX_PATH); + } //end if + strncat(filedir, filename, MAX_PATH - strlen(filedir)); + ConvertPath(filedir); + Log_Write("accessing %s", filedir); + if (!access(filedir, 0x04)) + { + strcpy(file->filename, filedir); + file->length = 0; + file->offset = 0; + return true; + } //end if + //check if the file is in a pak?.pak + for (i = 0; i < 10; i++) + { + filedir[0] = 0; + if (basedir && strlen(basedir)) + { + strncpy(filedir, basedir, MAX_PATH); + AppendPathSeperator(filedir, MAX_PATH); + } //end if + if (strlen(gamedirs[dir])) + { + strncat(filedir, gamedirs[dir], MAX_PATH - strlen(filedir)); + AppendPathSeperator(filedir, MAX_PATH); + } //end if + sprintf(&filedir[strlen(filedir)], "pak%d.pak\0", i); + if (!access(filedir, 0x04)) + { + Log_Write("searching %s in %s", filename, filedir); + if (FindFileInPak(filedir, filename, file)) return true; + } //end if + } //end for + } //end for + file->offset = 0; + file->length = 0; + return false; +} //end of the function FindQuakeFile2 +//=========================================================================== +// +// Parameter: - +// Returns: - +// Changes Globals: - +//=========================================================================== +#ifdef BOTLIB +qboolean FindQuakeFile(char *filename, foundfile_t *file) +{ + return FindQuakeFile2(LibVarGetString("basedir"), + LibVarGetString("gamedir"), filename, file); +} //end of the function FindQuakeFile +#else //BOTLIB +qboolean FindQuakeFile(char *basedir, char *gamedir, char *filename, foundfile_t *file) +{ + return FindQuakeFile2(basedir, gamedir, filename, file); +} //end of the function FindQuakeFile +#endif //BOTLIB + +#endif |