19 Aug 2007
This commit is contained in:
parent
162d36aa30
commit
cd06165425
|
@ -4,43 +4,24 @@
|
|||
Заменить все нелогичные Com_Error\Sys_Error на варнинги
|
||||
|
||||
render.dll
|
||||
1. убрать все типы float, кроме ABGR128 OK
|
||||
2. Избавиться от pcx совсем
|
||||
3. упорядочить типы загрузки ОК
|
||||
4. избавиться от LightImageScale
|
||||
5. переименовать в renderer.dll
|
||||
1. Избавиться от pcx совсем
|
||||
2. избавиться от LightImageScale
|
||||
|
||||
engine.dll
|
||||
1. избавиться от Com_Sprintf OK
|
||||
2. убить все ссылки на .md2(заменить на mdl)
|
||||
3. подгрузка дллок из base\game директории OK
|
||||
4. переписать парсинг scripts\maps.txt
|
||||
5. убить поддержку cd
|
||||
|
||||
launcher.dll
|
||||
1. перенести лог в лаунчер OK
|
||||
1. убить все ссылки на .md2(заменить на mdl)
|
||||
2. переписать парсинг scripts\maps.txt
|
||||
|
||||
platform.dll
|
||||
1. Запись файлов должна идти в game директорию ОК
|
||||
2. Сделать валидатор game-директорий ОК
|
||||
3. Переписать валидатор-финдер game directory ОК
|
||||
4. Переписать SC_ParseToken
|
||||
5. Не работает MsgDev OK
|
||||
6. научить GetToken распознaвать \r
|
||||
1. сделать парсинг "ambient" из карты
|
||||
2. сделать новый contents для Null
|
||||
3. научить rad суммировать цвета в dxt
|
||||
|
||||
{
|
||||
studiomdl - апгрейд до версии 0.2
|
||||
1. Окончательно настроить все лимиты
|
||||
|
||||
bsplib
|
||||
1. сделать парсинг "ambient" из карты
|
||||
2. сделать новый contents для Null
|
||||
3. научить rad суммировать цвета в dxt
|
||||
}
|
||||
|
||||
//==================================================
|
||||
// то, что уже готово
|
||||
//==================================================
|
||||
+исправлены баги со studiomdl
|
||||
+убраны лишние пункты в меню
|
||||
+исправлен баг с вылетом рендерера
|
||||
+пофикшен баг с автоматическим рассчетом хулла для первой энтити на карте
|
||||
+существенное уменьшение размера сейвов
|
||||
|
|
|
@ -20,7 +20,7 @@ if errorlevel 1 set BUILD_ERROR=1
|
|||
%MSDEV% platform/platform.dsp %CONFIG%"platform - Win32 Debug" %build_target%
|
||||
if errorlevel 1 set BUILD_ERROR=1
|
||||
|
||||
%MSDEV% render/render.dsp %CONFIG%"render - Win32 Debug" %build_target%
|
||||
%MSDEV% renderer/renderer.dsp %CONFIG%"renderer - Win32 Debug" %build_target%
|
||||
if errorlevel 1 set BUILD_ERROR=1
|
||||
|
||||
%MSDEV% server/server.dsp %CONFIG%"server - Win32 Debug" %build_target%
|
||||
|
@ -48,7 +48,7 @@ rem //delete log files
|
|||
if exist engine\engine.plg del /f /q engine\engine.plg
|
||||
if exist launcher\launcher.plg del /f /q launcher\launcher.plg
|
||||
if exist platform\platform.plg del /f /q platform\platform.plg
|
||||
if exist render\render.plg del /f /q render\render.plg
|
||||
if exist renderer\renderer.plg del /f /q renderer\renderer.plg
|
||||
if exist server\server.plg del /f /q server\server.plg
|
||||
|
||||
echo Build succeeded!
|
||||
|
|
|
@ -3,36 +3,9 @@
|
|||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: editor - Win32 Debug--------------------
|
||||
--------------------Configuration: editor - Win32 Release--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\Temp\RSP1739.tmp" with contents
|
||||
[
|
||||
/nologo /MTd /W3 /Gm /Gi /GX /ZI /Od /I "../public" /I "../platform/formats" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\editor\!debug/" /Fo"..\temp\editor\!debug/" /Fd"..\temp\editor\!debug/" /FD /GZ /c
|
||||
"D:\XASH3D\src_main\!source\editor\guiforms.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\Temp\RSP1739.tmp"
|
||||
Creating temporary file "C:\Temp\RSP173A.tmp" with contents
|
||||
[
|
||||
kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib /nologo /dll /incremental:yes /pdb:"..\temp\editor\!debug/editor.pdb" /debug /machine:I386 /out:"..\temp\editor\!debug/editor.dll" /implib:"..\temp\editor\!debug/editor.lib" /pdbtype:sept
|
||||
"\XASH3D\src_main\!source\temp\editor\!debug\editor.obj"
|
||||
"\XASH3D\src_main\!source\temp\editor\!debug\guiutils.obj"
|
||||
"\XASH3D\src_main\!source\temp\editor\!debug\guiforms.obj"
|
||||
"\XASH3D\src_main\!source\temp\editor\!debug\editor.res"
|
||||
]
|
||||
Creating command line "link.exe @C:\Temp\RSP173A.tmp"
|
||||
Creating temporary file "C:\Temp\RSP173B.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \XASH3D\src_main\!source\temp\editor\!debug\editor.dll "D:\Xash3D\bin\editor.dll"
|
||||
]
|
||||
Creating command line "C:\Temp\RSP173B.bat"
|
||||
Compiling...
|
||||
guiforms.c
|
||||
Linking...
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \XASH3D\src_main\!source\temp\editor\!debug\editor.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -24,10 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
extern struct model_s *cl_mod_powerscreen;
|
||||
|
||||
//PGM
|
||||
int vidref_val;
|
||||
//PGM
|
||||
|
||||
/*
|
||||
=========================================================================
|
||||
|
||||
|
@ -1203,12 +1199,8 @@ void CL_AddPacketEntities (frame_t *frame)
|
|||
float intensity;
|
||||
|
||||
intensity = 50 + (500 * (sin(cl.time/500.0) + 1.0));
|
||||
// FIXME - check out this effect in rendition
|
||||
if(vidref_val == VIDREF_GL)
|
||||
V_AddLight (ent.origin, intensity, -1.0, -1.0, -1.0);
|
||||
else
|
||||
V_AddLight (ent.origin, -1.0 * intensity, 1.0, 1.0, 1.0);
|
||||
}
|
||||
V_AddLight (ent.origin, intensity, -1.0, -1.0, -1.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
CL_Tracker_Shell (cent->lerp_origin);
|
||||
|
@ -1218,14 +1210,8 @@ void CL_AddPacketEntities (frame_t *frame)
|
|||
else if (effects & EF_TRACKER)
|
||||
{
|
||||
CL_TrackerTrail (cent->lerp_origin, ent.origin, 0);
|
||||
// FIXME - check out this effect in rendition
|
||||
if(vidref_val == VIDREF_GL)
|
||||
V_AddLight (ent.origin, 200, -1, -1, -1);
|
||||
else
|
||||
V_AddLight (ent.origin, -200, 1, 1, 1);
|
||||
V_AddLight (ent.origin, 200, -1, -1, -1);
|
||||
}
|
||||
//ROGUE
|
||||
//======
|
||||
// RAFAEL
|
||||
else if (effects & EF_GREENGIB)
|
||||
{
|
||||
|
|
|
@ -816,39 +816,11 @@ void CL_AddDLights (void)
|
|||
|
||||
dl = cl_dlights;
|
||||
|
||||
//=====
|
||||
//PGM
|
||||
if(vidref_val == VIDREF_GL)
|
||||
for (i = 0; i < MAX_DLIGHTS; i++, dl++)
|
||||
{
|
||||
for (i=0 ; i<MAX_DLIGHTS ; i++, dl++)
|
||||
{
|
||||
if (!dl->radius)
|
||||
continue;
|
||||
V_AddLight (dl->origin, dl->radius,
|
||||
dl->color[0], dl->color[1], dl->color[2]);
|
||||
}
|
||||
if (!dl->radius) continue;
|
||||
V_AddLight (dl->origin, dl->radius, dl->color[0], dl->color[1], dl->color[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i=0 ; i<MAX_DLIGHTS ; i++, dl++)
|
||||
{
|
||||
if (!dl->radius)
|
||||
continue;
|
||||
|
||||
// negative light in software. only black allowed
|
||||
if ((dl->color[0] < 0) || (dl->color[1] < 0) || (dl->color[2] < 0))
|
||||
{
|
||||
dl->radius = -(dl->radius);
|
||||
dl->color[0] = 1;
|
||||
dl->color[1] = 1;
|
||||
dl->color[2] = 1;
|
||||
}
|
||||
V_AddLight (dl->origin, dl->radius,
|
||||
dl->color[0], dl->color[1], dl->color[2]);
|
||||
}
|
||||
}
|
||||
//PGM
|
||||
//=====
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1831,7 +1831,7 @@ void CL_Shutdown(void)
|
|||
|
||||
S_Shutdown();
|
||||
IN_Shutdown ();
|
||||
VID_Shutdown();
|
||||
VID_FreeRenderer();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,8 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
extern cparticle_t *active_particles, *free_particles;
|
||||
extern cparticle_t particles[MAX_PARTICLES];
|
||||
extern int cl_numparticles;
|
||||
extern cvar_t *vid_ref;
|
||||
extern int cl_numparticles;
|
||||
|
||||
extern void MakeNormalVectors (vec3_t forward, vec3_t right, vec3_t up);
|
||||
|
||||
|
@ -97,14 +96,6 @@ void CL_ColorFlash (vec3_t pos, int ent, int intensity, float r, float g, float
|
|||
{
|
||||
cdlight_t *dl;
|
||||
|
||||
if((vidref_val == VIDREF_SOFT) && ((r < 0) || (g<0) || (b<0)))
|
||||
{
|
||||
intensity = -intensity;
|
||||
r = -r;
|
||||
g = -g;
|
||||
b = -b;
|
||||
}
|
||||
|
||||
dl = CL_AllocDlight (ent);
|
||||
VectorCopy (pos, dl->origin);
|
||||
dl->radius = intensity;
|
||||
|
@ -547,24 +538,18 @@ void CL_Heatbeam (vec3_t start, vec3_t forward)
|
|||
VectorSubtract (end, start, vec);
|
||||
len = VectorNormalize (vec);
|
||||
|
||||
// FIXME - pmm - these might end up using old values?
|
||||
// MakeNormalVectors (vec, right, up);
|
||||
VectorCopy (cl.v_right, right);
|
||||
VectorCopy (cl.v_up, up);
|
||||
if (vidref_val == VIDREF_GL)
|
||||
{ // GL mode
|
||||
VectorMA (move, -0.5, right, move);
|
||||
VectorMA (move, -0.5, up, move);
|
||||
}
|
||||
// otherwise assume SOFT
|
||||
VectorMA (move, -0.5, right, move);
|
||||
VectorMA (move, -0.5, up, move);
|
||||
|
||||
// otherwise assume SOFT
|
||||
ltime = (float) cl.time/1000.0;
|
||||
start_pt = fmod(ltime*96.0,step);
|
||||
VectorMA (move, start_pt, vec, move);
|
||||
|
||||
VectorScale (vec, step, vec);
|
||||
|
||||
// Msg ("%f\n", ltime);
|
||||
rstep = M_PI/10.0;
|
||||
for (i=start_pt ; i<len ; i+=step)
|
||||
{
|
||||
|
|
|
@ -673,9 +673,8 @@ void Sys_Init (void);
|
|||
void Sys_Print(const char *pMsg);
|
||||
void Sys_AppActivate (void);
|
||||
|
||||
void Sys_UnloadGame (void);
|
||||
void *Sys_GetGameAPI (const char* procname, void *parms);
|
||||
// loads the game dll and calls the api init function
|
||||
void *Sys_LoadGame (const char* procname, void *hinstance, void *parms);
|
||||
void Sys_UnloadGame ( void *hinstance );
|
||||
|
||||
void Sys_CreateConsole( void );
|
||||
char *Sys_ConsoleInput (void);
|
||||
|
|
|
@ -287,7 +287,6 @@ Cbuf_AddLateCommands
|
|||
|
||||
Adds command line parameters as script statements
|
||||
Commands lead with a + and continue until another + or -
|
||||
quake +vid_ref gl +map amlev1
|
||||
|
||||
Returns true if any late commands were added, which
|
||||
will keep the demoloop from immediately starting
|
||||
|
|
|
@ -406,7 +406,11 @@ byte COM_BlockSequenceCRCByte (byte *base, int length, int sequence)
|
|||
word crc;
|
||||
byte *p, chkb[60 + 4];
|
||||
|
||||
if (sequence < 0) Sys_Error("sequence < 0, this shouldn't happen\n");
|
||||
if (sequence < 0)
|
||||
{
|
||||
MsgWarn("COM_BlockSequenceCRCByte: sequence < 0, this shouldn't happen\n");
|
||||
sequence = abs(sequence);
|
||||
}
|
||||
|
||||
p = chktbl + (sequence % (sizeof(chktbl) - 4));
|
||||
|
||||
|
|
|
@ -1012,7 +1012,6 @@ CONTROLS MENU
|
|||
|
||||
=======================================================================
|
||||
*/
|
||||
static cvar_t *win_noalttab;
|
||||
extern cvar_t *in_joystick;
|
||||
|
||||
static menuframework_s s_options_menu;
|
||||
|
@ -1020,7 +1019,6 @@ static menuaction_s s_options_defaults_action;
|
|||
static menuaction_s s_options_customize_options_action;
|
||||
static menuslider_s s_options_sensitivity_slider;
|
||||
static menulist_s s_options_freelook_box;
|
||||
static menulist_s s_options_noalttab_box;
|
||||
static menulist_s s_options_alwaysrun_box;
|
||||
static menulist_s s_options_invertmouse_box;
|
||||
static menulist_s s_options_lookspring_box;
|
||||
|
@ -1028,7 +1026,6 @@ static menulist_s s_options_lookstrafe_box;
|
|||
static menulist_s s_options_crosshair_box;
|
||||
static menuslider_s s_options_sfxvolume_slider;
|
||||
static menulist_s s_options_joystick_box;
|
||||
static menulist_s s_options_cdvolume_box;
|
||||
static menulist_s s_options_quality_list;
|
||||
static menulist_s s_options_compatibility_list;
|
||||
static menulist_s s_options_console_action;
|
||||
|
@ -1063,11 +1060,6 @@ static void MouseSpeedFunc( void *unused )
|
|||
Cvar_SetValue( "sensitivity", s_options_sensitivity_slider.curvalue / 2.0F );
|
||||
}
|
||||
|
||||
static void NoAltTabFunc( void *unused )
|
||||
{
|
||||
Cvar_SetValue( "win_noalttab", s_options_noalttab_box.curvalue );
|
||||
}
|
||||
|
||||
static float ClampCvar( float min, float max, float value )
|
||||
{
|
||||
if ( value < min ) return min;
|
||||
|
@ -1077,9 +1069,8 @@ static float ClampCvar( float min, float max, float value )
|
|||
|
||||
static void ControlsSetMenuItemValues( void )
|
||||
{
|
||||
s_options_sfxvolume_slider.curvalue = Cvar_VariableValue( "s_volume" ) * 10;
|
||||
s_options_cdvolume_box.curvalue = !Cvar_VariableValue("cd_nocd");
|
||||
s_options_quality_list.curvalue = !Cvar_VariableValue( "s_loadas8bit" );
|
||||
s_options_sfxvolume_slider.curvalue = Cvar_VariableValue( "s_volume" ) * 10;
|
||||
s_options_quality_list.curvalue = !Cvar_VariableValue( "s_loadas8bit" );
|
||||
s_options_sensitivity_slider.curvalue = ( sensitivity->value ) * 2;
|
||||
|
||||
Cvar_SetValue( "cl_run", ClampCvar( 0, 1, cl_run->value ) );
|
||||
|
@ -1101,8 +1092,6 @@ static void ControlsSetMenuItemValues( void )
|
|||
|
||||
Cvar_SetValue( "in_joystick", ClampCvar( 0, 1, in_joystick->value ) );
|
||||
s_options_joystick_box.curvalue = in_joystick->value;
|
||||
|
||||
s_options_noalttab_box.curvalue = win_noalttab->value;
|
||||
}
|
||||
|
||||
static void ControlsResetDefaultsFunc( void *unused )
|
||||
|
@ -1133,11 +1122,6 @@ static void UpdateVolumeFunc( void *unused )
|
|||
Cvar_SetValue( "s_volume", s_options_sfxvolume_slider.curvalue / 10 );
|
||||
}
|
||||
|
||||
static void UpdateCDVolumeFunc( void *unused )
|
||||
{
|
||||
Cvar_SetValue( "cd_nocd", !s_options_cdvolume_box.curvalue );
|
||||
}
|
||||
|
||||
static void ConsoleFunc( void *unused )
|
||||
{
|
||||
/*
|
||||
|
@ -1186,12 +1170,6 @@ static void UpdateSoundQualityFunc( void *unused )
|
|||
|
||||
void Options_MenuInit( void )
|
||||
{
|
||||
static const char *cd_music_items[] =
|
||||
{
|
||||
"disabled",
|
||||
"enabled",
|
||||
0
|
||||
};
|
||||
static const char *quality_items[] =
|
||||
{
|
||||
"low", "high", 0
|
||||
|
@ -1218,8 +1196,6 @@ void Options_MenuInit( void )
|
|||
0
|
||||
};
|
||||
|
||||
win_noalttab = Cvar_Get( "win_noalttab", "0", CVAR_ARCHIVE );
|
||||
|
||||
/*
|
||||
** configure controls menu and menu items
|
||||
*/
|
||||
|
@ -1231,22 +1207,14 @@ void Options_MenuInit( void )
|
|||
s_options_sfxvolume_slider.generic.x = 0;
|
||||
s_options_sfxvolume_slider.generic.y = 0;
|
||||
s_options_sfxvolume_slider.generic.name = "effects volume";
|
||||
s_options_sfxvolume_slider.generic.callback = UpdateVolumeFunc;
|
||||
s_options_sfxvolume_slider.minvalue = 0;
|
||||
s_options_sfxvolume_slider.maxvalue = 10;
|
||||
s_options_sfxvolume_slider.curvalue = Cvar_VariableValue( "s_volume" ) * 10;
|
||||
|
||||
s_options_cdvolume_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_cdvolume_box.generic.x = 0;
|
||||
s_options_cdvolume_box.generic.y = 10;
|
||||
s_options_cdvolume_box.generic.name = "CD music";
|
||||
s_options_cdvolume_box.generic.callback = UpdateCDVolumeFunc;
|
||||
s_options_cdvolume_box.itemnames = cd_music_items;
|
||||
s_options_cdvolume_box.curvalue = !Cvar_VariableValue("cd_nocd");
|
||||
s_options_sfxvolume_slider.generic.callback = UpdateVolumeFunc;
|
||||
s_options_sfxvolume_slider.minvalue = 0;
|
||||
s_options_sfxvolume_slider.maxvalue = 10;
|
||||
s_options_sfxvolume_slider.curvalue = Cvar_VariableValue( "s_volume" ) * 10;
|
||||
|
||||
s_options_quality_list.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_quality_list.generic.x = 0;
|
||||
s_options_quality_list.generic.y = 20;;
|
||||
s_options_quality_list.generic.y = 10;
|
||||
s_options_quality_list.generic.name = "sound quality";
|
||||
s_options_quality_list.generic.callback = UpdateSoundQualityFunc;
|
||||
s_options_quality_list.itemnames = quality_items;
|
||||
|
@ -1254,7 +1222,7 @@ void Options_MenuInit( void )
|
|||
|
||||
s_options_compatibility_list.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_compatibility_list.generic.x = 0;
|
||||
s_options_compatibility_list.generic.y = 30;
|
||||
s_options_compatibility_list.generic.y = 20;
|
||||
s_options_compatibility_list.generic.name = "sound compatibility";
|
||||
s_options_compatibility_list.generic.callback = UpdateSoundQualityFunc;
|
||||
s_options_compatibility_list.itemnames = compatibility_items;
|
||||
|
@ -1262,7 +1230,7 @@ void Options_MenuInit( void )
|
|||
|
||||
s_options_sensitivity_slider.generic.type = MTYPE_SLIDER;
|
||||
s_options_sensitivity_slider.generic.x = 0;
|
||||
s_options_sensitivity_slider.generic.y = 50;
|
||||
s_options_sensitivity_slider.generic.y = 40;
|
||||
s_options_sensitivity_slider.generic.name = "mouse speed";
|
||||
s_options_sensitivity_slider.generic.callback = MouseSpeedFunc;
|
||||
s_options_sensitivity_slider.minvalue = 2;
|
||||
|
@ -1270,56 +1238,49 @@ void Options_MenuInit( void )
|
|||
|
||||
s_options_alwaysrun_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_alwaysrun_box.generic.x = 0;
|
||||
s_options_alwaysrun_box.generic.y = 60;
|
||||
s_options_alwaysrun_box.generic.y = 50;
|
||||
s_options_alwaysrun_box.generic.name = "always run";
|
||||
s_options_alwaysrun_box.generic.callback = AlwaysRunFunc;
|
||||
s_options_alwaysrun_box.itemnames = yesno_names;
|
||||
|
||||
s_options_invertmouse_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_invertmouse_box.generic.x = 0;
|
||||
s_options_invertmouse_box.generic.y = 70;
|
||||
s_options_invertmouse_box.generic.y = 60;
|
||||
s_options_invertmouse_box.generic.name = "invert mouse";
|
||||
s_options_invertmouse_box.generic.callback = InvertMouseFunc;
|
||||
s_options_invertmouse_box.itemnames = yesno_names;
|
||||
|
||||
s_options_lookspring_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_lookspring_box.generic.x = 0;
|
||||
s_options_lookspring_box.generic.y = 80;
|
||||
s_options_lookspring_box.generic.y = 70;
|
||||
s_options_lookspring_box.generic.name = "lookspring";
|
||||
s_options_lookspring_box.generic.callback = LookspringFunc;
|
||||
s_options_lookspring_box.itemnames = yesno_names;
|
||||
|
||||
s_options_lookstrafe_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_lookstrafe_box.generic.x = 0;
|
||||
s_options_lookstrafe_box.generic.y = 90;
|
||||
s_options_lookstrafe_box.generic.y = 80;
|
||||
s_options_lookstrafe_box.generic.name = "lookstrafe";
|
||||
s_options_lookstrafe_box.generic.callback = LookstrafeFunc;
|
||||
s_options_lookstrafe_box.itemnames = yesno_names;
|
||||
|
||||
s_options_freelook_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_freelook_box.generic.x = 0;
|
||||
s_options_freelook_box.generic.y = 100;
|
||||
s_options_freelook_box.generic.y = 90;
|
||||
s_options_freelook_box.generic.name = "free look";
|
||||
s_options_freelook_box.generic.callback = FreeLookFunc;
|
||||
s_options_freelook_box.itemnames = yesno_names;
|
||||
|
||||
s_options_crosshair_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_crosshair_box.generic.x = 0;
|
||||
s_options_crosshair_box.generic.y = 110;
|
||||
s_options_crosshair_box.generic.y = 100;
|
||||
s_options_crosshair_box.generic.name = "crosshair";
|
||||
s_options_crosshair_box.generic.callback = CrosshairFunc;
|
||||
s_options_crosshair_box.itemnames = crosshair_names;
|
||||
/*
|
||||
s_options_noalttab_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_noalttab_box.generic.x = 0;
|
||||
s_options_noalttab_box.generic.y = 110;
|
||||
s_options_noalttab_box.generic.name = "disable alt-tab";
|
||||
s_options_noalttab_box.generic.callback = NoAltTabFunc;
|
||||
s_options_noalttab_box.itemnames = yesno_names;
|
||||
*/
|
||||
|
||||
s_options_joystick_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_options_joystick_box.generic.x = 0;
|
||||
s_options_joystick_box.generic.y = 120;
|
||||
s_options_joystick_box.generic.y = 110;
|
||||
s_options_joystick_box.generic.name = "use joystick";
|
||||
s_options_joystick_box.generic.callback = JoystickFunc;
|
||||
s_options_joystick_box.itemnames = yesno_names;
|
||||
|
@ -1331,21 +1292,20 @@ void Options_MenuInit( void )
|
|||
s_options_customize_options_action.generic.callback = CustomizeControlsFunc;
|
||||
|
||||
s_options_defaults_action.generic.type = MTYPE_ACTION;
|
||||
s_options_defaults_action.generic.x = 0;
|
||||
s_options_defaults_action.generic.y = 150;
|
||||
s_options_defaults_action.generic.x = 0;
|
||||
s_options_defaults_action.generic.y = 150;
|
||||
s_options_defaults_action.generic.name = "reset defaults";
|
||||
s_options_defaults_action.generic.callback = ControlsResetDefaultsFunc;
|
||||
|
||||
s_options_console_action.generic.type = MTYPE_ACTION;
|
||||
s_options_console_action.generic.x = 0;
|
||||
s_options_console_action.generic.y = 160;
|
||||
s_options_console_action.generic.x = 0;
|
||||
s_options_console_action.generic.y = 160;
|
||||
s_options_console_action.generic.name = "go to console";
|
||||
s_options_console_action.generic.callback = ConsoleFunc;
|
||||
|
||||
ControlsSetMenuItemValues();
|
||||
|
||||
Menu_AddItem( &s_options_menu, ( void * ) &s_options_sfxvolume_slider );
|
||||
Menu_AddItem( &s_options_menu, ( void * ) &s_options_cdvolume_box );
|
||||
Menu_AddItem( &s_options_menu, ( void * ) &s_options_quality_list );
|
||||
Menu_AddItem( &s_options_menu, ( void * ) &s_options_compatibility_list );
|
||||
Menu_AddItem( &s_options_menu, ( void * ) &s_options_sensitivity_slider );
|
||||
|
@ -2567,7 +2527,10 @@ void StartServer_MenuInit( void )
|
|||
** load the list of map names
|
||||
*/
|
||||
if(!FS_FileExists("scripts/maps.txt") && !CreateMapsList())
|
||||
Sys_Error("maps not found\n");
|
||||
{
|
||||
MsgWarn("StartServer_MenuInit: maps.lst not found\n");
|
||||
return;
|
||||
}
|
||||
|
||||
fp = FS_Open( "scripts/maps.txt", "rb" );
|
||||
FS_Seek(fp, 0, SEEK_END);
|
||||
|
|
|
@ -28,15 +28,16 @@ typedef struct vrect_s
|
|||
|
||||
typedef struct
|
||||
{
|
||||
int width, height; // coordinates from main game
|
||||
int width, height; // coordinates from main game
|
||||
} viddef_t;
|
||||
|
||||
extern viddef_t viddef; // global video state
|
||||
extern viddef_t viddef; // global video state
|
||||
|
||||
// Video module initialisation etc
|
||||
void VID_Init (void);
|
||||
void VID_Shutdown (void);
|
||||
void VID_CheckChanges (void);
|
||||
void VID_InitRenderer(void);
|
||||
void VID_FreeRenderer(void);
|
||||
void VID_CheckChanges(void);
|
||||
|
||||
void VID_MenuInit( void );
|
||||
void VID_MenuDraw( void );
|
||||
|
|
|
@ -44,18 +44,12 @@ void Host_InitPlatform( char *funcname, int argc, char **argv )
|
|||
pistd.error = Sys_Error;
|
||||
|
||||
if (( platform_dll = LoadLibrary( "bin/platform.dll" )) == 0 )
|
||||
{
|
||||
Sys_Error( "Couldn't load platform.dll\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
if (( CreatePlat = (void *)GetProcAddress( platform_dll, "CreateAPI" ) ) == 0 )
|
||||
{
|
||||
Sys_Error("can't init platform.dll\n");
|
||||
return;
|
||||
}
|
||||
pi = CreatePlat( pistd );
|
||||
Sys_Error("CreateInstance: %s has no valid entry point\n", "platform.dll" );
|
||||
|
||||
pi = CreatePlat( pistd );
|
||||
if(pi->apiversion != PLATFORM_API_VERSION)
|
||||
Sys_Error("mismatch version (%i should be %i)\n", pi->apiversion, PLATFORM_API_VERSION);
|
||||
|
||||
|
@ -90,8 +84,6 @@ void Host_Init (char *funcname, int argc, char **argv)
|
|||
char *s;
|
||||
|
||||
global_hInstance = (HINSTANCE)GetModuleHandle( NULL );
|
||||
if (setjmp (abortframe)) Sys_Error ("Error during initialization");
|
||||
|
||||
if(!strcmp(funcname, "host_dedicated"))is_dedicated = true;
|
||||
Host_InitPlatform( funcname, argc, argv );
|
||||
|
||||
|
@ -111,11 +103,8 @@ void Host_Init (char *funcname, int argc, char **argv)
|
|||
Cbuf_AddEarlyCommands (false);
|
||||
Cbuf_Execute ();
|
||||
|
||||
//FS_InitFilesystem ();
|
||||
|
||||
Cbuf_AddText ("exec default.cfg\n");
|
||||
Cbuf_AddText ("exec config.cfg\n");
|
||||
|
||||
Cbuf_AddEarlyCommands (true);
|
||||
Cbuf_Execute ();
|
||||
|
||||
|
@ -270,7 +259,6 @@ void Host_Main( void )
|
|||
newtime = Sys_Milliseconds ();
|
||||
time = newtime - oldtime;
|
||||
} while (time < 1);
|
||||
// Msg ("time:%5.2f - %5.2f = %5.2f\n", newtime, oldtime, time);
|
||||
|
||||
_controlfp( _PC_24, _MCW_PC );
|
||||
Host_Frame (time);
|
||||
|
|
|
@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "server.h"
|
||||
|
||||
game_export_t *ge;
|
||||
extern HINSTANCE game_library;
|
||||
HINSTANCE sv_library;
|
||||
|
||||
/*
|
||||
===============
|
||||
|
@ -305,7 +305,7 @@ void SV_ShutdownGameProgs (void)
|
|||
{
|
||||
if (!ge) return;
|
||||
ge->Shutdown ();
|
||||
Sys_UnloadGame ();
|
||||
Sys_UnloadGame ( sv_library );
|
||||
ge = NULL;
|
||||
}
|
||||
|
||||
|
@ -387,7 +387,7 @@ void SV_InitGameProgs (void)
|
|||
import.AreasConnected = CM_AreasConnected;
|
||||
|
||||
//find server.dll
|
||||
ge = (game_export_t *)Sys_GetGameAPI ("ServerAPI", &import);
|
||||
ge = (game_export_t *)Sys_LoadGame("ServerAPI", sv_library, &import);
|
||||
|
||||
if (!ge) Com_Error (ERR_DROP, "failed to load game DLL");
|
||||
if (ge->apiversion != GAME_API_VERSION)
|
||||
|
|
|
@ -207,34 +207,31 @@ sfx_t *S_FindName (char *name, bool create)
|
|||
int i;
|
||||
sfx_t *sfx;
|
||||
|
||||
if (!name)
|
||||
Com_Error (ERR_FATAL, "S_FindName: NULL\n");
|
||||
if (!name[0])
|
||||
Com_Error (ERR_FATAL, "S_FindName: empty name\n");
|
||||
|
||||
if (strlen(name) >= MAX_QPATH)
|
||||
Com_Error (ERR_FATAL, "Sound name too long: %s", name);
|
||||
if (!name || !name[0]) return NULL;
|
||||
|
||||
// see if already loaded
|
||||
for (i=0 ; i < num_sfx ; i++)
|
||||
for (i = 0; i < num_sfx; i++)
|
||||
{
|
||||
if (!strcmp(known_sfx[i].name, name))
|
||||
{
|
||||
return &known_sfx[i];
|
||||
}
|
||||
|
||||
if (!create)
|
||||
return NULL;
|
||||
}
|
||||
if (!create) return NULL;
|
||||
|
||||
// find a free sfx
|
||||
for (i=0 ; i < num_sfx ; i++)
|
||||
for (i = 0; i < num_sfx; i++)
|
||||
{
|
||||
if (!known_sfx[i].name[0])
|
||||
// registration_sequence < s_registration_sequence)
|
||||
break;
|
||||
|
||||
}
|
||||
if (i == num_sfx)
|
||||
{
|
||||
if (num_sfx == MAX_SFX)
|
||||
Com_Error (ERR_FATAL, "S_FindName: out of sfx_t");
|
||||
{
|
||||
MsgWarn("S_FindName: MAX_SFX limit exceeded\n");
|
||||
return NULL;
|
||||
}
|
||||
num_sfx++;
|
||||
}
|
||||
|
||||
|
@ -270,7 +267,10 @@ sfx_t *S_AliasName (char *aliasname, char *truename)
|
|||
if (i == num_sfx)
|
||||
{
|
||||
if (num_sfx == MAX_SFX)
|
||||
Com_Error (ERR_FATAL, "S_FindName: out of sfx_t");
|
||||
{
|
||||
MsgWarn("S_AliasName: MAX_SFX limit exceeded\n");
|
||||
return NULL;
|
||||
}
|
||||
num_sfx++;
|
||||
}
|
||||
|
||||
|
@ -306,14 +306,11 @@ sfx_t *S_RegisterSound (char *name)
|
|||
{
|
||||
sfx_t *sfx;
|
||||
|
||||
if (!sound_started)
|
||||
return NULL;
|
||||
if (!sound_started) return NULL;
|
||||
|
||||
sfx = S_FindName (name, true);
|
||||
sfx->registration_sequence = s_registration_sequence;
|
||||
|
||||
if (!s_registering)
|
||||
S_LoadSound (sfx);
|
||||
if (!s_registering) S_LoadSound (sfx);
|
||||
|
||||
return sfx;
|
||||
}
|
||||
|
|
|
@ -211,12 +211,10 @@ void FindNextChunk(char *name)
|
|||
data_p = NULL;
|
||||
return;
|
||||
}
|
||||
// if (iff_chunk_len > 1024*1024)
|
||||
// Sys_Error ("FindNextChunk: %i length is past the 1 meg sanity limit", iff_chunk_len);
|
||||
|
||||
data_p -= 8;
|
||||
last_chunk = data_p + 8 + ( (iff_chunk_len + 1) & ~1 );
|
||||
if (!strncmp(data_p, name, 4))
|
||||
return;
|
||||
if (!strncmp(data_p, name, 4)) return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@ stdinout_api_t std;
|
|||
uint sys_msg_time;
|
||||
uint sys_frame_time;
|
||||
|
||||
bool s_win95;
|
||||
int starttime;
|
||||
|
||||
/*
|
||||
|
@ -89,10 +88,7 @@ void Sys_Init (void)
|
|||
vinfo.dwOSVersionInfoSize = sizeof(vinfo);
|
||||
|
||||
if (!GetVersionEx (&vinfo)) Sys_Error ("Couldn't get OS info");
|
||||
|
||||
if (vinfo.dwMajorVersion < 4) Sys_Error ("%s requires windows version 4 or greater", GI.title);
|
||||
if (vinfo.dwPlatformId == VER_PLATFORM_WIN32s) Sys_Error ("%s doesn't run on Win32s", GI.title);
|
||||
else if ( vinfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ) s_win95 = true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -199,68 +195,68 @@ GAME DLL
|
|||
|
||||
========================================================================
|
||||
*/
|
||||
|
||||
HINSTANCE game_library;
|
||||
|
||||
/*
|
||||
=================
|
||||
Sys_UnloadGame
|
||||
=================
|
||||
*/
|
||||
void Sys_UnloadGame (void)
|
||||
void Sys_UnloadGame( void *hinstance )
|
||||
{
|
||||
if (!FreeLibrary (game_library))
|
||||
Com_Error (ERR_FATAL, "FreeLibrary failed for game library");
|
||||
game_library = NULL;
|
||||
if(!hinstance) return;
|
||||
FreeLibrary(hinstance);
|
||||
hinstance = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
Sys_GetGameAPI
|
||||
Sys_LoadGame
|
||||
|
||||
Loads the game dll
|
||||
=================
|
||||
*/
|
||||
void *Sys_GetGameAPI (const char* procname, void *parms)
|
||||
void *Sys_LoadGame (const char* procname, void *hinstance, void *parms)
|
||||
{
|
||||
void *(*GetGameAPI) (void *);
|
||||
char basepath[MAX_SYSPATH];
|
||||
search_t *gamedll;
|
||||
int i;
|
||||
|
||||
if (game_library)
|
||||
Com_Error (ERR_FATAL, "Sys_GetGameAPI without Sys_UnloadingGame");
|
||||
Sys_UnloadGame( hinstance );
|
||||
|
||||
//find server.dll
|
||||
gamedll = FS_Search( "bin/*.dll" );
|
||||
if(!gamedll) Com_Error (ERR_DROP, "can't found game DLL");
|
||||
if(!gamedll)
|
||||
{
|
||||
Com_Error (ERR_DROP, "Can't find game.dll\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// now run through the search paths
|
||||
for( i = 0; i < gamedll->numfilenames; i++ )
|
||||
{
|
||||
sprintf(basepath, "%s/%s", GI.gamedir, gamedll->filenames[i]);
|
||||
game_library = LoadLibrary ( basepath );
|
||||
hinstance = LoadLibrary ( basepath );
|
||||
|
||||
if (!game_library)
|
||||
if (!hinstance)
|
||||
{
|
||||
sprintf(basepath, "%s/%s", GI.basedir, gamedll->filenames[i]);
|
||||
game_library = LoadLibrary ( basepath );
|
||||
hinstance = LoadLibrary ( basepath );
|
||||
}
|
||||
|
||||
if (game_library)
|
||||
if (hinstance)
|
||||
{
|
||||
if (( GetGameAPI = (void *)GetProcAddress( game_library, procname )) == 0 )
|
||||
Sys_UnloadGame();
|
||||
if (( GetGameAPI = (void *)GetProcAddress( hinstance, procname )) == 0 )
|
||||
Sys_UnloadGame( hinstance );
|
||||
else break;
|
||||
}
|
||||
else Msg("Can't loading %s\n", gamedll->filenames[i] );
|
||||
else MsgWarn("Can't loading %s\n", gamedll->filenames[i] );
|
||||
}
|
||||
|
||||
GetGameAPI = (void *)GetProcAddress (game_library, procname );
|
||||
GetGameAPI = (void *)GetProcAddress (hinstance, procname );
|
||||
|
||||
if (!GetGameAPI)
|
||||
{
|
||||
Sys_UnloadGame ();
|
||||
Sys_UnloadGame( hinstance );
|
||||
return NULL;
|
||||
}
|
||||
return GetGameAPI (parms);
|
||||
|
|
210
engine/vid_dll.c
210
engine/vid_dll.c
|
@ -27,8 +27,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
// Structure containing functions exported from refresh DLL
|
||||
renderer_exp_t *re;
|
||||
|
||||
cvar_t *win_noalttab;
|
||||
|
||||
extern HWND cl_hwnd;
|
||||
extern bool ActiveApp, Minimized;
|
||||
extern HINSTANCE global_hInstance;
|
||||
|
@ -41,15 +39,15 @@ static UINT MSH_MOUSEWHEEL;
|
|||
|
||||
// Console variables that we need to access from this module
|
||||
cvar_t *vid_gamma;
|
||||
cvar_t *vid_ref; // Name of Refresh DLL loaded
|
||||
cvar_t *vid_ref; // Name of Refresh DLL loaded
|
||||
cvar_t *vid_xpos; // X coordinate of window position
|
||||
cvar_t *vid_ypos; // Y coordinate of window position
|
||||
cvar_t *vid_fullscreen;
|
||||
|
||||
// Global variables used internally by this module
|
||||
viddef_t viddef; // global video state; used by other modules
|
||||
HINSTANCE reflib_library; // Handle to refresh DLL
|
||||
bool reflib_active = 0;
|
||||
viddef_t viddef; // global video state; used by other modules
|
||||
HINSTANCE renderer_dll; // Handle to refresh DLL
|
||||
bool reflib_active = 0;
|
||||
|
||||
HWND cl_hwnd; // Main window handle for life of program
|
||||
|
||||
|
@ -57,54 +55,9 @@ HWND cl_hwnd; // Main window handle for life of program
|
|||
|
||||
LONG WINAPI MainWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
|
||||
|
||||
static bool s_alttab_disabled;
|
||||
|
||||
extern unsigned sys_msg_time;
|
||||
|
||||
/*
|
||||
** WIN32 helper functions
|
||||
*/
|
||||
extern bool s_win95;
|
||||
|
||||
static void WIN_DisableAltTab( void )
|
||||
{
|
||||
if ( s_alttab_disabled )
|
||||
return;
|
||||
|
||||
if ( s_win95 )
|
||||
{
|
||||
BOOL old;
|
||||
|
||||
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, &old, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
RegisterHotKey( 0, 0, MOD_ALT, VK_TAB );
|
||||
RegisterHotKey( 0, 1, MOD_ALT, VK_RETURN );
|
||||
}
|
||||
s_alttab_disabled = true;
|
||||
}
|
||||
|
||||
static void WIN_EnableAltTab( void )
|
||||
{
|
||||
if ( s_alttab_disabled )
|
||||
{
|
||||
if ( s_win95 )
|
||||
{
|
||||
BOOL old;
|
||||
|
||||
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, &old, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
UnregisterHotKey( 0, 0 );
|
||||
UnregisterHotKey( 0, 1 );
|
||||
}
|
||||
|
||||
s_alttab_disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
==========================================================================
|
||||
|
||||
|
@ -247,20 +200,11 @@ void AppActivate(BOOL fActive, BOOL minimize)
|
|||
{
|
||||
IN_Activate (false);
|
||||
S_Activate (false);
|
||||
|
||||
if ( win_noalttab->value )
|
||||
{
|
||||
WIN_EnableAltTab();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IN_Activate (true);
|
||||
S_Activate (true);
|
||||
if ( win_noalttab->value )
|
||||
{
|
||||
WIN_DisableAltTab();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -454,16 +398,13 @@ typedef struct vidmode_s
|
|||
vidmode_t vid_modes[] =
|
||||
{
|
||||
{ "Mode 0: 320x240", 320, 240, 0 },
|
||||
{ "Mode 1: 400x300", 400, 300, 1 },
|
||||
{ "Mode 2: 512x384", 512, 384, 2 },
|
||||
{ "Mode 3: 640x480", 640, 480, 3 },
|
||||
{ "Mode 4: 800x600", 800, 600, 4 },
|
||||
{ "Mode 5: 960x720", 960, 720, 5 },
|
||||
{ "Mode 6: 1024x768", 1024, 768, 6 },
|
||||
{ "Mode 7: 1152x864", 1152, 864, 7 },
|
||||
{ "Mode 8: 1280x960", 1280, 960, 8 },
|
||||
{ "Mode 9: 1600x1200", 1600, 1200, 9 },
|
||||
{ "Mode 10: 2048x1536", 2048, 1536, 10 }
|
||||
{ "Mode 1: 640x480", 640, 480, 1 },
|
||||
{ "Mode 2: 800x600", 800, 600, 2 },
|
||||
{ "Mode 3: 1024x768", 1024, 768, 3 },
|
||||
{ "Mode 4: 1280x960", 1280, 960, 4 },
|
||||
{ "Mode 5: 1280x1024", 1280, 1024, 5 },
|
||||
{ "Mode 6: 1600x1200", 1600, 1200, 6 },
|
||||
{ "Mode 7: 2048x1536", 2048, 1536, 7 }
|
||||
};
|
||||
|
||||
bool VID_GetModeInfo( int *width, int *height, int mode )
|
||||
|
@ -513,10 +454,9 @@ void VID_NewWindow ( int width, int height)
|
|||
|
||||
void VID_FreeReflib (void)
|
||||
{
|
||||
if ( !FreeLibrary( reflib_library ) )
|
||||
Com_Error( ERR_FATAL, "Reflib FreeLibrary failed" );
|
||||
FreeLibrary( renderer_dll );
|
||||
memset (&re, 0, sizeof(re));
|
||||
reflib_library = NULL;
|
||||
renderer_dll = NULL;
|
||||
reflib_active = false;
|
||||
}
|
||||
|
||||
|
@ -532,30 +472,16 @@ char *FS_Title( void )
|
|||
|
||||
/*
|
||||
==============
|
||||
VID_LoadRefresh
|
||||
VID_InitRenderer
|
||||
==============
|
||||
*/
|
||||
bool VID_LoadRefresh( char *name )
|
||||
void VID_InitRenderer( void )
|
||||
{
|
||||
renderer_imp_t ri;
|
||||
renderer_t CreateRender;
|
||||
|
||||
if ( reflib_active )
|
||||
{
|
||||
re->Shutdown();
|
||||
VID_FreeReflib ();
|
||||
}
|
||||
VID_FreeRenderer();
|
||||
|
||||
Msg( "------- Loading %s -------\n", name );
|
||||
|
||||
if ( ( reflib_library = LoadLibrary( name ) ) == 0 )
|
||||
{
|
||||
Msg( "LoadLibrary(\"%s\") failed\n", name );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// load a new game dll
|
||||
ri.Fs = pi->Fs;
|
||||
ri.VFs = pi->VFs;
|
||||
ri.Mem = pi->Mem;
|
||||
|
@ -581,41 +507,24 @@ bool VID_LoadRefresh( char *name )
|
|||
// studio callbacks
|
||||
ri.StudioEvent = CL_StudioEvent;
|
||||
|
||||
if ( ( CreateRender = (void *) GetProcAddress( reflib_library, "CreateAPI" ) ) == 0 )
|
||||
Com_Error( ERR_FATAL, "GetProcAddress failed on %s", name );
|
||||
if(( renderer_dll = LoadLibrary( "bin/renderer.dll" )) == 0 )
|
||||
Sys_Error( "Couldn't load renderer.dll\n" );
|
||||
|
||||
if ( ( CreateRender = (void *) GetProcAddress( renderer_dll, "CreateAPI" )) == 0 )
|
||||
Sys_Error( "CreateInstance: %s has no valid entry point", "renderer.dll" );
|
||||
|
||||
re = CreateRender( ri );
|
||||
|
||||
if (re->apiversion != RENDERER_API_VERSION)
|
||||
{
|
||||
VID_FreeReflib ();
|
||||
Com_Error (ERR_FATAL, "%s has incompatible api_version", name);
|
||||
}
|
||||
if(re->apiversion != RENDERER_API_VERSION)
|
||||
Sys_Error("mismatch version (%i should be %i)\n", re->apiversion, RENDERER_API_VERSION);
|
||||
|
||||
if ( re->Init( global_hInstance, MainWndProc ) == -1 )
|
||||
{
|
||||
re->Shutdown();
|
||||
VID_FreeReflib ();
|
||||
return false;
|
||||
}
|
||||
if(re->api_size != sizeof(renderer_exp_t))
|
||||
Sys_Error("mismatch interface size (%i should be %i)\n", re->api_size, sizeof(renderer_exp_t));
|
||||
|
||||
if(!re->Init( global_hInstance, MainWndProc ))
|
||||
Sys_Error("can't init renderer.dll\n");
|
||||
|
||||
Msg( "------------------------------------\n");
|
||||
reflib_active = true;
|
||||
|
||||
//======
|
||||
//PGM
|
||||
vidref_val = VIDREF_OTHER;
|
||||
if(vid_ref)
|
||||
{
|
||||
if(!strcmp (vid_ref->string, "gl"))
|
||||
vidref_val = VIDREF_GL;
|
||||
else if(!strcmp(vid_ref->string, "soft"))
|
||||
vidref_val = VIDREF_SOFT;
|
||||
}
|
||||
//PGM
|
||||
//======
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -629,22 +538,9 @@ update the rendering DLL and/or video mode to match.
|
|||
*/
|
||||
void VID_CheckChanges (void)
|
||||
{
|
||||
if ( win_noalttab->modified )
|
||||
{
|
||||
if ( win_noalttab->value )
|
||||
{
|
||||
WIN_DisableAltTab();
|
||||
}
|
||||
else
|
||||
{
|
||||
WIN_EnableAltTab();
|
||||
}
|
||||
win_noalttab->modified = false;
|
||||
}
|
||||
|
||||
if ( vid_ref->modified )
|
||||
{
|
||||
cl.force_refdef = true; // can't use a paused refdef
|
||||
cl.force_refdef = true; // can't use a paused refdef
|
||||
S_StopAllSounds();
|
||||
}
|
||||
while (vid_ref->modified)
|
||||
|
@ -657,26 +553,11 @@ void VID_CheckChanges (void)
|
|||
cl.refresh_prepped = false;
|
||||
cls.disable_screen = true;
|
||||
|
||||
if ( !VID_LoadRefresh( "bin/render.dll" ) )
|
||||
{
|
||||
if ( strcmp (vid_ref->string, "soft") == 0 )
|
||||
Com_Error (ERR_FATAL, "Couldn't fall back to software refresh!");
|
||||
Cvar_Set( "vid_ref", "soft" );
|
||||
|
||||
/*
|
||||
** drop the console if we fail to load a refresh
|
||||
*/
|
||||
if ( cls.key_dest != key_console )
|
||||
{
|
||||
Con_ToggleConsole_f();
|
||||
}
|
||||
}
|
||||
VID_InitRenderer();
|
||||
cls.disable_screen = false;
|
||||
}
|
||||
|
||||
/*
|
||||
** update our window position
|
||||
*/
|
||||
// update our window position
|
||||
if ( vid_xpos->modified || vid_ypos->modified )
|
||||
{
|
||||
if (!vid_fullscreen->value)
|
||||
|
@ -695,47 +576,26 @@ VID_Init
|
|||
void VID_Init (void)
|
||||
{
|
||||
/* Create the video variables so we know how to start the graphics drivers */
|
||||
vid_ref = Cvar_Get ("vid_ref", "soft", CVAR_ARCHIVE);
|
||||
vid_ref = Cvar_Get ("vid_ref", "gl", CVAR_ARCHIVE);
|
||||
vid_xpos = Cvar_Get ("vid_xpos", "3", CVAR_ARCHIVE);
|
||||
vid_ypos = Cvar_Get ("vid_ypos", "22", CVAR_ARCHIVE);
|
||||
vid_fullscreen = Cvar_Get ("vid_fullscreen", "0", CVAR_ARCHIVE);
|
||||
vid_gamma = Cvar_Get( "vid_gamma", "1", CVAR_ARCHIVE );
|
||||
win_noalttab = Cvar_Get( "win_noalttab", "0", CVAR_ARCHIVE );
|
||||
|
||||
/* Add some console commands that we want to handle */
|
||||
Cmd_AddCommand ("vid_restart", VID_Restart_f);
|
||||
Cmd_AddCommand ("vid_front", VID_Front_f);
|
||||
|
||||
/*
|
||||
** this is a gross hack but necessary to clamp the mode for 3Dfx
|
||||
*/
|
||||
#if 0
|
||||
{
|
||||
cvar_t *gl_driver = Cvar_Get( "gl_driver", "opengl32", 0 );
|
||||
cvar_t *gl_mode = Cvar_Get( "gl_mode", "3", 0 );
|
||||
|
||||
if ( stricmp( gl_driver->string, "3dfxgl" ) == 0 )
|
||||
{
|
||||
Cvar_SetValue( "gl_mode", 3 );
|
||||
viddef.width = 640;
|
||||
viddef.height = 480;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Disable the 3Dfx splash screen */
|
||||
putenv("FX_GLIDE_NO_SPLASH=0");
|
||||
|
||||
/* Start the graphics mode and load refresh DLL */
|
||||
// Start the graphics mode and load refresh DLL
|
||||
VID_CheckChanges();
|
||||
}
|
||||
|
||||
/*
|
||||
============
|
||||
VID_Shutdown
|
||||
VID_FreeRenderer
|
||||
============
|
||||
*/
|
||||
void VID_Shutdown (void)
|
||||
void VID_FreeRenderer (void)
|
||||
{
|
||||
if ( reflib_active )
|
||||
{
|
||||
|
|
|
@ -20,26 +20,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "client.h"
|
||||
#include "qmenu.h"
|
||||
|
||||
#define REF_SOFT 0
|
||||
#define REF_OPENGL 1
|
||||
#define REF_3DFX 2
|
||||
#define REF_POWERVR 3
|
||||
#define REF_VERITE 4
|
||||
|
||||
extern cvar_t *vid_ref;
|
||||
extern cvar_t *vid_fullscreen;
|
||||
extern cvar_t *vid_gamma;
|
||||
extern cvar_t *scr_viewsize;
|
||||
|
||||
static cvar_t *gl_mode;
|
||||
static cvar_t *gl_driver;
|
||||
static cvar_t *gl_picmip;
|
||||
static cvar_t *gl_ext_palettedtexture;
|
||||
static cvar_t *gl_finish;
|
||||
|
||||
static cvar_t *sw_mode;
|
||||
static cvar_t *sw_stipplealpha;
|
||||
|
||||
extern void M_ForceMenuOff( void );
|
||||
|
||||
/*
|
||||
|
@ -49,65 +38,31 @@ MENU INTERACTION
|
|||
|
||||
====================================================================
|
||||
*/
|
||||
#define SOFTWARE_MENU 0
|
||||
#define OPENGL_MENU 1
|
||||
|
||||
static menuframework_s s_software_menu;
|
||||
static menuframework_s s_opengl_menu;
|
||||
static menuframework_s *s_current_menu;
|
||||
static int s_current_menu_index;
|
||||
|
||||
static menulist_s s_mode_list[2];
|
||||
static menulist_s s_ref_list[2];
|
||||
static menuframework_s s_video_menu;
|
||||
static menulist_s s_mode_list;
|
||||
static menuslider_s s_tq_slider;
|
||||
static menuslider_s s_screensize_slider[2];
|
||||
static menuslider_s s_brightness_slider[2];
|
||||
static menulist_s s_fs_box[2];
|
||||
static menuslider_s s_screensize_slider;
|
||||
static menuslider_s s_brightness_slider;
|
||||
static menulist_s s_fs_box;
|
||||
static menulist_s s_stipple_box;
|
||||
static menulist_s s_paletted_texture_box;
|
||||
static menulist_s s_finish_box;
|
||||
static menuaction_s s_cancel_action[2];
|
||||
static menuaction_s s_defaults_action[2];
|
||||
|
||||
static void DriverCallback( void *unused )
|
||||
{
|
||||
s_ref_list[!s_current_menu_index].curvalue = s_ref_list[s_current_menu_index].curvalue;
|
||||
|
||||
if ( s_ref_list[s_current_menu_index].curvalue == 0 )
|
||||
{
|
||||
s_current_menu = &s_software_menu;
|
||||
s_current_menu_index = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
s_current_menu = &s_opengl_menu;
|
||||
s_current_menu_index = 1;
|
||||
}
|
||||
|
||||
}
|
||||
static menuaction_s s_cancel_action;
|
||||
static menuaction_s s_defaults_action;
|
||||
|
||||
static void ScreenSizeCallback( void *s )
|
||||
{
|
||||
menuslider_s *slider = ( menuslider_s * ) s;
|
||||
|
||||
menuslider_s *slider = (menuslider_s *)s;
|
||||
Cvar_SetValue( "viewsize", slider->curvalue * 10 );
|
||||
}
|
||||
|
||||
static void BrightnessCallback( void *s )
|
||||
{
|
||||
menuslider_s *slider = ( menuslider_s * ) s;
|
||||
menuslider_s *slider = (menuslider_s *)s;
|
||||
float gamma = ( 0.8 - ( slider->curvalue / 10.0 - 0.5 ) ) + 0.5;
|
||||
|
||||
if ( s_current_menu_index == SOFTWARE_MENU )
|
||||
s_brightness_slider[1].curvalue = s_brightness_slider[0].curvalue;
|
||||
else
|
||||
s_brightness_slider[0].curvalue = s_brightness_slider[1].curvalue;
|
||||
|
||||
if ( stricmp( vid_ref->string, "soft" ) == 0 )
|
||||
{
|
||||
float gamma = ( 0.8 - ( slider->curvalue/10.0 - 0.5 ) ) + 0.5;
|
||||
|
||||
Cvar_SetValue( "vid_gamma", gamma );
|
||||
}
|
||||
Cvar_SetValue( "vid_gamma", gamma );
|
||||
}
|
||||
|
||||
static void ResetDefaults( void *unused )
|
||||
|
@ -117,81 +72,14 @@ static void ResetDefaults( void *unused )
|
|||
|
||||
static void ApplyChanges( void *unused )
|
||||
{
|
||||
float gamma;
|
||||
extern cvar_t *vid_ref;
|
||||
|
||||
/*
|
||||
** make values consistent
|
||||
*/
|
||||
s_fs_box[!s_current_menu_index].curvalue = s_fs_box[s_current_menu_index].curvalue;
|
||||
s_brightness_slider[!s_current_menu_index].curvalue = s_brightness_slider[s_current_menu_index].curvalue;
|
||||
s_ref_list[!s_current_menu_index].curvalue = s_ref_list[s_current_menu_index].curvalue;
|
||||
|
||||
/*
|
||||
** invert sense so greater = brighter, and scale to a range of 0.5 to 1.3
|
||||
*/
|
||||
gamma = ( 0.8 - ( s_brightness_slider[s_current_menu_index].curvalue/10.0 - 0.5 ) ) + 0.5;
|
||||
|
||||
Cvar_SetValue( "vid_gamma", gamma );
|
||||
Cvar_SetValue( "sw_stipplealpha", s_stipple_box.curvalue );
|
||||
Cvar_SetValue( "gl_picmip", 3 - s_tq_slider.curvalue );
|
||||
Cvar_SetValue( "vid_fullscreen", s_fs_box[s_current_menu_index].curvalue );
|
||||
Cvar_SetValue( "vid_fullscreen", s_fs_box.curvalue );
|
||||
Cvar_SetValue( "gl_ext_palettedtexture", s_paletted_texture_box.curvalue );
|
||||
Cvar_SetValue( "gl_finish", s_finish_box.curvalue );
|
||||
Cvar_SetValue( "sw_mode", s_mode_list[SOFTWARE_MENU].curvalue );
|
||||
Cvar_SetValue( "gl_mode", s_mode_list[OPENGL_MENU].curvalue );
|
||||
|
||||
switch ( s_ref_list[s_current_menu_index].curvalue )
|
||||
{
|
||||
case REF_SOFT:
|
||||
Cvar_Set( "vid_ref", "soft" );
|
||||
break;
|
||||
case REF_OPENGL:
|
||||
Cvar_Set( "vid_ref", "gl" );
|
||||
Cvar_Set( "gl_driver", "opengl32" );
|
||||
break;
|
||||
case REF_3DFX:
|
||||
Cvar_Set( "vid_ref", "gl" );
|
||||
Cvar_Set( "gl_driver", "3dfxgl" );
|
||||
break;
|
||||
case REF_POWERVR:
|
||||
Cvar_Set( "vid_ref", "gl" );
|
||||
Cvar_Set( "gl_driver", "pvrgl" );
|
||||
break;
|
||||
case REF_VERITE:
|
||||
Cvar_Set( "vid_ref", "gl" );
|
||||
Cvar_Set( "gl_driver", "veritegl" );
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
** update appropriate stuff if we're running OpenGL and gamma
|
||||
** has been modified
|
||||
*/
|
||||
if ( stricmp( vid_ref->string, "gl" ) == 0 )
|
||||
{
|
||||
if ( vid_gamma->modified )
|
||||
{
|
||||
vid_ref->modified = true;
|
||||
if ( stricmp( gl_driver->string, "3dfxgl" ) == 0 )
|
||||
{
|
||||
char envbuffer[1024];
|
||||
float g;
|
||||
|
||||
vid_ref->modified = true;
|
||||
|
||||
g = 2.00 * ( 0.8 - ( vid_gamma->value - 0.5 ) ) + 1.0F;
|
||||
sprintf( envbuffer, "SSTV2_GAMMA=%f", g );
|
||||
putenv( envbuffer );
|
||||
sprintf( envbuffer, "SST_GAMMA=%f", g );
|
||||
putenv( envbuffer );
|
||||
|
||||
vid_gamma->modified = false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( gl_driver->modified )
|
||||
vid_ref->modified = true;
|
||||
}
|
||||
Cvar_SetValue( "gl_mode", s_mode_list.curvalue );
|
||||
vid_ref->modified = true;
|
||||
|
||||
M_ForceMenuOff();
|
||||
}
|
||||
|
@ -211,190 +99,111 @@ void VID_MenuInit( void )
|
|||
static const char *resolutions[] =
|
||||
{
|
||||
"[320 240 ]",
|
||||
"[400 300 ]",
|
||||
"[512 384 ]",
|
||||
"[640 480 ]",
|
||||
"[800 600 ]",
|
||||
"[960 720 ]",
|
||||
"[1024 768 ]",
|
||||
"[1152 864 ]",
|
||||
"[1280 960 ]",
|
||||
"[1280 1024]",
|
||||
"[1600 1200]",
|
||||
"[2048 1536]",
|
||||
0
|
||||
};
|
||||
static const char *refs[] =
|
||||
{
|
||||
"[software ]",
|
||||
"[default OpenGL]",
|
||||
"[3Dfx OpenGL ]",
|
||||
"[PowerVR OpenGL]",
|
||||
// "[Rendition OpenGL]",
|
||||
0
|
||||
0,
|
||||
};
|
||||
static const char *yesno_names[] =
|
||||
{
|
||||
"no",
|
||||
"yes",
|
||||
0
|
||||
0,
|
||||
};
|
||||
int i;
|
||||
|
||||
if ( !gl_driver )
|
||||
gl_driver = Cvar_Get( "gl_driver", "opengl32", 0 );
|
||||
if ( !gl_picmip )
|
||||
gl_picmip = Cvar_Get( "gl_picmip", "0", 0 );
|
||||
if ( !gl_mode )
|
||||
gl_mode = Cvar_Get( "gl_mode", "3", 0 );
|
||||
if ( !sw_mode )
|
||||
sw_mode = Cvar_Get( "sw_mode", "0", 0 );
|
||||
if ( !gl_ext_palettedtexture )
|
||||
gl_ext_palettedtexture = Cvar_Get( "gl_ext_palettedtexture", "1", CVAR_ARCHIVE );
|
||||
if ( !gl_finish )
|
||||
gl_finish = Cvar_Get( "gl_finish", "0", CVAR_ARCHIVE );
|
||||
if ( !gl_picmip ) gl_picmip = Cvar_Get( "gl_picmip", "0", 0 );
|
||||
if ( !gl_mode ) gl_mode = Cvar_Get( "gl_mode", "3", 0 );
|
||||
if ( !gl_finish ) gl_finish = Cvar_Get( "gl_finish", "0", CVAR_ARCHIVE );
|
||||
if ( !scr_viewsize ) scr_viewsize = Cvar_Get ("viewsize", "100", CVAR_ARCHIVE);
|
||||
if ( !gl_ext_palettedtexture ) gl_ext_palettedtexture = Cvar_Get( "gl_ext_palettedtexture", "1", CVAR_ARCHIVE );
|
||||
|
||||
if ( !sw_stipplealpha )
|
||||
sw_stipplealpha = Cvar_Get( "sw_stipplealpha", "0", CVAR_ARCHIVE );
|
||||
s_mode_list.curvalue = gl_mode->value;
|
||||
s_screensize_slider.curvalue = scr_viewsize->value/10;
|
||||
|
||||
s_mode_list[SOFTWARE_MENU].curvalue = sw_mode->value;
|
||||
s_mode_list[OPENGL_MENU].curvalue = gl_mode->value;
|
||||
s_video_menu.x = viddef.width * 0.50;
|
||||
s_video_menu.y = viddef.height / 2 - 58;
|
||||
s_video_menu.nitems = 0;
|
||||
|
||||
if ( !scr_viewsize )
|
||||
scr_viewsize = Cvar_Get ("viewsize", "100", CVAR_ARCHIVE);
|
||||
s_mode_list.generic.type = MTYPE_SPINCONTROL;
|
||||
s_mode_list.generic.name = "video mode";
|
||||
s_mode_list.generic.x = 0;
|
||||
s_mode_list.generic.y = 0;
|
||||
s_mode_list.itemnames = resolutions;
|
||||
|
||||
s_screensize_slider[SOFTWARE_MENU].curvalue = scr_viewsize->value/10;
|
||||
s_screensize_slider[OPENGL_MENU].curvalue = scr_viewsize->value/10;
|
||||
s_screensize_slider.generic.type = MTYPE_SLIDER;
|
||||
s_screensize_slider.generic.x = 0;
|
||||
s_screensize_slider.generic.y = 10;
|
||||
s_screensize_slider.generic.name = "screen size";
|
||||
s_screensize_slider.minvalue = 3;
|
||||
s_screensize_slider.maxvalue = 12;
|
||||
s_screensize_slider.generic.callback = ScreenSizeCallback;
|
||||
|
||||
if ( strcmp( vid_ref->string, "soft" ) == 0 )
|
||||
{
|
||||
s_current_menu_index = SOFTWARE_MENU;
|
||||
s_ref_list[0].curvalue = s_ref_list[1].curvalue = REF_SOFT;
|
||||
}
|
||||
else if ( strcmp( vid_ref->string, "gl" ) == 0 )
|
||||
{
|
||||
s_current_menu_index = OPENGL_MENU;
|
||||
if ( strcmp( gl_driver->string, "3dfxgl" ) == 0 )
|
||||
s_ref_list[s_current_menu_index].curvalue = REF_3DFX;
|
||||
else if ( strcmp( gl_driver->string, "pvrgl" ) == 0 )
|
||||
s_ref_list[s_current_menu_index].curvalue = REF_POWERVR;
|
||||
else if ( strcmp( gl_driver->string, "opengl32" ) == 0 )
|
||||
s_ref_list[s_current_menu_index].curvalue = REF_OPENGL;
|
||||
else
|
||||
// s_ref_list[s_current_menu_index].curvalue = REF_VERITE;
|
||||
s_ref_list[s_current_menu_index].curvalue = REF_OPENGL;
|
||||
}
|
||||
s_brightness_slider.generic.type = MTYPE_SLIDER;
|
||||
s_brightness_slider.generic.x = 0;
|
||||
s_brightness_slider.generic.y = 20;
|
||||
s_brightness_slider.generic.name = "brightness";
|
||||
s_brightness_slider.generic.callback = BrightnessCallback;
|
||||
s_brightness_slider.minvalue = 5;
|
||||
s_brightness_slider.maxvalue = 13;
|
||||
s_brightness_slider.curvalue = ( 1.3 - vid_gamma->value + 0.5 ) * 10;
|
||||
|
||||
s_software_menu.x = viddef.width * 0.50;
|
||||
s_software_menu.nitems = 0;
|
||||
s_opengl_menu.x = viddef.width * 0.50;
|
||||
s_opengl_menu.nitems = 0;
|
||||
s_fs_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_fs_box.generic.x = 0;
|
||||
s_fs_box.generic.y = 30;
|
||||
s_fs_box.generic.name = "fullscreen";
|
||||
s_fs_box.itemnames = yesno_names;
|
||||
s_fs_box.curvalue = vid_fullscreen->value;
|
||||
|
||||
for ( i = 0; i < 2; i++ )
|
||||
{
|
||||
s_ref_list[i].generic.type = MTYPE_SPINCONTROL;
|
||||
s_ref_list[i].generic.name = "driver";
|
||||
s_ref_list[i].generic.x = 0;
|
||||
s_ref_list[i].generic.y = 0;
|
||||
s_ref_list[i].generic.callback = DriverCallback;
|
||||
s_ref_list[i].itemnames = refs;
|
||||
|
||||
s_mode_list[i].generic.type = MTYPE_SPINCONTROL;
|
||||
s_mode_list[i].generic.name = "video mode";
|
||||
s_mode_list[i].generic.x = 0;
|
||||
s_mode_list[i].generic.y = 10;
|
||||
s_mode_list[i].itemnames = resolutions;
|
||||
|
||||
s_screensize_slider[i].generic.type = MTYPE_SLIDER;
|
||||
s_screensize_slider[i].generic.x = 0;
|
||||
s_screensize_slider[i].generic.y = 20;
|
||||
s_screensize_slider[i].generic.name = "screen size";
|
||||
s_screensize_slider[i].minvalue = 3;
|
||||
s_screensize_slider[i].maxvalue = 12;
|
||||
s_screensize_slider[i].generic.callback = ScreenSizeCallback;
|
||||
|
||||
s_brightness_slider[i].generic.type = MTYPE_SLIDER;
|
||||
s_brightness_slider[i].generic.x = 0;
|
||||
s_brightness_slider[i].generic.y = 30;
|
||||
s_brightness_slider[i].generic.name = "brightness";
|
||||
s_brightness_slider[i].generic.callback = BrightnessCallback;
|
||||
s_brightness_slider[i].minvalue = 5;
|
||||
s_brightness_slider[i].maxvalue = 13;
|
||||
s_brightness_slider[i].curvalue = ( 1.3 - vid_gamma->value + 0.5 ) * 10;
|
||||
|
||||
s_fs_box[i].generic.type = MTYPE_SPINCONTROL;
|
||||
s_fs_box[i].generic.x = 0;
|
||||
s_fs_box[i].generic.y = 40;
|
||||
s_fs_box[i].generic.name = "fullscreen";
|
||||
s_fs_box[i].itemnames = yesno_names;
|
||||
s_fs_box[i].curvalue = vid_fullscreen->value;
|
||||
|
||||
s_defaults_action[i].generic.type = MTYPE_ACTION;
|
||||
s_defaults_action[i].generic.name = "reset to defaults";
|
||||
s_defaults_action[i].generic.x = 0;
|
||||
s_defaults_action[i].generic.y = 90;
|
||||
s_defaults_action[i].generic.callback = ResetDefaults;
|
||||
|
||||
s_cancel_action[i].generic.type = MTYPE_ACTION;
|
||||
s_cancel_action[i].generic.name = "cancel";
|
||||
s_cancel_action[i].generic.x = 0;
|
||||
s_cancel_action[i].generic.y = 100;
|
||||
s_cancel_action[i].generic.callback = CancelChanges;
|
||||
}
|
||||
|
||||
s_stipple_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_stipple_box.generic.x = 0;
|
||||
s_stipple_box.generic.y = 60;
|
||||
s_stipple_box.generic.name = "stipple alpha";
|
||||
s_stipple_box.curvalue = sw_stipplealpha->value;
|
||||
s_stipple_box.itemnames = yesno_names;
|
||||
|
||||
s_tq_slider.generic.type = MTYPE_SLIDER;
|
||||
s_tq_slider.generic.x = 0;
|
||||
s_tq_slider.generic.y = 60;
|
||||
s_tq_slider.generic.name = "texture quality";
|
||||
s_tq_slider.generic.type = MTYPE_SLIDER;
|
||||
s_tq_slider.generic.x = 0;
|
||||
s_tq_slider.generic.y = 40;
|
||||
s_tq_slider.generic.name = "texture quality";
|
||||
s_tq_slider.minvalue = 0;
|
||||
s_tq_slider.maxvalue = 3;
|
||||
s_tq_slider.curvalue = 3-gl_picmip->value;
|
||||
s_tq_slider.curvalue = 3 - gl_picmip->value;
|
||||
|
||||
s_paletted_texture_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_paletted_texture_box.generic.x = 0;
|
||||
s_paletted_texture_box.generic.y = 70;
|
||||
s_paletted_texture_box.generic.name = "8-bit textures";
|
||||
s_paletted_texture_box.generic.x = 0;
|
||||
s_paletted_texture_box.generic.y = 50;
|
||||
s_paletted_texture_box.generic.name = "8-bit textures";
|
||||
s_paletted_texture_box.itemnames = yesno_names;
|
||||
s_paletted_texture_box.curvalue = gl_ext_palettedtexture->value;
|
||||
|
||||
s_finish_box.generic.type = MTYPE_SPINCONTROL;
|
||||
s_finish_box.generic.x = 0;
|
||||
s_finish_box.generic.y = 80;
|
||||
s_finish_box.generic.name = "sync every frame";
|
||||
s_finish_box.generic.x = 0;
|
||||
s_finish_box.generic.y = 60;
|
||||
s_finish_box.generic.name = "sync every frame";
|
||||
s_finish_box.curvalue = gl_finish->value;
|
||||
s_finish_box.itemnames = yesno_names;
|
||||
|
||||
Menu_AddItem( &s_software_menu, ( void * ) &s_ref_list[SOFTWARE_MENU] );
|
||||
Menu_AddItem( &s_software_menu, ( void * ) &s_mode_list[SOFTWARE_MENU] );
|
||||
Menu_AddItem( &s_software_menu, ( void * ) &s_screensize_slider[SOFTWARE_MENU] );
|
||||
Menu_AddItem( &s_software_menu, ( void * ) &s_brightness_slider[SOFTWARE_MENU] );
|
||||
Menu_AddItem( &s_software_menu, ( void * ) &s_fs_box[SOFTWARE_MENU] );
|
||||
Menu_AddItem( &s_software_menu, ( void * ) &s_stipple_box );
|
||||
s_defaults_action.generic.type = MTYPE_ACTION;
|
||||
s_defaults_action.generic.name = "reset to defaults";
|
||||
s_defaults_action.generic.x = 0;
|
||||
s_defaults_action.generic.y = 80;
|
||||
s_defaults_action.generic.callback = ResetDefaults;
|
||||
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_ref_list[OPENGL_MENU] );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_mode_list[OPENGL_MENU] );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_screensize_slider[OPENGL_MENU] );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_brightness_slider[OPENGL_MENU] );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_fs_box[OPENGL_MENU] );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_tq_slider );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_paletted_texture_box );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_finish_box );
|
||||
s_cancel_action.generic.type = MTYPE_ACTION;
|
||||
s_cancel_action.generic.name = "cancel";
|
||||
s_cancel_action.generic.x = 0;
|
||||
s_cancel_action.generic.y = 90;
|
||||
s_cancel_action.generic.callback = CancelChanges;
|
||||
|
||||
Menu_AddItem( &s_software_menu, ( void * ) &s_defaults_action[SOFTWARE_MENU] );
|
||||
Menu_AddItem( &s_software_menu, ( void * ) &s_cancel_action[SOFTWARE_MENU] );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_defaults_action[OPENGL_MENU] );
|
||||
Menu_AddItem( &s_opengl_menu, ( void * ) &s_cancel_action[OPENGL_MENU] );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_mode_list );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_screensize_slider );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_brightness_slider );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_fs_box );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_tq_slider );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_paletted_texture_box );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_finish_box );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_defaults_action );
|
||||
Menu_AddItem( &s_video_menu, ( void * ) &s_cancel_action );
|
||||
|
||||
Menu_Center( &s_software_menu );
|
||||
Menu_Center( &s_opengl_menu );
|
||||
s_opengl_menu.x -= 8;
|
||||
s_software_menu.x -= 8;
|
||||
Menu_Center( &s_video_menu );
|
||||
s_video_menu.x -= 8;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -406,26 +215,15 @@ void VID_MenuDraw (void)
|
|||
{
|
||||
int w, h;
|
||||
|
||||
if ( s_current_menu_index == 0 )
|
||||
s_current_menu = &s_software_menu;
|
||||
else
|
||||
s_current_menu = &s_opengl_menu;
|
||||
|
||||
/*
|
||||
** draw the banner
|
||||
*/
|
||||
// draw the banner
|
||||
re->DrawGetPicSize( &w, &h, "m_banner_video" );
|
||||
re->DrawPic( viddef.width / 2 - w / 2, viddef.height /2 - 110, "m_banner_video" );
|
||||
|
||||
/*
|
||||
** move cursor to a reasonable starting position
|
||||
*/
|
||||
Menu_AdjustCursor( s_current_menu, 1 );
|
||||
// move cursor to a reasonable starting position
|
||||
Menu_AdjustCursor( &s_video_menu, 1 );
|
||||
|
||||
/*
|
||||
** draw the menu
|
||||
*/
|
||||
Menu_Draw( s_current_menu );
|
||||
// draw the menu
|
||||
Menu_Draw( &s_video_menu );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -435,7 +233,7 @@ VID_MenuKey
|
|||
*/
|
||||
const char *VID_MenuKey( int key )
|
||||
{
|
||||
menuframework_s *m = s_current_menu;
|
||||
menuframework_s *m = &s_video_menu;
|
||||
static const char *sound = "misc/menu1.wav";
|
||||
|
||||
switch ( key )
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
HINSTANCE base_hInstance;
|
||||
FILE *logfile;
|
||||
char log_path[256];
|
||||
|
||||
/*
|
||||
===============================================================================
|
||||
|
@ -231,7 +232,7 @@ void Sys_PrintW(const char *pMsg)
|
|||
{
|
||||
if (!logfile)
|
||||
{
|
||||
logfile = fopen ("engine.log", "w");
|
||||
logfile = fopen ( log_path, "w");
|
||||
fprintf (logfile, "=======================================================================\n" );
|
||||
fprintf (logfile, "\t\tXash3D started at %s\n", Log_Timestamp());
|
||||
fprintf (logfile, "=======================================================================\n");
|
||||
|
|
|
@ -63,12 +63,14 @@ void LookupInstance( const char *funcname )
|
|||
//don't show console as default
|
||||
if(!debug_mode) show_always = false;
|
||||
strcpy(dllname, "bin/engine.dll" );
|
||||
strcpy(log_path, "engine.log" ); // xash3d root directory
|
||||
}
|
||||
else if(!strcmp(progname, "host_dedicated"))
|
||||
{
|
||||
app_name = HOST_DEDICATED;
|
||||
console_read_only = false;
|
||||
strcpy(dllname, "bin/engine.dll" );
|
||||
strcpy(log_path, "engine.log" ); // xash3d root directory
|
||||
}
|
||||
else if(!strcmp(progname, "host_editor"))
|
||||
{
|
||||
|
@ -77,21 +79,25 @@ void LookupInstance( const char *funcname )
|
|||
//don't show console as default
|
||||
if(!debug_mode) show_always = false;
|
||||
strcpy(dllname, "bin/editor.dll" );
|
||||
strcpy(log_path, "editor.log" ); // xash3d root directory
|
||||
}
|
||||
else if(!strcmp(progname, "bsplib"))
|
||||
{
|
||||
app_name = BSPLIB;
|
||||
strcpy(dllname, "bin/platform.dll" );
|
||||
strcpy(log_path, "bsplib.log" ); // xash3d root directory
|
||||
}
|
||||
else if(!strcmp(progname, "sprite"))
|
||||
{
|
||||
app_name = SPRITE;
|
||||
strcpy(dllname, "bin/platform.dll" );
|
||||
sprintf(log_path, "%s/spritegen.log", sys_rootdir ); // same as .exe file
|
||||
}
|
||||
else if(!strcmp(progname, "studio"))
|
||||
{
|
||||
app_name = STUDIO;
|
||||
strcpy(dllname, "bin/platform.dll" );
|
||||
sprintf(log_path, "%s/studiomdl.log", sys_rootdir ); // same as .exe file
|
||||
}
|
||||
else if(!strcmp(progname, "credits")) //easter egg
|
||||
{
|
||||
|
@ -340,15 +346,14 @@ void InitLauncher( char *funcname )
|
|||
if(abs((short)hStdout) < 100) hooked_out = false;
|
||||
else hooked_out = true;
|
||||
|
||||
UpdateEnvironmentVariables(); // set working directory
|
||||
|
||||
//init launcher
|
||||
LookupInstance( funcname );
|
||||
HOST_MakeStubs();//make sure what all functions are filled
|
||||
API_SetConsole(); //initialize system console
|
||||
Sys_InitConsole();
|
||||
|
||||
// set working directory
|
||||
UpdateEnvironmentVariables();
|
||||
|
||||
// first text message into console or log
|
||||
Msg("------- Loading bin/launcher.dll [%g] -------\n", LAUNCHER_VERSION );
|
||||
CreateInstance();
|
||||
|
|
|
@ -36,6 +36,8 @@ extern bool debug_mode;
|
|||
extern bool log_active;
|
||||
extern int com_argc;
|
||||
extern char *com_argv[MAX_NUM_ARGVS];
|
||||
extern char sys_rootdir[ MAX_SYSPATH ];
|
||||
extern char log_path[256];
|
||||
extern bool console_read_only;
|
||||
extern bool show_always;
|
||||
char *va(const char *format, ...);
|
||||
|
|
|
@ -97,7 +97,7 @@ bool AddScriptToStack(const char *name, byte *buffer, int size)
|
|||
{
|
||||
if (script == &scriptstack[MAX_INCLUDES - 1])
|
||||
{
|
||||
Msg("script file exceeded limit %d", MAX_INCLUDES );
|
||||
MsgWarn("AddScriptToStack: script file limit exceeded %d\n", MAX_INCLUDES );
|
||||
return false;
|
||||
}
|
||||
if(!buffer || !size) return false;
|
||||
|
@ -105,7 +105,7 @@ bool AddScriptToStack(const char *name, byte *buffer, int size)
|
|||
script++;
|
||||
strcpy (script->filename, name );
|
||||
script->buffer = buffer;
|
||||
script->line = 1;
|
||||
script->line = scriptline = 1;
|
||||
script->script_p = script->buffer;
|
||||
script->end_p = script->buffer + size;
|
||||
|
||||
|
@ -121,7 +121,6 @@ bool FS_LoadScript( const char *filename, char *buf, int size )
|
|||
|
||||
script = scriptstack;
|
||||
result = AddScriptToStack( filename, buf, size);
|
||||
if(result)MsgDev("Load script %s\n", filename );
|
||||
|
||||
endofscript = false;
|
||||
tokenready = false;
|
||||
|
@ -130,15 +129,9 @@ bool FS_LoadScript( const char *filename, char *buf, int size )
|
|||
|
||||
bool FS_AddScript( const char *filename, char *buf, int size )
|
||||
{
|
||||
int result;
|
||||
|
||||
if(!buf || size <= 0)
|
||||
buf = FS_LoadFile (filename, &size );
|
||||
|
||||
result = AddScriptToStack(filename, buf, size);
|
||||
if(result) MsgDev("Insert script %s\n", filename );
|
||||
|
||||
return result;
|
||||
return AddScriptToStack(filename, buf, size);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -165,6 +158,7 @@ skip_whitespace: // skip whitespace
|
|||
{
|
||||
if (script->script_p >= script->end_p)
|
||||
return EndOfScript (newline);
|
||||
|
||||
if (*script->script_p++ == '\n')
|
||||
{
|
||||
if (!newline) goto line_incomplete;
|
||||
|
@ -180,13 +174,15 @@ skip_whitespace: // skip whitespace
|
|||
{
|
||||
if (!newline) goto line_incomplete;
|
||||
|
||||
//ets+++
|
||||
// ets+++
|
||||
if (*script->script_p == '/') script->script_p++;
|
||||
if (script->script_p[1] == 'T' && script->script_p[2] == 'X')
|
||||
g_TXcommand = script->script_p[3];//TX#"-style comment
|
||||
while (*script->script_p++ != '\n')
|
||||
{
|
||||
if (script->script_p >= script->end_p)
|
||||
return EndOfScript (newline);
|
||||
}
|
||||
goto skip_whitespace;
|
||||
}
|
||||
|
||||
|
@ -194,12 +190,17 @@ skip_whitespace: // skip whitespace
|
|||
if (script->script_p[0] == '/' && script->script_p[1] == '*')
|
||||
{
|
||||
if (!newline) goto line_incomplete;
|
||||
script->script_p+=2;
|
||||
|
||||
script->script_p += 2;
|
||||
while (script->script_p[0] != '*' && script->script_p[1] != '/')
|
||||
{
|
||||
script->script_p++;
|
||||
if (script->script_p >= script->end_p)
|
||||
return EndOfScript (newline);
|
||||
if (*script->script_p++ == '\n')
|
||||
{
|
||||
if (!newline) goto line_incomplete;
|
||||
scriptline = script->line++;
|
||||
}
|
||||
}
|
||||
script->script_p += 2;
|
||||
goto skip_whitespace;
|
||||
|
@ -216,7 +217,7 @@ skip_whitespace: // skip whitespace
|
|||
{
|
||||
if (token_p == &token[MAX_SYSPATH - 1])
|
||||
{
|
||||
Msg("GetToken: Token too large on line %i\n", scriptline);
|
||||
MsgWarn("GetToken: Token too large on line %i\n", scriptline);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -232,7 +233,7 @@ skip_whitespace: // skip whitespace
|
|||
{
|
||||
if (token_p == &token[MAX_SYSPATH - 1])
|
||||
{
|
||||
Msg("GetToken: Token too large on line %i\n",scriptline);
|
||||
MsgWarn("GetToken: Token too large on line %i\n",scriptline);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -254,7 +255,6 @@ skip_whitespace: // skip whitespace
|
|||
return true;
|
||||
|
||||
line_incomplete:
|
||||
|
||||
//invoke error
|
||||
return EndOfScript( newline );
|
||||
}
|
||||
|
@ -266,8 +266,11 @@ EndOfScript
|
|||
*/
|
||||
bool EndOfScript (bool newline)
|
||||
{
|
||||
if (!newline) Sys_Error ("Line %i is incomplete\n", scriptline);
|
||||
|
||||
if (!newline)
|
||||
{
|
||||
scriptline = script->line;
|
||||
Sys_Error ("%s: line %i is incomplete\n", script->filename, scriptline);
|
||||
}
|
||||
if (!strcmp (script->filename, "script buffer"))
|
||||
{
|
||||
endofscript = true;
|
||||
|
@ -284,8 +287,6 @@ bool EndOfScript (bool newline)
|
|||
scriptline = script->line;
|
||||
endofscript = true;
|
||||
|
||||
MsgDev("returning to %s\n", script->filename);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -325,100 +326,6 @@ SC_ParseToken
|
|||
Parse a token out of a string
|
||||
==============
|
||||
*/
|
||||
|
||||
#if 0
|
||||
char *SC_ParseToken(const char **data_p)
|
||||
{
|
||||
int c, len;
|
||||
const char *data;
|
||||
|
||||
data = *data_p;
|
||||
len = 0;
|
||||
token[0] = 0;
|
||||
|
||||
if (!data)
|
||||
{
|
||||
*data_p = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// skip whitespace
|
||||
skipwhite:
|
||||
while ( (c = *data) <= ' ')
|
||||
{
|
||||
if (c == 0)
|
||||
{
|
||||
endofscript = true;
|
||||
*data_p = NULL;
|
||||
return NULL; // end of file;
|
||||
}
|
||||
data++;
|
||||
}
|
||||
|
||||
// skip // comments
|
||||
if (c=='/' && data[1] == '/')
|
||||
{
|
||||
while (*data && *data != '\n')
|
||||
data++;
|
||||
goto skipwhite;
|
||||
}
|
||||
|
||||
// skip /* comments
|
||||
if (c=='/' && data[1] == '*')
|
||||
{
|
||||
while (data[1] && (data[0] != '*' || data[1] != '/'))
|
||||
data++;
|
||||
data += 2;
|
||||
goto skipwhite;
|
||||
}
|
||||
|
||||
|
||||
// handle quoted strings specially
|
||||
if (c == '\"')
|
||||
{
|
||||
data++;
|
||||
while( 1 )
|
||||
{
|
||||
c = *data++;
|
||||
if (c=='\"'|| c== '\0')
|
||||
{
|
||||
token[len] = 0;
|
||||
*data_p = data;
|
||||
return token;
|
||||
}
|
||||
token[len] = c;
|
||||
len++;
|
||||
}
|
||||
}
|
||||
|
||||
// parse single characters
|
||||
if (c == '{' || c == '}'|| c == ')' || c == '(' || c == '\'' || c == ':' || c == ',')
|
||||
{
|
||||
token[len] = c;
|
||||
len++;
|
||||
token[len] = 0;
|
||||
*data_p = data;
|
||||
return token + 1;
|
||||
}
|
||||
|
||||
// parse a regular word
|
||||
do
|
||||
{
|
||||
token[len] = c;
|
||||
data++;
|
||||
len++;
|
||||
c = *data;
|
||||
if (c == '{' || c == '}'|| c == ')'|| c == '(' || c == '\'' || c == ':' || c == '\"' || c == ',')
|
||||
break;
|
||||
} while(c > 32);
|
||||
|
||||
token[len] = 0;
|
||||
*data_p = data;
|
||||
return token;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
char *SC_ParseToken(const char **data_p)
|
||||
{
|
||||
int c;
|
||||
|
@ -435,8 +342,8 @@ char *SC_ParseToken(const char **data_p)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// skip whitespace
|
||||
skipwhite:
|
||||
|
||||
skipwhite: // skip whitespace
|
||||
while ( (c = *data) <= ' ')
|
||||
{
|
||||
if (c == 0)
|
||||
|
@ -447,7 +354,7 @@ skipwhite:
|
|||
data++;
|
||||
}
|
||||
|
||||
// skip // comments
|
||||
// skip // comments
|
||||
if (c=='/' && data[1] == '/')
|
||||
{
|
||||
while (*data && *data != '\n')
|
||||
|
@ -455,7 +362,7 @@ skipwhite:
|
|||
goto skipwhite;
|
||||
}
|
||||
|
||||
// handle quoted strings specially
|
||||
// handle quoted strings specially
|
||||
if (c == '\"')
|
||||
{
|
||||
data++;
|
||||
|
@ -476,7 +383,7 @@ skipwhite:
|
|||
}
|
||||
}
|
||||
|
||||
// parse a regular word
|
||||
// parse a regular word
|
||||
do
|
||||
{
|
||||
if (len < MAX_OSPATH)
|
||||
|
@ -488,17 +395,12 @@ skipwhite:
|
|||
c = *data;
|
||||
} while (c > 32);
|
||||
|
||||
if (len == MAX_OSPATH)
|
||||
{
|
||||
// Msg ("Token exceeded %i chars, discarded.\n", MAX_TOKEN_CHARS);
|
||||
len = 0;
|
||||
}
|
||||
if (len == MAX_OSPATH) len = 0;
|
||||
token[len] = 0;
|
||||
|
||||
*data_p = data;
|
||||
return token;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
=============================================================================
|
||||
|
@ -1130,16 +1032,15 @@ used for make sprites and models (old stuff)
|
|||
================
|
||||
*/
|
||||
|
||||
|
||||
byte *ReadBMP (char *filename, byte **palette, int *width, int *height)
|
||||
{
|
||||
byte *buf_p, *pbBmpBits;
|
||||
byte *buf, *pb, *pbPal = NULL;
|
||||
int i, filesize, columns, rows;
|
||||
ULONG cbBmpBits;
|
||||
ULONG cbPalBytes;
|
||||
ULONG biTrueWidth;
|
||||
bmp_t bhdr;
|
||||
byte *buf_p, *pbBmpBits;
|
||||
byte *buf, *pb, *pbPal = NULL;
|
||||
int i, filesize, columns, rows;
|
||||
dword cbBmpBits;
|
||||
dword cbPalBytes;
|
||||
dword biTrueWidth;
|
||||
bmp_t bhdr;
|
||||
|
||||
RGBQUAD rgrgbPalette[256];
|
||||
|
||||
|
@ -1150,7 +1051,7 @@ byte *ReadBMP (char *filename, byte **palette, int *width, int *height)
|
|||
//blank_frame
|
||||
buf_p = (char *)blank_frame;
|
||||
filesize = sizeof(blank_frame);
|
||||
Msg("Warning: couldn't load %s\n", filename );
|
||||
MsgWarn("ReadBMP: couldn't load %s, use blank image\n", filename );
|
||||
}
|
||||
|
||||
bhdr.id[0] = *buf_p++;
|
||||
|
@ -1176,21 +1077,21 @@ byte *ReadBMP (char *filename, byte **palette, int *width, int *height)
|
|||
|
||||
if (memcmp(bhdr.id, "BM", 2))
|
||||
{
|
||||
Msg("ReadBMP: only Windows-style BMP files supported (%s)\n", filename );
|
||||
MsgWarn("ReadBMP: only Windows-style BMP files supported (%s)\n", filename );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Bogus info header check
|
||||
if (bhdr.fileSize != filesize)
|
||||
{
|
||||
Msg("ReadBMP: incorrect file size %i should be %i\n", filesize, bhdr.fileSize);
|
||||
MsgWarn("ReadBMP: incorrect file size %i should be %i\n", filesize, bhdr.fileSize);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Bogus bit depth? Only 8-bit supported.
|
||||
if (bhdr.bitsPerPixel != 8)
|
||||
{
|
||||
Msg("ReadBMP: %d not a 8 bit image\n", bhdr.bitsPerPixel );
|
||||
MsgWarn("ReadBMP: %d not a 8 bit image\n", bhdr.bitsPerPixel );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -1281,15 +1182,23 @@ static int enter;
|
|||
void ThreadLock (void)
|
||||
{
|
||||
if (!threaded) return;
|
||||
if (enter)
|
||||
{
|
||||
MsgWarn("ThreadLock: recursive call\n");
|
||||
return;
|
||||
}
|
||||
EnterCriticalSection (&crit);
|
||||
if (enter) Sys_Error ("Recursive ThreadLock\n");
|
||||
enter = 1;
|
||||
}
|
||||
|
||||
void ThreadUnlock (void)
|
||||
{
|
||||
if (!threaded) return;
|
||||
if (!enter) Sys_Error ("ThreadUnlock without lock\n");
|
||||
if (!enter)
|
||||
{
|
||||
MsgWarn("ThreadUnlock: must call ThreadLock first\n");
|
||||
return;
|
||||
}
|
||||
enter = 0;
|
||||
LeaveCriticalSection (&crit);
|
||||
}
|
||||
|
@ -1327,7 +1236,7 @@ void ThreadWorkerFunction (int threadnum)
|
|||
|
||||
while (1)
|
||||
{
|
||||
work = GetThreadWork ();
|
||||
work = GetThreadWork();
|
||||
if (work == -1) break;
|
||||
workfunction(work);
|
||||
}
|
||||
|
@ -1342,7 +1251,7 @@ void ThreadSetDefault (void)
|
|||
if (numthreads < 1 || numthreads > MAX_THREADS)
|
||||
numthreads = 1;
|
||||
}
|
||||
MsgDev("%i thread%s\n", numthreads, numthreads== 1 ? "" : "s" );
|
||||
MsgDev("%i thread%s\n", numthreads, numthreads == 1 ? "" : "s" );
|
||||
}
|
||||
|
||||
void RunThreadsOnIndividual (int workcnt, bool showpacifier, void(*func)(int))
|
||||
|
|
|
@ -111,7 +111,7 @@ extern char gs_mapname[ 64 ];
|
|||
extern char gs_basedir[ MAX_SYSPATH ];
|
||||
extern char g_TXcommand;
|
||||
extern bool endofscript;
|
||||
|
||||
extern bool host_debug;
|
||||
|
||||
extern int fs_argc;
|
||||
extern char **fs_argv;
|
||||
|
|
|
@ -495,11 +495,11 @@ epair_t *ParseEpair (void)
|
|||
|
||||
e = Malloc (sizeof(epair_t));
|
||||
|
||||
if (strlen(token) >= MAX_KEY - 1) Sys_Error ("ParseEpar: token too long");
|
||||
e->key = copystring(token);
|
||||
if (strlen(SC_Token()) >= MAX_KEY - 1) Sys_Error ("ParseEpar: token too long");
|
||||
e->key = copystring(SC_Token());
|
||||
SC_GetToken (false);
|
||||
if (strlen(token) >= MAX_VALUE - 1) Sys_Error ("ParseEpar: token too long");
|
||||
e->value = copystring(token);
|
||||
if (strlen(SC_Token()) >= MAX_VALUE - 1) Sys_Error ("ParseEpar: token too long");
|
||||
e->value = copystring(SC_Token());
|
||||
|
||||
// strip trailing spaces
|
||||
StripTrailing (e->key);
|
||||
|
|
|
@ -559,7 +559,7 @@ void ParseBrush (bsp_entity_t *mapent)
|
|||
for (j=0 ; j<3 ; j++)
|
||||
{
|
||||
SC_GetToken (false);
|
||||
planepts[i][j] = atof(token);
|
||||
planepts[i][j] = atof(SC_Token());
|
||||
}
|
||||
|
||||
SC_GetToken (false);
|
||||
|
@ -568,37 +568,37 @@ void ParseBrush (bsp_entity_t *mapent)
|
|||
|
||||
// read the texturedef
|
||||
SC_GetToken (false);
|
||||
strcpy (td.name, token);
|
||||
strcpy (td.name, SC_Token());
|
||||
|
||||
if(g_mapversion == VALVE_FORMAT) // Worldcraft 2.2+
|
||||
{
|
||||
// texture U axis
|
||||
SC_GetToken(false);
|
||||
if (strcmp(token, "[")) Sys_Error("missing '[' in texturedef (U)");
|
||||
if (strcmp(SC_Token(), "[")) Sys_Error("missing '[' in texturedef (U)");
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.UAxis[0] = atof(token);
|
||||
td.vects.valve.UAxis[0] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.UAxis[1] = atof(token);
|
||||
td.vects.valve.UAxis[1] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.UAxis[2] = atof(token);
|
||||
td.vects.valve.UAxis[2] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.shift[0] = atof(token);
|
||||
td.vects.valve.shift[0] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
if (strcmp(token, "]")) Sys_Error("missing ']' in texturedef (U)");
|
||||
if (strcmp(SC_Token(), "]")) Sys_Error("missing ']' in texturedef (U)");
|
||||
|
||||
// texture V axis
|
||||
SC_GetToken(false);
|
||||
if (strcmp(token, "[")) Sys_Error("missing '[' in texturedef (V)");
|
||||
if (strcmp(SC_Token(), "[")) Sys_Error("missing '[' in texturedef (V)");
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.VAxis[0] = atof(token);
|
||||
td.vects.valve.VAxis[0] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.VAxis[1] = atof(token);
|
||||
td.vects.valve.VAxis[1] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.VAxis[2] = atof(token);
|
||||
td.vects.valve.VAxis[2] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.shift[1] = atof(token);
|
||||
td.vects.valve.shift[1] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
if (strcmp(token, "]")) Sys_Error("missing ']' in texturedef (V)");
|
||||
if (strcmp(SC_Token(), "]")) Sys_Error("missing ']' in texturedef (V)");
|
||||
|
||||
// Texture rotation is implicit in U/V axes.
|
||||
SC_GetToken(false);
|
||||
|
@ -606,23 +606,23 @@ void ParseBrush (bsp_entity_t *mapent)
|
|||
|
||||
// texure scale
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.scale[0] = atof(token);
|
||||
td.vects.valve.scale[0] = atof(SC_Token());
|
||||
SC_GetToken(false);
|
||||
td.vects.valve.scale[1] = atof(token);
|
||||
td.vects.valve.scale[1] = atof(SC_Token());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Worldcraft 2.1-, Radiant
|
||||
SC_GetToken (false);
|
||||
td.vects.valve.shift[0] = atof(token);
|
||||
td.vects.valve.shift[0] = atof(SC_Token());
|
||||
SC_GetToken (false);
|
||||
td.vects.valve.shift[1] = atof(token);
|
||||
td.vects.valve.shift[1] = atof(SC_Token());
|
||||
SC_GetToken (false);
|
||||
td.vects.valve.rotate = atof(token);
|
||||
td.vects.valve.rotate = atof(SC_Token());
|
||||
SC_GetToken (false);
|
||||
td.vects.valve.scale[0] = atof(token);
|
||||
td.vects.valve.scale[0] = atof(SC_Token());
|
||||
SC_GetToken (false);
|
||||
td.vects.valve.scale[1] = atof(token);
|
||||
td.vects.valve.scale[1] = atof(SC_Token());
|
||||
}
|
||||
|
||||
if ((g_TXcommand == '1' || g_TXcommand == '2'))
|
||||
|
@ -680,13 +680,13 @@ void ParseBrush (bsp_entity_t *mapent)
|
|||
|
||||
//Msg("flags %d, value %d, contents %d\n", td.flags, td.value, side->contents );
|
||||
|
||||
if (SC_TryToken()) //first token will be get automatically
|
||||
if (SC_TryToken()) //first SC_Token() will be get automatically
|
||||
{
|
||||
side->contents = atoi(token);
|
||||
side->contents = atoi(SC_Token());
|
||||
SC_GetToken (false);
|
||||
side->surf = td.flags = atoi(token);
|
||||
side->surf = td.flags = atoi(SC_Token());
|
||||
SC_GetToken (false);
|
||||
td.value = atoi(token);
|
||||
td.value = atoi(SC_Token());
|
||||
}
|
||||
|
||||
// translucent objects are automatically classified as detail
|
||||
|
|
|
@ -27,7 +27,7 @@ char inbase[32], outbase[32];
|
|||
|
||||
int fakeplanes; // created planes for origin offset
|
||||
|
||||
int numbounce = 8;
|
||||
int numbounce;
|
||||
bool extrasamples;
|
||||
|
||||
float subdiv = 64;
|
||||
|
@ -382,7 +382,7 @@ void BounceLight (void)
|
|||
}
|
||||
}
|
||||
|
||||
for (i=0 ; i<numbounce ; i++)
|
||||
for (i = 0; i < numbounce; i++)
|
||||
{
|
||||
RunThreadsOnIndividual (num_patches, false, ShootLight);
|
||||
added = CollectLight ();
|
||||
|
@ -466,6 +466,13 @@ void WradMain ( bool option )
|
|||
|
||||
Msg("---- Radiocity ---- [%s]\n", extrasamples ? "extra" : "normal" );
|
||||
|
||||
if( extrasamples )
|
||||
{
|
||||
numbounce = 8;
|
||||
ambient = 100; //FIXME: check result
|
||||
}
|
||||
else numbounce = 3;
|
||||
|
||||
ParseEntities ();
|
||||
CalcTextureReflectivity ();
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ static void ParseShaderFile( char *filename )
|
|||
if ( !SC_GetToken( true )) break;
|
||||
|
||||
si = AllocShaderInfo();
|
||||
strcpy( si->name, token );
|
||||
strcpy( si->name, SC_Token() );
|
||||
SC_GetToken( true );
|
||||
|
||||
if(!SC_MatchToken( "{" ))
|
||||
|
@ -141,31 +141,31 @@ static void ParseShaderFile( char *filename )
|
|||
while ( 1 )
|
||||
{
|
||||
if ( !SC_GetToken( true ) )break;
|
||||
if ( !strcmp( token, "}" ) ) break;
|
||||
if ( !strcmp( SC_Token(), "}" ) ) break;
|
||||
|
||||
// skip internal braced sections
|
||||
if ( !strcmp( token, "{" ) )
|
||||
if ( !strcmp( SC_Token(), "{" ) )
|
||||
{
|
||||
si->hasPasses = true;
|
||||
while ( 1 )
|
||||
{
|
||||
if ( !SC_GetToken( true )) break;
|
||||
if ( !strcmp( token, "}" )) break;
|
||||
if ( !strcmp( SC_Token(), "}" )) break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !stricmp( token, "nextframe" ))
|
||||
if ( !stricmp( SC_Token(), "nextframe" ))
|
||||
{
|
||||
SC_GetToken( false );
|
||||
strcpy(si->nextframe, token );
|
||||
strcpy(si->nextframe, SC_Token() );
|
||||
}
|
||||
if ( !stricmp( token, "surfaceparm" ))
|
||||
if ( !stricmp( SC_Token(), "surfaceparm" ))
|
||||
{
|
||||
SC_GetToken( false );
|
||||
for ( i = 0 ; i < numInfoParms ; i++ )
|
||||
{
|
||||
if ( !stricmp( token, infoParms[i].name ))
|
||||
if ( !stricmp( SC_Token(), infoParms[i].name ))
|
||||
{
|
||||
si->surfaceFlags |= infoParms[i].surfaceFlags;
|
||||
si->contents |= infoParms[i].contents;
|
||||
|
@ -177,26 +177,26 @@ static void ParseShaderFile( char *filename )
|
|||
continue;
|
||||
}
|
||||
// light color <value> <value> <value>
|
||||
if ( !stricmp( token, "radiocity" ) )
|
||||
if ( !stricmp( SC_Token(), "radiocity" ) )
|
||||
{
|
||||
SC_GetToken( false );
|
||||
si->color[0] = atof( token );
|
||||
si->color[0] = atof( SC_Token() );
|
||||
SC_GetToken( false );
|
||||
si->color[1] = atof( token );
|
||||
si->color[1] = atof( SC_Token() );
|
||||
SC_GetToken( false );
|
||||
si->color[2] = atof( token );
|
||||
si->color[2] = atof( SC_Token() );
|
||||
continue;
|
||||
}
|
||||
|
||||
// light intensity <value>
|
||||
if ( !stricmp( token, "intensity" ))
|
||||
if ( !stricmp( SC_Token(), "intensity" ))
|
||||
{
|
||||
SC_GetToken( false );
|
||||
si->intensity = atoi( token );
|
||||
si->intensity = atoi( SC_Token() );
|
||||
continue;
|
||||
}
|
||||
|
||||
// ignore all other tokens on the line
|
||||
// ignore all other SC_Token()s on the line
|
||||
while (SC_TryToken());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1506,7 +1506,7 @@ file_t* _FS_Open (const char* filepath, const char* mode, bool quiet, bool nonbl
|
|||
{
|
||||
if (FS_CheckNastyPath(filepath, false))
|
||||
{
|
||||
Sys_Error("FS_Open(\"%s\", \"%s\", %s): nasty filename rejected\n", filepath, mode, quiet ? "true" : "false");
|
||||
MsgWarn("FS_Open: (\"%s\", \"%s\"): nasty filename rejected\n", filepath, mode );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ bool LoadBMP( char *name, char *buffer, int filesize )
|
|||
*pixbuf++ = 0xff;
|
||||
break;
|
||||
case 16:
|
||||
shortPixel = * ( unsigned short *)pixbuf;
|
||||
shortPixel = *(word*)pixbuf;
|
||||
pixbuf += 2;
|
||||
*pixbuf++ = ( shortPixel & ( 31 << 10 ) ) >> 7;
|
||||
*pixbuf++ = ( shortPixel & ( 31 << 5 ) ) >> 2;
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
#include "baseutils.h"
|
||||
#include "bsplib.h"
|
||||
|
||||
bool host_debug = false;
|
||||
|
||||
gameinfo_t Plat_GameInfo( void )
|
||||
{
|
||||
return GI;
|
||||
|
@ -14,8 +16,6 @@ gameinfo_t Plat_GameInfo( void )
|
|||
|
||||
bool InitPlatform ( int argc, char **argv )
|
||||
{
|
||||
char parm[64];
|
||||
|
||||
Msg("------- Loading bin/platform.dll [%g] -------\n", PLATFORM_VERSION );
|
||||
|
||||
InitMemory();
|
||||
|
@ -23,12 +23,9 @@ bool InitPlatform ( int argc, char **argv )
|
|||
ThreadSetDefault();
|
||||
FS_Init( argc, argv );
|
||||
|
||||
// HACKHACK - bsplib additional cmds
|
||||
if(FS_GetParmFromCmdLine("-bounce", parm ))
|
||||
numbounce = atoi(parm);
|
||||
if(FS_CheckParm("-debug"))
|
||||
host_debug = true;
|
||||
|
||||
if(FS_GetParmFromCmdLine("-ambient", parm ))
|
||||
ambient = atof(parm) * 128;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -61,5 +61,6 @@ bool SC_TryToken ( void ); //safe way
|
|||
void SC_SkipToken( void );
|
||||
void SC_FreeToken( void );
|
||||
char *SC_ParseToken(const char **data_p);
|
||||
char *SC_Token( void );
|
||||
|
||||
#endif//BASEPLATFORM_H
|
|
@ -116,7 +116,7 @@ void WriteSPRFile (void)
|
|||
{
|
||||
file_t *f;
|
||||
|
||||
if(sprite.numframes == 0) Sys_Error ("no frames\n");
|
||||
if(sprite.numframes == 0) Sys_Error ("%s have no frames\n", spriteoutname );
|
||||
if((plump - lumpbuffer) > MAX_BUFFER_SIZE)
|
||||
Sys_Error ("Can't write %s, sprite package too big", spriteoutname );
|
||||
|
||||
|
@ -189,20 +189,20 @@ syntax "$load fire01.bmp"
|
|||
*/
|
||||
void Cmd_Load (void)
|
||||
{
|
||||
static byte origpalette[256*3];
|
||||
char *name = SC_GetToken ( false );
|
||||
static byte origpalette[256*3];
|
||||
char *name = SC_GetToken ( false );
|
||||
dspriteframe_t *pframe;
|
||||
int x, y, w, h, pix;
|
||||
byte *screen_p;
|
||||
int x, y, w, h, pix;
|
||||
byte *screen_p;
|
||||
|
||||
FS_DefaultExtension( name, ".bmp" );
|
||||
|
||||
byteimage = ReadBMP (name, &lbmpalette, &byteimagewidth, &byteimageheight);
|
||||
if(!byteimage) Sys_Error( "unable to load file \"%s\"\n", name );
|
||||
|
||||
if(sprite.numframes == 0) memcpy( origpalette, lbmpalette, sizeof( origpalette ));
|
||||
if(sprite.numframes == 0) Mem_Copy( origpalette, lbmpalette, sizeof( origpalette ));
|
||||
else if (memcmp( origpalette, lbmpalette, sizeof( origpalette )))
|
||||
Msg("Warning: %s doesn't share a pallette with the previous frame\n", name );
|
||||
MsgWarn("Cmd_Load: %s doesn't share a pallette with the previous frame\n", name );
|
||||
|
||||
w = byteimagewidth;
|
||||
h = byteimageheight;
|
||||
|
@ -280,7 +280,7 @@ void Cmd_Color( void )
|
|||
g = atoi(SC_GetToken (false));
|
||||
b = atoi(SC_GetToken (false));
|
||||
|
||||
if (SC_TryToken()) a = atoi(token);
|
||||
if (SC_TryToken()) a = atoi(SC_Token());
|
||||
else a = 0xFF;//fullbright
|
||||
|
||||
//pack into one integer
|
||||
|
@ -310,7 +310,7 @@ syntax: "blabla"
|
|||
*/
|
||||
void Cmd_SpriteUnknown( void )
|
||||
{
|
||||
MsgDev("Warning: bad command %s\n", token);
|
||||
MsgWarn("Cmd_SpriteUnknown: bad command %s\n", SC_Token());
|
||||
while(SC_TryToken());
|
||||
}
|
||||
|
||||
|
|
|
@ -15,17 +15,13 @@ char modeloutname[MAX_SYSPATH];
|
|||
int numrep;
|
||||
int flip_triangles;
|
||||
int dump_hboxes;
|
||||
int ignore_warnings;
|
||||
int gflags;
|
||||
|
||||
int cdtextureset;
|
||||
int maxseqgroupsize;
|
||||
int split_textures;
|
||||
int clip_texcoords;
|
||||
int numseq;
|
||||
int nummirrored;
|
||||
int numani;
|
||||
int numseqgroups;
|
||||
int numxnodes;
|
||||
int numrenamedbones;
|
||||
int totalframes = 0;
|
||||
|
@ -82,6 +78,7 @@ char mirrored[MAXSTUDIOSRCBONES][64];
|
|||
s_mesh_t *pmesh;
|
||||
studiohdr_t *phdr;
|
||||
studioseqhdr_t *pseqhdr;
|
||||
s_sequencegroup_t sequencegroup;
|
||||
s_trianglevert_t (*triangles)[3];
|
||||
s_model_t *model[MAXSTUDIOMODELS];
|
||||
s_bbox_t hitbox[MAXSTUDIOSRCBONES];
|
||||
|
@ -94,7 +91,6 @@ s_bonetable_t bonetable[MAXSTUDIOSRCBONES];
|
|||
s_attachment_t attachment[MAXSTUDIOSRCBONES];
|
||||
s_renamebone_t renamedbone[MAXSTUDIOSRCBONES];
|
||||
s_animation_t *panimation[MAXSTUDIOANIMATIONS];
|
||||
s_sequencegroup_t sequencegroup[MAXSTUDIOSEQUENCES];
|
||||
s_bonecontroller_t bonecontroller[MAXSTUDIOSRCBONES];
|
||||
|
||||
/*
|
||||
|
@ -312,17 +308,14 @@ void WriteSequenceInfo( void )
|
|||
|
||||
// save sequence group info
|
||||
pseqgroup = (mstudioseqgroup_t *)pData;
|
||||
phdr->numseqgroups = numseqgroups;
|
||||
phdr->numseqgroups = 1;
|
||||
phdr->seqgroupindex = (pData - pStart);
|
||||
pData += phdr->numseqgroups * sizeof( mstudioseqgroup_t );
|
||||
pData += sizeof( mstudioseqgroup_t );
|
||||
|
||||
ALIGN( pData );
|
||||
|
||||
for(i = 0; i < numseqgroups; i++)
|
||||
{
|
||||
strcpy( pseqgroup[i].label, sequencegroup[i].label );
|
||||
strcpy( pseqgroup[i].name, sequencegroup[i].name );
|
||||
}
|
||||
strcpy( pseqgroup->label, sequencegroup.label );
|
||||
strcpy( pseqgroup->name, sequencegroup.name );
|
||||
|
||||
// save transition graph
|
||||
ptransition = (byte *)pData;
|
||||
|
@ -348,9 +341,6 @@ byte *WriteAnimations( byte *pData, byte *pStart, int group )
|
|||
mstudioanim_t *panim;
|
||||
mstudioanimvalue_t *panimvalue;
|
||||
|
||||
// hack for seqgroup 0
|
||||
// pseqgroup->data = (pData - pStart);
|
||||
|
||||
for (i = 0; i < numseq; i++)
|
||||
{
|
||||
if (sequence[i].seqgroup == group)
|
||||
|
@ -383,7 +373,7 @@ byte *WriteAnimations( byte *pData, byte *pStart, int group )
|
|||
}
|
||||
}
|
||||
}
|
||||
if (((byte *)panimvalue - (byte *)panim) > 65535)
|
||||
if (((byte *)panimvalue - (byte *)panim) > 0xffff)
|
||||
Sys_Error("sequence \"%s\" is greater than 64K\n", sequence[i].name );
|
||||
panim++;
|
||||
}
|
||||
|
@ -598,60 +588,11 @@ WriteMDLFile
|
|||
*/
|
||||
void WriteMDLFile (void)
|
||||
{
|
||||
int i, total = 0;
|
||||
int total = 0;
|
||||
|
||||
pStart = Kalloc( FILEBUFFER );
|
||||
|
||||
FS_StripExtension( modeloutname );
|
||||
|
||||
for (i = 1; i < numseqgroups; i++)
|
||||
{
|
||||
// write the non-default sequence group data to separate files
|
||||
char groupname[128], localname[128];
|
||||
sprintf( groupname, "%s%02d.mdl", modeloutname, i );
|
||||
|
||||
Msg("writing %s\n", groupname);
|
||||
|
||||
pseqhdr = (studioseqhdr_t *)pStart;
|
||||
pseqhdr->id = IDSEQGRPHEADER;
|
||||
pseqhdr->version = STUDIO_VERSION;
|
||||
pData = pStart + sizeof( studioseqhdr_t );
|
||||
pData = WriteAnimations( pData, pStart, i );
|
||||
|
||||
FS_FileBase( groupname, localname );
|
||||
sprintf( sequencegroup[i].name, "models\\%s.mdl", localname );
|
||||
strcpy( pseqhdr->name, sequencegroup[i].name );
|
||||
pseqhdr->length = pData - pStart;
|
||||
|
||||
FS_WriteFile( groupname, pStart, pseqhdr->length );
|
||||
|
||||
Msg("total %6d\n", pseqhdr->length );
|
||||
memset( pStart, 0, pseqhdr->length );
|
||||
}
|
||||
|
||||
if (split_textures)
|
||||
{
|
||||
// write textures out to a separate file
|
||||
char texname[128];
|
||||
|
||||
sprintf( texname, "%sT.mdl", modeloutname );
|
||||
Msg ("writing %s\n", texname);
|
||||
|
||||
phdr = (studiohdr_t *)pStart;
|
||||
phdr->id = IDSTUDIOHEADER;
|
||||
phdr->version = STUDIO_VERSION;
|
||||
|
||||
pData = (byte *)phdr + sizeof( studiohdr_t );
|
||||
WriteTextures( );
|
||||
phdr->length = pData - pStart;
|
||||
|
||||
FS_WriteFile( texname, pStart, phdr->length );
|
||||
|
||||
Msg("textures %6d bytes\n", phdr->length );
|
||||
memset( pStart, 0, phdr->length );
|
||||
pData = pStart;
|
||||
}
|
||||
|
||||
// write the model output file
|
||||
FS_DefaultExtension( modeloutname, ".mdl" );
|
||||
|
||||
|
@ -685,14 +626,10 @@ void WriteMDLFile (void)
|
|||
Msg("models %6d bytes\n", pData - pStart - total );
|
||||
total = pData - pStart;
|
||||
|
||||
if (!split_textures)
|
||||
{
|
||||
WriteTextures();
|
||||
Msg("textures %6d bytes\n", pData - pStart - total );
|
||||
}
|
||||
WriteTextures();
|
||||
Msg("textures %6d bytes\n", pData - pStart - total );
|
||||
|
||||
phdr->length = pData - pStart;
|
||||
|
||||
FS_WriteFile( modeloutname, pStart, phdr->length );
|
||||
Msg("total %6d\n", phdr->length );
|
||||
}
|
||||
|
@ -794,7 +731,7 @@ void SimplifyModel (void)
|
|||
|
||||
if (n != m)
|
||||
{
|
||||
Msg("illegal parent bone replacement in model \"%s\"\n\t\"%s\" has \"%s\", previously was \"%s\"\n", model[i]->name, model[i]->node[j].name, (n != -1) ? bonetable[n].name : "ROOT", (m != -1) ? bonetable[m].name : "ROOT" );
|
||||
MsgWarn("SimplifyModel: illegal parent bone replacement in model \"%s\"\n\t\"%s\" has \"%s\", previously was \"%s\"\n", model[i]->name, model[i]->node[j].name, (n != -1) ? bonetable[n].name : "ROOT", (m != -1) ? bonetable[m].name : "ROOT" );
|
||||
iError++;
|
||||
}
|
||||
}
|
||||
|
@ -806,7 +743,7 @@ void SimplifyModel (void)
|
|||
}
|
||||
|
||||
//handle errors
|
||||
if (iError && !(ignore_warnings)) Sys_Error("unexpected errors, stop compilation\n");
|
||||
if (iError && !(host_debug)) Sys_Error("Unexpected errors, stop compilation\nRun with parm \"-debug\" to avoid this");
|
||||
if (numbones >= MAXSTUDIOBONES) Sys_Error( "Too many bones in model: used %d, max %d\n", numbones, MAXSTUDIOBONES );
|
||||
|
||||
// rename sequence bones if needed
|
||||
|
@ -845,7 +782,7 @@ void SimplifyModel (void)
|
|||
|
||||
if (strcmp(szAnim, szNode))
|
||||
{
|
||||
Msg("illegal parent bone replacement in sequence \"%s\"\n\t\"%s\" has \"%s\", reference has \"%s\"\n", sequence[i].name, sequence[i].panim[0]->node[j].name, szAnim, szNode );
|
||||
MsgWarn("SimplifyModel: illegal parent bone replacement in sequence \"%s\"\n\t\"%s\" has \"%s\", reference has \"%s\"\n", sequence[i].name, sequence[i].panim[0]->node[j].name, szAnim, szNode );
|
||||
iError++;
|
||||
}
|
||||
sequence[i].panim[0]->bonemap[j] = k;
|
||||
|
@ -855,7 +792,7 @@ void SimplifyModel (void)
|
|||
}
|
||||
|
||||
//handle errors
|
||||
if (iError && !(ignore_warnings)) Sys_Error("unexpected errors, stop compilation\n");
|
||||
if (iError && !(host_debug)) Sys_Error("unexpected errors, stop compilation\nRun with parm \"-debug\" to avoid this");
|
||||
|
||||
// link bonecontrollers
|
||||
for (i = 0; i < numbonecontrollers; i++)
|
||||
|
@ -867,7 +804,7 @@ void SimplifyModel (void)
|
|||
}
|
||||
if (j >= numbones)
|
||||
{
|
||||
Msg("Warning: unknown bonecontroller link '%s'\n", bonecontroller[i].name );
|
||||
MsgWarn("SimplifyModel: unknown bonecontroller link '%s'\n", bonecontroller[i].name );
|
||||
j = numbones - 1;
|
||||
}
|
||||
bonecontroller[i].bone = j;
|
||||
|
@ -883,7 +820,7 @@ void SimplifyModel (void)
|
|||
}
|
||||
if (j >= numbones)
|
||||
{
|
||||
Msg("Warning: unknown attachment link '%s'\n", attachment[i].bonename );
|
||||
MsgWarn("SimplifyModel: unknown attachment link '%s'\n", attachment[i].bonename );
|
||||
j = numbones - 1;
|
||||
}
|
||||
attachment[i].bone = j;
|
||||
|
@ -908,7 +845,11 @@ void SimplifyModel (void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (k >= numbones) Sys_Error( "cannot find bone %s for hitgroup %d\n", hitgroup[j].name, hitgroup[j].group );
|
||||
if (k >= numbones)
|
||||
{
|
||||
MsgWarn( "SimplifyModel: cannot find bone %s for hitgroup %d\n", hitgroup[j].name, hitgroup[j].group );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
for (k = 0; k < numbones; k++)
|
||||
|
@ -993,7 +934,11 @@ void SimplifyModel (void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (k >= numbones) Sys_Error( "cannot find bone %s for bbox\n", hitbox[j].name );
|
||||
if (k >= numbones)
|
||||
{
|
||||
MsgWarn("SimplifyModel: cannot find bone %s for bbox\n", hitbox[j].name );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1250,7 +1195,9 @@ void SimplifyModel (void)
|
|||
|
||||
sequence[i].panim[q]->numanim[j][k] = pvalue - data;
|
||||
if (sequence[i].panim[q]->numanim[j][k] == 2 && value[0] == 0)
|
||||
{
|
||||
sequence[i].panim[q]->numanim[j][k] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sequence[i].panim[q]->anim[j][k] = Kalloc( (pvalue - data) * sizeof( mstudioanimvalue_t ));
|
||||
|
@ -1261,46 +1208,6 @@ void SimplifyModel (void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// auto groups
|
||||
if (numseqgroups == 1 && maxseqgroupsize < 1024 * 1024)
|
||||
{
|
||||
int current = 0;
|
||||
|
||||
numseqgroups = 2;
|
||||
|
||||
for (i = 0; i < numseq; i++)
|
||||
{
|
||||
int accum = 0;
|
||||
|
||||
if (sequence[i].activity == 0)
|
||||
{
|
||||
for (q = 0; q < sequence[i].numblends; q++)
|
||||
{
|
||||
for (j = 0; j < numbones; j++)
|
||||
{
|
||||
for (k = 0; k < 6; k++)
|
||||
{
|
||||
accum += sequence[i].panim[q]->numanim[j][k] * sizeof( mstudioanimvalue_t );
|
||||
}
|
||||
}
|
||||
}
|
||||
accum += sequence[i].numblends * numbones * sizeof( mstudioanim_t );
|
||||
|
||||
if (current && current + accum > maxseqgroupsize)
|
||||
{
|
||||
numseqgroups++;
|
||||
current = accum;
|
||||
}
|
||||
else
|
||||
{
|
||||
current += accum;
|
||||
}
|
||||
sequence[i].seqgroup = numseqgroups - 1;
|
||||
}
|
||||
else sequence[i].seqgroup = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Grab_Skin ( s_texture_t *ptexture )
|
||||
|
@ -1445,10 +1352,10 @@ void Grab_Triangles( s_model_t *pmodel )
|
|||
linecount++;
|
||||
|
||||
if(SC_MatchToken( "end" )) break;//triangles end
|
||||
else if(!stricmp( ".bmp", &token[strlen(token)-4]))
|
||||
else if(!stricmp( ".bmp", &SC_Token()[strlen(SC_Token())-4]))
|
||||
{
|
||||
//probably is texture name
|
||||
strcpy( texturename, token );
|
||||
strcpy( texturename, SC_Token());
|
||||
|
||||
// funky texture overrides
|
||||
for (i = 0; i < numrep; i++)
|
||||
|
@ -1467,7 +1374,7 @@ void Grab_Triangles( s_model_t *pmodel )
|
|||
if (strlen(texturename) < 5)//invalid name
|
||||
{
|
||||
// weird model problem, skip them
|
||||
Msg("Warning: triangle with invalid texname\n");
|
||||
MsgWarn("Grab_Triangles: triangle with invalid texname\n");
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
if(!SC_GetToken( true ))
|
||||
|
@ -1492,7 +1399,7 @@ void Grab_Triangles( s_model_t *pmodel )
|
|||
else ptriv = lookup_triangle( pmesh, pmesh->numtris ) + j;
|
||||
|
||||
//grab triangle info
|
||||
bone = atoi(token);
|
||||
bone = atoi(SC_Token());
|
||||
p.org[0] = atof(SC_GetToken( false ));
|
||||
p.org[1] = atof(SC_GetToken( false ));
|
||||
p.org[2] = atof(SC_GetToken( false ));
|
||||
|
@ -1502,6 +1409,9 @@ void Grab_Triangles( s_model_t *pmodel )
|
|||
ptriv->u = atof(SC_GetToken( false ));
|
||||
ptriv->v = atof(SC_GetToken( false ));
|
||||
|
||||
// skip MilkShape additional info
|
||||
while(SC_TryToken());
|
||||
|
||||
//translate triangles
|
||||
if (bone < 0 || bone >= pmodel->numbones)
|
||||
Sys_Error("bogus bone index %d \n%s line %d", bone, filename, linecount );
|
||||
|
@ -1562,13 +1472,13 @@ void Grab_Skeleton( s_node_t *pnodes, s_bone_t *pbones )
|
|||
{
|
||||
//check time
|
||||
time += atoi(SC_GetToken( false ));
|
||||
if(time > 0) Msg("Grab_Skeleton: Warning! An animation file is probably used as a reference\n");
|
||||
if(time > 0) MsgWarn("Grab_Skeleton: Warning! An animation file is probably used as a reference\n");
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
//grab skeleton info
|
||||
index = atoi( token );
|
||||
index = atoi( SC_Token());
|
||||
pbones[index].pos[0] = atof(SC_GetToken( false ));
|
||||
pbones[index].pos[1] = atof(SC_GetToken( false ));
|
||||
pbones[index].pos[2] = atof(SC_GetToken( false ));
|
||||
|
@ -1602,7 +1512,7 @@ int Grab_Nodes( s_node_t *pnodes )
|
|||
//end of nodes description
|
||||
if(SC_MatchToken( "end" )) return numbones + 1;
|
||||
|
||||
index = atoi(token); //read bone index (we already have filled token)
|
||||
index = atoi(SC_Token()); //read bone index (we already have filled token)
|
||||
strcpy( name, SC_GetToken( false ));
|
||||
parent = atoi(SC_GetToken( false )); //read bone parent
|
||||
|
||||
|
@ -1628,7 +1538,7 @@ void Grab_Studio ( s_model_t *pmodel )
|
|||
|
||||
FS_DefaultExtension(filename, ".smd" );
|
||||
load = FS_AddScript( filename, NULL, 0 );
|
||||
if(!load)Sys_Error("unable to open %s\n", filename );
|
||||
if(!load) Sys_Error("unable to open %s\n", filename );
|
||||
Msg("grabbing %s\n", filename);
|
||||
|
||||
linecount = 0;
|
||||
|
@ -1641,7 +1551,7 @@ void Grab_Studio ( s_model_t *pmodel )
|
|||
if (SC_MatchToken( "version" ))
|
||||
{
|
||||
int option = atoi(SC_GetToken( false ));
|
||||
if (option != 1) Msg("Warning: %s bad version file\n", filename );
|
||||
if (option != 1) MsgWarn("Grab_Studio: %s bad version file\n", filename );
|
||||
}
|
||||
else if (SC_MatchToken( "nodes" ))
|
||||
{
|
||||
|
@ -1655,7 +1565,7 @@ void Grab_Studio ( s_model_t *pmodel )
|
|||
{
|
||||
Grab_Triangles( pmodel );
|
||||
}
|
||||
else Msg("unknown studio command %s at line %d\n", token, linecount );
|
||||
else MsgWarn("Grab_Studio: unknown studio command %s at line %d\n", SC_Token(), linecount );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1693,7 +1603,7 @@ void Option_Studio( void )
|
|||
model[nummodels] = Kalloc( sizeof( s_model_t ));
|
||||
bodypart[numbodyparts].pmodel[bodypart[numbodyparts].nummodels] = model[nummodels];
|
||||
|
||||
strncpy( model[nummodels]->name, token, sizeof(model[nummodels]->name));
|
||||
strncpy( model[nummodels]->name, SC_Token(), sizeof(model[nummodels]->name));
|
||||
|
||||
flip_triangles = 1;
|
||||
scale_up = default_scale;
|
||||
|
@ -1750,7 +1660,7 @@ void Cmd_Bodygroup( void )
|
|||
|
||||
if (numbodyparts == 0) bodypart[numbodyparts].base = 1;
|
||||
else bodypart[numbodyparts].base = bodypart[numbodyparts-1].base * bodypart[numbodyparts-1].nummodels;
|
||||
strncpy( bodypart[numbodyparts].name, token, sizeof(bodypart[numbodyparts].name));
|
||||
strncpy( bodypart[numbodyparts].name, SC_Token(), sizeof(bodypart[numbodyparts].name));
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
|
@ -1781,7 +1691,7 @@ void Cmd_Body( void )
|
|||
if (numbodyparts == 0) bodypart[numbodyparts].base = 1;
|
||||
else bodypart[numbodyparts].base = bodypart[numbodyparts-1].base * bodypart[numbodyparts-1].nummodels;
|
||||
|
||||
strncpy(bodypart[numbodyparts].name, token, sizeof(bodypart[numbodyparts].name));
|
||||
strncpy(bodypart[numbodyparts].name, SC_Token(), sizeof(bodypart[numbodyparts].name));
|
||||
Option_Studio();
|
||||
|
||||
numbodyparts++;
|
||||
|
@ -1823,7 +1733,7 @@ void Grab_Animation( s_animation_t *panim)
|
|||
}
|
||||
else
|
||||
{
|
||||
index = atoi(token);
|
||||
index = atoi(SC_Token());
|
||||
pos[0] = atof(SC_GetToken( false ));
|
||||
pos[1] = atof(SC_GetToken( false ));
|
||||
pos[2] = atof(SC_GetToken( false ));
|
||||
|
@ -1923,7 +1833,7 @@ void Option_Animation ( char *name, s_animation_t *panim )
|
|||
}
|
||||
else
|
||||
{
|
||||
Msg("unknown studio command : %s\n", token );
|
||||
MsgWarn("Option_Animation: unknown studio command : %s\n", SC_Token() );
|
||||
while(SC_TryToken());//skip other tokens at line
|
||||
}
|
||||
}
|
||||
|
@ -1931,7 +1841,7 @@ void Option_Animation ( char *name, s_animation_t *panim )
|
|||
|
||||
int Option_Motion ( s_sequence_t *psequence )
|
||||
{
|
||||
while (SC_TryToken()) psequence->motiontype |= lookupControl( token );
|
||||
while (SC_TryToken()) psequence->motiontype |= lookupControl( SC_Token());
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1939,7 +1849,7 @@ int Option_Event ( s_sequence_t *psequence )
|
|||
{
|
||||
if (psequence->numevents + 1 >= MAXSTUDIOEVENTS)
|
||||
{
|
||||
Msg("Warning: MAXSTUDIOEVENTS limit excedeed.\n");
|
||||
MsgWarn("Option_Event: MAXSTUDIOEVENTS limit excedeed.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1951,7 +1861,7 @@ int Option_Event ( s_sequence_t *psequence )
|
|||
if (SC_TryToken())
|
||||
{
|
||||
if (SC_MatchToken( "}" )) return 1; // opps, hit the end
|
||||
strcpy( psequence->event[psequence->numevents-1].options, token );// found an option
|
||||
strcpy( psequence->event[psequence->numevents-1].options, SC_Token());// found an option
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1992,7 +1902,7 @@ void Cmd_Origin (void)
|
|||
defaultadjust[1] = atof (SC_GetToken (false));
|
||||
defaultadjust[2] = atof (SC_GetToken (false));
|
||||
|
||||
if (SC_TryToken()) defaultzrotation = (atof( token ) + 90) * (M_PI / 180.0);
|
||||
if (SC_TryToken()) defaultzrotation = (atof( SC_Token()) + 90) * (M_PI / 180.0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -2030,7 +1940,7 @@ syntax: $rotate <value>
|
|||
void Cmd_Rotate(void)
|
||||
{
|
||||
if (!SC_GetToken(false)) return;
|
||||
zrotation = (atof(token) + 90) * (M_PI / 180.0);
|
||||
zrotation = (atof(SC_Token()) + 90) * (M_PI / 180.0);
|
||||
}
|
||||
|
||||
void Option_ScaleUp (void)
|
||||
|
@ -2038,35 +1948,6 @@ void Option_ScaleUp (void)
|
|||
scale_up = atof (SC_GetToken (false));
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
Cmd_SequenceGroup
|
||||
|
||||
syntax: $sequencegroup "name"
|
||||
==============
|
||||
*/
|
||||
int Cmd_SequenceGroup( void )
|
||||
{
|
||||
strncpy( sequencegroup[numseqgroups].label, SC_GetToken(false), sizeof(sequencegroup[numseqgroups].label));
|
||||
numseqgroups++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
Cmd_SequenceGroupSize
|
||||
|
||||
syntax: $sequencegroupsize <kbytes>
|
||||
==============
|
||||
*/
|
||||
int Cmd_SequenceGroupSize( void )
|
||||
{
|
||||
//in kilobytes
|
||||
maxseqgroupsize = 1024 * atoi(SC_GetToken(false));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
Cmd_Sequence
|
||||
|
@ -2101,7 +1982,7 @@ int Cmd_Sequence( void )
|
|||
|
||||
if(!SC_GetToken(false)) return 0;
|
||||
|
||||
strncpy( sequence[numseq].name, token, sizeof(sequence[numseq].name));
|
||||
strncpy( sequence[numseq].name, SC_Token(), sizeof(sequence[numseq].name));
|
||||
|
||||
VectorCopy( defaultadjust, adjust );
|
||||
scale_up = default_scale;
|
||||
|
@ -2109,7 +1990,7 @@ int Cmd_Sequence( void )
|
|||
//set default values
|
||||
zrotation = defaultzrotation;
|
||||
sequence[numseq].fps = 30.0;
|
||||
sequence[numseq].seqgroup = numseqgroups - 1;
|
||||
sequence[numseq].seqgroup = 0;
|
||||
sequence[numseq].blendstart[0] = 0.0;
|
||||
sequence[numseq].blendend[0] = 1.0;
|
||||
|
||||
|
@ -2156,37 +2037,37 @@ int Cmd_Sequence( void )
|
|||
sequence[numseq].exitnode = atoi(SC_GetToken( false ));
|
||||
sequence[numseq].nodeflags |= 1;
|
||||
}
|
||||
else if (lookupControl( token ) != -1)
|
||||
else if (lookupControl( SC_Token()) != -1)
|
||||
{
|
||||
sequence[numseq].motiontype |= lookupControl( token );
|
||||
sequence[numseq].motiontype |= lookupControl( SC_Token());
|
||||
}
|
||||
else if (SC_MatchToken( "animation" ))
|
||||
{
|
||||
strncpy( smdfilename[numblends], SC_GetToken( false ), sizeof(smdfilename[numblends]));
|
||||
numblends++;
|
||||
}
|
||||
else if (i = lookupActivity( token ))
|
||||
else if (i = lookupActivity( SC_Token()))
|
||||
{
|
||||
sequence[numseq].activity = i;
|
||||
sequence[numseq].actweight = 1;//default weight
|
||||
if(SC_TryToken())
|
||||
{
|
||||
//make sure what is really actweight
|
||||
if(!SC_MatchToken("{") && !SC_MatchToken("}") && strlen(token) < 3 && atoi(token) <= 100)
|
||||
sequence[numseq].actweight = atoi(token);
|
||||
if(!SC_MatchToken("{") && !SC_MatchToken("}") && strlen(SC_Token()) < 3 && atoi(SC_Token()) <= 100)
|
||||
sequence[numseq].actweight = atoi(SC_Token());
|
||||
else SC_FreeToken();//release token
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy( smdfilename[numblends], token, sizeof(smdfilename[numblends]));
|
||||
strncpy( smdfilename[numblends], SC_Token(), sizeof(smdfilename[numblends]));
|
||||
numblends++;
|
||||
}
|
||||
if (depth < 0) Sys_Error("missing {\n");
|
||||
}
|
||||
|
||||
if (numblends == 0)
|
||||
{
|
||||
Msg("Warning: sequence \"%s\" has no animations. skipped...\n", sequence[numseq].name);
|
||||
MsgWarn("Cmd_Sequence: \"%s\" has no animations. skipped...\n", sequence[numseq].name);
|
||||
return 0;
|
||||
}
|
||||
for (i = 0; i < numblends; i++)
|
||||
|
@ -2216,7 +2097,7 @@ int Cmd_Root (void)
|
|||
{
|
||||
if (SC_GetToken(false))
|
||||
{
|
||||
strncpy( pivotname[0], token, sizeof(pivotname));
|
||||
strncpy( pivotname[0], SC_Token(), sizeof(pivotname));
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
|
@ -2233,10 +2114,10 @@ int Cmd_Pivot (void)
|
|||
{
|
||||
if (SC_GetToken (false))
|
||||
{
|
||||
int index = atoi(token);
|
||||
int index = atoi(SC_Token());
|
||||
if (SC_GetToken(false))
|
||||
{
|
||||
strncpy( pivotname[index], token, sizeof(pivotname[index]));
|
||||
strncpy( pivotname[index], SC_Token(), sizeof(pivotname[index]));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -2256,16 +2137,16 @@ int Cmd_Controller (void)
|
|||
{
|
||||
//mouth is hardcoded at four controller
|
||||
if (SC_MatchToken( "mouth" )) bonecontroller[numbonecontrollers].index = 4;
|
||||
else bonecontroller[numbonecontrollers].index = atoi(token);
|
||||
else bonecontroller[numbonecontrollers].index = atoi(SC_Token());
|
||||
|
||||
if (SC_GetToken(false))
|
||||
{
|
||||
strncpy( bonecontroller[numbonecontrollers].name, token, sizeof(bonecontroller[numbonecontrollers].name));
|
||||
strncpy( bonecontroller[numbonecontrollers].name, SC_Token(), sizeof(bonecontroller[numbonecontrollers].name));
|
||||
|
||||
SC_GetToken(false);
|
||||
if ((bonecontroller[numbonecontrollers].type = lookupControl(token)) == -1)
|
||||
if ((bonecontroller[numbonecontrollers].type = lookupControl(SC_Token())) == -1)
|
||||
{
|
||||
Msg("Cmd_Controller: unknown bonecontroller type '%s'\n", token );
|
||||
MsgWarn("Cmd_Controller: unknown bonecontroller type '%s'\n", SC_Token() );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2361,7 +2242,11 @@ int Cmd_TextureGroup( void )
|
|||
int index = 0;
|
||||
int group = 0;
|
||||
|
||||
if (numtextures == 0) Sys_Error( "texturegroups must follow model loading\n");
|
||||
if (numtextures == 0)
|
||||
{
|
||||
MsgWarn("Cmd_TextureGroup: texturegroups must follow model loading\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!SC_GetToken(false)) return 0;
|
||||
if (numskinref == 0) numskinref = numtextures;
|
||||
|
@ -2370,7 +2255,7 @@ int Cmd_TextureGroup( void )
|
|||
{
|
||||
if(!SC_GetToken(true))
|
||||
{
|
||||
if (depth) Sys_Error("missing }\n" );
|
||||
if (depth)MsgWarn("missing }\n");
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2384,7 +2269,7 @@ int Cmd_TextureGroup( void )
|
|||
}
|
||||
else if (depth == 2)
|
||||
{
|
||||
i = lookup_texture( token );
|
||||
i = lookup_texture( SC_Token());
|
||||
texturegroup[numtexturegroups][group][index] = i;
|
||||
if (group != 0) texture[i].parent = texturegroup[numtexturegroups][0][index];
|
||||
index++;
|
||||
|
@ -2501,7 +2386,7 @@ void Cmd_TexRenderMode( void )
|
|||
{
|
||||
texture[lookup_texture(tex_name)].flags |= STUDIO_NF_BLENDED;
|
||||
}
|
||||
else Msg("Texture '%s' has unknown render mode '%s'!\n", tex_name, token);
|
||||
else MsgWarn("Cmd_TexRenderMode: texture '%s' have unknown render mode '%s'!\n", tex_name, SC_Token());
|
||||
|
||||
}
|
||||
|
||||
|
@ -2561,16 +2446,12 @@ void ResetModelInfo( void )
|
|||
numrep = 0;
|
||||
gamma = 1.8;
|
||||
flip_triangles = 1;
|
||||
maxseqgroupsize = 1024 * 1024;
|
||||
normal_blend = cos( 2.0 * (M_PI / 180.0));
|
||||
|
||||
//make an option
|
||||
dump_hboxes = 0;
|
||||
ignore_warnings = 0;
|
||||
|
||||
strcpy( sequencegroup[numseqgroups].label, "default" );
|
||||
numseqgroups = 1;
|
||||
|
||||
strcpy( sequencegroup.label, "default" );
|
||||
FS_ClearSearchPath();//clear all $cd and $cdtexture
|
||||
|
||||
//set default model parms
|
||||
|
@ -2587,7 +2468,7 @@ syntax: "blabla"
|
|||
*/
|
||||
void Cmd_StudioUnknown( void )
|
||||
{
|
||||
MsgWarn("Cmd_StudioUnknown: skip command \"%s\"\n", token);
|
||||
MsgWarn("Cmd_StudioUnknown: skip command \"%s\"\n", SC_Token());
|
||||
while(SC_TryToken());
|
||||
}
|
||||
|
||||
|
@ -2601,7 +2482,7 @@ bool ParseModelScript (void)
|
|||
|
||||
if (SC_MatchToken("$modelname")) Cmd_Modelname ();
|
||||
else if (SC_MatchToken("$cd")) Cmd_CdSet();
|
||||
else if (!strcmp (token, "$cdtexture")) Cmd_CdTextureSet();
|
||||
else if (SC_MatchToken("$cdtexture")) Cmd_CdTextureSet();
|
||||
else if (SC_MatchToken("$scale")) Cmd_ScaleUp ();
|
||||
else if (SC_MatchToken("$rotate")) Cmd_Rotate();
|
||||
else if (SC_MatchToken("$root")) Cmd_Root ();
|
||||
|
@ -2610,8 +2491,6 @@ bool ParseModelScript (void)
|
|||
else if (SC_MatchToken("$body")) Cmd_Body();
|
||||
else if (SC_MatchToken("$bodygroup")) Cmd_Bodygroup();
|
||||
else if (SC_MatchToken("$sequence")) Cmd_Sequence ();
|
||||
else if (SC_MatchToken("$sequencegroup")) Cmd_SequenceGroup ();
|
||||
else if (SC_MatchToken("$sequencegroupsize")) Cmd_SequenceGroupSize ();
|
||||
else if (SC_MatchToken("$eyeposition")) Cmd_Eyeposition ();
|
||||
else if (SC_MatchToken("$origin")) Cmd_Origin ();
|
||||
else if (SC_MatchToken("$bbox")) Cmd_BBox ();
|
||||
|
@ -2622,9 +2501,7 @@ bool ParseModelScript (void)
|
|||
else if (SC_MatchToken("$hgroup")) Cmd_Hitgroup ();
|
||||
else if (SC_MatchToken("$hbox")) Cmd_Hitbox ();
|
||||
else if (SC_MatchToken("$attachment")) Cmd_Attachment ();
|
||||
else if (SC_MatchToken("$externaltextures")) split_textures = 1;
|
||||
else if (SC_MatchToken("$cliptotextures")) clip_texcoords = 1;
|
||||
else if (SC_MatchToken("$debug")) ignore_warnings = 1;
|
||||
else if (SC_MatchToken("$renamebone")) Cmd_Renamebone ();
|
||||
else if (SC_MatchToken("$texrendermode")) Cmd_TexRenderMode();
|
||||
else if (SC_MatchToken("$replacetexture")) Cmd_Replace();
|
||||
|
@ -2653,7 +2530,7 @@ void ClearModel( void )
|
|||
cdset = false;
|
||||
cdtextureset = 0;
|
||||
|
||||
numrep = gflags = maxseqgroupsize = numseq = nummirrored = numseqgroups = 0;
|
||||
numrep = gflags = numseq = nummirrored = 0;
|
||||
numxnodes = numrenamedbones = totalframes = numbones = numhitboxes = 0;
|
||||
numhitgroups = numattachments = numtextures = numskinref = numskinfamilies = 0;
|
||||
numbonecontrollers = numtexturegroups = numcommandnodes = numbodyparts = 0;
|
||||
|
|
|
@ -717,7 +717,7 @@ s_mesh_t *lookup_mesh( s_model_t *pmodel, char *texturename )
|
|||
return pmodel->pmesh[i];
|
||||
}
|
||||
|
||||
if (i >= MAXSTUDIOMESHES) Sys_Error( "too many textures in model: \"%s\"\n", pmodel->name );
|
||||
if (i >= MAXSTUDIOMESHES) Sys_Error( "too many meshes in model: \"%s\"\n", pmodel->name );
|
||||
|
||||
pmodel->nummesh = i + 1;
|
||||
pmodel->pmesh[i] = Kalloc( sizeof( s_mesh_t ) );
|
||||
|
|
|
@ -1004,17 +1004,6 @@ typedef struct
|
|||
short stats[MAX_STATS]; // fast status bar updates
|
||||
} player_state_t;
|
||||
|
||||
|
||||
// ==================
|
||||
// PGM
|
||||
#define VIDREF_GL 1
|
||||
#define VIDREF_SOFT 2
|
||||
#define VIDREF_OTHER 3
|
||||
|
||||
extern int vidref_val;
|
||||
// PGM
|
||||
// ==================
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FOOTSTEP_METAL1,
|
||||
|
|
|
@ -20,20 +20,20 @@ Studio models are position independent, so the cache manager can move them.
|
|||
#define IDSEQGRPHEADER (('Q'<<24)+('S'<<16)+('D'<<8)+'I') // little-endian "IDSQ"
|
||||
|
||||
// studio limits
|
||||
#define MAXSTUDIOTRIANGLES 20000 // TODO: tune this
|
||||
#define MAXSTUDIOTRIANGLES 32768 // max triangles per model
|
||||
#define MAXSTUDIOVERTS 4096 // max vertices per submodel
|
||||
#define MAXSTUDIOSEQUENCES 256 // total animation sequences
|
||||
#define MAXSTUDIOSKINS 128 // total textures
|
||||
#define MAXSTUDIOSRCBONES 512 // bones allowed at source movement
|
||||
#define MAXSTUDIOBONES 128 // total bones actually used
|
||||
#define MAXSTUDIOMODELS 32 // sub-models per model
|
||||
#define MAXSTUDIOBODYPARTS 32
|
||||
#define MAXSTUDIOBODYPARTS 32 // body parts per submodel
|
||||
#define MAXSTUDIOGROUPS 16 // sequence groups (e.g. barney01.mdl, barney02.mdl, e.t.c)
|
||||
#define MAXSTUDIOANIMATIONS 512 // max frames per sequence
|
||||
#define MAXSTUDIOMESHES 256 // max textures per model
|
||||
#define MAXSTUDIOEVENTS 1024
|
||||
#define MAXSTUDIOPIVOTS 256
|
||||
#define MAXSTUDIOBLENDS 2 // TODO: tune this
|
||||
#define MAXSTUDIOEVENTS 1024 // events per model
|
||||
#define MAXSTUDIOPIVOTS 256 // pivot points
|
||||
#define MAXSTUDIOBLENDS 8 // max anim blends
|
||||
#define MAXSTUDIOCONTROLLERS 32 // max controllers per model
|
||||
#define MAXSTUDIOATTACHMENTS 32 // max attachments per model
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ if errorlevel 1 set BUILD_ERROR=1
|
|||
%MSDEV% platform/platform.dsp %CONFIG%"platform - Win32 Release" %build_target%
|
||||
if errorlevel 1 set BUILD_ERROR=1
|
||||
|
||||
%MSDEV% render/render.dsp %CONFIG%"render - Win32 Release" %build_target%
|
||||
%MSDEV% renderer/renderer.dsp %CONFIG%"renderer - Win32 Release" %build_target%
|
||||
if errorlevel 1 set BUILD_ERROR=1
|
||||
|
||||
%MSDEV% server/server.dsp %CONFIG%"server - Win32 Release" %build_target%
|
||||
|
@ -49,7 +49,7 @@ rem //delete log files
|
|||
if exist engine\engine.plg del /f /q engine\engine.plg
|
||||
if exist launcher\launcher.plg del /f /q launcher\launcher.plg
|
||||
if exist platform\platform.plg del /f /q platform\platform.plg
|
||||
if exist render\render.plg del /f /q render\render.plg
|
||||
if exist renderer\renderer.plg del /f /q renderer\renderer.plg
|
||||
if exist server\server.plg del /f /q server\server.plg
|
||||
|
||||
echo Build succeeded!
|
||||
|
|
|
@ -321,7 +321,6 @@ extern cvar_t *gl_modulate;
|
|||
extern cvar_t *gl_playermip;
|
||||
extern cvar_t *gl_drawbuffer;
|
||||
extern cvar_t *gl_3dlabs_broken;
|
||||
extern cvar_t *gl_driver;
|
||||
extern cvar_t *gl_swapinterval;
|
||||
extern cvar_t *gl_texturemode;
|
||||
extern cvar_t *gl_texturealphamode;
|
|
@ -112,7 +112,6 @@ cvar_t *r_motionblur;
|
|||
cvar_t *gl_log;
|
||||
cvar_t *gl_bitdepth;
|
||||
cvar_t *gl_drawbuffer;
|
||||
cvar_t *gl_driver;
|
||||
cvar_t *gl_lightmap;
|
||||
cvar_t *gl_shadows;
|
||||
cvar_t *gl_mode;
|
||||
|
@ -148,7 +147,6 @@ cvar_t *gl_3dlabs_broken;
|
|||
|
||||
cvar_t *vid_fullscreen;
|
||||
cvar_t *vid_gamma;
|
||||
cvar_t *vid_ref;
|
||||
|
||||
/*
|
||||
=================
|
||||
|
@ -961,7 +959,6 @@ void R_Register( void )
|
|||
gl_polyblend = ri.Cvar_Get ("gl_polyblend", "1", 0);
|
||||
gl_flashblend = ri.Cvar_Get ("gl_flashblend", "0", 0);
|
||||
gl_playermip = ri.Cvar_Get ("gl_playermip", "0", 0);
|
||||
gl_driver = ri.Cvar_Get( "gl_driver", "opengl32", CVAR_ARCHIVE );
|
||||
gl_texturemode = ri.Cvar_Get( "gl_texturemode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE );
|
||||
gl_texturealphamode = ri.Cvar_Get( "gl_texturealphamode", "default", CVAR_ARCHIVE );
|
||||
gl_texturesolidmode = ri.Cvar_Get( "gl_texturesolidmode", "default", CVAR_ARCHIVE );
|
||||
|
@ -984,7 +981,6 @@ void R_Register( void )
|
|||
|
||||
vid_fullscreen = ri.Cvar_Get( "vid_fullscreen", "0", CVAR_ARCHIVE );
|
||||
vid_gamma = ri.Cvar_Get( "vid_gamma", "1.0", CVAR_ARCHIVE );
|
||||
vid_ref = ri.Cvar_Get( "vid_ref", "soft", CVAR_ARCHIVE );
|
||||
|
||||
ri.Cmd_AddCommand( "imagelist", R_ImageList_f );
|
||||
ri.Cmd_AddCommand( "screenshot", GL_ScreenShot_f );
|
||||
|
@ -1072,18 +1068,17 @@ int R_Init( void *hinstance, void *hWnd )
|
|||
R_Register();
|
||||
|
||||
// initialize our QGL dynamic bindings
|
||||
if ( !QGL_Init( gl_driver->string ) )
|
||||
if ( !QGL_Init( "opengl32" ) )
|
||||
{
|
||||
QGL_Shutdown();
|
||||
Msg("R_Init() - could not load \"%s\"\n", gl_driver->string );
|
||||
return -1;
|
||||
return false;
|
||||
}
|
||||
|
||||
// initialize OS-specific parts of OpenGL
|
||||
if ( !GLimp_Init( hinstance, hWnd ) )
|
||||
{
|
||||
QGL_Shutdown();
|
||||
return -1;
|
||||
return false;
|
||||
}
|
||||
|
||||
// set our "safe" modes
|
||||
|
@ -1094,9 +1089,10 @@ int R_Init( void *hinstance, void *hWnd )
|
|||
{
|
||||
QGL_Shutdown();
|
||||
Msg( "R_Init() - could not R_SetMode()\n" );
|
||||
return -1;
|
||||
return false;
|
||||
}
|
||||
|
||||
Msg("------- Loading bin/renderer.dll [%g] -------\n", RENDERER_VERSION );
|
||||
ri.Vid_MenuInit();
|
||||
|
||||
//get our various GL strings
|
||||
|
@ -1303,17 +1299,6 @@ void R_BeginFrame( float camera_separation )
|
|||
|
||||
gl_state.camera_separation = camera_separation;
|
||||
|
||||
/*
|
||||
** change modes if necessary
|
||||
*/
|
||||
if ( gl_mode->modified || vid_fullscreen->modified )
|
||||
{ // FIXME: only restart if CDS is required
|
||||
cvar_t *ref;
|
||||
|
||||
ref = ri.Cvar_Get ("vid_ref", "gl", 0);
|
||||
ref->modified = true;
|
||||
}
|
||||
|
||||
if ( gl_log->modified )
|
||||
{
|
||||
GLimp_EnableLogging( gl_log->value );
|
|
@ -3044,7 +3044,7 @@ bool QGL_Init( const char *dllname )
|
|||
putenv( envbuffer );
|
||||
}
|
||||
|
||||
if ( ( glw_state.hinstOpenGL = LoadLibrary( dllname ) ) == 0 )
|
||||
if (( glw_state.hinstOpenGL = LoadLibrary( dllname ) ) == 0 )
|
||||
{
|
||||
char *buf = NULL;
|
||||
|
|
@ -41,7 +41,6 @@ glwstate_t glw_state;
|
|||
static char wndname[128];
|
||||
|
||||
extern cvar_t *vid_fullscreen;
|
||||
extern cvar_t *vid_ref;
|
||||
|
||||
static bool VerifyDriver( void )
|
||||
{
|
||||
|
@ -427,14 +426,7 @@ bool GLimp_InitGL (void)
|
|||
gl_state.stereo_enabled = false;
|
||||
}
|
||||
|
||||
/*
|
||||
** figure out if we're running on a minidriver or not
|
||||
*/
|
||||
if ( strstr( gl_driver->string, "opengl32" ) != 0 )
|
||||
glw_state.minidriver = false;
|
||||
else
|
||||
glw_state.minidriver = true;
|
||||
|
||||
glw_state.minidriver = false;
|
||||
/*
|
||||
** Get a DC for the specified window
|
||||
*/
|
|
@ -1,24 +1,24 @@
|
|||
# Microsoft Developer Studio Project File - Name="render" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Project File - Name="renderer" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
||||
|
||||
CFG=render - Win32 Release
|
||||
CFG=renderer - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "render.mak".
|
||||
!MESSAGE NMAKE /f "renderer.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "render.mak" CFG="render - Win32 Release"
|
||||
!MESSAGE NMAKE /f "renderer.mak" CFG="renderer - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "render - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "render - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "renderer - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "renderer - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
|
@ -29,17 +29,17 @@ CPP=cl.exe
|
|||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "render - Win32 Release"
|
||||
!IF "$(CFG)" == "renderer - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir ".\render__"
|
||||
# PROP BASE Intermediate_Dir ".\render__"
|
||||
# PROP BASE Output_Dir ".\renderer__"
|
||||
# PROP BASE Intermediate_Dir ".\renderer__"
|
||||
# PROP BASE Target_Dir "."
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "..\temp\render\!release"
|
||||
# PROP Intermediate_Dir "..\temp\render\!release"
|
||||
# PROP Output_Dir "..\temp\renderer\!release"
|
||||
# PROP Intermediate_Dir "..\temp\renderer\!release"
|
||||
# PROP Ignore_Export_Lib 1
|
||||
# PROP Target_Dir "."
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
|
||||
|
@ -57,26 +57,26 @@ LINK32=link.exe
|
|||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /libpath:"../public/libs/"
|
||||
# SUBTRACT LINK32 /debug
|
||||
# Begin Custom Build
|
||||
TargetDir=\Xash3D\src_main\!source\temp\render\!release
|
||||
InputPath=\Xash3D\src_main\!source\temp\render\!release\render.dll
|
||||
TargetDir=\XASH3D\src_main\!source\temp\renderer\!release
|
||||
InputPath=\XASH3D\src_main\!source\temp\renderer\!release\renderer.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"D:\Xash3D\bin\render.dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
copy $(TargetDir)\render.dll "D:\Xash3D\bin\render.dll"
|
||||
"D:\Xash3D\bin\renderer.dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
copy $(TargetDir)\renderer.dll "D:\Xash3D\bin\renderer.dll"
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "render - Win32 Debug"
|
||||
!ELSEIF "$(CFG)" == "renderer - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir ".\render__"
|
||||
# PROP BASE Intermediate_Dir ".\render__"
|
||||
# PROP BASE Output_Dir ".\renderer__"
|
||||
# PROP BASE Intermediate_Dir ".\renderer__"
|
||||
# PROP BASE Target_Dir "."
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "..\temp\render\!debug"
|
||||
# PROP Intermediate_Dir "..\temp\render\!debug"
|
||||
# PROP Output_Dir "..\temp\renderer\!debug"
|
||||
# PROP Intermediate_Dir "..\temp\renderer\!debug"
|
||||
# PROP Ignore_Export_Lib 1
|
||||
# PROP Target_Dir "."
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
|
||||
|
@ -94,12 +94,12 @@ LINK32=link.exe
|
|||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"../public/libs/"
|
||||
# SUBTRACT LINK32 /profile /incremental:no /map
|
||||
# Begin Custom Build
|
||||
TargetDir=\Xash3D\src_main\!source\temp\render\!debug
|
||||
InputPath=\Xash3D\src_main\!source\temp\render\!debug\render.dll
|
||||
TargetDir=\XASH3D\src_main\!source\temp\renderer\!debug
|
||||
InputPath=\XASH3D\src_main\!source\temp\renderer\!debug\renderer.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"D:\Xash3D\bin\render.dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
copy $(TargetDir)\render.dll "D:\Xash3D\bin\render.dll"
|
||||
"D:\Xash3D\bin\renderer.dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
copy $(TargetDir)\renderer.dll "D:\Xash3D\bin\renderer.dll"
|
||||
|
||||
# End Custom Build
|
||||
|
||||
|
@ -107,8 +107,8 @@ SOURCE="$(InputPath)"
|
|||
|
||||
# Begin Target
|
||||
|
||||
# Name "render - Win32 Release"
|
||||
# Name "render - Win32 Debug"
|
||||
# Name "renderer - Win32 Release"
|
||||
# Name "renderer - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
|
||||
|
@ -226,7 +226,7 @@ SOURCE=..\client\ref.h
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\render.h
|
||||
SOURCE=.\renderer.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
|
@ -1,30 +1,4 @@
|
|||
#include "g_local.h"
|
||||
|
||||
//#define DISABLE_FOG
|
||||
|
||||
#ifdef DISABLE_FOG
|
||||
void Fog_Init()
|
||||
{
|
||||
}
|
||||
void Fog(vec3_t viewpoint)
|
||||
{
|
||||
}
|
||||
void Fog_Off()
|
||||
{
|
||||
}
|
||||
void SP_trigger_fog(edict_t *self)
|
||||
{
|
||||
G_FreeEdict(self);
|
||||
}
|
||||
void SP_target_fog(edict_t *self)
|
||||
{
|
||||
G_FreeEdict(self);
|
||||
}
|
||||
void Cmd_Fog_f(edict_t *ent)
|
||||
{
|
||||
}
|
||||
#else
|
||||
|
||||
#include <windows.h>
|
||||
#define __MSC__
|
||||
#include <gl/gl.h>
|
||||
|
@ -354,7 +328,6 @@ void GlideFogTable()
|
|||
float w, dw4;
|
||||
|
||||
if(!hGlide) return;
|
||||
if(strcmp(gl_driver->string,"3dfxgl") || strcmp(vid_ref->string,"gl") ) return;
|
||||
if(last_software_frame + 10 > level.framenum) return;
|
||||
if(last_opengl_frame + 10 > level.framenum) return;
|
||||
|
||||
|
@ -517,19 +490,9 @@ void Fog(vec3_t viewpoint)
|
|||
edict_t *triggerfog;
|
||||
edict_t *player = &g_edicts[1];
|
||||
|
||||
if(!gl_driver || !vid_ref)
|
||||
return;
|
||||
|
||||
if(deathmatch->value || coop->value)
|
||||
return;
|
||||
|
||||
if(stricmp(vid_ref->string,"gl"))
|
||||
{
|
||||
last_software_frame = level.framenum;
|
||||
level.active_fog = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
InTriggerFog = false;
|
||||
if(level.trigger_fogs)
|
||||
{
|
||||
|
@ -943,24 +906,3 @@ void SP_trigger_fog (edict_t *self)
|
|||
gi.setmodel (self, self->model);
|
||||
gi.linkentity(self);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
void SetChromakey()
|
||||
{
|
||||
if(!gl_driver || !vid_ref)
|
||||
return;
|
||||
|
||||
if(stricmp(vid_ref->string,"gl"))
|
||||
return;
|
||||
|
||||
if(!strcmp(gl_driver->string,"3dfxgl"))
|
||||
{
|
||||
Glide_grChromakeyMode(GR_CHROMAKEY_ENABLE);
|
||||
Glide_grChromakeyValue(0xFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
*/
|
|
@ -3550,25 +3550,16 @@ void use_target_failure (edict_t *self, edict_t *other, edict_t *activator)
|
|||
gi.sound (activator, CHAN_VOICE|CHAN_RELIABLE, self->noise_index, 1, ATTN_NORM, 0);
|
||||
|
||||
self->target_ent = activator;
|
||||
if(stricmp(vid_ref->string,"gl"))
|
||||
{
|
||||
self->flags = 12;
|
||||
self->think = target_failure_fade_lights;
|
||||
self->nextthink = level.time + FRAMETIME;
|
||||
}
|
||||
else
|
||||
{
|
||||
activator->client->fadestart= level.framenum;
|
||||
activator->client->fadein = level.framenum + 40;
|
||||
activator->client->fadehold = activator->client->fadein + 100000;
|
||||
activator->client->fadeout = 0;
|
||||
activator->client->fadecolor[0] = 0;
|
||||
activator->client->fadecolor[1] = 0;
|
||||
activator->client->fadecolor[2] = 0;
|
||||
activator->client->fadealpha = 1.0;
|
||||
self->think = target_failure_think;
|
||||
self->nextthink = level.time + 4;
|
||||
}
|
||||
activator->client->fadestart= level.framenum;
|
||||
activator->client->fadein = level.framenum + 40;
|
||||
activator->client->fadehold = activator->client->fadein + 100000;
|
||||
activator->client->fadeout = 0;
|
||||
activator->client->fadecolor[0] = 0;
|
||||
activator->client->fadecolor[1] = 0;
|
||||
activator->client->fadecolor[2] = 0;
|
||||
activator->client->fadealpha = 1.0;
|
||||
self->think = target_failure_think;
|
||||
self->nextthink = level.time + 4;
|
||||
activator->deadflag = DEAD_FROZEN;
|
||||
gi.linkentity(activator);
|
||||
}
|
||||
|
|
|
@ -758,10 +758,9 @@ extern cvar_t *rotate_distance;
|
|||
extern cvar_t *s_primary;
|
||||
extern cvar_t *shift_distance;
|
||||
extern cvar_t *sv_maxgibs;
|
||||
extern cvar_t *tpp; // third person perspective
|
||||
extern cvar_t *tpp; // third person perspective
|
||||
extern cvar_t *tpp_auto;
|
||||
extern cvar_t *turn_rider;
|
||||
extern cvar_t *vid_ref;
|
||||
extern cvar_t *zoomrate;
|
||||
extern cvar_t *zoomsnap;
|
||||
|
||||
|
|
|
@ -104,7 +104,6 @@ cvar_t *s_primary;
|
|||
cvar_t *shift_distance;
|
||||
cvar_t *sv_maxgibs;
|
||||
cvar_t *turn_rider;
|
||||
cvar_t *vid_ref;
|
||||
cvar_t *zoomrate;
|
||||
cvar_t *zoomsnap;
|
||||
|
||||
|
@ -206,7 +205,6 @@ game_export_t DLLEXPORT *ServerAPI (game_import_t *import)
|
|||
globals.edict_size = sizeof(edict_t);
|
||||
|
||||
gl_driver = gi.cvar ("gl_driver", "", 0);
|
||||
vid_ref = gi.cvar ("vid_ref", "", 0);
|
||||
gl_driver_fog = gi.cvar ("gl_driver_fog", "opengl32", CVAR_NOSET | CVAR_ARCHIVE);
|
||||
|
||||
Fog_Init();
|
||||
|
|
|
@ -554,8 +554,7 @@ void SV_CalcBlend (edict_t *ent)
|
|||
float alpha;
|
||||
|
||||
// Turn off fade for dead software players or they won't see menu
|
||||
if((ent->health <= 0) && (stricmp(vid_ref->string,"gl")))
|
||||
ent->client->fadein = 0;
|
||||
if(ent->health <= 0) ent->client->fadein = 0;
|
||||
|
||||
if(ent->client->fadein > level.framenum)
|
||||
{
|
||||
|
@ -580,8 +579,7 @@ void SV_CalcBlend (edict_t *ent)
|
|||
ent->client->fadecolor[2],
|
||||
alpha, ent->client->ps.blend);
|
||||
}
|
||||
else
|
||||
ent->client->fadein = 0;
|
||||
else ent->client->fadein = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,11 +54,11 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib winmm.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /out:"..\temp\render\!release/server.dll"
|
||||
# ADD LINK32 kernel32.lib user32.lib winmm.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386
|
||||
# SUBTRACT LINK32 /debug
|
||||
# Begin Custom Build
|
||||
TargetDir=\XASH3D\src_main\!source\temp\render\!release
|
||||
InputPath=\XASH3D\src_main\!source\temp\render\!release\server.dll
|
||||
TargetDir=\XASH3D\src_main\!source\temp\server\!release
|
||||
InputPath=\XASH3D\src_main\!source\temp\server\!release\server.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"D:\Xash3D\xash\bin\server.dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
|
@ -91,11 +91,11 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"..\temp\render\!debug/server.dll"
|
||||
# ADD LINK32 kernel32.lib user32.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386
|
||||
# SUBTRACT LINK32 /incremental:no /map
|
||||
# Begin Custom Build
|
||||
TargetDir=\XASH3D\src_main\!source\temp\render\!debug
|
||||
InputPath=\XASH3D\src_main\!source\temp\render\!debug\server.dll
|
||||
TargetDir=\XASH3D\src_main\!source\temp\server\!debug
|
||||
InputPath=\XASH3D\src_main\!source\temp\server\!debug\server.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"D:\Xash3D\xash\bin\server.dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
|
|
Reference in New Issue