mirror of
https://github.com/ioquake/ioq3.git
synced 2025-06-02 01:42:12 +00:00
newlines fixed
This commit is contained in:
parent
7830940da6
commit
59cce31e75
1121 changed files with 717537 additions and 717537 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue