17 Oct 2009

This commit is contained in:
g-cont 2009-10-17 00:00:00 +04:00 committed by Alibek Omarov
parent 43e1b7dc46
commit 771c1f1f96
31 changed files with 469 additions and 702 deletions

View File

@ -728,6 +728,8 @@ void CHudAmmo::UserCmd_NextWeapon( void )
if( !gpActiveSel || gpActiveSel == (WEAPON*)1 )
gpActiveSel = m_pWeapon;
SET_KEYDEST( KEY_HUDMENU );
int pos = 0;
int slot = 0;
if( gpActiveSel )
@ -760,12 +762,14 @@ void CHudAmmo::UserCmd_NextWeapon( void )
// Selects the previous item in the menu
void CHudAmmo :: UserCmd_PrevWeapon( void )
{
if( gHUD.m_fPlayerDead || (gHUD.m_iHideHUDDisplay & (HIDEHUD_WEAPONS | HIDEHUD_ALL)))
if( gHUD.m_fPlayerDead || (gHUD.m_iHideHUDDisplay & (HIDEHUD_WEAPONS|HIDEHUD_ALL)))
return;
if( !gpActiveSel || gpActiveSel == (WEAPON*)1 )
gpActiveSel = m_pWeapon;
SET_KEYDEST( KEY_HUDMENU );
int pos = MAX_WEAPON_POSITIONS-1;
int slot = MAX_WEAPON_SLOTS-1;
if( gpActiveSel )

View File

@ -47,6 +47,9 @@ cvar_t *cl_paused;
cvar_t *info_password;
cvar_t *info_spectator;
cvar_t *name;
cvar_t *model;
cvar_t *topcolor;
cvar_t *bottomcolor;
cvar_t *rate;
client_static_t cls;
@ -1103,6 +1106,9 @@ void CL_InitLocal( void )
info_password = Cvar_Get( "password", "", CVAR_USERINFO, "player password" );
info_spectator = Cvar_Get( "spectator", "0", CVAR_USERINFO, "spectator mode" );
name = Cvar_Get( "name", "unnamed", CVAR_USERINFO | CVAR_ARCHIVE, "player name" );
model = Cvar_Get( "model", "player", CVAR_USERINFO | CVAR_ARCHIVE, "player model ('player' it's a single player model)" );
topcolor = Cvar_Get( "topcolor", "0", CVAR_USERINFO | CVAR_ARCHIVE, "player top color" );
bottomcolor = Cvar_Get( "bottomcolor", "0", CVAR_USERINFO | CVAR_ARCHIVE, "player bottom color" );
rate = Cvar_Get( "rate", "25000", CVAR_USERINFO | CVAR_ARCHIVE, "player network rate" ); // FIXME
cl_showfps = Cvar_Get( "cl_showfps", "1", CVAR_ARCHIVE, "show client fps" );

View File

@ -493,12 +493,8 @@ void SCR_Init( void )
SCR_RegisterShaders();
UI_Init();
UI_SetActiveMenu( UI_MAINMENU );
if( cls.state == ca_uninitialized )
{
cls.key_dest = key_menu;
UI_SetActiveMenu( UI_MAINMENU );
}
scr_init = true;
}
@ -512,6 +508,7 @@ void SCR_Shutdown( void )
Cmd_RemoveCommand( "setfont" );
Cmd_RemoveCommand( "viewpos" );
UI_SetActiveMenu( UI_CLOSEMENU );
UI_Shutdown();
scr_init = false;
}

View File

@ -629,7 +629,7 @@ extern field_t chatField;
//
// cl_menu.c
//
typedef enum { UI_CLOSEMENU, UI_MAINMENU, UI_INGAMEMENU } uiActiveMenu_t;
typedef enum { UI_CLOSEMENU, UI_MAINMENU } uiActiveMenu_t;
void UI_UpdateMenu( int realtime );
void UI_KeyEvent( int key );
@ -660,7 +660,7 @@ void Key_SetBinding( int keynum, char *binding );
void Key_ClearStates( void );
char *Key_KeynumToString( int keynum );
int Key_StringToKeynum( char *str );
int Key_GetKey( char *binding );
int Key_GetKey( const char *binding );
void Key_EnumCmds_f( void );
void Key_SetKeyDest( int key_dest );

View File

@ -118,6 +118,7 @@ void Host_Free( void );
void Host_SetServerState( int state );
int Host_ServerState( void );
int Host_CompareFileTime( long ft1, long ft2 );
void Host_EndGame( const char *message, ... );
void Host_AbortCurrentFrame( void );
void Host_WriteDefaultConfig( void );
void Host_WriteConfig( void );

View File

@ -59,10 +59,10 @@ keyname_t keynames[] =
{"F3", K_F3, "menu_loadgame" },
{"F4", K_F4, "menu_keys" },
{"F5", K_F5, "menu_startserver" },
{"F6", K_F6, "save quick" },
{"F7", K_F7, "load quick" }, // half-life style
{"F6", K_F6, "quicksave" },
{"F7", K_F7, "quickload" },
{"F8", K_F8, "" },
{"F9", K_F9, "load quick" }, // quake style
{"F9", K_F9, "" },
{"F10", K_F10, "menu_quit" },
{"F11", K_F11, "" },
{"F12", K_F12, "screenshot" },
@ -851,18 +851,17 @@ char *Key_GetBinding( int keynum )
Key_GetKey
===================
*/
int Key_GetKey(char *binding)
int Key_GetKey( const char *binding )
{
int i;
int i;
if(!binding) return -1;
if( !binding ) return -1;
for (i = 0; i < 256; i++)
for( i = 0; i < 256; i++ )
{
if (keys[i].binding && !com.stricmp(binding, keys[i].binding))
if( keys[i].binding && !com.stricmp( binding, keys[i].binding ))
return i;
}
return -1;
}
@ -1104,8 +1103,6 @@ void Key_Event( int key, bool down, int time )
case key_game:
if( cls.state == ca_cinematic )
SCR_StopCinematic();
else if( cls.state == ca_active )
UI_SetActiveMenu( UI_INGAMEMENU );
else UI_SetActiveMenu( UI_MAINMENU );
cls.key_dest = key_menu;
return;

View File

@ -282,10 +282,6 @@ SOURCE=.\uimenu\ui_gotosite.c
# End Source File
# Begin Source File
SOURCE=.\uimenu\ui_ingame.c
# End Source File
# Begin Source File
SOURCE=.\uimenu\ui_loadgame.c
# End Source File
# Begin Source File
@ -330,11 +326,11 @@ SOURCE=.\uimenu\ui_qmenu.c
# End Source File
# Begin Source File
SOURCE=.\uimenu\ui_quit.c
SOURCE=.\uimenu\ui_savegame.c
# End Source File
# Begin Source File
SOURCE=.\uimenu\ui_savegame.c
SOURCE=.\uimenu\ui_saveload.c
# End Source File
# Begin Source File

View File

@ -1,16 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: engine - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
<h3>Results</h3>
engine.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

View File

@ -555,9 +555,6 @@ void Host_Frame( void )
last_time = host.frametime[0];
time = Host_ModifyTime( time );
if( host.state == HOST_RESTART )
host.state = HOST_FRAME;
SV_Frame ( time ); // server frame
CL_Frame ( time ); // client frame
VM_Frame ( time ); // vprogs frame
@ -674,6 +671,7 @@ void Host_InitCommon( const int argc, const char **argv )
Host_InitEvents();
FS_LoadGameInfo( NULL );
Image_Init( GI->texmode, -1 );
zonepool = Mem_AllocPool( "Zone Engine" );

View File

@ -230,14 +230,15 @@ void SV_Map_f( void )
void SV_Newgame_f( void )
{
com.strncpy( host.finalmsg, "end game", MAX_STRING );
SV_Shutdown( false ); // completely shutdown server, disconncet clients and unload progs
// FIXME: parse newgame script or somewhat
Cbuf_ExecuteText( EXEC_APPEND, va( "map %s\n", GI->startmap ));
}
void SV_Endgame_f( void )
{
Host_EndGame( "end game" );
}
/*
==============
SV_Load_f
@ -270,6 +271,17 @@ void SV_Load_f( void )
SV_ActivateServer();
}
/*
==============
SV_QuickLoad_f
==============
*/
void SV_QuickLoad_f( void )
{
Cbuf_ExecuteText( EXEC_APPEND, "echo Quick Loading...; wait; load quick" );
}
/*
==============
SV_Save_f
@ -286,6 +298,17 @@ void SV_Save_f( void )
SV_WriteSaveFile( Cmd_Argv( 1 ), false, true );
}
/*
==============
SV_QuickSave_f
==============
*/
void SV_QuickSave_f( void )
{
Cbuf_ExecuteText( EXEC_APPEND, "echo Quick Saving...; wait; save quick" );
}
/*
==============
SV_Delete_f
@ -577,6 +600,7 @@ void SV_InitOperatorCommands( void )
Cmd_AddCommand( "map", SV_Map_f, "start new level" );
Cmd_AddCommand( "devmap", SV_Map_f, "start new level" );
Cmd_AddCommand( "newgame", SV_Newgame_f, "begin new game" );
Cmd_AddCommand( "endgame", SV_Endgame_f, "end current game" );
Cmd_AddCommand( "changelevel", SV_ChangeLevel_f, "changing level" );
Cmd_AddCommand( "restart", SV_Restart_f, "restarting current level" );
Cmd_AddCommand( "reload", SV_Reload_f, "continue from latest save or restart level" );
@ -589,6 +613,8 @@ void SV_InitOperatorCommands( void )
Cmd_AddCommand( "save", SV_Save_f, "save the game to a file" );
Cmd_AddCommand( "load", SV_Load_f, "load a saved game file" );
Cmd_AddCommand( "quicksave", SV_QuickSave_f, "save the game to the quicksave" );
Cmd_AddCommand( "quickload", SV_QuickLoad_f, "load a quick-saved game file" );
Cmd_AddCommand( "delete", SV_Delete_f, "delete a saved game file and saveshot" );
Cmd_AddCommand( "autosave", SV_AutoSave_f, "save the game to 'autosave' file" );
Cmd_AddCommand( "killserver", SV_KillServer_f, "shutdown current server" );
@ -605,6 +631,7 @@ void SV_KillOperatorCommands( void )
Cmd_RemoveCommand( "map" );
Cmd_RemoveCommand( "movie" );
Cmd_RemoveCommand( "newgame" );
Cmd_RemoveCommand( "endgame" );
Cmd_RemoveCommand( "changelevel" );
Cmd_RemoveCommand( "restart" );
Cmd_RemoveCommand( "reload" );

View File

@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "ui_local.h"
#define ART_BACKGROUND "gfx/shell/splash2"
#define ART_BACKGROUND "gfx/shell/credits"
#define UI_CREDITS_PATH "scripts/credits.txt"
#define UI_CREDITS_MAXLINES 2048
@ -91,7 +91,7 @@ static const char *uiCreditsDefault[] =
typedef struct
{
const char **credits;
float startTime;
int startTime;
float showTime;
float fadeTime;
int numLines;
@ -123,7 +123,7 @@ static void UI_Credits_DrawFunc( void )
// now draw the credits
UI_ScaleCoords( NULL, NULL, &w, &h );
y = SCREEN_HEIGHT - (((uiStatic.realTime * 0.001f) - uiCredits.startTime ) * 40.0f );
y = scr_height->integer - ((uiStatic.realTime - uiCredits.startTime) / 40.0f);
// draw the credits
for ( i = 0; i < uiCredits.numLines && uiCredits.credits[i]; i++, y += 20 )
@ -203,7 +203,7 @@ static void UI_Credits_Init( void )
*p++ = 0;
if( --count == 0 ) break;
}
uiCredits.index[ ++uiCredits.numLines] = 0;
uiCredits.index[++uiCredits.numLines] = 0;
uiCredits.credits = uiCredits.index;
}
else
@ -215,7 +215,7 @@ static void UI_Credits_Init( void )
}
// run credits
uiCredits.startTime = (uiStatic.realTime * 0.001f);
uiCredits.startTime = uiStatic.realTime + 500; // make half-seconds delay
uiCredits.showTime = bound( 0.1f, com.strlen( uiCredits.credits[uiCredits.numLines - 1]), 12.0f );
uiCredits.fadeTime = 0.0f; // will be determined later
uiCredits.active = true;

View File

@ -1,248 +0,0 @@
/*
Copyright (C) 1997-2001 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "common.h"
#include "ui_local.h"
#include "client.h"
#define ART_LOGO "gfx/shell/ingui/main"
#define ART_BLUR "gfx/shell/ingui/edge_blur"
#define ART_LOADGAME "gfx/shell/ingui/titles/load_game_n"
#define ART_LOADGAME2 "gfx/shell/ingui/titles/load_game_s"
#define ART_SAVEGAME "gfx/shell/ingui/titles/save_game_n"
#define ART_SAVEGAME2 "gfx/shell/ingui/titles/save_game_s"
#define ART_OPTIONS "gfx/shell/ingui/titles/options_n"
#define ART_OPTIONS2 "gfx/shell/ingui/titles/options_s"
#define ART_RESUMEGAME "gfx/shell/ingui/titles/return_to_game_n"
#define ART_RESUMEGAME2 "gfx/shell/ingui/titles/return_to_game_s"
#define ART_LEAVEGAME "gfx/shell/ingui/titles/return_to_menu_n"
#define ART_LEAVEGAME2 "gfx/shell/ingui/titles/return_to_menu_s"
#define ART_EXITGAME "gfx/shell/ingui/titles/exit_game_n"
#define ART_EXITGAME2 "gfx/shell/ingui/titles/exit_game_s"
#define ID_LOGO 0
#define ID_BLUR 1
#define ID_LOADGAME 2
#define ID_SAVEGAME 3
#define ID_OPTIONS 4
#define ID_RESUMEGAME 5
#define ID_LEAVEGAME 6
#define ID_EXITGAME 7
typedef struct
{
menuFramework_s menu;
menuBitmap_s logo;
menuBitmap_s blur;
menuBitmap_s loadGame;
menuBitmap_s saveGame;
menuBitmap_s options;
menuBitmap_s resumeGame;
menuBitmap_s leaveGame;
menuBitmap_s exitGame;
} uiInGame_t;
static uiInGame_t uiInGame;
/*
=================
UI_InGame_Callback
=================
*/
static void UI_InGame_Callback( void *self, int event )
{
menuCommon_s *item = (menuCommon_s *)self;
if( event != QM_ACTIVATED )
return;
switch( item->id )
{
case ID_LOADGAME:
UI_LoadGame_Menu();
break;
case ID_SAVEGAME:
UI_SaveGame_Menu();
break;
case ID_OPTIONS:
UI_Options_Menu();
break;
case ID_RESUMEGAME:
UI_CloseMenu();
break;
case ID_LEAVEGAME:
Cbuf_ExecuteText( EXEC_APPEND, "disconnect\n" );
break;
case ID_EXITGAME:
UI_Quit_Menu();
break;
}
}
/*
=================
UI_InGame_Init
=================
*/
static void UI_InGame_Init( void )
{
Mem_Set( &uiInGame, 0, sizeof( uiInGame_t ));
uiInGame.logo.generic.id = ID_LOGO;
uiInGame.logo.generic.type = QMTYPE_BITMAP;
uiInGame.logo.generic.flags = QMF_INACTIVE;
uiInGame.logo.generic.x = 0;
uiInGame.logo.generic.y = 238;
uiInGame.logo.generic.width = 1024;
uiInGame.logo.generic.height = 292;
uiInGame.logo.pic = ART_LOGO;
uiInGame.blur.generic.id = ID_BLUR;
uiInGame.blur.generic.type = QMTYPE_BITMAP;
uiInGame.blur.generic.flags = QMF_INACTIVE;
uiInGame.blur.generic.x = 0;
uiInGame.blur.generic.y = 230;
uiInGame.blur.generic.width = 1024;
uiInGame.blur.generic.height = 308;
uiInGame.blur.pic = ART_BLUR;
uiInGame.loadGame.generic.id = ID_LOADGAME;
uiInGame.loadGame.generic.type = QMTYPE_BITMAP;
uiInGame.loadGame.generic.flags = QMF_PULSEIFFOCUS | QMF_FOCUSBEHIND;
uiInGame.loadGame.generic.x = 330;
uiInGame.loadGame.generic.y = 258;
uiInGame.loadGame.generic.width = 362;
uiInGame.loadGame.generic.height = 42;
uiInGame.loadGame.generic.callback = UI_InGame_Callback;
uiInGame.loadGame.pic = ART_LOADGAME;
uiInGame.loadGame.focusPic = ART_LOADGAME2;
uiInGame.saveGame.generic.id = ID_SAVEGAME;
uiInGame.saveGame.generic.type = QMTYPE_BITMAP;
uiInGame.saveGame.generic.flags = QMF_PULSEIFFOCUS | QMF_FOCUSBEHIND;
uiInGame.saveGame.generic.x = 330;
uiInGame.saveGame.generic.y = 300;
uiInGame.saveGame.generic.width = 362;
uiInGame.saveGame.generic.height = 42;
uiInGame.saveGame.generic.callback = UI_InGame_Callback;
uiInGame.saveGame.pic = ART_SAVEGAME;
uiInGame.saveGame.focusPic = ART_SAVEGAME2;
uiInGame.options.generic.id = ID_OPTIONS;
uiInGame.options.generic.type = QMTYPE_BITMAP;
uiInGame.options.generic.flags = QMF_PULSEIFFOCUS | QMF_FOCUSBEHIND;
uiInGame.options.generic.x = 367;
uiInGame.options.generic.y = 342;
uiInGame.options.generic.width = 290;
uiInGame.options.generic.height = 42;
uiInGame.options.generic.callback = UI_InGame_Callback;
uiInGame.options.pic = ART_OPTIONS;
uiInGame.options.focusPic = ART_OPTIONS2;
uiInGame.resumeGame.generic.id = ID_RESUMEGAME;
uiInGame.resumeGame.generic.type = QMTYPE_BITMAP;
uiInGame.resumeGame.generic.flags = QMF_PULSEIFFOCUS | QMF_FOCUSBEHIND;
uiInGame.resumeGame.generic.x = 258;
uiInGame.resumeGame.generic.y = 384;
uiInGame.resumeGame.generic.width = 508;
uiInGame.resumeGame.generic.height = 42;
uiInGame.resumeGame.generic.callback = UI_InGame_Callback;
uiInGame.resumeGame.pic = ART_RESUMEGAME;
uiInGame.resumeGame.focusPic = ART_RESUMEGAME2;
uiInGame.leaveGame.generic.id = ID_LEAVEGAME;
uiInGame.leaveGame.generic.type = QMTYPE_BITMAP;
uiInGame.leaveGame.generic.flags = QMF_PULSEIFFOCUS | QMF_FOCUSBEHIND;
uiInGame.leaveGame.generic.x = 260;
uiInGame.leaveGame.generic.y = 426;
uiInGame.leaveGame.generic.width = 504;
uiInGame.leaveGame.generic.height = 42;
uiInGame.leaveGame.generic.callback = UI_InGame_Callback;
uiInGame.leaveGame.pic = ART_LEAVEGAME;
uiInGame.leaveGame.focusPic = ART_LEAVEGAME2;
uiInGame.exitGame.generic.id = ID_EXITGAME;
uiInGame.exitGame.generic.type = QMTYPE_BITMAP;
uiInGame.exitGame.generic.flags = QMF_PULSEIFFOCUS | QMF_FOCUSBEHIND;
uiInGame.exitGame.generic.x = 342;
uiInGame.exitGame.generic.y = 468;
uiInGame.exitGame.generic.width = 340;
uiInGame.exitGame.generic.height = 42;
uiInGame.exitGame.generic.callback = UI_InGame_Callback;
uiInGame.exitGame.pic = ART_EXITGAME;
uiInGame.exitGame.focusPic = ART_EXITGAME2;
UI_AddItem( &uiInGame.menu, (void *)&uiInGame.logo );
UI_AddItem( &uiInGame.menu, (void *)&uiInGame.blur );
UI_AddItem( &uiInGame.menu, (void *)&uiInGame.loadGame );
UI_AddItem( &uiInGame.menu, (void *)&uiInGame.saveGame );
UI_AddItem( &uiInGame.menu, (void *)&uiInGame.options );
UI_AddItem( &uiInGame.menu, (void *)&uiInGame.resumeGame );
UI_AddItem( &uiInGame.menu, (void *)&uiInGame.leaveGame );
UI_AddItem( &uiInGame.menu, (void *)&uiInGame.exitGame );
}
/*
=================
UI_InGame_Precache
=================
*/
void UI_InGame_Precache( void )
{
if( !re ) return;
re->RegisterShader( ART_LOGO, SHADER_NOMIP );
re->RegisterShader( ART_BLUR, SHADER_NOMIP );
re->RegisterShader( ART_LOADGAME, SHADER_NOMIP );
re->RegisterShader( ART_LOADGAME2, SHADER_NOMIP );
re->RegisterShader( ART_SAVEGAME, SHADER_NOMIP );
re->RegisterShader( ART_SAVEGAME2, SHADER_NOMIP );
re->RegisterShader( ART_OPTIONS, SHADER_NOMIP );
re->RegisterShader( ART_OPTIONS2, SHADER_NOMIP );
re->RegisterShader( ART_RESUMEGAME, SHADER_NOMIP );
re->RegisterShader( ART_RESUMEGAME2, SHADER_NOMIP );
re->RegisterShader( ART_LEAVEGAME, SHADER_NOMIP );
re->RegisterShader( ART_LEAVEGAME2, SHADER_NOMIP );
re->RegisterShader( ART_EXITGAME, SHADER_NOMIP );
re->RegisterShader( ART_EXITGAME2, SHADER_NOMIP );
}
/*
=================
UI_InGame_Menu
=================
*/
void UI_InGame_Menu( void )
{
if( cls.state != ca_active )
{
// this shouldn't be happening, but for some reason it is in some mods
UI_Main_Menu();
return;
}
UI_InGame_Precache();
UI_InGame_Init();
UI_PushMenu( &uiInGame.menu );
}

View File

@ -159,9 +159,7 @@ static void UI_LoadGame_Callback( void *self, int event )
switch( item->id )
{
case ID_BACK:
if( cls.state == ca_active )
UI_InGame_Menu();
else UI_Main_Menu();
UI_PopMenu();
break;
case ID_LOAD:
if( uiLoadGame.games[uiLoadGame.currentGame].valid )

View File

@ -26,7 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "clgame_api.h"
#include "render_api.h"
#define UI_WHITE_SHADER "*white"
#define UI_CURSOR_NORMAL "gfx/shell/cursor"
#define UI_CURSOR_DISABLED "gfx/shell/denied"
#define UI_CURSOR_TYPING "gfx/shell/typing"
@ -320,10 +320,10 @@ void UI_PopMenu( void );
// Precache
void UI_Main_Precache( void );
void UI_InGame_Precache( void );
void UI_NewGame_Precache( void );
void UI_LoadGame_Precache( void );
void UI_SaveGame_Precache( void );
void UI_SaveLoad_Precache( void );
void UI_MultiPlayer_Precache( void );
void UI_Options_Precache( void );
void UI_PlayerSetup_Precache( void );
@ -337,16 +337,15 @@ void UI_Network_Precache( void );
void UI_Defaults_Precache( void );
void UI_Demos_Precache( void );
void UI_Mods_Precache( void );
void UI_Quit_Precache( void );
void UI_Credits_Precache( void );
void UI_GoToSite_Precache( void );
// Menus
void UI_Main_Menu( void );
void UI_InGame_Menu( void );
void UI_NewGame_Menu( void );
void UI_LoadGame_Menu( void );
void UI_SaveGame_Menu( void );
void UI_SaveLoad_Menu( void );
void UI_MultiPlayer_Menu( void );
void UI_Options_Menu( void );
void UI_PlayerSetup_Menu( void );
@ -360,7 +359,6 @@ void UI_Network_Menu( void );
void UI_Defaults_Menu( void );
void UI_Demos_Menu( void );
void UI_Mods_Menu( void );
void UI_Quit_Menu( void );
void UI_Credits_Menu( void );
void UI_GoToSite_Menu( const char *webAddress );

View File

@ -31,16 +31,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define ID_BACKGROUND 0
#define ID_CONSOLE 1
#define ID_NEWGAME 2
#define ID_CONFIGURATION 3
#define ID_SAVERESTORE 4
#define ID_MULTIPLAYER 5
#define ID_CUSTOMGAME 6
#define ID_CREDITS 7
#define ID_QUIT 8
#define ID_MINIMIZE 9
#define ID_COPYRIGHT 11
#define ID_MSGBOX 12
#define ID_RESUME 2
#define ID_NEWGAME 3
#define ID_CONFIGURATION 4
#define ID_SAVERESTORE 5
#define ID_MULTIPLAYER 6
#define ID_CUSTOMGAME 7
#define ID_CREDITS 8
#define ID_QUIT 9
#define ID_MINIMIZE 10
#define ID_MSGBOX 11
#define ID_MSGTEXT 12
#define ID_YES 13
#define ID_NO 14
@ -50,6 +51,7 @@ typedef struct
menuBitmap_s background;
menuAction_s console;
menuAction_s resumeGame;
menuAction_s newGame;
menuAction_s configuration;
menuAction_s saveRestore;
@ -62,7 +64,7 @@ typedef struct
menuBitmap_s quitButton;
// quit dialog
menuBitmap_s msgBox;
menuAction_s msgBox;
menuAction_s quitMessage;
menuAction_s yes;
menuAction_s no;
@ -109,6 +111,7 @@ static void UI_QuitDialog( void )
// toggle main menu between active\inactive
// show\hide quit dialog
uiMain.console.generic.flags ^= QMF_INACTIVE;
uiMain.resumeGame.generic.flags ^= QMF_INACTIVE;
uiMain.newGame.generic.flags ^= QMF_INACTIVE;
uiMain.saveRestore.generic.flags ^= QMF_INACTIVE;
uiMain.configuration.generic.flags ^= QMF_INACTIVE;
@ -144,6 +147,9 @@ static void UI_Main_Callback( void *self, int event )
UI_SetActiveMenu( UI_CLOSEMENU );
cls.key_dest = key_console;
break;
case ID_RESUME:
UI_CloseMenu();
break;
case ID_NEWGAME:
UI_NewGame_Menu();
break;
@ -154,7 +160,9 @@ static void UI_Main_Callback( void *self, int event )
UI_Options_Menu();
break;
case ID_SAVERESTORE:
UI_LoadGame_Menu(); // FIXME
if( cls.state == ca_active )
UI_SaveLoad_Menu();
else UI_LoadGame_Menu();
break;
case ID_CUSTOMGAME:
UI_Mods_Menu();
@ -202,9 +210,18 @@ static void UI_Main_Init( void )
uiMain.console.generic.name = "Console";
uiMain.console.generic.flags = QMF_HIGHLIGHTIFFOCUS|QMF_DROPSHADOW;
uiMain.console.generic.x = 72;
uiMain.console.generic.y = 180;
uiMain.console.generic.y = (cls.state == ca_active) ? 130 : 180;
uiMain.console.generic.callback = UI_Main_Callback;
uiMain.resumeGame.generic.id = ID_RESUME;
uiMain.resumeGame.generic.type = QMTYPE_ACTION;
uiMain.resumeGame.generic.name = "Resume game";
uiMain.resumeGame.generic.flags = QMF_HIGHLIGHTIFFOCUS|QMF_DROPSHADOW;
uiMain.resumeGame.generic.statusText = "Return to game.";
uiMain.resumeGame.generic.x = 72;
uiMain.resumeGame.generic.y = 180;
uiMain.resumeGame.generic.callback = UI_Main_Callback;
uiMain.newGame.generic.id = ID_NEWGAME;
uiMain.newGame.generic.type = QMTYPE_ACTION;
uiMain.newGame.generic.name = "New game";
@ -217,6 +234,7 @@ static void UI_Main_Init( void )
uiMain.saveRestore.generic.id = ID_SAVERESTORE;
uiMain.saveRestore.generic.type = QMTYPE_ACTION;
uiMain.saveRestore.generic.flags = QMF_HIGHLIGHTIFFOCUS|QMF_DROPSHADOW;
if( cls.state == ca_active )
{
uiMain.saveRestore.generic.name = "Save\\Load Game";
@ -226,6 +244,7 @@ static void UI_Main_Init( void )
{
uiMain.saveRestore.generic.name = "Load Game";
uiMain.saveRestore.generic.statusText = "Load a previously saved game.";
uiMain.resumeGame.generic.flags |= QMF_HIDDEN;
}
uiMain.saveRestore.generic.x = 72;
uiMain.saveRestore.generic.y = 280;
@ -299,7 +318,7 @@ static void UI_Main_Init( void )
uiMain.quitButton.focusPic = ART_CLOSEBTN_F;
uiMain.msgBox.generic.id = ID_MSGBOX;
uiMain.msgBox.generic.type = QMTYPE_BITMAP;
uiMain.msgBox.generic.type = QMTYPE_ACTION;
uiMain.msgBox.generic.flags = QMF_INACTIVE|QMF_HIDDEN;
uiMain.msgBox.generic.ownerdraw = UI_MsgBox_Ownerdraw; // just a fill rectangle
uiMain.msgBox.generic.x = 192;
@ -332,6 +351,7 @@ static void UI_Main_Init( void )
UI_AddItem( &uiMain.menu, (void *)&uiMain.background );
if( host.developer ) UI_AddItem( &uiMain.menu, (void *)&uiMain.console );
UI_AddItem( &uiMain.menu, (void *)&uiMain.resumeGame );
UI_AddItem( &uiMain.menu, (void *)&uiMain.newGame );
UI_AddItem( &uiMain.menu, (void *)&uiMain.saveRestore );
UI_AddItem( &uiMain.menu, (void *)&uiMain.configuration );
@ -370,13 +390,6 @@ UI_Main_Menu
*/
void UI_Main_Menu( void )
{
if( cls.state == ca_active )
{
// this shouldn't be happening, but for some reason it is in some mods
UI_InGame_Menu();
return;
}
UI_Main_Precache();
UI_Main_Init();

View File

@ -109,10 +109,14 @@ UI_FillRect
*/
void UI_FillRect( int x, int y, int w, int h, const rgba_t color )
{
shader_t shader;
if( !re ) return;
shader = re->RegisterShader( UI_WHITE_SHADER, SHADER_FONT );
re->SetColor( color );
re->DrawFill( x, y, w, h );
re->DrawStretchPic( x, y, w, h, 0, 0, 1, 1, shader );
re->SetColor( NULL );
}
@ -370,6 +374,10 @@ void *UI_ItemAtCursor( menuFramework_s *menu )
if( menu->cursor < 0 || menu->cursor >= menu->numItems )
return 0;
// inactive items can't be has focus
if( ((menuCommon_s *)menu->items[menu->cursor])->flags & QMF_INACTIVE )
return 0;
return menu->items[menu->cursor];
}
@ -879,11 +887,9 @@ void UI_SetActiveMenu( uiActiveMenu_t activeMenu )
UI_CloseMenu();
break;
case UI_MAINMENU:
Key_SetKeyDest( key_menu );
UI_Main_Menu();
break;
case UI_INGAMEMENU:
UI_InGame_Menu();
break;
default:
Host_Error( "UI_SetActiveMenu: wrong menu type (%i)\n", activeMenu );
}
@ -986,10 +992,10 @@ void UI_Precache( void )
return;
UI_Main_Precache();
UI_InGame_Precache();
UI_NewGame_Precache();
UI_LoadGame_Precache();
UI_SaveGame_Precache();
UI_SaveLoad_Precache();
UI_MultiPlayer_Precache();
UI_Options_Precache();
UI_PlayerSetup_Precache();
@ -1019,10 +1025,10 @@ void UI_Init( void )
ui_sensitivity = Cvar_Get( "ui_sensitivity", "1", CVAR_ARCHIVE, "mouse sensitivity while in-menu" );
Cmd_AddCommand( "menu_main", UI_Main_Menu, "open the main menu" );
Cmd_AddCommand( "menu_ingame", UI_InGame_Menu, "open the main menu when server is active");
Cmd_AddCommand( "menu_newgame", UI_NewGame_Menu, "open the newgame menu" );
Cmd_AddCommand( "menu_loadgame", UI_LoadGame_Menu, "open the loadgame menu" );
Cmd_AddCommand( "menu_savegame", UI_SaveGame_Menu, "open the savegame menu" );
Cmd_AddCommand( "menu_saveload", UI_SaveGame_Menu, "open the save\\load menu" );
Cmd_AddCommand( "menu_multiplayer", UI_MultiPlayer_Menu, "open the multiplayer menu" );
Cmd_AddCommand( "menu_options", UI_Options_Menu, "open the options menu" );
Cmd_AddCommand( "menu_playersetup", UI_PlayerSetup_Menu, "open the player setup menu" );
@ -1055,10 +1061,10 @@ void UI_Shutdown( void )
return;
Cmd_RemoveCommand( "menu_main" );
Cmd_RemoveCommand( "menu_ingame" );
Cmd_RemoveCommand( "menu_singleplayer" );
Cmd_RemoveCommand( "menu_newgame" );
Cmd_RemoveCommand( "menu_loadgame" );
Cmd_RemoveCommand( "menu_savegame" );
Cmd_RemoveCommand( "menu_saveload" );
Cmd_RemoveCommand( "menu_multiplayer" );
Cmd_RemoveCommand( "menu_options" );
Cmd_RemoveCommand( "menu_playersetup" );

View File

@ -20,6 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "common.h"
#include "ui_local.h"
#include "client.h"
#define ART_BACKGROUND "gfx/shell/splash"
#define ART_BANNER "gfx/shell/head_newgame"
@ -32,6 +33,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define ID_DIFFICULT 4
#define ID_CANCEL 5
#define ID_MSGBOX 6
#define ID_MSGTEXT 7
#define ID_YES 8
#define ID_NO 9
typedef struct
{
menuFramework_s menu;
@ -43,6 +49,16 @@ typedef struct
menuAction_s medium;
menuAction_s hard;
menuAction_s cancel;
// newgame prompt dialog
menuAction_s msgBox;
menuAction_s dlgMessage1;
menuAction_s dlgMessage2;
menuAction_s yes;
menuAction_s no;
float skill;
} uiNewGame_t;
static uiNewGame_t uiNewGame;
@ -54,9 +70,6 @@ UI_NewGame_StartGame
*/
static void UI_NewGame_StartGame( float skill )
{
char *game = GI->gamedir;
string text;
Cvar_SetValue( "skill", skill );
Cvar_SetValue( "deathmatch", 0 );
Cvar_SetValue( "gamerules", 0 );
@ -64,8 +77,32 @@ static void UI_NewGame_StartGame( float skill )
Cvar_SetValue( "paused", 0 );
Cvar_SetValue( "coop", 0 );
com.snprintf( text, sizeof( text ), "loading; killserver; wait; newgame\n" );
Cbuf_ExecuteText( EXEC_APPEND, text );
Cbuf_ExecuteText( EXEC_APPEND, "loading; killserver; wait; newgame\n" );
}
static void UI_PromptDialog( float skill )
{
if( cls.state != ca_active )
{
UI_NewGame_StartGame( skill );
return;
}
uiNewGame.skill = skill;
// toggle main menu between active\inactive
// show\hide quit dialog
uiNewGame.easy.generic.flags ^= QMF_INACTIVE;
uiNewGame.medium.generic.flags ^= QMF_INACTIVE;
uiNewGame.hard.generic.flags ^= QMF_INACTIVE;
uiNewGame.cancel.generic.flags ^= QMF_INACTIVE;
uiNewGame.msgBox.generic.flags ^= QMF_HIDDEN;
uiNewGame.dlgMessage1.generic.flags ^= QMF_HIDDEN;
uiNewGame.dlgMessage2.generic.flags ^= QMF_HIDDEN;
uiNewGame.no.generic.flags ^= QMF_HIDDEN;
uiNewGame.yes.generic.flags ^= QMF_HIDDEN;
}
/*
@ -83,20 +120,38 @@ static void UI_NewGame_Callback( void *self, int event )
switch( item->id )
{
case ID_EASY:
UI_NewGame_StartGame( 0.0f );
UI_PromptDialog( 0.0f );
break;
case ID_MEDIUM:
UI_NewGame_StartGame( 1.0f );
UI_PromptDialog( 1.0f );
break;
case ID_DIFFICULT:
UI_NewGame_StartGame( 2.0f );
UI_PromptDialog( 2.0f );
break;
case ID_CANCEL:
UI_PopMenu();
break;
case ID_YES:
UI_NewGame_StartGame( uiNewGame.skill );
break;
case ID_NO:
UI_PromptDialog( 0.0f ); // clear skill
break;
}
}
/*
=================
UI_MsgBox_Ownerdraw
=================
*/
static void UI_MsgBox_Ownerdraw( void *self )
{
menuCommon_s *item = (menuCommon_s *)self;
UI_FillRect( item->x, item->y, item->width, item->height, uiColorDkGrey );
}
/*
=================
UI_NewGame_Init
@ -160,12 +215,56 @@ static void UI_NewGame_Init( void )
uiNewGame.cancel.generic.y = 380;
uiNewGame.cancel.generic.callback = UI_NewGame_Callback;
uiNewGame.msgBox.generic.id = ID_MSGBOX;
uiNewGame.msgBox.generic.type = QMTYPE_ACTION;
uiNewGame.msgBox.generic.flags = QMF_INACTIVE|QMF_HIDDEN;
uiNewGame.msgBox.generic.ownerdraw = UI_MsgBox_Ownerdraw; // just a fill rectangle
uiNewGame.msgBox.generic.x = 192;
uiNewGame.msgBox.generic.y = 256;
uiNewGame.msgBox.generic.width = 640;
uiNewGame.msgBox.generic.height = 256;
uiNewGame.dlgMessage1.generic.id = ID_MSGTEXT;
uiNewGame.dlgMessage1.generic.type = QMTYPE_ACTION;
uiNewGame.dlgMessage1.generic.flags = QMF_INACTIVE|QMF_HIDDEN;
uiNewGame.dlgMessage1.generic.name = "Starting a new game will exit";
uiNewGame.dlgMessage1.generic.x = 248;
uiNewGame.dlgMessage1.generic.y = 280;
uiNewGame.dlgMessage2.generic.id = ID_MSGTEXT;
uiNewGame.dlgMessage2.generic.type = QMTYPE_ACTION;
uiNewGame.dlgMessage2.generic.flags = QMF_INACTIVE|QMF_HIDDEN;
uiNewGame.dlgMessage2.generic.name = "any current game, OK to exit?";
uiNewGame.dlgMessage2.generic.x = 248;
uiNewGame.dlgMessage2.generic.y = 310;
uiNewGame.yes.generic.id = ID_YES;
uiNewGame.yes.generic.type = QMTYPE_ACTION;
uiNewGame.yes.generic.flags = QMF_HIGHLIGHTIFFOCUS|QMF_HIDDEN;
uiNewGame.yes.generic.name = "Ok";
uiNewGame.yes.generic.x = 380;
uiNewGame.yes.generic.y = 460;
uiNewGame.yes.generic.callback = UI_NewGame_Callback;
uiNewGame.no.generic.id = ID_NO;
uiNewGame.no.generic.type = QMTYPE_ACTION;
uiNewGame.no.generic.flags = QMF_HIGHLIGHTIFFOCUS|QMF_HIDDEN;
uiNewGame.no.generic.name = "Cancel";
uiNewGame.no.generic.x = 530;
uiNewGame.no.generic.y = 460;
uiNewGame.no.generic.callback = UI_NewGame_Callback;
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.background );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.banner );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.easy );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.medium );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.hard );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.cancel );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.msgBox );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.dlgMessage1 );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.dlgMessage2 );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.no );
UI_AddItem( &uiNewGame.menu, (void *)&uiNewGame.yes );
}
/*

View File

@ -41,15 +41,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define ID_VIEW 7
#define ID_NAME 8
#define ID_MODEL 9
#define ID_SKIN 10
#define MAX_PLAYERMODELS 256
#define MAX_PLAYERSKINS 2048
typedef struct
{
string playerModels[MAX_PLAYERMODELS];
int numPlayerModels;
string models[MAX_PLAYERMODELS];
int num_models;
string currentModel;
ref_params_t refdef;
@ -69,7 +68,6 @@ typedef struct
menuField_s name;
menuSpinControl_s model;
menuSpinControl_s skin;
} uiPlayerSetup_t;
static uiPlayerSetup_t uiPlayerSetup;
@ -101,21 +99,30 @@ UI_PlayerSetup_FindModels
static void UI_PlayerSetup_FindModels( void )
{
search_t *search;
string name, path;
int i;
uiPlayerSetup.numPlayerModels = 0;
uiPlayerSetup.num_models = 0;
// Get file list
search = FS_Search( "models/players/*.mdl", true );
search = FS_Search( "models/player/*", true );
if( !search ) return;
// add default singleplayer model
com.strncpy( uiPlayerSetup.models[uiPlayerSetup.num_models], "player", sizeof(uiPlayerSetup.models[uiPlayerSetup.num_models] ));
uiPlayerSetup.num_models++;
// build the model list
for( i = 0; search && i < search->numfilenames; i++ )
{
com.strncpy( uiPlayerSetup.playerModels[uiPlayerSetup.numPlayerModels], search->filenames[i],
sizeof(uiPlayerSetup.playerModels[uiPlayerSetup.numPlayerModels] ));
uiPlayerSetup.numPlayerModels++;
FS_FileBase( search->filenames[i], name );
com.snprintf( path, MAX_STRING, "models/player/%s/%s.mdl", name, name );
if( !FS_FileExists( path )) continue;
com.strncpy( uiPlayerSetup.models[uiPlayerSetup.num_models], name, sizeof(uiPlayerSetup.models[uiPlayerSetup.num_models] ));
uiPlayerSetup.num_models++;
}
Mem_Free( search );
}
@ -126,35 +133,25 @@ UI_PlayerSetup_GetConfig
*/
static void UI_PlayerSetup_GetConfig( void )
{
string model;
char *ch;
int i;
com.strncpy( uiPlayerSetup.name.buffer, Cvar_VariableString( "name" ), sizeof( uiPlayerSetup.name.buffer ));
// Get user set skin
com.strncpy( model, Cvar_VariableString( "skin" ), sizeof(model));
ch = com.strchr( model, '/' );
// find models
UI_PlayerSetup_FindModels();
// select current model
for( i = 0; i < uiPlayerSetup.numPlayerModels; i++ )
for( i = 0; i < uiPlayerSetup.num_models; i++ )
{
if( !com.stricmp( uiPlayerSetup.playerModels[i], model ))
if( !com.stricmp( uiPlayerSetup.models[i], Cvar_VariableString( "model" )))
{
uiPlayerSetup.model.curValue = (float)i;
break;
}
}
com.strncpy( uiPlayerSetup.currentModel, uiPlayerSetup.playerModels[(int)uiPlayerSetup.model.curValue], sizeof(uiPlayerSetup.currentModel ));
uiPlayerSetup.model.maxValue = (float)(uiPlayerSetup.numPlayerModels - 1);
// select current skin
uiPlayerSetup.skin.curValue = (float)Cvar_VariableInteger( "skin" );
uiPlayerSetup.skin.maxValue = 1; // FIXME
com.strncpy( uiPlayerSetup.currentModel, uiPlayerSetup.models[(int)uiPlayerSetup.model.curValue], sizeof(uiPlayerSetup.currentModel ));
uiPlayerSetup.model.maxValue = (float)(uiPlayerSetup.num_models - 1);
}
/*
@ -165,7 +162,7 @@ UI_PlayerSetup_SetConfig
static void UI_PlayerSetup_SetConfig( void )
{
Cvar_Set( "name", uiPlayerSetup.name.buffer );
Cvar_SetValue( "skin", uiPlayerSetup.skin.curValue );
Cvar_Set( "model", uiPlayerSetup.currentModel );
}
/*
@ -175,15 +172,21 @@ UI_PlayerSetup_UpdateConfig
*/
static void UI_PlayerSetup_UpdateConfig( void )
{
string path, name;
// see if the model has changed
if( com.stricmp( uiPlayerSetup.currentModel, uiPlayerSetup.playerModels[(int)uiPlayerSetup.model.curValue] ))
if( com.stricmp( uiPlayerSetup.currentModel, uiPlayerSetup.models[(int)uiPlayerSetup.model.curValue] ))
{
com.strncpy( uiPlayerSetup.currentModel, uiPlayerSetup.playerModels[(int)uiPlayerSetup.model.curValue], sizeof( uiPlayerSetup.currentModel ));
uiPlayerSetup.skin.curValue = (float)0; // FIXME
com.strncpy( uiPlayerSetup.currentModel, uiPlayerSetup.models[(int)uiPlayerSetup.model.curValue], sizeof( uiPlayerSetup.currentModel ));
}
uiPlayerSetup.model.generic.name = uiPlayerSetup.playerModels[(int)uiPlayerSetup.model.curValue];
uiPlayerSetup.ent.v.model = re->RegisterModel( uiPlayerSetup.currentModel, MAX_MODELS - 1 );
uiPlayerSetup.model.generic.name = uiPlayerSetup.models[(int)uiPlayerSetup.model.curValue];
com.strncpy( name, uiPlayerSetup.models[(int)uiPlayerSetup.model.curValue], sizeof( name ));
if( !com.stricmp( name, "player" ))
com.strncpy( path, "models/player.mdl", MAX_STRING );
else com.snprintf( path, MAX_STRING, "models/player/%s/%s.mdl", name, name );
uiPlayerSetup.ent.v.model = re->RegisterModel( path, MAX_MODELS - 1 );
}
/*
@ -360,19 +363,6 @@ static void UI_PlayerSetup_Init( void )
uiPlayerSetup.model.maxValue = 1;
uiPlayerSetup.model.range = 1;
uiPlayerSetup.skin.generic.id = ID_SKIN;
uiPlayerSetup.skin.generic.type = QMTYPE_SPINCONTROL;
uiPlayerSetup.skin.generic.flags = QMF_CENTER_JUSTIFY | QMF_PULSEIFFOCUS | QMF_DROPSHADOW;
uiPlayerSetup.skin.generic.x = 368;
uiPlayerSetup.skin.generic.y = 288;
uiPlayerSetup.skin.generic.width = 198;
uiPlayerSetup.skin.generic.height = 30;
uiPlayerSetup.skin.generic.callback = UI_PlayerSetup_Callback;
uiPlayerSetup.skin.generic.statusText = "Select a skin for representation in multiplayer";
uiPlayerSetup.skin.minValue = 0;
uiPlayerSetup.skin.maxValue = 1;
uiPlayerSetup.skin.range = 1;
UI_PlayerSetup_GetConfig();
UI_AddItem( &uiPlayerSetup.menu, (void *)&uiPlayerSetup.background );
@ -385,7 +375,6 @@ static void UI_PlayerSetup_Init( void )
UI_AddItem( &uiPlayerSetup.menu, (void *)&uiPlayerSetup.view );
UI_AddItem( &uiPlayerSetup.menu, (void *)&uiPlayerSetup.name );
UI_AddItem( &uiPlayerSetup.menu, (void *)&uiPlayerSetup.model );
UI_AddItem( &uiPlayerSetup.menu, (void *)&uiPlayerSetup.skin );
// setup render and actor
uiPlayerSetup.refdef.fov_x = 40;

View File

@ -46,8 +46,8 @@ void UI_ScrollList_Init( menuScrollList_s *sl )
}
else
{
if( sl->generic.charWidth < 1 ) sl->generic.charWidth = UI_SMALL_CHAR_WIDTH;
if( sl->generic.charHeight < 1 ) sl->generic.charHeight = UI_SMALL_CHAR_HEIGHT;
if( sl->generic.charWidth < 1 ) sl->generic.charWidth = UI_MED_CHAR_WIDTH;
if( sl->generic.charHeight < 1 ) sl->generic.charHeight = UI_MED_CHAR_HEIGHT;
}
UI_ScaleCoords( NULL, NULL, &sl->generic.charWidth, &sl->generic.charHeight );

View File

@ -1,163 +0,0 @@
/*
Copyright (C) 1997-2001 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "common.h"
#include "ui_local.h"
#define ART_BACKGROUND "gfx/shell/splash"
#define ART_MSGBOX "gfx/shell/quit_screen/quit"
#define ID_BACKGROUND 0
#define ID_MSGBOX 1
#define ID_YES 2
#define ID_NO 3
typedef struct
{
menuFramework_s menu;
menuBitmap_s background;
menuBitmap_s msgBox;
menuBitmap_s no;
menuBitmap_s yes;
} uiQuit_t;
static uiQuit_t uiQuit;
/*
=================
UI_Quit_Callback
=================
*/
static void UI_Quit_Callback( void *self, int event )
{
menuCommon_s *item = (menuCommon_s *)self;
if( event != QM_ACTIVATED )
return;
switch( item->id )
{
case ID_YES:
Cbuf_ExecuteText( EXEC_APPEND, "quit\n" );
break;
case ID_NO:
UI_PopMenu();
break;
}
}
/*
=================
UI_Quit_Ownerdraw
=================
*/
static void UI_Quit_Ownerdraw( void *self )
{
menuCommon_s *item = (menuCommon_s *)self;
if( uiQuit.menu.items[uiQuit.menu.cursor] == self )
UI_DrawPic(item->x, item->y, item->width, item->height, uiColorWhite, UI_MOVEBOXFOCUS );
else UI_DrawPic(item->x, item->y, item->width, item->height, uiColorWhite, UI_MOVEBOX );
UI_DrawPic( item->x, item->y, item->width, item->height, uiColorWhite, ((menuBitmap_s *)self)->pic );
}
/*
=================
UI_Quit_Init
=================
*/
static void UI_Quit_Init( void )
{
Mem_Set( &uiQuit, 0, sizeof( uiQuit_t ));
uiQuit.background.generic.id = ID_BACKGROUND;
uiQuit.background.generic.type = QMTYPE_BITMAP;
uiQuit.background.generic.flags = QMF_INACTIVE | QMF_GRAYED;
uiQuit.background.generic.x = 0;
uiQuit.background.generic.y = 0;
uiQuit.background.generic.width = 1024;
uiQuit.background.generic.height = 768;
uiQuit.background.pic = ART_BACKGROUND;
uiQuit.msgBox.generic.id = ID_MSGBOX;
uiQuit.msgBox.generic.type = QMTYPE_BITMAP;
uiQuit.msgBox.generic.flags = QMF_INACTIVE;
uiQuit.msgBox.generic.x = 174;
uiQuit.msgBox.generic.y = 284;
uiQuit.msgBox.generic.width = 676;
uiQuit.msgBox.generic.height = 202;
uiQuit.msgBox.pic = ART_MSGBOX;
uiQuit.no.generic.id = ID_NO;
uiQuit.no.generic.type = QMTYPE_BITMAP;
uiQuit.no.generic.x = 310;
uiQuit.no.generic.y = 410;
uiQuit.no.generic.width = 198;
uiQuit.no.generic.height = 38;
uiQuit.no.generic.callback = UI_Quit_Callback;
uiQuit.no.generic.ownerdraw = UI_Quit_Ownerdraw;
uiQuit.no.pic = UI_CANCELBUTTON;
uiQuit.yes.generic.id = ID_YES;
uiQuit.yes.generic.type = QMTYPE_BITMAP;
uiQuit.yes.generic.x = 516;
uiQuit.yes.generic.y = 410;
uiQuit.yes.generic.width = 198;
uiQuit.yes.generic.height = 38;
uiQuit.yes.generic.callback = UI_Quit_Callback;
uiQuit.yes.generic.ownerdraw = UI_Quit_Ownerdraw;
uiQuit.yes.pic = UI_ACCEPTBUTTON;
UI_AddItem( &uiQuit.menu, (void *)&uiQuit.background );
UI_AddItem( &uiQuit.menu, (void *)&uiQuit.msgBox );
UI_AddItem( &uiQuit.menu, (void *)&uiQuit.no );
UI_AddItem( &uiQuit.menu, (void *)&uiQuit.yes );
}
/*
=================
UI_Quit_Precache
=================
*/
void UI_Quit_Precache( void )
{
if( !re ) return;
re->RegisterShader( ART_BACKGROUND, SHADER_NOMIP );
re->RegisterShader( ART_MSGBOX, SHADER_NOMIP );
}
/*
=================
UI_Quit_Menu
=================
*/
void UI_Quit_Menu( void )
{
UI_Quit_Precache();
UI_Quit_Init();
UI_PushMenu( &uiQuit.menu );
}

View File

@ -158,9 +158,7 @@ static void UI_SaveGame_Callback( void *self, int event )
switch( item->id )
{
case ID_BACK:
if( cls.state == ca_active )
UI_InGame_Menu();
else UI_Main_Menu();
UI_PopMenu();
break;
case ID_SAVE:
if( Host_ServerState())

180
engine/uimenu/ui_saveload.c Normal file
View File

@ -0,0 +1,180 @@
/*
Copyright (C) 1997-2001 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "common.h"
#include "ui_local.h"
#include "client.h"
#define ART_BACKGROUND "gfx/shell/splash"
#define ART_BANNER "gfx/shell/head_saveload"
#define ID_BACKGROUND 0
#define ID_BANNER 1
#define ID_LOAD 2
#define ID_SAVE 3
#define ID_DONE 4
#define ID_MSGHINT 5
typedef struct
{
menuFramework_s menu;
menuBitmap_s background;
menuBitmap_s banner;
menuAction_s save;
menuAction_s load;
menuAction_s done;
menuAction_s hintMessage;
char hintText[MAX_SYSPATH];
} uiSaveLoad_t;
static uiSaveLoad_t uiSaveLoad;
/*
=================
UI_SaveLoad_Callback
=================
*/
static void UI_SaveLoad_Callback( void *self, int event )
{
menuCommon_s *item = (menuCommon_s *)self;
if( event != QM_ACTIVATED )
return;
switch( item->id )
{
case ID_LOAD:
UI_LoadGame_Menu();
break;
case ID_SAVE:
UI_SaveGame_Menu();
break;
case ID_DONE:
UI_PopMenu();
break;
}
}
/*
=================
UI_SaveLoad_Init
=================
*/
static void UI_SaveLoad_Init( void )
{
Mem_Set( &uiSaveLoad, 0, sizeof( uiSaveLoad_t ));
com.strncat( uiSaveLoad.hintText, "During play, you can quickly save your game by pressing ", MAX_SYSPATH );
com.strncat( uiSaveLoad.hintText, Key_KeynumToString( Key_GetKey( "quicksave" )), MAX_SYSPATH );
com.strncat( uiSaveLoad.hintText, ".\nLoad this game again by pressing ", MAX_SYSPATH );
com.strncat( uiSaveLoad.hintText, Key_KeynumToString( Key_GetKey( "quickload" )), MAX_SYSPATH );
com.strncat( uiSaveLoad.hintText, ".\n", MAX_SYSPATH );
uiSaveLoad.background.generic.id = ID_BACKGROUND;
uiSaveLoad.background.generic.type = QMTYPE_BITMAP;
uiSaveLoad.background.generic.flags = QMF_INACTIVE;
uiSaveLoad.background.generic.x = 0;
uiSaveLoad.background.generic.y = 0;
uiSaveLoad.background.generic.width = 1024;
uiSaveLoad.background.generic.height = 768;
uiSaveLoad.background.pic = ART_BACKGROUND;
uiSaveLoad.banner.generic.id = ID_BANNER;
uiSaveLoad.banner.generic.type = QMTYPE_BITMAP;
uiSaveLoad.banner.generic.flags = QMF_INACTIVE;
uiSaveLoad.banner.generic.x = 65;
uiSaveLoad.banner.generic.y = 92;
uiSaveLoad.banner.generic.width = 690;
uiSaveLoad.banner.generic.height = 120;
uiSaveLoad.banner.pic = ART_BANNER;
uiSaveLoad.load.generic.id = ID_LOAD;
uiSaveLoad.load.generic.type = QMTYPE_ACTION;
uiSaveLoad.load.generic.flags = QMF_HIGHLIGHTIFFOCUS|QMF_DROPSHADOW;
uiSaveLoad.load.generic.name = "Load game";
uiSaveLoad.load.generic.statusText = "Load a previously saved game";
uiSaveLoad.load.generic.x = 72;
uiSaveLoad.load.generic.y = 230;
uiSaveLoad.load.generic.callback = UI_SaveLoad_Callback;
uiSaveLoad.save.generic.id = ID_SAVE;
uiSaveLoad.save.generic.type = QMTYPE_ACTION;
uiSaveLoad.save.generic.flags = QMF_HIGHLIGHTIFFOCUS|QMF_DROPSHADOW;
uiSaveLoad.save.generic.name = "Save game";
uiSaveLoad.save.generic.statusText = "Save current game";
uiSaveLoad.save.generic.x = 72;
uiSaveLoad.save.generic.y = 280;
uiSaveLoad.save.generic.callback = UI_SaveLoad_Callback;
uiSaveLoad.done.generic.id = ID_DONE;
uiSaveLoad.done.generic.type = QMTYPE_ACTION;
uiSaveLoad.done.generic.flags = QMF_HIGHLIGHTIFFOCUS|QMF_DROPSHADOW;
uiSaveLoad.done.generic.name = "Done";
uiSaveLoad.done.generic.statusText = "Go back to the Main Menu";
uiSaveLoad.done.generic.x = 72;
uiSaveLoad.done.generic.y = 330;
uiSaveLoad.done.generic.callback = UI_SaveLoad_Callback;
uiSaveLoad.hintMessage.generic.id = ID_MSGHINT;
uiSaveLoad.hintMessage.generic.type = QMTYPE_ACTION;
uiSaveLoad.hintMessage.generic.flags = QMF_INACTIVE|QMF_SMALLFONT;
uiSaveLoad.hintMessage.generic.color = uiColorLtGrey;
uiSaveLoad.hintMessage.generic.name = uiSaveLoad.hintText;
uiSaveLoad.hintMessage.generic.x = 360;
uiSaveLoad.hintMessage.generic.y = 480;
UI_AddItem( &uiSaveLoad.menu, (void *)&uiSaveLoad.background );
UI_AddItem( &uiSaveLoad.menu, (void *)&uiSaveLoad.banner );
UI_AddItem( &uiSaveLoad.menu, (void *)&uiSaveLoad.load );
UI_AddItem( &uiSaveLoad.menu, (void *)&uiSaveLoad.save );
UI_AddItem( &uiSaveLoad.menu, (void *)&uiSaveLoad.done );
UI_AddItem( &uiSaveLoad.menu, (void *)&uiSaveLoad.hintMessage );
}
/*
=================
UI_SaveLoad_Precache
=================
*/
void UI_SaveLoad_Precache( void )
{
if( !re ) return;
re->RegisterShader( ART_BACKGROUND, SHADER_NOMIP );
re->RegisterShader( ART_BANNER, SHADER_NOMIP );
}
/*
=================
UI_SaveLoad_Menu
=================
*/
void UI_SaveLoad_Menu( void )
{
UI_SaveLoad_Precache();
UI_SaveLoad_Init();
UI_PushMenu( &uiSaveLoad.menu );
}

View File

@ -270,7 +270,7 @@ static void UI_Video_SetConfig( void )
else Cvar_Set( "gl_texturemode", "GL_LINEAR_MIPMAP_NEAREST" );
// restart video subsystem
Cbuf_ExecuteText( EXEC_NOW, "vid_restart\n" );
Cbuf_ExecuteText( EXEC_APPEND, "vid_restart\n" );
}
/*

View File

@ -1356,6 +1356,7 @@ void FS_CreateGameInfo( const char *filename )
com.strncat( buffer, "\nstartmap\t\t\"newmap\"\n\n", MAX_SYSPATH );
com.strncat( buffer, "// directory for progs binary and source", MAX_SYSPATH );
com.strncat( buffer, "\nsourcedir\t\t\"source\"", MAX_SYSPATH );
com.strncat( buffer, "\ntexmode\t\t\"Xash3D\"", MAX_SYSPATH );
com.strncat( buffer, "\nsp_spawn\t\t\"info_player_start\"", MAX_SYSPATH );
com.strncat( buffer, "\ndm_spawn\t\t\"info_player_deathmatch\"", MAX_SYSPATH );
com.strncat( buffer, "\nctf_spawn\t\t\"info_player_ctf\"", MAX_SYSPATH );
@ -1398,6 +1399,7 @@ static bool FS_ParseGameInfo( const char *filename, gameinfo_t *GameInfo )
GameInfo->max_edicts = 1024; // default value if not specified
GameInfo->version = 1.0;
com.strncpy( GameInfo->texmode, "Xash3D", MAX_STRING );
com.strncpy( GameInfo->sp_entity, "info_player_start", MAX_STRING );
com.strncpy( GameInfo->dm_entity, "info_player_deathmatch", MAX_STRING );
com.strncpy( GameInfo->ctf_entity, "info_player_ctf", MAX_STRING );
@ -1431,6 +1433,10 @@ static bool FS_ParseGameInfo( const char *filename, gameinfo_t *GameInfo )
{
PS_GetString( script, false, GameInfo->title, sizeof( GameInfo->title ));
}
else if( !com.stricmp( token.string, "texmode" ))
{
PS_GetString( script, false, GameInfo->texmode, sizeof( GameInfo->texmode ));
}
else if( !com.stricmp( token.string, "sp_spawn" ))
{
PS_GetString( script, false, GameInfo->sp_entity, sizeof( GameInfo->sp_entity ));

View File

@ -177,7 +177,7 @@ static const loadformat_t load_hl1[] =
{ "%s%s.%s", "lmp", Image_LoadLMP, IL_HINT_HL }, // hl menu images (cached.wad etc)
{ "%s%s.%s", "bmp", Image_LoadBMP, IL_HINT_NO }, // hl skyboxes
{ "%s%s.%s", "tga", Image_LoadTGA, IL_HINT_NO }, // hl vgui menus
{ "%s%s.%s", "pal", Image_LoadPAL, IL_HINT_HL }, // install studio palette
{ "%s%s.%s", "pal", Image_LoadPAL, IL_HINT_NO }, // install studio palette
{ NULL, NULL, NULL, IL_HINT_NO }
};
@ -217,20 +217,8 @@ static const loadformat_t load_wadlib[] =
{ NULL, NULL, NULL, IL_HINT_NO }
};
// version11 - Xash3D 0.48 profile (not used)
static const loadformat_t load_xash048[] =
{
{ "%s%s.%s", "tga", Image_LoadTGA, IL_HINT_NO }, // tga it's master type
{ "%s%s.%s", "dds", Image_LoadDDS, IL_HINT_NO }, // hud, cubemaps
{ "%s%s.%s", "jpg", Image_LoadJPG, IL_HINT_NO }, // just in case
{ "%s%s.%s", "mdl", Image_LoadMDL, IL_HINT_HL }, // hl studio model skins
{ "%s%s.%s", "spr", Image_LoadSPR, IL_HINT_HL }, // hl sprite frames
{ "%s%s.%s", "pal", Image_LoadPAL, IL_HINT_HL }, // install studio palette
{ NULL, NULL, NULL, IL_HINT_NO }
};
// version12 - Xash3D 0.51 profile
static const loadformat_t load_xash051[] =
// version11 - Xash3D default image profile
static const loadformat_t load_xash[] =
{
{ "%s%s.%s", "dds", Image_LoadDDS, IL_HINT_NO }, // cubemaps, depthmaps, 2d textures
{ "%s%s.%s", "png", Image_LoadPNG, IL_HINT_NO }, // levelshot save as .png
@ -279,16 +267,8 @@ static const saveformat_t save_extragen[] =
{ NULL, NULL, NULL }
};
// version1 - other games instance
static const saveformat_t save_xash048[] =
{
{ "%s%s.%s", "tga", Image_SaveTGA }, // tga screenshots
{ "%s%s.%s", "png", Image_SavePNG }, // png levelshots
{ NULL, NULL, NULL }
};
// version2 - Xash3D normal instance
static const saveformat_t save_xash051[] =
// Xash3D normal instance
static const saveformat_t save_xash[] =
{
{ "%s%s.%s", "tga", Image_SaveTGA }, // tga screenshots
{ "%s%s.%s", "jpg", Image_SaveJPG }, // tga levelshots or screenshots
@ -312,7 +292,6 @@ void Image_Init( void )
{
// init pools
Sys.imagepool = Mem_AllocPool( "ImageLib Pool" );
image_profile = Cvar_Get( "image_profile", "Xash3D", CVAR_SYSTEMINFO, "set imagelib profile: e.g. Doom1, Quake1, Xash3D etc" );
gl_round_down = Cvar_Get( "gl_round_down", "0", CVAR_SYSTEMINFO, "down size non-power of two textures" );
fs_textures = Cvar_Get( "fs_textures_path", "textures", CVAR_SYSTEMINFO, "textures default folder" );
png_compression = Cvar_Get( "png_compression", "9", CVAR_SYSTEMINFO, "pnglib compression level" );
@ -338,8 +317,8 @@ void Image_Init( void )
break;
case HOST_NORMAL:
case HOST_BSPLIB:
Image_Setup( image_profile->string, image.cmd_flags ); // same as image_profile
image.saveformats = save_xash051;
Image_Setup( "default", 0 ); // re-initialized later
image.saveformats = save_xash;
break;
case HOST_RIPPER:
image.loadformats = load_null;
@ -358,9 +337,11 @@ void Image_Setup( const char *formats, const uint flags )
if( flags != -1 ) image.cmd_flags = flags;
if( formats == NULL ) return;
MsgDev( D_NOTE, "Image_Init( %s )\n", formats );
// reinstall loadformats by magic keyword :)
if( !com.stricmp( formats, "Xash3D" ))
image.loadformats = load_xash051;
if( !com.stricmp( formats, "Xash3D" ) || !com.stricmp( formats, "Xash" ))
image.loadformats = load_xash;
else if( !com.stricmp( formats, "stalker" ) || !com.stricmp( formats, "S.T.A.L.K.E.R" ))
image.loadformats = load_stalker;
else if( !com.stricmp( formats, "Doom1" ) || !com.stricmp( formats, "Doom2" ))
@ -377,7 +358,7 @@ void Image_Setup( const char *formats, const uint flags )
image.loadformats = load_hl1;
else if( !com.stricmp( formats, "hl2" ) || !com.stricmp( formats, "Half-Life 2" ))
image.loadformats = load_hl2;
else image.loadformats = load_xash048; // unrecognized version, use default
else image.loadformats = load_xash; // unrecognized version, use default
}
void Image_Shutdown( void )

View File

@ -70,8 +70,13 @@ bool Image_LoadMDL( const char *name, const byte *buffer, size_t filesize )
pixels = image.width * image.height;
fin = (byte *)pin->index; // setup buffer
if(!Image_LumpValidSize( name )) return false;
if( image.hint != IL_HINT_Q1 && !( flags & STUDIO_NF_QUAKESKIN ))
{
if( filesize < ( sizeof( *pin ) + pixels + 768 ))
return false;
if( flags & STUDIO_NF_TRANSPARENT )
{
Image_GetPaletteLMP( fin + pixels, LUMP_TRANSPARENT );
@ -81,6 +86,9 @@ bool Image_LoadMDL( const char *name, const byte *buffer, size_t filesize )
}
else if( image.hint != IL_HINT_HL && flags & STUDIO_NF_QUAKESKIN )
{
if( filesize < ( sizeof( *pin ) + pixels ))
return false;
// alias models setup
Image_GetPaletteQ1();
@ -102,7 +110,6 @@ bool Image_LoadMDL( const char *name, const byte *buffer, size_t filesize )
return false; // unknown or unsupported mode rejected
}
if(!Image_LumpValidSize( name )) return false;
image.depth = 1;
image.type = PF_INDEXED_32; // 32-bit palete

View File

@ -231,6 +231,7 @@ typedef struct gameinfo_s
string vsrcdir; // virtual machine source directory (qcc know when give source files)
string startmap; // map to start singleplayer game
string title; // Game Main Title
string texmode; // configure ImageLib to use various texture formats
float version; // game version (optional)
int viewmode;

View File

@ -198,7 +198,7 @@ void *Mod_AliasLoadSkins( ref_model_t *mod, int numskins, daliasskintype_t *pski
if( numskins < 1 || numskins > MAX_SKINS )
Host_Error( "Mod_LoadAliasModel: Invalid # of skins: %d\n", numskins );
s = pheader->skinwidth * pheader->skinheight;
s = sizeof( *ptexture ) + pheader->skinwidth * pheader->skinheight;
ptexture = Mod_Malloc( mod, sizeof( *ptexture ));
ptexture->height = pheader->skinheight;
ptexture->width = pheader->skinwidth;

View File

@ -649,8 +649,10 @@ bool R_Init_OpenGL( void )
{
Cvar_SetValue( "r_mode", glConfig.prev_mode );
r_mode->modified = false;
Cvar_Set( "r_allow_software", "1" );
MsgDev( D_ERROR, "R_SetMode: invalid mode\n" );
}
// try setting it back to something safe
if(( err = R_ChangeDisplaySettings( glConfig.prev_mode, false )) != rserr_ok )
{

View File

@ -544,7 +544,7 @@ void GL_InitCommands( void )
r_portalmaps = Cvar_Get( "r_portalmaps", "1", CVAR_ARCHIVE|CVAR_LATCH_VIDEO, "use portal maps for portal rendering" );
r_portalmaps_maxtexsize = Cvar_Get( "r_portalmaps_maxtexsize", "512", CVAR_ARCHIVE, "portal maps texture dims" );
r_allow_software = Cvar_Get( "r_allow_software", "1", 0, "allow OpenGL software emulation" );
r_allow_software = Cvar_Get( "r_allow_software", "0", 0, "allow OpenGL software emulation" );
r_3dlabs_broken = Cvar_Get( "r_3dlabs_broken", "1", CVAR_ARCHIVE, "3dLabs renderer issues" );
r_lighting_bumpscale = Cvar_Get( "r_lighting_bumpscale", "8", CVAR_ARCHIVE|CVAR_LATCH_VIDEO, "lighting bumpscale" );

View File

@ -1,110 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: vid_gl - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP1EB.tmp" with contents
[
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../public" /I "../common" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\vid_gl\!debug/" /Fo"..\temp\vid_gl\!debug/" /Fd"..\temp\vid_gl\!debug/" /FD /c
"D:\Xash3D\src_main\vid_gl\cin.c"
"D:\Xash3D\src_main\vid_gl\r_aliasq.c"
"D:\Xash3D\src_main\vid_gl\r_backend.c"
"D:\Xash3D\src_main\vid_gl\r_bloom.c"
"D:\Xash3D\src_main\vid_gl\r_cin.c"
"D:\Xash3D\src_main\vid_gl\r_cull.c"
"D:\Xash3D\src_main\vid_gl\r_draw.c"
"D:\Xash3D\src_main\vid_gl\r_image.c"
"D:\Xash3D\src_main\vid_gl\r_light.c"
"D:\Xash3D\src_main\vid_gl\r_main.c"
"D:\Xash3D\src_main\vid_gl\r_math.c"
"D:\Xash3D\src_main\vid_gl\r_mesh.c"
"D:\Xash3D\src_main\vid_gl\r_model.c"
"D:\Xash3D\src_main\vid_gl\r_opengl.c"
"D:\Xash3D\src_main\vid_gl\r_poly.c"
"D:\Xash3D\src_main\vid_gl\r_program.c"
"D:\Xash3D\src_main\vid_gl\r_register.c"
"D:\Xash3D\src_main\vid_gl\r_shader.c"
"D:\Xash3D\src_main\vid_gl\r_shadow.c"
"D:\Xash3D\src_main\vid_gl\r_sky.c"
"D:\Xash3D\src_main\vid_gl\r_sprite.c"
"D:\Xash3D\src_main\vid_gl\r_studio.c"
"D:\Xash3D\src_main\vid_gl\r_surf.c"
]
Creating command line "cl.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP1EB.tmp""
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP1EC.tmp" with contents
[
msvcrtd.lib user32.lib gdi32.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\vid_gl\!debug/vid_gl.pdb" /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"..\temp\vid_gl\!debug/vid_gl.dll" /implib:"..\temp\vid_gl\!debug/vid_gl.lib" /pdbtype:sept
"\Xash3D\src_main\temp\vid_gl\!debug\cin.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_aliasq.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_backend.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_bloom.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_cin.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_cull.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_draw.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_image.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_light.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_main.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_math.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_mesh.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_model.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_opengl.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_poly.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_program.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_register.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_shader.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_shadow.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_sky.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_sprite.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_studio.obj"
"\Xash3D\src_main\temp\vid_gl\!debug\r_surf.obj"
]
Creating command line "link.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP1EC.tmp""
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP1ED.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\vid_gl\!debug\vid_gl.dll "D:\Xash3D\bin\vid_gl.dll"
]
Creating command line ""C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP1ED.bat""
Compiling...
cin.c
r_aliasq.c
r_backend.c
r_bloom.c
r_cin.c
r_cull.c
r_draw.c
r_image.c
r_light.c
r_main.c
r_math.c
r_mesh.c
r_model.c
r_opengl.c
r_poly.c
r_program.c
r_register.c
r_shader.c
r_shadow.c
r_sky.c
Generating Code...
Compiling...
r_sprite.c
r_studio.c
r_surf.c
Generating Code...
Linking...
Creating library ..\temp\vid_gl\!debug/vid_gl.lib and object ..\temp\vid_gl\!debug/vid_gl.exp
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\vid_gl\!debug\vid_gl.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1.
<h3>Results</h3>
vid_gl.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>