From 6bf20c78f5b69d40bcc4931df93d29198435ab67 Mon Sep 17 00:00:00 2001 From: zakk Date: Fri, 26 Aug 2005 17:39:27 +0000 Subject: newlines fixed git-svn-id: svn://svn.icculus.org/quake3/trunk@6 edf5b092-35ff-0310-97b2-ce42778d08ea --- code/bspc/l_utils.c | 518 ++++++++++++++++++++++++++-------------------------- 1 file changed, 259 insertions(+), 259 deletions(-) (limited to 'code/bspc/l_utils.c') 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 -- cgit v1.2.3