Initial New-Menu Commit.

This commit is contained in:
Marco Cawthorne 2018-12-27 23:53:24 +01:00
parent 0d5b490fac
commit 8ffd4bb134
71 changed files with 5489 additions and 21 deletions

View file

@ -3,4 +3,4 @@ CC=fteqcc
qc-progs:
$(CC) Client/progs.src
$(CC) Server/progs.src
$(CC) Menu/progs.src
$(CC) Menu-FN/progs.src

View file

@ -155,7 +155,7 @@ void QPhysics_Run ( entity eTarget )
#ifdef SSQC
if ( ( self.flags & FL_ONGROUND ) && self.movetype == MOVETYPE_WALK && ( flFallVel > 580 )) {
float fFallDamage = ( flFallVel - 580 ) * ( 200 / ( 1024 - 580 ) );
float fFallDamage = ( flFallVel - 580 ) * ( 100 / ( 1024 - 580 ) );
Damage_Apply( self, world, fFallDamage, self.origin, FALSE );
}
#endif

30
Source/Menu-FN/README Normal file
View file

@ -0,0 +1,30 @@
HALF-LIFE WON MENU - QUAKEC VERSION
===================================
This menu logic is part of the FreeCS project.
It's a close recreation of the Half-Life main-menu (pre-Steam), also known as
the Half-Life WON menu (or just WON Menu - you get the idea).
It attempts to parse string-data and bitmaps from the original paths
whenever it can. It's a full replacement of Half-Life's original menu.
It's created from scratch and is not C++ - it's QuakeC and meant to be used
within FTE QuakeWorld. The file extensions are only changed in order to help
with the syntax highlighting choice of your favorite editor.
This codebase is to be compiled with FTEQCC, no other compiler is supported.
The code has a LICENSE attached to it, I'd encourage you to read it.
If you don't want to comply with the LICENSE, you either don't use the software
or we could still negotiate a separate license agreement (for $$$).
A few warnings to the uneducated:
If you're planning on merging or using any of this code in combination with the
original Half-Life SDK, you're violating the Half-Life SDK License Agreement.
I hope this all does not discourage you from using it for your own project.
Thanks to Spike for FTEQCC's advanced features and his engine, FTEQW, that makes
FreeCS and other projects even possible.
Marco 'eukara' Hladik

165
Source/Menu-FN/bitmaps.h Normal file
View file

@ -0,0 +1,165 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
string g_bmp[76] = {
"gfx/shell/btns_main.bmp",
"gfx/shell/cb_checked.bmp",
"gfx/shell/cb_disabled.bmp",
"gfx/shell/cb_down.bmp",
"gfx/shell/cb_empty.bmp",
"gfx/shell/cb_over.bmp",
"gfx/shell/cls_d.bmp",
"gfx/shell/cls_f.bmp",
"gfx/shell/cls_n.bmp",
"gfx/shell/dedicate.bmp",
"gfx/shell/divider.bmp",
"gfx/shell/dnarrowd.bmp",
"gfx/shell/dnarrowf.bmp",
"gfx/shell/dnarrowp.bmp",
"gfx/shell/down.bmp",
"gfx/shell/favorite.bmp",
"gfx/shell/gamma.bmp",
"gfx/shell/head_advanced.bmp",
"gfx/shell/head_advoptions.bmp",
"gfx/shell/head_audio.bmp",
"gfx/shell/head_config.bmp",
"gfx/shell/head_controls.bmp",
"gfx/shell/head_creategame.bmp",
"gfx/shell/head_createroom.bmp",
"gfx/shell/head_custom.bmp",
"gfx/shell/head_customize.bmp",
"gfx/shell/head_filter.bmp",
"gfx/shell/head_gameopts.bmp",
"gfx/shell/head_gore.bmp",
"gfx/shell/head_inetgames.bmp",
"gfx/shell/head_keyboard.bmp",
"gfx/shell/head_lan.bmp",
"gfx/shell/head_load.bmp",
"gfx/shell/head_multi.bmp",
"gfx/shell/head_newgame.bmp",
"gfx/shell/head_readme.bmp",
"gfx/shell/head_room.bmp",
"gfx/shell/head_rooms.bmp",
"gfx/shell/head_save.bmp",
"gfx/shell/head_saveload.bmp",
"gfx/shell/head_single.bmp",
"gfx/shell/head_specgames.bmp",
"gfx/shell/head_video.bmp",
"gfx/shell/head_vidmodes.bmp",
"gfx/shell/head_vidoptions.bmp",
"gfx/shell/larrowdefault.bmp",
"gfx/shell/larrowflyover.bmp",
"gfx/shell/larrowpressed.bmp",
"gfx/shell/linux.bmp",
"gfx/shell/listen.bmp",
"gfx/shell/lock.bmp",
"gfx/shell/min_d.bmp",
"gfx/shell/min_f.bmp",
"gfx/shell/min_n.bmp",
"gfx/shell/nonfav.bmp",
"gfx/shell/notsecure.bmp",
"gfx/shell/pcg.bmp",
"gfx/shell/proxy.bmp",
"gfx/shell/rarrowdefault.bmp",
"gfx/shell/rarrowflyover.bmp",
"gfx/shell/rarrowpressed.bmp",
"gfx/shell/scrn.bmp",
"gfx/shell/secure.bmp",
"gfx/shell/slider.bmp",
"gfx/shell/sm_dnarf.bmp",
"gfx/shell/sm_dnarw.bmp",
"gfx/shell/splash8bit.bmp",
"gfx/shell/splash.bmp",
"gfx/shell/thumb.bmp",
"gfx/shell/unlock.bmp",
"gfx/shell/uparrowd.bmp",
"gfx/shell/uparrowf.bmp",
"gfx/shell/uparrowp.bmp",
"gfx/shell/up.bmp",
"gfx/shell/windows.bmp",
"gfx/shell/won_logo.bmp"
};
enum {
BTNS_MAIN,
CB_CHECKED,
CB_DISABLED,
CB_DOWN,
CB_EMPTY,
CB_OVER,
CLS_D,
CLS_F,
CLS_N,
DEDICATE,
DIVIDER,
DNARROWD,
DNARROWF,
DNARROWP,
DOWN,
FAVORITE,
GAMMA,
HEAD_ADVANCED,
HEAD_ADVOPTIONS,
HEAD_AUDIO,
HEAD_CONFIG,
HEAD_CONTROLS,
HEAD_CREATEGAME,
HEAD_CREATEROOM,
HEAD_CUSTOM,
HEAD_CUSTOMIZE,
HEAD_FILTER,
HEAD_GAMEOPTS,
HEAD_GORE,
HEAD_INETGAMES,
HEAD_KEYBOARD,
HEAD_LAN,
HEAD_LOAD,
HEAD_MULTI,
HEAD_NEWGAME,
HEAD_README,
HEAD_ROOM,
HEAD_ROOMS,
HEAD_SAVE,
HEAD_SAVELOAD,
HEAD_SINGLE,
HEAD_SPECGAMES,
HEAD_VIDEO,
HEAD_VIDMODES,
HEAD_VIDOPTIONS,
LARROWDEFAULT,
LARROWFLYOVER,
LARROWPRESSED,
LINUX,
LISTEN,
LOCK,
MIN_D,
MIN_F,
MIN_N,
NONFAV,
NOTSECURE,
PCG,
PROXY,
RARROWDEFAULT,
RARROWFLYOVER,
RARROWPRESSED,
SCRN,
SECURE,
SLIDER,
SM_DNARF,
SM_DNARW,
SPLASH8BIT,
SPLASH,
THUMB,
UNLOCK,
UPARROWD,
UPARROWF,
UPARROWP,
UP,
WINDOWS,
WON_LOGO
};

87
Source/Menu-FN/colors.cpp Normal file
View file

@ -0,0 +1,87 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
vector col_help;
vector col_prompt_bg;
vector col_prompt_text;
vector col_prompt_title;
vector col_input_text;
vector col_input_bg;
vector col_refresh_title;
vector col_refresh_text;
vector col_refresh_bg;
void Colors_Init(void)
{
int c;
vector coltmp;
string temp;
filestream fs_colors;
/* Defaults */
col_help = [127,127,127] / 255;
col_prompt_bg = [56,56,56] / 255;
col_prompt_text = [240,180,24] / 255;
col_prompt_title = [255,255,255] / 255;
col_input_text = [240,180,24] / 255;
col_input_bg = [56,56,56] / 255;
col_refresh_title = [240,180,24] / 255;
col_refresh_text = [255,255,255] / 255;
col_refresh_bg = [56,56,56] / 255;
fs_colors = fopen("gfx/shell/colors.lst", FILE_READ);
if (fs_colors < 0) {
fs_colors = fopen("gfx/shell/Colors.lst", FILE_READ);
}
if (fs_colors < 0) {
print("^1WARNING: ^7Could NOT load gfx/shell/colors.lst");
return;
}
/* Count the valid entries */
if (fs_colors >= 0) {
while ((temp = fgets(fs_colors))) {
c = tokenize(temp);
if (c != 4) {
continue;
}
coltmp = [stof(argv(1)),stof(argv(2)),stof(argv(3))] / 255;
switch(argv(0)) {
case "HELP_COLOR":
col_help = coltmp;
break;
case "PROMPT_BG_COLOR":
col_prompt_bg = coltmp;
break;
case "PROMPT_TEXT_COLOR":
col_prompt_text = coltmp;
break;
case "PROMPT_TITLE_COLOR":
col_prompt_title = coltmp;
break;
case "INPUT_TEXT_COLOR":
col_input_text = coltmp;
break;
case "INPUT_BG_COLOR":
col_input_bg = coltmp;
break;
case "REFRESH_TITLE_COLOR":
col_refresh_title = coltmp;
break;
case "REFRESH_TEXT_COLOR":
col_refresh_text = coltmp;
break;
case "REFRESH_BG_COLOR":
col_refresh_bg = coltmp;
break;
}
}
}
}

71
Source/Menu-FN/defs.h Normal file
View file

@ -0,0 +1,71 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
var int autocvar_menu_intro = FALSE;
#define KEY_UNKNOWN -1
#define KEY_GAME 0
#define KEY_MENU 2
#define KEY_MENU_GRABBED 3
#define TARGET_MENU 1
#define TARGET_CLIENT 2
/* Basic Menu Globals */
int g_vidsize[2];
int g_menuofs[2];
int g_mousepos[2];
int g_lastmousepos[2];
int g_active;
float g_btnofs;
float frametime;
/* Font IDs */
int font_label;
int font_label_b;
int font_console;
int font_arial;
typedef struct {
void() m_init;
void() m_draw;
void(float evtype, float scanx, float chary, float devid) m_input;
} menupage_t;
int g_menupage;
enum {
PAGE_MAIN,
PAGE_CONFIGURATION,
PAGE_AUDIO,
PAGE_CONTENTCONTROL,
PAGE_CONTROLS,
PAGE_ADVANCEDCONTROLS,
PAGE_VIDEO,
PAGE_VIDEOMODES,
PAGE_VIDEOOPTIONS,
PAGE_CUSTOMGAME,
PAGE_LOADGAME,
PAGE_MULTIPLAYER,
PAGE_CUSTOMIZE,
PAGE_ADVANCEDCUSTOMIZE,
PAGE_INTERNETGAMES,
PAGE_ADDSERVER,
PAGE_CHATROOMS,
PAGE_CREATEGAME,
PAGE_CREATEGAMEINET,
PAGE_ADVANCEDMPOPTIONS,
PAGE_FILTER,
PAGE_VIEWGAMEINFO,
PAGE_LANGAMES,
PAGE_SPECTATEGAMES,
PAGE_NEWGAME,
PAGE_VIEWREADME
};
void m_hide(void);

139
Source/Menu-FN/entry.cpp Normal file
View file

@ -0,0 +1,139 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
void m_init(void)
{
vector g_btnsize;
font_console = loadfont( "font", "", "12", -1 );
font_label = loadfont( "label", "gfx/shell/mssansserif.ttf", "10 12 14", -1 );
font_arial = loadfont( "label", "gfx/shell/arial.ttf", "14", -1 );
font_label_b = loadfont( "label_b", "gfx/shell/arialbd.ttf", "14 12 16", -1 );
for (int i = 0; i < g_bmp.length; i++) {
precache_pic(g_bmp[i]);
}
g_btnsize = drawgetimagesize(g_bmp[BTNS_MAIN]);
g_btnofs = 26 / g_btnsize[1];
Strings_Init();
Colors_Init();
main_init();
}
void m_shutdown(void)
{
}
void m_draw(vector screensize)
{
static float oldtime;
frametime = time - oldtime;
if (!g_active) {
return;
}
if ((screensize[0] != g_vidsize[0]) || (screensize[1] != g_vidsize[1])) {
g_vidsize[0] = screensize[0];
g_vidsize[1] = screensize[1];
g_menuofs[0] = (g_vidsize[0] / 2) - 320;
g_menuofs[1] = (g_vidsize[1] / 2) - 240;
}
if (clientstate() == 2) {
drawfill([0,0], screensize, [0,0,0], 0.75f);
} else {
drawfill([0,0], screensize, [0,0,0], 1.0f);
drawpic([g_menuofs[0],g_menuofs[1]], g_bmp[SPLASH],
[640,480], [1,1,1], 1.0f);
}
main_draw();
oldtime = time;
}
void m_drawloading(vector screensize, float opaque)
{
}
float Menu_InputEvent(float evtype, float scanx, float chary, float devid)
{
switch (evtype) {
case IE_KEYDOWN:
if (chary == K_ESCAPE) {
if (clientstate() == 2) {
m_toggle(0);
}
}
break;
case IE_MOUSEABS:
g_mousepos[0] = scanx;
g_mousepos[1] = chary;
break;
case IE_MOUSEDELTA:
g_mousepos[0] += scanx;
g_mousepos[1] += chary;
break;
}
main_input(evtype, scanx, chary, devid);
return TRUE;
}
void m_display(void)
{
g_active = TRUE;
setkeydest(KEY_MENU);
setmousetarget(TARGET_MENU);
setcursormode(TRUE, "gfx/cursor");
}
/*
=================
m_hide
=================
*/
void m_hide(void)
{
g_active = FALSE;
setkeydest(KEY_GAME);
setmousetarget(TARGET_CLIENT);
setcursormode(FALSE);
}
/*
=================
m_toggle
=================
*/
void m_toggle(float fMode)
{
if (fMode == FALSE) {
m_hide();
} else {
m_display();
}
}
float m_consolecommand(string cmd)
{
tokenize(cmd);
switch (argv(0)) {
case "togglemenu":
m_display();
break;
default:
return FALSE;
}
return TRUE;
}

View file

@ -0,0 +1,11 @@
void menu_addserver_init(void)
{
}
void menu_addserver_draw(void)
{
}
void menu_addserver_input(float evtype, float scanx, float chary, float devid)
{
}

View file

@ -0,0 +1,11 @@
void menu_advancedcontrols_init(void)
{
}
void menu_advancedcontrols_draw(void)
{
}
void menu_advancedcontrols_input(float evtype, float scanx, float chary, float devid)
{
}

View file

@ -0,0 +1,65 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_advcustomize;
CMainButton ac_btnDone;
CMainButton ac_btnCancel;
void ac_btndone_start(void)
{
static void ac_btndone_end(void) {
g_menupage = PAGE_CUSTOMIZE;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,50,172);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_ADVANCED);
header.SetExecute(ac_btndone_end);
}
void ac_btncancel_start(void)
{
static void ac_btnadvanced_end(void) {
g_menupage = PAGE_CUSTOMIZE;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,50,172);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_ADVANCED);
header.SetExecute(ac_btnadvanced_end);
}
void menu_advancedcustomize_init(void)
{
fn_advcustomize = spawn(CWidget);
ac_btnDone = spawn(CMainButton);
ac_btnDone.SetImage(BTN_DONE);
ac_btnDone.SetExecute(ac_btndone_start);
ac_btnDone.SetPos(50,140);
Widget_Add(fn_advcustomize, ac_btnDone);
ac_btnCancel = spawn(CMainButton);
ac_btnCancel.SetImage(BTN_CANCEL);
ac_btnCancel.SetExecute(ac_btncancel_start);
ac_btnCancel.SetPos(50,172);
Widget_Add(fn_advcustomize, ac_btnCancel);
}
void menu_advancedcustomize_draw(void)
{
Widget_Draw(fn_advcustomize);
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_ADVOPTIONS],[460,80], [1,1,1], 1.0f, 1);
}
void menu_advancedcustomize_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_advcustomize, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,11 @@
void menu_advancedmpoptions_init(void)
{
}
void menu_advancedmpoptions_draw(void)
{
}
void menu_advancedmpoptions_input(float evtype, float scanx, float chary, float devid)
{
}

127
Source/Menu-FN/m_audio.cpp Normal file
View file

@ -0,0 +1,127 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_audio;
CMainButton au_btnDone;
CSlider au_sldVolume;
CSlider au_sldSuitVolume;
CCheckBox au_cxCDMusic;
CCheckBox au_cxHQSound;
CCheckBox au_cxA3DSound;
CCheckBox au_cxEAXSound;
/* Button Callbacks */
void au_btndone_start(void)
{
static void au_btndone_end(void) {
g_menupage = PAGE_CONFIGURATION;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,50,172);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_AUDIO);
header.SetExecute(au_btndone_end);
}
void au_sldvolume_changed(float val)
{
cvar_set("volume", ftos(val));
}
void au_sldsuitvolume_changed(float val)
{
cvar_set("suitvolume", ftos(val));
}
void au_cxcdmusic_changed(float val)
{
}
void au_cxhqsound_changed(float val)
{
cvar_set("loadas8bit", ftos(1-val));
localcmd("snd_restart");
}
void au_cxa3dsound_changed(float val)
{
}
void au_cxeaxsound_changed(float val)
{
cvar_set("snd_eax", ftos(val));
}
void menu_audio_init(void)
{
fn_audio = spawn(CWidget);
au_btnDone = spawn(CMainButton);
au_btnDone.SetImage(BTN_DONE);
au_btnDone.SetExecute(au_btndone_start);
au_btnDone.SetPos(50,140);
Widget_Add(fn_audio, au_btnDone);
au_sldVolume = spawn(CSlider);
au_sldVolume.SetPos(206,168);
au_sldVolume.SetValue(cvar("volume"));
au_sldVolume.SetCallback(au_sldvolume_changed);
Widget_Add(fn_audio, au_sldVolume);
au_sldSuitVolume = spawn(CSlider);
au_sldSuitVolume.SetPos(206,219);
au_sldSuitVolume.SetValue(cvar("suitvolume"));
au_sldSuitVolume.SetCallback(au_sldsuitvolume_changed);
Widget_Add(fn_audio, au_sldSuitVolume);
au_cxCDMusic = spawn(CCheckBox);
au_cxCDMusic.SetPos(208,244);
au_cxCDMusic.SetCallback(au_cxcdmusic_changed);
Widget_Add(fn_audio, au_cxCDMusic);
au_cxHQSound = spawn(CCheckBox);
au_cxHQSound.SetPos(208,276);
au_cxHQSound.SetCallback(au_cxhqsound_changed);
au_cxHQSound.SetValue(1-cvar("loadas8bit"));
Widget_Add(fn_audio, au_cxHQSound);
au_cxA3DSound = spawn(CCheckBox);
au_cxA3DSound.SetPos(208,308);
au_cxA3DSound.SetCallback(au_cxa3dsound_changed);
Widget_Add(fn_audio, au_cxA3DSound);
au_cxEAXSound = spawn(CCheckBox);
au_cxEAXSound.SetPos(208,340);
au_cxEAXSound.SetCallback(au_cxeaxsound_changed);
Widget_Add(fn_audio, au_cxEAXSound);
}
void menu_audio_draw(void)
{
Widget_Draw(fn_audio);
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_AUDIO],[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(206, 143, m_reslbl[IDS_AUDIO_VOLUME], 14, 14, [1,1,1],
1.0f, 0, font_label_b);
WLabel_Static(206, 194, m_reslbl[IDS_AUDIO_SUITVOL], 14, 14, [1,1,1],
1.0f, 0, font_label_b);
WLabel_Static(232, 251, m_reslbl[IDS_AUDIO_USECD], 12, 12, [0.75,0.75,0.75],
1.0f, 0, font_label_b);
WLabel_Static(232, 283, m_reslbl[IDS_AUDIO_HIGHQUALITY], 12, 12, [0.75,0.75,0.75],
1.0f, 0, font_label_b);
WLabel_Static(232, 315, m_reslbl[IDS_AUDIO_A3D], 12, 12, [0.75,0.75,0.75],
1.0f, 0, font_label_b);
WLabel_Static(232, 347, m_reslbl[IDS_AUDIO_EAX], 12, 12, [0.75,0.75,0.75],
1.0f, 0, font_label_b);
WField_Static(395, 133, m_reslbl[IDS_AUDIO_CDHINT], 169, 64, col_help,
1.0f, 1, font_label);
}
void menu_audio_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_audio, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,11 @@
void menu_chatrooms_init(void)
{
}
void menu_chatrooms_draw(void)
{
}
void menu_chatrooms_input(float evtype, float scanx, float chary, float devid)
{
}

View file

@ -0,0 +1,135 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_configuration;
CMainButton cf_btnControls;
CMainButton cf_btnAudio;
CMainButton cf_btnVideo;
CMainButton cf_btnContentControl;
CMainButton cf_btnUpdate;
CMainButton cf_btnDone;
/* Button Callbacks */
void btn_controls_start(void)
{
static void btn_controls_end(void) {
g_menupage = PAGE_CONTROLS;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,140,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CONTROLS);
header.SetExecute(btn_controls_end);
}
void btn_audio_start(void)
{
static void btn_audio_end(void) {
g_menupage = PAGE_AUDIO;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,172,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_AUDIO);
header.SetExecute(btn_audio_end);
}
void btn_video_start(void)
{
static void btn_video_end(void) {
g_menupage = PAGE_VIDEO;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,204,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_VIDEO);
header.SetExecute(btn_video_end);
}
void cf_btndone_start(void)
{
static void cf_btndone_end(void) {
g_menupage = PAGE_MAIN;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,70,264);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CONFIG);
header.SetExecute(cf_btndone_end);
}
/* Init */
void menu_configuration_init(void)
{
fn_configuration = spawn(CWidget);
cf_btnControls = spawn(CMainButton);
cf_btnControls.SetImage(BTN_CONTROLS);
cf_btnControls.SetExecute(btn_controls_start);
cf_btnControls.SetPos(50,140);
Widget_Add(fn_configuration, cf_btnControls);
cf_btnAudio = spawn(CMainButton);
cf_btnAudio.SetImage(BTN_AUDIO);
cf_btnAudio.SetExecute(btn_audio_start);
cf_btnAudio.SetPos(50,172);
Widget_Add(fn_configuration, cf_btnAudio);
cf_btnVideo = spawn(CMainButton);
cf_btnVideo.SetImage(BTN_VIDEO);
cf_btnVideo.SetExecute(btn_video_start);
cf_btnVideo.SetPos(50,204);
Widget_Add(fn_configuration, cf_btnVideo);
cf_btnContentControl = spawn(CMainButton);
cf_btnContentControl.SetImage(BTN_CONTENTCONTROL);
//cf_btnContentControl.SetExecute(btn_console);
cf_btnContentControl.SetPos(50,236);
Widget_Add(fn_configuration, cf_btnContentControl);
cf_btnUpdate = spawn(CMainButton);
cf_btnUpdate.SetImage(BTN_UPDATE);
//cf_btnUpdate.SetExecute(btn_console);
cf_btnUpdate.SetPos(50,268);
Widget_Add(fn_configuration, cf_btnUpdate);
cf_btnDone = spawn(CMainButton);
cf_btnDone.SetImage(BTN_DONE);
cf_btnDone.SetExecute(cf_btndone_start);
cf_btnDone.SetPos(50,300);
Widget_Add(fn_configuration, cf_btnDone);
}
/* Drawing */
void menu_configuration_draw(void)
{
Widget_Draw(fn_configuration);
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_CONFIG],[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(215, 148, m_reslbl[IDS_CFG_CONTROLHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 180, m_reslbl[IDS_CFG_AUDIOHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 212, m_reslbl[IDS_CFG_VIDHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 244, m_reslbl[IDS_CONFIGURE_GOREHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 276, m_reslbl[IDS_CONFIGURE_AUTOPATCHHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 308, m_reslbl[IDS_MULTI_DONEHELP], 10, 10, col_help,
1.0f, 0, font_label);
}
void menu_configuration_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_configuration, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,11 @@
void menu_contentcontrol_init(void)
{
}
void menu_contentcontrol_draw(void)
{
}
void menu_contentcontrol_input(float evtype, float scanx, float chary, float devid)
{
}

View file

@ -0,0 +1,156 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_controls;
CMainButton ctrl_btnDefaults;
CMainButton ctrl_btnAdvanced;
CMainButton ctrl_btnOk;
CMainButton ctrl_btnCancel;
CFrame ctrl_frAct;
CListBox ctrl_lbActDesc;
CListBox ctrl_lbActBind1;
CListBox ctrl_lbActBind2;
CScrollbar ctrl_sbControls;
void ctrl_btnok_start(void)
{
static void ctrl_btnok_end(void) {
g_menupage = PAGE_CONFIGURATION;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45, 45, 50, 140);
header.SetStartEndSize(460, 80, 156, 26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CONTROLS);
header.SetExecute(ctrl_btnok_end);
}
void ctrl_btncancel_start(void)
{
static void ctrl_btnok_end(void) {
g_menupage = PAGE_CONFIGURATION;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45, 45, 50, 172);
header.SetStartEndSize(460, 80, 156, 26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CONTROLS);
header.SetExecute(ctrl_btnok_end);
}
void ctrl_sbcontrols_changed(int val)
{
ctrl_lbActDesc.SetScroll(val);
ctrl_lbActBind1.SetScroll(val);
ctrl_lbActBind2.SetScroll(val);
}
void ctrl_lb_clicked(int val)
{
ctrl_lbActDesc.SetSelected(val);
ctrl_lbActBind1.SetSelected(val);
ctrl_lbActBind2.SetSelected(val);
}
void menu_controls_init(void)
{
fn_controls = spawn(CWidget);
ctrl_btnDefaults = spawn(CMainButton);
ctrl_btnDefaults.SetImage(BTN_DEFAULTS);
//ctrl_btnDefaults.SetExecute(ctrl_btnok_start);
ctrl_btnDefaults.SetPos(50,140);
Widget_Add(fn_controls, ctrl_btnDefaults);
ctrl_btnAdvanced = spawn(CMainButton);
ctrl_btnAdvanced.SetImage(BTN_ADVCONTROLS);
//ctrl_btnAdvanced.SetExecute(ctrl_btnok_start);
ctrl_btnAdvanced.SetPos(50,172);
Widget_Add(fn_controls, ctrl_btnAdvanced);
ctrl_btnOk = spawn(CMainButton);
ctrl_btnOk.SetImage(BTN_OK);
ctrl_btnOk.SetExecute(ctrl_btnok_start);
ctrl_btnOk.SetPos(50,204);
Widget_Add(fn_controls, ctrl_btnOk);
ctrl_btnCancel = spawn(CMainButton);
ctrl_btnCancel.SetImage(BTN_CANCEL);
ctrl_btnCancel.SetExecute(ctrl_btncancel_start);
ctrl_btnCancel.SetPos(50,236);
Widget_Add(fn_controls, ctrl_btnCancel);
ctrl_frAct = spawn(CFrame);
ctrl_frAct.SetPos(226,156);
ctrl_frAct.SetSize(363,264);
Widget_Add(fn_controls, ctrl_frAct);
ctrl_lbActDesc = spawn(CListBox);
ctrl_lbActDesc.SetPos(229,159);
ctrl_lbActDesc.SetSize(165,258);
ctrl_lbActDesc.SetChanged(ctrl_lb_clicked);
Widget_Add(fn_controls, ctrl_lbActDesc);
ctrl_lbActBind1 = spawn(CListBox);
ctrl_lbActBind1.SetPos(399,159);
ctrl_lbActBind1.SetSize(99,258);
ctrl_lbActBind1.SetChanged(ctrl_lb_clicked);
Widget_Add(fn_controls, ctrl_lbActBind1);
ctrl_lbActBind2 = spawn(CListBox);
ctrl_lbActBind2.SetPos(503,159);
ctrl_lbActBind2.SetSize(83,258);
ctrl_lbActBind2.SetChanged(ctrl_lb_clicked);
Widget_Add(fn_controls, ctrl_lbActBind2);
ctrl_sbControls = spawn(CScrollbar);
ctrl_sbControls.SetPos(589,156);
ctrl_sbControls.SetHeight(258+6);
ctrl_sbControls.SetCallback(ctrl_sbcontrols_changed);
Widget_Add(fn_controls, ctrl_sbControls);
/* Parse the action list */
int count = 0;
string sTemp;
filestream fs_actlst = fopen("gfx/shell/kb_act.lst", FILE_READ);
/* Count the valid entries */
if (fs_actlst >= 0) {
while ((sTemp = fgets(fs_actlst))) {
if (tokenize_console(sTemp) == 2) {
if (argv(0) == "blank") {
ctrl_lbActBind1.AddEntry(" ");
} else if (argv(0) != "+voicerecord") {
ctrl_lbActBind1.AddEntry(argv(0));
} else {
ctrl_lbActBind1.AddEntry("+voip");
}
ctrl_lbActDesc.AddEntry(argv(1));
count++;
}
}
fclose(fs_actlst);
} else {
error("Cannot parse gfx/shell/kb_act.lst!");
}
ctrl_sbControls.SetMax(count);
}
void menu_controls_draw(void)
{
Widget_Draw(fn_controls);
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_CONTROLS],[460,80], [1,1,1], 1.0f, 1);
}
void menu_controls_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_controls, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,147 @@
CWidget fn_create;
CWidget fn_createshared;
CMainButton create_btnAdv;
CMainButton create_btnOk;
CMainButton create_btnCancel;
CTextBox create_tbHostname;
CTextBox create_tbMaxplayers;
CTextBox create_tbPassword;
CFrame create_frMaps;
CListBox create_lbMaps;
CScrollbar create_sbMaps;
string *g_maps;
int g_mapcount;
void create_btnok_start(void)
{
static string startmap;
static void create_btnok_end(void) {
localcmd(sprintf("map %s\n", startmap));
g_menupage = PAGE_LANGAMES;
}
startmap = create_lbMaps.GetSelectedItem();
if (startmap == __NULL__) {
return;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,30,172);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CREATEGAME);
header.SetExecute(create_btnok_end);
}
void create_btncancel_start(void)
{
static void create_btncancel_end(void) {
g_menupage = PAGE_LANGAMES;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,30,172);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CREATEGAME);
header.SetExecute(create_btncancel_end);
}
void create_sbmaps_changed(int val)
{
create_lbMaps.SetScroll(val);
}
void menu_creategame_init(void)
{
fn_create = spawn(CWidget);
create_btnAdv = spawn(CMainButton);
create_btnAdv.SetImage(BTN_ADVOPTIONS);
//create_btnAdv.SetExecute(btn_console);
create_btnAdv.SetPos(50,140);
Widget_Add(fn_create, create_btnAdv);
create_btnOk = spawn(CMainButton);
create_btnOk.SetImage(BTN_OK);
create_btnOk.SetExecute(create_btnok_start);
create_btnOk.SetPos(50,172);
Widget_Add(fn_create, create_btnOk);
create_btnCancel = spawn(CMainButton);
create_btnCancel.SetImage(BTN_CANCEL);
create_btnCancel.SetExecute(create_btncancel_start);
create_btnCancel.SetPos(50,204);
Widget_Add(fn_create, create_btnCancel);
create_tbHostname = spawn(CTextBox);
create_tbHostname.SetPos(216,167);
create_tbHostname.m_length = 156;
create_tbHostname.SetText(cvar_string("hostname"));
Widget_Add(fn_createshared, create_tbHostname);
create_tbMaxplayers = spawn(CTextBox);
create_tbMaxplayers.SetPos(216,226);
create_tbMaxplayers.m_length = 156;
create_tbMaxplayers.SetText(cvar_string("sv_playerslots"));
Widget_Add(fn_createshared, create_tbMaxplayers);
create_tbPassword = spawn(CTextBox);
create_tbPassword.SetPos(216,280);
create_tbPassword.m_length = 156;
create_tbPassword.SetText(cvar_string("password"));
Widget_Add(fn_createshared, create_tbPassword);
create_frMaps = spawn(CFrame);
create_frMaps.SetPos(382,172);
create_frMaps.SetSize(208,288);
Widget_Add(fn_createshared, create_frMaps);
create_lbMaps = spawn(CListBox);
create_lbMaps.SetPos(384,175);
create_lbMaps.SetSize(202,282);
Widget_Add(fn_createshared, create_lbMaps);
create_sbMaps = spawn(CScrollbar);
create_sbMaps.SetPos(571,175);
create_sbMaps.SetHeight(282);
create_sbMaps.SetCallback(create_sbmaps_changed);
Widget_Add(fn_createshared, create_sbMaps);
searchhandle mapsearch = search_begin("maps/*.bsp", TRUE, TRUE);
g_mapcount = search_getsize(mapsearch);
g_maps = memalloc(sizeof(string) * g_mapcount);
for (int i = 0; i < g_mapcount; i++) {
g_maps[i] = substring(search_getfilename(mapsearch, i), 5, -1);
create_lbMaps.AddEntry(g_maps[i]);
}
create_sbMaps.SetMax(g_mapcount);
search_end(mapsearch);
}
void menu_creategame_draw(void)
{
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_CREATEGAME],[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(216, 143, m_reslbl[IDS_CREATESERVER_NAME], 14, 14, [1,1,1],
1.0f, 0, font_arial);
WLabel_Static(216, 202, m_reslbl[IDS_CREATESERVER_MAXPLAYERS], 14, 14, [1,1,1],
1.0f, 0, font_arial);
WLabel_Static(216, 256, m_reslbl[IDS_NEWPROFILE_PASSWORD], 14, 14, [1,1,1],
1.0f, 0, font_arial);
WLabel_Static(381, 143, m_reslbl[IDS_CREATESERVER_MAP], 14, 14, [1,1,1],
1.0f, 0, font_arial);
Widget_Draw(fn_create);
Widget_Draw(fn_createshared);
}
void menu_creategame_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_create, evtype, scanx, chary, devid);
Widget_Input(fn_createshared, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,85 @@
CWidget fn_createinet;
CMainButton createinet_btnAdv;
CMainButton createinet_btnOk;
CMainButton createinet_btnCancel;
void createinet_btnok_start(void)
{
static string startmap;
static void createinet_btnok_end(void) {
localcmd(sprintf("map %s\n", startmap));
g_menupage = PAGE_INTERNETGAMES;
}
startmap = create_lbMaps.GetSelectedItem();
if (startmap == __NULL__) {
return;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,30,172);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CREATEGAME);
header.SetExecute(createinet_btnok_end);
}
void createinet_btncancel_start(void)
{
static void createinet_btncancel_end(void) {
g_menupage = PAGE_INTERNETGAMES;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,30,172);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CREATEGAME);
header.SetExecute(createinet_btncancel_end);
}
void menu_creategameinet_init(void)
{
fn_createinet = spawn(CWidget);
createinet_btnAdv = spawn(CMainButton);
createinet_btnAdv.SetImage(BTN_ADVOPTIONS);
//createinet_btnAdv.SetExecute(btn_console);
createinet_btnAdv.SetPos(50,140);
Widget_Add(fn_createinet, createinet_btnAdv);
createinet_btnOk = spawn(CMainButton);
createinet_btnOk.SetImage(BTN_OK);
createinet_btnOk.SetExecute(createinet_btnok_start);
createinet_btnOk.SetPos(50,172);
Widget_Add(fn_createinet, createinet_btnOk);
createinet_btnCancel = spawn(CMainButton);
createinet_btnCancel.SetImage(BTN_CANCEL);
createinet_btnCancel.SetExecute(createinet_btncancel_start);
createinet_btnCancel.SetPos(50,204);
Widget_Add(fn_createinet, createinet_btnCancel);
}
void menu_creategameinet_draw(void)
{
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_CREATEGAME],[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(216, 143, m_reslbl[IDS_CREATESERVER_NAME], 14, 14, [1,1,1],
1.0f, 0, font_arial);
WLabel_Static(216, 202, m_reslbl[IDS_CREATESERVER_MAXPLAYERS], 14, 14, [1,1,1],
1.0f, 0, font_arial);
WLabel_Static(216, 256, m_reslbl[IDS_NEWPROFILE_PASSWORD], 14, 14, [1,1,1],
1.0f, 0, font_arial);
WLabel_Static(381, 143, m_reslbl[IDS_CREATESERVER_MAP], 14, 14, [1,1,1],
1.0f, 0, font_arial);
Widget_Draw(fn_createinet);
Widget_Draw(fn_createshared);
}
void menu_creategameinet_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_createinet, evtype, scanx, chary, devid);
Widget_Input(fn_createshared, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,11 @@
void menu_customgame_init(void)
{
}
void menu_customgame_draw(void)
{
}
void menu_customgame_input(float evtype, float scanx, float chary, float devid)
{
}

View file

@ -0,0 +1,123 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_customize;
CMainButton cz_btnDone;
CMainButton cz_btnAdvanced;
CTextBox cz_tbNetname;
CPictureSwitch cz_psSpray;
CPictureSwitch cz_psModel;
string *g_models;
int g_modelcount;
string *g_sprays;
int g_sprayscount;
void cz_btndone_start(void)
{
static void cz_btndone_end(void) {
g_menupage = PAGE_MULTIPLAYER;
}
cvar_set("name", cz_tbNetname.m_text);
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,50,300);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CUSTOMIZE);
header.SetExecute(cz_btndone_end);
}
void cz_btnadvanced_start(void)
{
static void cz_btnadvanced_end(void) {
g_menupage = PAGE_ADVANCEDCUSTOMIZE;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,172,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_ADVANCED);
header.SetExecute(cz_btnadvanced_end);
}
void menu_customize_init(void)
{
searchhandle searchy = search_begin("*.bmp", TRUE, TRUE);
g_sprays = memalloc(sizeof(string) * search_getsize(searchy));
for (int i = 0; i < search_getsize(searchy); i++) {
precache_pic(search_getfilename(searchy, i));
g_sprays[i] = search_getfilename(searchy, i);
//g_sprays[i] = substring(search_getfilename(searchy, i), 0, -5);
}
search_end(searchy);
searchy = search_begin("models/player/*/*.bmp", TRUE, TRUE);
g_models = memalloc(sizeof(string) * search_getsize(searchy));
for (int i = 0; i < search_getsize(searchy); i++) {
g_models[i] = search_getfilename(searchy, i);
//tokenizebyseparator(search_getfilename(searchy, i),"/");
//precache_pic(argv(2));
//g_models[i] = argv(2);
}
search_end(searchy);
fn_customize = spawn(CWidget);
cz_btnDone = spawn(CMainButton);
cz_btnDone.SetImage(BTN_DONE);
cz_btnDone.SetExecute(cz_btndone_start);
cz_btnDone.SetPos(50,140);
Widget_Add(fn_customize, cz_btnDone);
cz_btnAdvanced = spawn(CMainButton);
cz_btnAdvanced.SetImage(BTN_ADVOPTIONS);
cz_btnAdvanced.SetExecute(cz_btnadvanced_start);
cz_btnAdvanced.SetPos(50,172);
Widget_Add(fn_customize, cz_btnAdvanced);
cz_tbNetname = spawn(CTextBox);
cz_tbNetname.SetPos(212,160);
cz_tbNetname.SetText(cvar_string("name"));
Widget_Add(fn_customize, cz_tbNetname);
cz_psSpray = spawn(CPictureSwitch);
cz_psSpray.SetPos(212,226);
cz_psSpray.SetSize(99,124);
cz_psSpray.SetPicSize(64,64);
cz_psSpray.SetPicOffset(14,14);
cz_psSpray.SetMax(g_sprayscount);
cz_psSpray.SetPics(g_sprays);
cz_psSpray.SetValueS("logo");
Widget_Add(fn_customize, cz_psSpray);
cz_psModel = spawn(CPictureSwitch);
cz_psModel.SetPos(410,160);
cz_psModel.SetSize(170,221);
cz_psModel.SetPicSize(164,190);
cz_psModel.SetPics(g_models);
cz_psModel.SetMax(g_modelcount);
cz_psSpray.SetValueS("model");
Widget_Add(fn_customize, cz_psModel);
}
void menu_customize_draw(void)
{
Widget_Draw(fn_customize);
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_CUSTOMIZE],[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(212, 140, m_reslbl[IDS_PLAYERINFO_NAME], 14, 14, [1,1,1],
1.0f, 0, font_arial);
WLabel_Static(410, 140, sprintf(m_reslbl[IDS_MODEL_NAME], "barney"), 14, 14, [1,1,1],
1.0f, 0, font_arial);
WLabel_Static(212, 203, m_reslbl[IDS_PROFILE_LOGO], 14, 14, [1,1,1],
1.0f, 0, font_arial);
}
void menu_customize_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_customize, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,11 @@
void menu_filter_init(void)
{
}
void menu_filter_draw(void)
{
}
void menu_filter_input(float evtype, float scanx, float chary, float devid)
{
}

View file

@ -0,0 +1,163 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_inet;
CMainButton inet_btnJoin;
CMainButton inet_btnCreate;
CMainButton inet_btnViewGame;
CMainButton inet_btnRefresh;
CMainButton inet_btnUpdate;
CMainButton inet_btnFilter;
CMainButton inet_btnAddServer;
CMainButton inet_btnChatRooms;
CMainButton inet_btnDone;
CFrame inet_frServers;
CServerList inet_lbServers;
CScrollbar inet_sbServers;
/* Button Callbacks */
void inet_btncreate_start(void)
{
static void inet_btncreate_end(void) {
g_menupage = PAGE_CREATEGAMEINET;
}
cvar_set("sv_public", "1");
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(30,172,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CREATEGAME);
header.SetExecute(inet_btncreate_end);
}
void inet_btndone_start(void)
{
static void inet_btndone_end(void) {
g_menupage = PAGE_MULTIPLAYER;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,50,172);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_INETGAMES);
header.SetExecute(inet_btndone_end);
}
void inet_btnrefresh(void)
{
int count = 0;
int added = 0;
//Master_RefreshCache();
count = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
inet_lbServers.Clear();
for (int i = 0; i < count; i++) {
string address = gethostcachestring(srv_fldAdress, i);
if (!address || Server_IsLan(address)) {
continue;
}
inet_lbServers.AddEntry(address);
print(sprintf("Adding %s to the Internet server list\n", address));
added++;
}
print(sprintf("Added %i Internet servers.\n", added));
inet_sbServers.SetMax(added);
}
void menu_internetgames_init(void)
{
fn_inet = spawn(CWidget);
inet_btnJoin = spawn(CMainButton);
inet_btnJoin.SetImage(BTN_JOINGAME);
//inet_btnJoin.SetExecute(btn_console);
inet_btnJoin.SetPos(30,140);
Widget_Add(fn_inet, inet_btnJoin);
inet_btnCreate = spawn(CMainButton);
inet_btnCreate.SetImage(BTN_CREATEGAME);
inet_btnCreate.SetExecute(inet_btncreate_start);
inet_btnCreate.SetPos(30,172);
Widget_Add(fn_inet, inet_btnCreate);
inet_btnViewGame = spawn(CMainButton);
inet_btnViewGame.SetImage(BTN_GAMEINFO);
//inet_btnViewGame.SetExecute(btn_console);
inet_btnViewGame.SetPos(30,204);
Widget_Add(fn_inet, inet_btnViewGame);
inet_btnRefresh = spawn(CMainButton);
inet_btnRefresh.SetImage(BTN_REFRESH);
inet_btnRefresh.SetExecute(inet_btnrefresh);
inet_btnRefresh.SetPos(30,236);
Widget_Add(fn_inet, inet_btnRefresh);
inet_btnUpdate = spawn(CMainButton);
inet_btnUpdate.SetImage(BTN_UPDATELIST);
inet_btnUpdate.SetExecute(Master_GetInternetList);
inet_btnUpdate.SetPos(30,268);
Widget_Add(fn_inet, inet_btnUpdate);
inet_btnFilter = spawn(CMainButton);
inet_btnFilter.SetImage(BTN_FILTER1);
//inet_btnFilter.SetExecute(btn_console);
inet_btnFilter.SetPos(30,300);
Widget_Add(fn_inet, inet_btnFilter);
inet_btnAddServer = spawn(CMainButton);
inet_btnAddServer.SetImage(BTN_ADDSERVER);
//inet_btnAddServer.SetExecute(btn_console);
inet_btnAddServer.SetPos(30,332);
Widget_Add(fn_inet, inet_btnAddServer);
inet_btnChatRooms = spawn(CMainButton);
inet_btnChatRooms.SetImage(BTN_CHATROOMS);
//inet_btnChatRooms.SetExecute(btn_console);
inet_btnChatRooms.SetPos(30,364);
Widget_Add(fn_inet, inet_btnChatRooms);
inet_frServers = spawn(CFrame);
inet_frServers.SetPos(166,141);
inet_frServers.SetSize(464-16,294);
Widget_Add(fn_inet, inet_frServers);
inet_lbServers = spawn(CServerList);
inet_lbServers.SetPos(166+3,141+3);
inet_lbServers.SetSize(464-6-16,294-6);
Widget_Add(fn_inet, inet_lbServers);
inet_sbServers = spawn(CScrollbar);
inet_sbServers.SetPos(614,141);
inet_sbServers.SetHeight(294);
//inet_sbServers.SetCallback(vm_sbres_changed);
//xinet_sbServers.SetMax(g_resolutions.length);
Widget_Add(fn_inet, inet_sbServers);
inet_btnDone = spawn(CMainButton);
inet_btnDone.SetImage(BTN_DONE);
inet_btnDone.SetExecute(inet_btndone_start);
inet_btnDone.SetPos(30,396);
Widget_Add(fn_inet, inet_btnDone);
}
void menu_internetgames_draw(void)
{
Widget_Draw(fn_inet);
Master_ResortCache();
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_INETGAMES],[460,80], [1,1,1], 1.0f, 1);
}
void menu_internetgames_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_inet, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,45 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
#define INTRO_TIME 6
float g_intro_progress;
void m_intro_draw(void)
{
if (clientstate() == 2) {
g_intro_progress = INTRO_TIME;
}
if (g_intro_progress > 5.0f) {
float alpha = (6 - g_intro_progress);
drawpic([g_menuofs[0],g_menuofs[1]], g_bmp[SPLASH8BIT],
[640,480], [1,1,1], alpha, 0);
} else {
drawpic([g_menuofs[0],g_menuofs[1]], g_bmp[SPLASH8BIT],
[640,480], [1,1,1], 1.0f);
}
if (g_intro_progress < 2.0f) {
drawfill([0,0], [g_vidsize[0],g_vidsize[1]], [0,0,0], 2-g_intro_progress);
}
g_intro_progress += frametime;
}
void m_intro_input(float evtype, float scanx, float chary, float devid)
{
if (evtype == IE_KEYDOWN) {
if (scanx == K_ESCAPE) {
g_intro_progress = INTRO_TIME;
} else if (scanx == K_ENTER) {
g_intro_progress = INTRO_TIME;
}
}
}

View file

@ -0,0 +1,134 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_lan;
CMainButton lan_btnJoin;
CMainButton lan_btnCreate;
CMainButton lan_btnViewGame;
CMainButton lan_btnRefresh;
CMainButton lan_btnDone;
CFrame lan_frServers;
CServerList lan_lbServers;
CScrollbar lan_sbServers;
/* Button Callbacks */
void lan_btncreate_start(void)
{
static void lan_btncreate_end(void) {
g_menupage = PAGE_CREATEGAME;
}
cvar_set("sv_public", "0");
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(30,172,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CREATEGAME);
header.SetExecute(lan_btncreate_end);
}
void lan_btndone_start(void)
{
static void lan_btndone_end(void) {
g_menupage = PAGE_MULTIPLAYER;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,50,268);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_LAN);
header.SetExecute(lan_btndone_end);
}
void lan_btnrefresh(void)
{
int count = 0;
int added = 0;
//Master_RefreshCache();
count = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
lan_lbServers.Clear();
for (int i = 0; i < count; i++) {
string address = gethostcachestring(srv_fldAdress, i);
if (!address || !Server_IsLan(address)) {
continue;
}
lan_lbServers.AddEntry(address);
print(sprintf("Adding %s to the LAN server list\n", address));
added++;
}
print(sprintf("Added %i LAN servers.\n", added));
lan_sbServers.SetMax(added);
}
void menu_langames_init(void)
{
fn_lan = spawn(CWidget);
lan_btnJoin = spawn(CMainButton);
lan_btnJoin.SetImage(BTN_JOINGAME);
//lan_btnJoin.SetExecute(btn_console);
lan_btnJoin.SetPos(30,140);
Widget_Add(fn_lan, lan_btnJoin);
lan_btnCreate = spawn(CMainButton);
lan_btnCreate.SetImage(BTN_CREATEGAME);
lan_btnCreate.SetExecute(lan_btncreate_start);
lan_btnCreate.SetPos(30,172);
Widget_Add(fn_lan, lan_btnCreate);
lan_btnViewGame = spawn(CMainButton);
lan_btnViewGame.SetImage(BTN_GAMEINFO);
//lan_btnViewGame.SetExecute(btn_console);
lan_btnViewGame.SetPos(30,204);
Widget_Add(fn_lan, lan_btnViewGame);
lan_btnRefresh = spawn(CMainButton);
lan_btnRefresh.SetImage(BTN_REFRESH);
lan_btnRefresh.SetExecute(lan_btnrefresh);
lan_btnRefresh.SetPos(30,236);
Widget_Add(fn_lan, lan_btnRefresh);
lan_btnDone = spawn(CMainButton);
lan_btnDone.SetImage(BTN_DONE);
lan_btnDone.SetExecute(lan_btndone_start);
lan_btnDone.SetPos(30,268);
Widget_Add(fn_lan, lan_btnDone);
lan_frServers = spawn(CFrame);
lan_frServers.SetPos(196,140);
lan_frServers.SetSize(434-16,309);
Widget_Add(fn_lan, lan_frServers);
lan_lbServers = spawn(CServerList);
lan_lbServers.SetPos(196+3,140+3);
lan_lbServers.SetSize(434-6-16,309-6);
Widget_Add(fn_lan, lan_lbServers);
lan_sbServers = spawn(CScrollbar);
lan_sbServers.SetPos(614,141);
lan_sbServers.SetHeight(309);
//lan_sbServers.SetCallback(vm_sbres_changed);
//xlan_sbServers.SetMax(g_resolutions.length);
Widget_Add(fn_lan, lan_sbServers);
}
void menu_langames_draw(void)
{
Widget_Draw(fn_lan);
Master_ResortCache();
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_LAN],[460,80], [1,1,1], 1.0f, 1);
}
void menu_langames_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_lan, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,11 @@
void menu_loadgame_init(void)
{
}
void menu_loadgame_draw(void)
{
}
void menu_loadgame_input(float evtype, float scanx, float chary, float devid)
{
}

322
Source/Menu-FN/m_main.cpp Normal file
View file

@ -0,0 +1,322 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_main;
CMainButton main_btnConsole;
CMainButton main_btnNewGame;
CMainButton main_btnTraining;
CMainButton main_btnConfiguration;
CMainButton main_btnLoadGame;
CMainButton main_btnMultiplayer;
CMainButton main_btnCustomGame;
CMainButton main_btnReadme;
CMainButton main_btnPreviews;
CMainButton main_btnQuit;
CWidget fn_main2;
CMainButton main_btn2Console;
CMainButton main_btn2Resume;
CMainButton main_btn2NewGame;
CMainButton main_btn2Training;
CMainButton main_btn2Configuration;
CMainButton main_btn2LoadGame;
CMainButton main_btn2Multiplayer;
CMainButton main_btn2CustomGame;
CMainButton main_btn2Previews;
CMainButton main_btn2Quit;
CDialog main_dgQuit;
CMainButton main_btnQuitOk;
CMainButton main_btnQuitCancel;
int main_quitdialog;
/* Button Callbacks */
void btn_console(void)
{
localcmd("toggleconsole\n");
}
void btn_resume(void)
{
m_hide();
}
/* Button Callbacks */
void btn_newgame_start(void)
{
static void btn_newgame_end(void) {
g_menupage = PAGE_NEWGAME;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(70,208,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_NEWGAME);
header.SetExecute(btn_newgame_end);
}
void btn_configuration_start(void)
{
static void btn_configuration_end(void) {
g_menupage = PAGE_CONFIGURATION;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(70,264,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CONFIG);
header.SetExecute(btn_configuration_end);
}
void btn_multiplayer_start(void)
{
static void btn_multiplayer_end(void) {
g_menupage = PAGE_MULTIPLAYER;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(70,320,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_MULTI);
header.SetExecute(btn_multiplayer_end);
}
void btn_training(void)
{
localcmd("map t0a0\n");
}
void btn_quit(void)
{
main_quitdialog = TRUE;
}
void btn_quit_ok(void)
{
localcmd("quit\n");
}
void btn_quit_cancel(void)
{
main_quitdialog = FALSE;
}
/* Init */
void menu_main_init(void)
{
/* Main Menu (Disconnected) */
fn_main = spawn(CWidget);
main_btnConsole = spawn(CMainButton);
main_btnConsole.SetImage(BTN_CONSOLE);
main_btnConsole.SetExecute(btn_console);
main_btnConsole.SetPos(70,180);
Widget_Add(fn_main, main_btnConsole);
main_btnNewGame = spawn(CMainButton);
main_btnNewGame.SetImage(BTN_NEWGAME);
main_btnNewGame.SetExecute(btn_newgame_start);
main_btnNewGame.SetPos(70,208);
Widget_Add(fn_main, main_btnNewGame);
main_btnTraining = spawn(CMainButton);
main_btnTraining.SetImage(BTN_TRAINING);
main_btnTraining.SetExecute(btn_training);
main_btnTraining.SetPos(70,236);
Widget_Add(fn_main, main_btnTraining);
main_btnConfiguration = spawn(CMainButton);
main_btnConfiguration.SetImage(BTN_CONFIG);
main_btnConfiguration.SetExecute(btn_configuration_start);
main_btnConfiguration.SetPos(70,264);
Widget_Add(fn_main, main_btnConfiguration);
main_btnLoadGame = spawn(CMainButton);
main_btnLoadGame.SetImage(BTN_LOADGAME);
main_btnLoadGame.SetPos(70,292);
Widget_Add(fn_main, main_btnLoadGame);
main_btnMultiplayer = spawn(CMainButton);
main_btnMultiplayer.SetImage(BTN_MULTIPLAYER);
main_btnMultiplayer.SetPos(70,320);
main_btnMultiplayer.SetExecute(btn_multiplayer_start);
Widget_Add(fn_main, main_btnMultiplayer);
main_btnCustomGame = spawn(CMainButton);
main_btnCustomGame.SetImage(BTN_CUSTOMGAME);
main_btnCustomGame.SetPos(70,348);
Widget_Add(fn_main, main_btnCustomGame);
main_btnReadme = spawn(CMainButton);
main_btnReadme.SetImage(BTN_README);
main_btnReadme.SetPos(70,376);
Widget_Add(fn_main, main_btnReadme);
main_btnPreviews = spawn(CMainButton);
main_btnPreviews.SetImage(BTN_PREVIEWS);
main_btnPreviews.SetPos(70,404);
Widget_Add(fn_main, main_btnPreviews);
main_btnQuit = spawn(CMainButton);
main_btnQuit.SetImage(BTN_QUIT);
main_btnQuit.SetExecute(btn_quit);
main_btnQuit.SetPos(70,432);
Widget_Add(fn_main, main_btnQuit);
main_dgQuit = spawn(CDialog);
main_btnQuitOk = spawn(CMainButton);
main_btnQuitOk.SetImage(BTN_OK);
main_btnQuitOk.SetPos(233,291);
main_btnQuitOk.SetLength(68);
main_btnQuitOk.SetExecute(btn_quit_ok);
Widget_Add(main_dgQuit, main_btnQuitOk);
main_btnQuitCancel = spawn(CMainButton);
main_btnQuitCancel.SetImage(BTN_CANCEL);
main_btnQuitCancel.SetPos(331,291);
main_btnQuitCancel.SetLength(68);
main_btnQuitCancel.SetExecute(btn_quit_cancel);
Widget_Add(main_dgQuit, main_btnQuitCancel);
/* Main Menu (Connected) */
fn_main2 = spawn(CWidget);
main_btn2Console = spawn(CMainButton);
main_btn2Console.SetImage(BTN_CONSOLE);
main_btn2Console.SetExecute(btn_console);
main_btn2Console.SetPos(70,180);
Widget_Add(fn_main2, main_btn2Console);
main_btn2Resume = spawn(CMainButton);
main_btn2Resume.SetImage(BTN_RESUMEGAME);
main_btn2Resume.SetExecute(btn_resume);
main_btn2Resume.SetPos(70,208);
Widget_Add(fn_main2, main_btn2Resume);
main_btn2NewGame = spawn(CMainButton);
main_btn2NewGame.SetImage(BTN_NEWGAME);
main_btn2NewGame.SetExecute(btn_newgame_start);
main_btn2NewGame.SetPos(70,236);
Widget_Add(fn_main2, main_btn2NewGame);
main_btn2Training = spawn(CMainButton);
main_btn2Training.SetImage(BTN_TRAINING);
main_btn2Training.SetExecute(btn_training);
main_btn2Training.SetPos(70,264);
Widget_Add(fn_main2, main_btn2Training);
main_btn2Configuration = spawn(CMainButton);
main_btn2Configuration.SetImage(BTN_CONFIG);
main_btn2Configuration.SetExecute(btn_configuration_start);
main_btn2Configuration.SetPos(70,292);
Widget_Add(fn_main2, main_btn2Configuration);
main_btn2LoadGame = spawn(CMainButton);
main_btn2LoadGame.SetImage(BTN_SAVELOAD);
main_btn2LoadGame.SetPos(70,320);
Widget_Add(fn_main2, main_btn2LoadGame);
main_btn2Multiplayer = spawn(CMainButton);
main_btn2Multiplayer.SetImage(BTN_MULTIPLAYER);
main_btn2Multiplayer.SetPos(70,348);
main_btn2Multiplayer.SetExecute(btn_multiplayer_start);
Widget_Add(fn_main2, main_btn2Multiplayer);
main_btn2CustomGame = spawn(CMainButton);
main_btn2CustomGame.SetImage(BTN_CUSTOMGAME);
main_btn2CustomGame.SetPos(70,376);
Widget_Add(fn_main2, main_btn2CustomGame);
main_btn2Previews = spawn(CMainButton);
main_btn2Previews.SetImage(BTN_PREVIEWS);
main_btn2Previews.SetPos(70,404);
Widget_Add(fn_main2, main_btn2Previews);
main_btn2Quit = spawn(CMainButton);
main_btn2Quit.SetImage(BTN_QUIT);
main_btn2Quit.SetExecute(btn_quit);
main_btn2Quit.SetPos(70,432);
Widget_Add(fn_main2, main_btn2Quit);
}
/* Drawing */
void menu_main_draw(void)
{
if (clientstate() == 2) {
Widget_Draw(fn_main2);
WLabel_Static(235, 216, m_reslbl[IDS_MAIN_RETURNHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 244, m_reslbl[IDS_MAIN_NEWGAMEHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 272, m_reslbl[IDS_MAIN_TRAININGHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 300, m_reslbl[IDS_MAIN_CONFIGUREHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 328, m_reslbl[IDS_MAIN_LOADSAVEHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 356, m_reslbl[IDS_MAIN_MULTIPLAYERHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 384, m_reslbl[IDS_MAIN_CUSTOMHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 412, m_reslbl[IDS_MAIN_PREVIEWSHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 440, m_reslbl[IDS_MAIN_QUITHELP], 10, 10,
col_help,1.0f, 0, font_label);
} else {
Widget_Draw(fn_main);
WLabel_Static(235, 216, m_reslbl[IDS_MAIN_NEWGAMEHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 244, m_reslbl[IDS_MAIN_TRAININGHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 272, m_reslbl[IDS_MAIN_CONFIGUREHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 300, m_reslbl[IDS_MAIN_LOADHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 328, m_reslbl[IDS_MAIN_MULTIPLAYERHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 356, m_reslbl[IDS_MAIN_CUSTOMHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 384, m_reslbl[IDS_MAIN_READMEHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 412, m_reslbl[IDS_MAIN_PREVIEWSHELP], 10, 10,
col_help,1.0f, 0, font_label);
WLabel_Static(235, 440, m_reslbl[IDS_MAIN_QUITHELP], 10, 10,
col_help,1.0f, 0, font_label);
}
if (main_quitdialog) {
main_dgQuit.Draw();
WLabel_Static(203, 180, m_reslbl[IDS_MAIN_QUITPROMPT], 16, 16,
col_prompt_text, 1.0f, 0, font_label_b);
Widget_Draw(main_dgQuit);
}
if (autocvar_menu_intro == TRUE) {
if (g_intro_progress < INTRO_TIME) {
m_intro_draw();
}
}
}
void menu_main_input(float evtype, float scanx, float chary, float devid)
{
if (autocvar_menu_intro == TRUE) {
if (g_intro_progress < INTRO_TIME) {
m_intro_input(evtype, scanx, chary, devid);
return;
}
}
if (main_quitdialog) {
Widget_Input(main_dgQuit, evtype, scanx, chary, devid);
} else {
if (clientstate() == 2) {
Widget_Input(fn_main2, evtype, scanx, chary, devid);
} else {
Widget_Input(fn_main, evtype, scanx, chary, devid);
}
}
}

View file

@ -0,0 +1,193 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_multiplayer;
CMainButton mp_btnQuickstart;
CMainButton mp_btnInternet;
CMainButton mp_btnSpectate;
CMainButton mp_btnChat;
CMainButton mp_btnLAN;
CMainButton mp_btnCustomize;
CMainButton mp_btnControls;
CMainButton mp_btnDone;
CDialog mp_dgConnect;
int g_connected;
int g_connectstatus;
float g_connecttimer;
enum {
CONNECT_NONE,
CONNECT_INTERNET,
CONNECT_CHAT
};
void mp_btndone_start(void)
{
static void mp_btndone_end(void) {
g_menupage = PAGE_MAIN;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,70,320);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_MULTI);
header.SetExecute(mp_btndone_end);
}
void mp_btninet_start(void)
{
static void mp_btninet_end(void) {
g_menupage = PAGE_INTERNETGAMES;
}
cvar_set("sv_public", "1");
localsound("../media/launch_upmenu1.wav");
if (g_connected == TRUE) {
header.SetStartEndPos(50,172,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_INETGAMES);
header.SetExecute(mp_btninet_end);
} else {
Master_GetInternetList();
g_connectstatus = CONNECT_INTERNET;
g_connecttimer = 8.0f;
}
}
void mp_btnlan_start(void)
{
static void mp_btnlan_end(void) {
g_menupage = PAGE_LANGAMES;
}
cvar_set("sv_public", "0");
Master_GetLANList();
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,268,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_LAN);
header.SetExecute(mp_btnlan_end);
}
void mp_btncustomize_start(void)
{
static void mp_btncustomize_end(void) {
g_menupage = PAGE_CUSTOMIZE;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,300,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CUSTOMIZE);
header.SetExecute(mp_btncustomize_end);
}
void menu_multiplayer_init(void)
{
fn_multiplayer = spawn(CWidget);
mp_dgConnect = spawn(CDialog);
mp_btnQuickstart = spawn(CMainButton);
mp_btnQuickstart.SetImage(BTN_QUICKSTART);
//mp_btnQuickstart.SetExecute(btn_console);
mp_btnQuickstart.SetPos(50,140);
Widget_Add(fn_multiplayer, mp_btnQuickstart);
mp_btnInternet = spawn(CMainButton);
mp_btnInternet.SetImage(BTN_INTERNET);
mp_btnInternet.SetExecute(mp_btninet_start);
mp_btnInternet.SetPos(50,172);
Widget_Add(fn_multiplayer, mp_btnInternet);
mp_btnSpectate = spawn(CMainButton);
mp_btnSpectate.SetImage(BTN_SPECTATEGAMES);
//mp_btnSpectate.SetExecute(btn_console);
mp_btnSpectate.SetPos(50,204);
Widget_Add(fn_multiplayer, mp_btnSpectate);
mp_btnChat = spawn(CMainButton);
mp_btnChat.SetImage(BTN_CHATROOMS);
//mp_btnChat.SetExecute(btn_console);
mp_btnChat.SetPos(50,236);
Widget_Add(fn_multiplayer, mp_btnChat);
mp_btnLAN = spawn(CMainButton);
mp_btnLAN.SetImage(BTN_LAN);
mp_btnLAN.SetExecute(mp_btnlan_start);
mp_btnLAN.SetPos(50,268);
Widget_Add(fn_multiplayer, mp_btnLAN);
mp_btnCustomize = spawn(CMainButton);
mp_btnCustomize.SetImage(BTN_CUSTOMIZE);
mp_btnCustomize.SetExecute(mp_btncustomize_start);
mp_btnCustomize.SetPos(50,300);
Widget_Add(fn_multiplayer, mp_btnCustomize);
mp_btnControls = spawn(CMainButton);
mp_btnControls.SetImage(BTN_CONTROLS);
//mp_btnControls.SetExecute(btn_console);
mp_btnControls.SetPos(50,332);
Widget_Add(fn_multiplayer, mp_btnControls);
mp_btnDone = spawn(CMainButton);
mp_btnDone.SetImage(BTN_DONE);
mp_btnDone.SetExecute(mp_btndone_start);
mp_btnDone.SetPos(50,364);
Widget_Add(fn_multiplayer, mp_btnDone);
}
void menu_multiplayer_draw(void)
{
Widget_Draw(fn_multiplayer);
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_MULTI],[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(215, 148, m_reslbl[IDS_MAIN_QUICKHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 180, m_reslbl[IDS_MULTI_BROWSEHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 212, "Spectate internet games.", 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 244, m_reslbl[IDS_MULTI_CHATHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 276, m_reslbl[IDS_MULTI_LANHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 308, m_reslbl[IDS_MULTI_CUSTOMIZEHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 340, m_reslbl[IDS_CFG_CONTROLHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 372, m_reslbl[IDS_MULTI_DONEHELP], 10, 10, col_help,
1.0f, 0, font_label);
if (g_connectstatus) {
if (Master_GetTotalServers() || g_connecttimer <= 0) {
g_connected = TRUE;
g_connectstatus = CONNECT_NONE;
mp_btninet_start();
inet_btnrefresh();
}
mp_dgConnect.Draw();
WLabel_Static(203, 180, m_reslbl[IDS_WON_LOGIN], 16, 16,
col_prompt_text, 1.0f, 0, font_label_b);
WLabel_Static(180, 280, sprintf(m_reslbl[IDS_QUICK_REQUEST],g_connecttimer), 12, 12,
col_prompt_title, 1.0f, 0, font_label);
g_connecttimer -= frametime;
Master_ResortCache();
}
}
void menu_multiplayer_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_multiplayer, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,93 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_newgame;
CMainButton ng_btnEasy;
CMainButton ng_btnMedium;
CMainButton ng_btnDifficult;
CMainButton ng_btnCancel;
/* Button Callbacks */
void ng_btneasy_start(void)
{
static void ng_btneasy_end(void) {
g_menupage = PAGE_MAIN;
localcmd("map c0a0\n");
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(45,45,70,208);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_NEWGAME);
header.SetExecute(ng_btneasy_end);
}
void ng_btncancel_start(void)
{
static void ng_btncancel_end(void) {
g_menupage = PAGE_MAIN;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,70,208);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_NEWGAME);
header.SetExecute(ng_btncancel_end);
}
/* Init */
void menu_newgame_init(void)
{
fn_newgame = spawn(CWidget);
ng_btnEasy = spawn(CMainButton);
ng_btnMedium = spawn(CMainButton);
ng_btnDifficult = spawn(CMainButton);
ng_btnCancel = spawn(CMainButton);
ng_btnEasy.SetPos(50,140);
ng_btnMedium.SetPos(50,172);
ng_btnDifficult.SetPos(50,204);
ng_btnCancel.SetPos(50,236);
ng_btnEasy.SetImage(BTN_EASY);
ng_btnEasy.SetExecute(ng_btneasy_start);
ng_btnMedium.SetImage(BTN_MEDIUM);
ng_btnMedium.SetExecute(ng_btneasy_start);
ng_btnDifficult.SetImage(BTN_DIFFICULT);
ng_btnDifficult.SetExecute(ng_btneasy_start);
ng_btnCancel.SetImage(BTN_CANCEL);
ng_btnCancel.SetExecute(ng_btncancel_start);
Widget_Add(fn_newgame, ng_btnEasy);
Widget_Add(fn_newgame, ng_btnMedium);
Widget_Add(fn_newgame, ng_btnDifficult);
Widget_Add(fn_newgame, ng_btnCancel);
}
/* Drawing */
void menu_newgame_draw(void)
{
Widget_Draw(fn_newgame);
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_NEWGAME],[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(215, 148, m_reslbl[IDS_NEWGAME_EASYHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 180, m_reslbl[IDS_NEWGAME_MEDIUMHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 212, m_reslbl[IDS_NEWGAME_DIFFICULTHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 244, m_reslbl[IDS_NEWGAME_RETURNHELP], 10, 10, col_help,
1.0f, 0, font_label);
}
void menu_newgame_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_newgame, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,11 @@
void menu_spectategames_init(void)
{
}
void menu_spectategames_draw(void)
{
}
void menu_spectategames_input(float evtype, float scanx, float chary, float devid)
{
}

View file

@ -0,0 +1,94 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_video;
CMainButton vd_btnVidOptions;
CMainButton vd_btnVidModes;
CMainButton vd_btnDone;
void vd_vidoptions_start(void)
{
static void vd_vidoptions_end(void) {
g_menupage = PAGE_VIDEOOPTIONS;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,140,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_VIDOPTIONS);
header.SetExecute(vd_vidoptions_end);
}
void vd_vidmodes_start(void)
{
static void vd_vidmodes_end(void) {
g_menupage = PAGE_VIDEOMODES;
}
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,172,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_VIDMODES);
header.SetExecute(vd_vidmodes_end);
}
void vd_btndone_start(void)
{
static void vd_btndone_end(void) {
g_menupage = PAGE_CONFIGURATION;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,50,204);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_VIDEO);
header.SetExecute(vd_btndone_end);
}
void menu_video_init(void)
{
fn_video = spawn(CWidget);
vd_btnVidOptions = spawn(CMainButton);
vd_btnVidOptions.SetImage(BTN_VIDEOOPTIONS);
vd_btnVidOptions.SetExecute(vd_vidoptions_start);
vd_btnVidOptions.SetPos(50,140);
Widget_Add(fn_video, vd_btnVidOptions);
vd_btnVidModes = spawn(CMainButton);
vd_btnVidModes.SetImage(BTN_VIDEOMODES);
vd_btnVidModes.SetExecute(vd_vidmodes_start);
vd_btnVidModes.SetPos(50,172);
Widget_Add(fn_video, vd_btnVidModes);
vd_btnDone = spawn(CMainButton);
vd_btnDone.SetImage(BTN_DONE);
vd_btnDone.SetExecute(vd_btndone_start);
vd_btnDone.SetPos(50,204);
Widget_Add(fn_video, vd_btnDone);
}
void menu_video_draw(void)
{
Widget_Draw(fn_video);
drawpic([g_menuofs[0]+45,g_menuofs[1]+45], g_bmp[HEAD_VIDEO],[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(215, 148, m_reslbl[IDS_VIDSELECT_OPTIONSHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 180, m_reslbl[IDS_VIDSELECT_MODESHELP], 10, 10, col_help,
1.0f, 0, font_label);
WLabel_Static(215, 212, m_reslbl[IDS_VIDSELECT_RETURNHELP], 10, 10, col_help,
1.0f, 0, font_label);
}
void menu_video_input(float evtype, float scanx, float chary, float devid)
{
Widget_Input(fn_video, evtype, scanx, chary, devid);
}

View file

@ -0,0 +1,171 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_vidmodes;
CMainButton vm_btnOk;
CMainButton vm_btnCancel;
CCheckBox vm_cbWindowed;
CFrame vm_frRes;
CListBox vm_lbRes;
CScrollbar vm_sbRes;
static string g_resolutions[] = {
"640x480 (4:3)",
"800x600 (4:3)",
"960x720 (4:3)",
"1024x768 (4:3)",
"1152x864 (4:3)",
"1280x960 (4:3)",
"1440x1080 (4:3)",
"1600x1200 (4:3)",
"1920x1440 (4:3)",
"2048x1536 (4:3)",
"1280x1024 (5:4)",
"1800x1440 (5:4)",
"2560x2048 (5:4)",
"856x480 (16:9)",
"1024x576 (16:9)",
"1280x720 (16:9)",
"1366x768 (16:9)",
"1600x900 (16:9)",
"1920x1080 (16:9)",
"2048x1152 (16:9)",
"2560x1440 (16:9)",
"3840x2160 (16:9)",
"4096x2304 (16:9)",
"1024x640 (16x10)",
"1152x720 (16x10)",
"1280x800 (16x10)",
"1440x900 (16x10)",
"1680x1050 (16x10)",
"1920x1200 (16x10)",
"2304x1440 (16x10)",
"2560x1600 (16x10)"
};
/* Button Callbacks */
void vm_btnok_start(void)
{
static void vm_btnok_end(void) {
g_menupage = PAGE_VIDEO;
}
string res = vm_lbRes.GetSelectedItem();
print("Switching resolution to ");
print(res);
print("\n");
if (res) {
tokenizebyseparator(res, "x");
cvar_set("vid_width", argv(0));
cvar_set("vid_height", argv(1));
localcmd("vid_restart\n");
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45, 45, 50, 172);
header.SetStartEndSize(460, 80, 156, 26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_VIDMODES);
header.SetExecute(vm_btnok_end);
}
void vm_btncancel_start(void)
{
static void vm_btncancel_end(void) {
g_menupage = PAGE_VIDEO;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45, 45, 50, 172);
header.SetStartEndSize(460, 80, 156, 26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_VIDMODES);
header.SetExecute(vm_btncancel_end);
}
void vm_cbwindowed_changed(float val)
{
cvar_set("vid_fullscreen", ftos(1-val));
}
void vm_sbres_changed(int val)
{
vm_lbRes.SetScroll(val);
}
/* Init */
void menu_videomodes_init(void)
{
fn_vidmodes = spawn(CWidget);
vm_btnOk = spawn(CMainButton);
vm_btnOk.SetImage(BTN_OK);
vm_btnOk.SetExecute(vm_btnok_start);
vm_btnOk.SetPos(50, 140);
Widget_Add(fn_vidmodes, vm_btnOk);
vm_btnCancel = spawn(CMainButton);
vm_btnCancel.SetImage(BTN_CANCEL);
vm_btnCancel.SetExecute(vm_btncancel_start);
vm_btnCancel.SetPos(50, 172);
Widget_Add(fn_vidmodes, vm_btnCancel);
vm_cbWindowed = spawn(CCheckBox);
vm_cbWindowed.SetPos(248,386);
vm_cbWindowed.SetValue(1-cvar("vid_fullscreen"));
vm_cbWindowed.SetCallback(vm_cbwindowed_changed);
Widget_Add(fn_vidmodes, vm_cbWindowed);
vm_frRes = spawn(CFrame);
vm_frRes.SetPos(246,188);
vm_frRes.SetSize(344,186);
Widget_Add(fn_vidmodes, vm_frRes);
vm_lbRes = spawn(CListBox);
vm_lbRes.SetPos(249,191);
vm_lbRes.SetSize(338,180);
Widget_Add(fn_vidmodes, vm_lbRes);
vm_sbRes = spawn(CScrollbar);
vm_sbRes.SetPos(574,188);
vm_sbRes.SetHeight(186);
vm_sbRes.SetCallback(vm_sbres_changed);
vm_sbRes.SetMax(g_resolutions.length);
Widget_Add(fn_vidmodes, vm_sbRes);
vector physres = getviewprop(VF_SCREENPSIZE);
for (int i = 0; i < g_resolutions.length; i++) {
tokenizebyseparator(g_resolutions[i], "x");
if (stof(argv(0)) == physres[0] && stof(argv(1)) == physres[1]) {
vm_lbRes.SetSelected(i);
}
vm_lbRes.AddEntry(g_resolutions[i]);
}
}
/* Draw */
void menu_videomodes_draw(void)
{
Widget_Draw(fn_vidmodes);
drawpic([g_menuofs[0] + 45, g_menuofs[1] + 45], g_bmp[HEAD_VIDMODES],
[460,80], [1,1,1], 1.0f, 1);
WLabel_Static(270, 393, m_reslbl[IDS_VIDMODE_WINDOWED], 12, 12, [0.75,0.75,0.75],
1.0f, 0, font_arial);
WField_Static(55, 333, m_reslbl[IDS_VID_HINT], 175, 117, col_help,
1.0f, 1, font_arial);
}
/* Input */
void menu_videomodes_input(float evtype, float x, float y, float devid)
{
Widget_Input(fn_vidmodes, evtype, x, y, devid);
}

View file

@ -0,0 +1,97 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
CWidget fn_vidoptions;
CMainButton vo_btnDone;
CSlider vo_sldScreensize;
CSlider vo_sldGamma;
CSlider vo_sldGlare;
/* Button Callbacks */
void vo_btndone_start(void)
{
static void vo_btndone_end(void) {
g_menupage = PAGE_VIDEO;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45, 45, 50, 140);
header.SetStartEndSize(460, 80, 156, 26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_VIDOPTIONS);
header.SetExecute(vo_btndone_end);
}
void vo_sldscreensize_changed(float val)
{
cvar_set("viewsize", ftos(floor(val * 120)));
}
void vo_sldgamma_changed(float val)
{
cvar_set("gamma", ftos(val) );
}
void vo_sldglare_changed(float val)
{
cvar_set("brightness", ftos(val * 0.5) );
}
/* Init */
void menu_videooptions_init(void)
{
fn_vidoptions = spawn(CWidget);
vo_btnDone = spawn(CMainButton);
vo_btnDone.SetImage(BTN_DONE);
vo_btnDone.SetExecute(vo_btndone_start);
vo_btnDone.SetPos(50, 293);
Widget_Add(fn_vidoptions, vo_btnDone);
vo_sldScreensize = spawn(CSlider);
vo_sldScreensize.SetPos(50,168);
vo_sldScreensize.SetValue(cvar("viewsize") / 120);
vo_sldScreensize.SetCallback(vo_sldscreensize_changed);
Widget_Add(fn_vidoptions, vo_sldScreensize);
vo_sldGamma = spawn(CSlider);
vo_sldGamma.SetPos(50,219);
vo_sldGamma.SetValue(cvar("gamma"));
vo_sldGamma.SetCallback(vo_sldgamma_changed);
Widget_Add(fn_vidoptions, vo_sldGamma);
vo_sldGlare = spawn(CSlider);
vo_sldGlare.SetPos(50,270);
vo_sldGlare.SetValue(cvar("brightness") * 0.5);
vo_sldGlare.SetCallback(vo_sldglare_changed);
Widget_Add(fn_vidoptions, vo_sldGlare);
}
/* Drawing */
void menu_videooptions_draw(void)
{
Widget_Draw(fn_vidoptions);
drawpic([g_menuofs[0] + 45, g_menuofs[1] + 45], g_bmp[HEAD_VIDOPTIONS],
[460,80], [1,1,1], 1.0f, 1);
drawfill([g_menuofs[0] + 246, g_menuofs[1] + 140], [288, 280],
[1,0,0], 1.0f);
drawfill([g_menuofs[0] + 247, g_menuofs[1] + 141], [286, 278],
[0.25,0.25,0.25], 1.0f);
drawpic([g_menuofs[0] + 250, g_menuofs[1] + 141], g_bmp[GAMMA],
[280,278], [1,1,1], 1.0f, 0);
WLabel_Static(50, 143, m_reslbl[IDS_VIDEO_SCREENSIZE], 14, 14, [1,1,1],
1.0f, 0, font_label_b);
WLabel_Static(50, 193, m_reslbl[IDS_VIDEO_GAMMA], 14, 14, [1,1,1],
1.0f, 0, font_label_b);
WLabel_Static(50, 245, m_reslbl[IDS_VIDEO_GLARE], 14, 14, [1,1,1],
1.0f, 0, font_label_b);
}
/* Input */
void menu_videooptions_input(float evtype, float x, float y, float devid)
{
Widget_Input(fn_vidoptions, evtype, x, y, devid);
}

View file

@ -0,0 +1,11 @@
void menu_viewgameinfo_init(void)
{
}
void menu_viewgameinfo_draw(void)
{
}
void menu_viewgameinfo_input(float evtype, float scanx, float chary, float devid)
{
}

View file

@ -0,0 +1,11 @@
void menu_viewreadme_init(void)
{
}
void menu_viewreadme_draw(void)
{
}
void menu_viewreadme_input(float evtype, float scanx, float chary, float devid)
{
}

2
Source/Menu-FN/makefile Normal file
View file

@ -0,0 +1,2 @@
all:
fteqcc progs.src

97
Source/Menu-FN/master.cpp Normal file
View file

@ -0,0 +1,97 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
#define MASTER_DNS "frag-net.com"
#define MASTER_PORT 27950
float srv_fldAdress;
float srv_fldName;
float srv_fldPing;
float srv_fldPlayers;
float srv_fldMaxplayers;
float srv_fldMap;
string Master_Resolve(void)
{
string out = netaddress_resolve(MASTER_DNS,MASTER_PORT);
print("Resolving master at ");
print(MASTER_DNS);
print(":");
print(ftos(MASTER_PORT));
print("...\n");
if (!out) {
print("Failed to resolve address.\n");
}
return out;
}
int Master_GetTotalServers(void)
{
int a = gethostcachevalue(SLIST_HOSTCACHETOTALCOUNT);
if (a) {
print(sprintf("Master reports a total of %i servers.\n", a));
}
return gethostcachevalue(SLIST_HOSTCACHETOTALCOUNT);
}
void Master_GetInternetList(void)
{
print("Updating host cache...\n");
string url = sprintf("%s:%d",MASTER_DNS,MASTER_PORT);
cvar_set("net_masterextra1", url);
localcmd("net_masterextra2 \"\"\n");
localcmd("net_masterextra3 \"\"\n");
localcmd("net_masterextra4 \"\"\n");
localcmd("net_masterextra5 \"\"\n");
localcmd("net_masterextra6 \"\"\n");
localcmd("net_masterextra7 \"\"\n");
localcmd("net_masterextra8 \"\"\n");
resethostcachemasks();
sethostcachesort( gethostcacheindexforkey( "ping" ), FALSE );
refreshhostcache();
resorthostcache();
}
void Master_GetLANList(void)
{
localcmd("net_masterextra1 \"\"\n");
localcmd("net_masterextra2 \"\"\n");
localcmd("net_masterextra3 \"\"\n");
localcmd("net_masterextra4 \"\"\n");
localcmd("net_masterextra5 \"\"\n");
localcmd("net_masterextra6 \"\"\n");
localcmd("net_masterextra7 \"\"\n");
localcmd("net_masterextra8 \"\"\n");
resethostcachemasks();
sethostcachesort( gethostcacheindexforkey( "ping" ), FALSE );
refreshhostcache(TRUE);
resorthostcache();
}
void Master_RefreshCache(void)
{
print("Refreshing host cache...\n");
resethostcachemasks();
sethostcachesort( gethostcacheindexforkey( "ping" ), FALSE );
refreshhostcache(FALSE);
}
void Master_ResortCache(void)
{
resorthostcache();
srv_fldAdress = gethostcacheindexforkey("cname");
srv_fldName = gethostcacheindexforkey("name");
srv_fldPing = gethostcacheindexforkey("ping");
srv_fldPlayers = gethostcacheindexforkey("numhumans");
srv_fldMaxplayers = gethostcacheindexforkey("maxplayers");
srv_fldMap = gethostcacheindexforkey("map");
}

56
Source/Menu-FN/menu.cpp Normal file
View file

@ -0,0 +1,56 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
menupage_t g_mpage[] = {
{ menu_main_init, menu_main_draw, menu_main_input },
{ menu_configuration_init, menu_configuration_draw, menu_configuration_input },
{ menu_audio_init, menu_audio_draw, menu_audio_input },
{ menu_contentcontrol_init, menu_contentcontrol_draw, menu_contentcontrol_input },
{ menu_controls_init, menu_controls_draw, menu_controls_input },
{ menu_advancedcontrols_init, menu_advancedcontrols_draw, menu_advancedcontrols_input },
{ menu_video_init, menu_video_draw, menu_video_input },
{ menu_videomodes_init, menu_videomodes_draw, menu_videomodes_input },
{ menu_videooptions_init, menu_videooptions_draw, menu_videooptions_input },
{ menu_customgame_init, menu_customgame_draw, menu_customgame_input },
{ menu_loadgame_init, menu_loadgame_draw, menu_loadgame_input },
{ menu_multiplayer_init, menu_multiplayer_draw, menu_multiplayer_input },
{ menu_customize_init, menu_customize_draw, menu_customize_input },
{ menu_advancedcustomize_init, menu_advancedcustomize_draw, menu_advancedcustomize_input },
{ menu_internetgames_init, menu_internetgames_draw, menu_internetgames_input },
{ menu_addserver_init, menu_addserver_draw, menu_addserver_input },
{ menu_chatrooms_init, menu_chatrooms_draw, menu_chatrooms_input },
{ menu_creategame_init, menu_creategame_draw, menu_creategame_input },
{ menu_creategameinet_init, menu_creategameinet_draw, menu_creategameinet_input },
{ menu_advancedmpoptions_init, menu_advancedmpoptions_draw, menu_advancedmpoptions_input },
{ menu_filter_init, menu_filter_draw, menu_filter_input },
{ menu_viewgameinfo_init, menu_viewgameinfo_draw, menu_viewgameinfo_input },
{ menu_langames_init, menu_langames_draw, menu_langames_input },
{ menu_spectategames_init, menu_spectategames_draw, menu_spectategames_input },
{ menu_newgame_init, menu_newgame_draw, menu_newgame_input },
{ menu_viewreadme_init, menu_viewreadme_draw, menu_viewreadme_input }
};
void main_init(void)
{
for (int i = 0; i < g_mpage.length; i++) {
g_mpage[i].m_init();
}
header = spawn(CHeader);
}
void main_draw(void)
{
g_mpage[g_menupage].m_draw();
header.Draw();
}
void main_input(float evtype, float scanx, float chary, float devid)
{
g_mpage[g_menupage].m_input(evtype, scanx, chary, devid);
}

66
Source/Menu-FN/progs.src Normal file
View file

@ -0,0 +1,66 @@
#pragma target fte
#pragma progs_dat "../../freecs/menu.dat"
#define MENU
#includelist
../Builtins.h
../Math.h
defs.h
bitmaps.h
strings.h
strings.cpp
util.cpp
colors.cpp
master.cpp
servers.cpp
widgets.cpp
w_checkbox.cpp
w_colorlist.cpp
w_dialog.cpp
w_header.cpp
w_frame.cpp
w_label.cpp
w_combobox.cpp
w_listbox.cpp
w_servers.cpp
w_mainbutton.cpp
w_modetab.cpp
w_pagetab.cpp
w_pictureswitch.cpp
w_slider.cpp
w_textbox.cpp
w_scrollbar.cpp
m_addserver.cpp
m_advancedcontrols.cpp
m_advancedcustomize.cpp
m_advancedmpoptions.cpp
m_audio.cpp
m_chatrooms.cpp
m_configuration.cpp
m_contentcontrol.cpp
m_controls.cpp
m_creategame.cpp
m_creategame_inet.cpp
m_customgame.cpp
m_customize.cpp
m_filter.cpp
m_internetgames.cpp
m_langames.cpp
m_loadgame.cpp
m_multiplayer.cpp
m_newgame.cpp
m_spectategames.cpp
m_video.cpp
m_videomodes.cpp
m_videooptions.cpp
m_viewgameinfo.cpp
m_viewreadme.cpp
m_intro.cpp
m_main.cpp
menu.cpp
entry.cpp
#endlist

View file

@ -0,0 +1,21 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
int Server_IsLan(string address)
{
#if 0
return FALSE;
#endif
tokenizebyseparator(address, ".");
if (argv(0) == "192" && argv(1) == "168") {
return TRUE;
} else {
return FALSE;
}
}

578
Source/Menu-FN/strings.cpp Normal file
View file

@ -0,0 +1,578 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
void Strings_Init(void)
{
filestream stringslst;
string lstline;
/* Populate the strings array with default hl.exe values*/
m_reslbl[IDS_LANGUAGE] = "English";
m_reslbl[IDS_BORDERLESS_REGFAIL] = "Could not register Half-Life edit control class.";
m_reslbl[IDS_CHAT_IGNORE_MISLINKED] = "Ignoring mislinked chat room";
m_reslbl[IDS_CHAT_IGNORE_UNLINKED] = "Ignoring unlinked chat room";
m_reslbl[IDS_CREATE_MAPSCHANGED] = "The number of maps in the map directory changed.";
m_reslbl[IDS_CREATE_LIBLISTBAD] = "The file 'liblist.gam' in the game directory was malformed, see /valve/liblist.gam for format info.";
m_reslbl[IDS_SOCKET_CONNECTIONFAILURE] = "Your network connection may have failed, continuing anway...";
m_reslbl[IDS_PLAYERINFO_NOMEM] = "Could not allocate memory for player information instance.";
m_reslbl[IDS_CHAT_NOCONNECTION] = "Could not create chat server connection.";
m_reslbl[IDS_CHAT_NOSTREAM] = "Could not create chat server data stream.";
m_reslbl[IDS_CHAT_NOSELECT] = "Could not prepare chat server client for connection.";
m_reslbl[IDS_CONTROLS_DELETE_LINKED] = "Deletion of linked key action item.";
m_reslbl[IDS_CONTROLS_KBLIST_EMPTY] = "Keyboard bindings file 'kb_act.lst' is empty.";
m_reslbl[IDS_CONTROLS_KBLIST_PARSEERROR] = "Error parsing bindings file 'kb_act.lst'.";
m_reslbl[IDS_CONTROLS_KBKEYS_EMPTY] = "Keyboard bindings file 'kb_keys.lst' is empty.";
m_reslbl[IDS_CONTROLS_KBKEYS_PARSEERROR] = "Error parsing file 'kb_keys.lst'.";
m_reslbl[IDS_CONTROLS_KBKEYS_OVERFLOW] = "Too many actions in file 'kb_keys.lst'.";
m_reslbl[IDS_PROFILE_COLOR] = "Colors";
m_reslbl[IDS_MAIN_NOCAPS] = "Could not query graphics device capabilities.";
m_reslbl[IDS_MAIN_INSUFFICIENTCAPS] = "Your graphics card does not support a necessary raster operation.";
m_reslbl[IDS_MAIN_REGWNDCLSFAIL] = "Could not register Half-Life's window class.";
m_reslbl[IDS_MAIN_INSUFFICIENTSOCKETS] = "Insufficient number of windows sockets, networking may not operate correctly.";
m_reslbl[IDS_MAIN_MEMMAPFAILURE] = "Memory-mapped file i/o initialization failed.";
m_reslbl[IDS_PROFILE_NOMEM] = "Couldn't allocate memory for player profile, exiting.";
m_reslbl[IDS_BTN_STRANGESIZE] = "Button face bitmap graphics file sizes appear invalid.";
m_reslbl[IDS_MAIN_NOUSERMSGS] = "Could not register user messages.";
m_reslbl[IDS_MAIN_NOFILEMAPPING] = "Could not create file mapping to engine.";
m_reslbl[IDS_MAIN_NOMEMMAPCONNECT] = "Could not connect to server '%s'.";
m_reslbl[IDS_MSG_OVERFLOW] = "SZ_GetSpace overflow without m_bAllowOverflow set";
m_reslbl[IDS_MSG_REQTOOBIG] = "SZ_GetSpace requested length is greater than available buffer size.";
m_reslbl[IDS_MULTI_NOROOMSTATIC] = "Could not allocate room static text control.";
m_reslbl[IDS_MULTI_NOROOMTAB] = "Could not allocate room tab control.";
m_reslbl[IDS_MULTI_NOCHATWINDOW] = "Could not allocate chat display window control.";
m_reslbl[IDS_MULTI_NOCHATINPUT] = "Could not allocate chat text input control.";
m_reslbl[IDS_MULTI_NOUSERLIST] = "Could not allocate chat user list control.";
m_reslbl[IDS_MULTI_NOSERVERLIST] = "Could not allocate server browser list control.";
m_reslbl[IDS_MULTI_NOSELECTION] = "No servers selected.";
m_reslbl[IDS_MULTI_NOARCHIVE] = "Half-Life could not open the server list archive file: '%s'.";
m_reslbl[IDS_CHAT_USER_NOMEM] = "Could not allocate space for new chat rrom user.";
m_reslbl[IDS_MULTI_SERVER_NOMEM] = "Could not allocate space for a new server.";
m_reslbl[IDS_MULTI_MASTER_BADLISTFILE] = "Could not open master server list file.";
m_reslbl[IDS_MULTI_NODIALOG] = "SetDialog with no dialog!";
m_reslbl[IDS_PROFILE_REQUIRED] = "You must create or select a player profile to continue.";
m_reslbl[IDS_ODCOMBO_REGFAIL] = "Could not register Half-Life combobox class.";
m_reslbl[IDS_ODEDIT_REGFAIL] = "Could not register Half-Life edit control class.";
m_reslbl[IDS_ODLIST_REGFAIL] = "Could not register Half-Life list control class.";
m_reslbl[IDS_ODSCROLL_REGFAIL] = "Could not register Half-Life scrollbar class.";
m_reslbl[IDS_ODSLIDER_REGFAIL] = "Could not register Half-Life slider class.";
m_reslbl[IDS_ODTAB_REGFAIL] = "Could not register Half-Life tab control class.";
m_reslbl[IDS_PROFILE_NICKREMOVEFAIL] = "Could not remove chat nicknames.";
m_reslbl[IDS_PROFILE_NOPROFILE] = "No chosen profile.";
m_reslbl[IDS_QUICK_NOSERVERS] = "Could not locate any active %s servers with available slots.";
m_reslbl[IDS_QUICK_NOACTIVE] = "Could not connect to any active %s servers.";
m_reslbl[IDS_README_NOMEM] = "Could not allocate buffer for readme: %i bytes";
m_reslbl[IDS_ROOM_BADNAME] = "The room name was invalid.";
m_reslbl[IDS_SINGLE_NOSELECTION] = "You must select a save game slot from the available slots.";
m_reslbl[IDS_SINGLE_CANTSAVE] = "You must be playing in a single player game to save.";
m_reslbl[IDS_ODLISTBOX_REGFAIL] = "Could not register Half-Life list box class.";
m_reslbl[IDS_DIB_OPENFAIL] = "Could not open bitmap file '%s'.";
m_reslbl[IDS_MCI_OPENFAIL] = "Could not open MCI file for playback: %s";
m_reslbl[IDS_MCI_GETIDFAIL] = "Could not get MCI Device ID for MCI device";
m_reslbl[IDS_MCI_WINDOWFAIL] = "Could not set up MCI window for playback of MCI device: %s";
m_reslbl[IDS_MCI_PUTFAIL] = "Could not display MCI playback of MCI device in window: %s";
m_reslbl[IDS_MCI_SEEKFAIL] = "Could not seek to start of MCI data: %s";
m_reslbl[IDS_MCI_BREAKFAIL] = "Could not set break key on MCI data: %s";
m_reslbl[IDS_MCI_PLAYFAIL] = "Could not start playback of MCI data: %s";
m_reslbl[IDS_MCI_STOPFAIL] = "Could not stop playback of MCI data: %s";
m_reslbl[IDS_MCI_CLOSEFAIL] = "Could not close MCI data: %s";
m_reslbl[IDS_CONTROLS_RESTOREFAIL] = "Could not restore default bindings for player.";
m_reslbl[IDS_SND_BADNAME] = "Invalid sound name";
m_reslbl[IDS_PROFILE_ALLOCFAIL] = "Could not allocate space for key binding";
m_reslbl[IDS_AUDIO_NOPROFILE] = "Can't change audio settings without a current player profile.";
m_reslbl[IDS_VIDEO_NOPROFILE] = "Can't change video settings without a current player profile.";
m_reslbl[IDS_CONTROLS_KEYHELP] = "Use your mouse or the arrow keys to select an item. Double-click or press Enter to change an item. Press Delete to clear an item.";
m_reslbl[IDS_ENDDEMO_URL] = "valve/media/order/default.html";
m_reslbl[IDS_ORDER_URL] = "valve/media/order/default.html";
m_reslbl[IDS_LOADSAVE_HINT] = "During play, you can quickly save your game by pressing %s. Load this game again by pressing %s.";
m_reslbl[IDS_LAUNCHER_BUTTONSIZE] = "156 26";
m_reslbl[IDS_MEM_INSUFFICIENT] = "Your system reported only %.2fK of physical memory, Half-Life requires at least 16MB.";
m_reslbl[IDS_MEM_ALLOCFAIL] = "Half-Life was unable to allocate %.2fK of memory.";
m_reslbl[IDS_EVENT_CREATEFAIL] = "Half-Life was unable to create a system object.";
m_reslbl[IDS_OSVER_FAIL] = "Half-Life was unable to retreive system information.";
m_reslbl[IDS_OSVER_OUTDATED] = "Half-Life requires Windows/95 or Windows/NT and above.";
m_reslbl[IDS_OSVER_NTSP3] = "Half-Life requires Service Pack 3 or above";
//m_reslbl[IDS_OSVER_16BIT] = "Half-Life requires 16 bit color. Please change your desktop settings to HiColor. Sometimes this is called] = "";32767 colors";"; or] = "";65535 colors";";.";
m_reslbl[IDS_BINDING_ACTIONHEADING] = "Action";
m_reslbl[IDS_BINDING_PRIMARYHEADING] = "Key / button";
m_reslbl[IDS_BINDING_ALTERNATEHEADING] = "Alternate";
m_reslbl[IDS_BINDING_PROMPT] = "Press a key or button.";
m_reslbl[IDS_URL_BROWSERFAIL] = "Half-Life was unable to display the web page '%s', please make sure you have a web browser installed and that the association for opening .htm files is valid.";
m_reslbl[IDS_SAVELOAD_TIMECOL] = "Time";
m_reslbl[IDS_SAVELOAD_GAMECOL] = "Game";
m_reslbl[IDS_SAVELOAD_ELAPSEDCOL] = "Elapsed Time";
m_reslbl[IDS_SERVER_GAMESERVER] = "Game";
m_reslbl[IDS_SERVER_SPEED] = "Net Spd";
m_reslbl[IDS_SERVER_MAP] = "Map";
m_reslbl[IDS_SERVER_PLAYERS] = "Players/Max";
m_reslbl[IDS_SERVER_GAME] = "Game Type";
m_reslbl[IDS_SERVER_NETWORK] = "Network";
m_reslbl[IDS_QUERY_STARTING] = "Starting...";
m_reslbl[IDS_QUERY_COMPLETED] = "%s completed.";
m_reslbl[IDS_SERVER_REMOVE] = "Permanently remove %i servers from list?";
m_reslbl[IDS_SERVER_CONNECT] = "Initiating connection to %s...";
m_reslbl[IDS_SERVER_LANTAG] = "Lan";
m_reslbl[IDS_SERVER_INTERNETTAG] = "Internet";
m_reslbl[IDS_SERVER_MENU_CONNECT] = "Connect";
m_reslbl[IDS_SERVER_MENU_PLAYERINFO] = "Show player and rule information";
m_reslbl[IDS_SERVER_MENU_RULEINFO] = "Show rule information";
m_reslbl[IDS_SERVER_MENU_FILTER] = "Filter server";
m_reslbl[IDS_SERVER_MENU_ADDTOFAVORITE] = "Add to favorites";
m_reslbl[IDS_SERVER_MENU_REMOVEFROMFAV] = "Remove from favorites";
m_reslbl[IDS_SERVER_MENU_REMOVE] = "Permanently remove server";
m_reslbl[IDS_SERVER_MENU_NOPLAYERINFO] = "No player information available";
m_reslbl[IDS_SERVER_MENU_NOLANPLAYERINFO] = "Player information is not available for Lan games";
m_reslbl[IDS_SAVELOAD_QUICKLISTTEXT] = "[quick] %s";
m_reslbl[IDS_SAVELOAD_AUTOLISTITEM] = "[autosave] %s";
m_reslbl[IDS_PLAYERINFO_NUMBER] = "#";
m_reslbl[IDS_PLAYERINFO_NAME] = "Player Name";
m_reslbl[IDS_PLAYERINFO_KILLS] = "Kills";
m_reslbl[IDS_PLAYERINFO_TIME] = "Time";
m_reslbl[IDS_PLAYERINFO_SUIT] = "HEV Suit";
m_reslbl[IDS_QUICK_REQUEST] = "Requesting list of servers..., %.2f seconds left";
m_reslbl[IDS_QUICK_GOTLIST] = "List received...";
m_reslbl[IDS_QUICK_CONTACTING] = "Contacting servers...";
m_reslbl[IDS_QUICK_COMPLETEDSERVER] = "%s completed.";
m_reslbl[IDS_SAVE_NEWCOMMENT] = "New Saved Game";
m_reslbl[IDS_SAVE_NEWTIME] = "New";
m_reslbl[IDS_SAVE_NEWFILETIME] = "Current";
m_reslbl[IDS_DDRAW_FAILEINIT] = "Direct Draw Init Failed (%08lx):%s\n";
m_reslbl[IDS_DDRAW_DX4FAIL] = "Direct Draw 4 Init Failed (%08lx):%s\n";
m_reslbl[IDS_VIDEO_MODECOL] = "Display mode";
m_reslbl[IDS_ROOM_NAMECOL] = "Name";
m_reslbl[IDS_ROOM_PEOPLECOL] = "People";
m_reslbl[IDS_ROOM_SERVERSCOL] = "Servers";
m_reslbl[IDS_DDRAW_REQUIRED] = "Half-Life requires DirectDraw";
m_reslbl[IDS_DLL_LOADFAIL] = "Failed to load Engine DLL.";
m_reslbl[IDS_CMDLINE_VTOPTS] = "-vt requires one of software, gl, or d3d.";
m_reslbl[IDS_SAVE_NUMCHANGED] = "Number of saved games changed?";
m_reslbl[IDS_BINDINGS_ALLOCFAIL] = "Unable to allocate space for binding";
m_reslbl[IDS_GAMMA_LOADFAIL] = "Unable to locate the gamma image 'gamma.bmp'.";
m_reslbl[IDS_DDRAW_RESTOREMODEFAIL] = "Unable to restore DirectDraw video mode.";
m_reslbl[IDS_AUDIO_VOLUME] = "Game sound volume";
m_reslbl[IDS_AUDIO_SUITVOL] = "HEV suit volume";
m_reslbl[IDS_AUDIO_USECD] = "Play CD music.";
m_reslbl[IDS_AUDIO_HIGHQUALITY] = "High quality sound";
m_reslbl[IDS_CFG_VIDHELP] = "Change screen size, video mode, gamma, and glare reduction.";
m_reslbl[IDS_CFG_AUDIOHELP] = "Change sound volume and quality.";
m_reslbl[IDS_CFG_CONTROLHELP] = "Change keyboard, mouse, and joystick settings.";
m_reslbl[IDS_CFG_RETURNTOMAIN] = "Go back to the Main Menu.";
m_reslbl[IDS_CREATEROOM_TITLE] = "Create Private Room";
m_reslbl[IDS_CREATEROOM_ROOMNAME] = "Room Name";
m_reslbl[IDS_CREATEROOM_ROOMTOPIC] = "Room Topic";
m_reslbl[IDS_CREATESERVER_NAME] = "Server Name:";
m_reslbl[IDS_CREATESERVER_MAP] = "Map:";
m_reslbl[IDS_CREATESERVER_ROOM] = "Associated Room:";
m_reslbl[IDS_CREATESERVER_GAMETYPE] = "Type of Game:";
m_reslbl[IDS_CREATESERVER_MAXPLAYERS] = "Max. Players:";
m_reslbl[IDS_FILTER_TITLE] = "Filter the list of Half-Life games";
m_reslbl[IDS_FILTER_HEADING] = "Show only servers which:";
m_reslbl[IDS_FILTER_RESPONDING] = "are responding";
m_reslbl[IDS_FILTER_RESPONSETIME] = "responded more quickly than";
m_reslbl[IDS_FILTER_NOTFULL] = "are not full";
m_reslbl[IDS_FILTER_NOTEMPTY] = "have people currently playing";
m_reslbl[IDS_FILTER_ONFAVORITES] = "are in my 'favorites' list";
m_reslbl[IDS_FILTER_INCHATROOM] = "are associated with the selected chat room";
m_reslbl[IDS_FINDPLAYER_PLAYER] = "Player to find:";
m_reslbl[IDS_OPTS_CROSSHAIR] = "Crosshair";
m_reslbl[IDS_OPTS_REVERSE] = "Reverse mouse";
m_reslbl[IDS_OPTS_MLOOK] = "Mouse look";
m_reslbl[IDS_OPTS_LOOKSPRING] = "Look spring";
m_reslbl[IDS_OPTS_LOOKSTRAFE] = "Look strafe";
m_reslbl[IDS_OPTS_MFILTER] = "Mouse filter";
m_reslbl[IDS_OPTS_JOYSTICK] = "Joystick";
m_reslbl[IDS_OPTS_CROSSHAIRHELP] = "Enable the weapon aiming crosshair.";
m_reslbl[IDS_OPTS_REVERSEHELP] = "Reverse mouse up/down axis.";
m_reslbl[IDS_OPTS_MLOOKHELP] = "Use the mouse to look around instead of using the mouse to move.";
//m_reslbl[IDS_OPTS_LOOKSPRINGHELP] = "Causes the screen to] = "";spring";"; back to looking straight ahead when you move forward.";
m_reslbl[IDS_OPTS_LOOKSTRAFEHELP] = "In combination with your mouse look modifier, causes left-right movements to strafe instead of turn.";
m_reslbl[IDS_OPTS_MFILTERHELP] = "Average mouse inputs over the last two frames to smooth out movements.";
m_reslbl[IDS_OPTS_JOYSTICKHELP] = "Enable the joystick.";
m_reslbl[IDS_OPTS_SENSITIVITYHELP] = "Mouse sensitivity.";
m_reslbl[IDS_LOADSAVE_LOADHELP] = "Load a previously saved game";
m_reslbl[IDS_LOADSAVE_SAVEHELP] = "Save current game.";
m_reslbl[IDS_LOADSAVE_RETURN] = "Go back to the Main Menu.";
m_reslbl[IDS_MAIN_RETURNHELP] = "Return to game.";
m_reslbl[IDS_MAIN_NEWGAMEHELP] = "Start a new game.";
m_reslbl[IDS_MAIN_TRAININGHELP] = "Learn how to play Half-Life.";
m_reslbl[IDS_MAIN_LOADHELP] = "Load a previously saved game.";
m_reslbl[IDS_MAIN_LOADSAVEHELP] = "Load a saved game, save the current game.";
m_reslbl[IDS_MAIN_CONFIGUREHELP] = "Change game settings, configure controls.";
m_reslbl[IDS_MAIN_READMEHELP] = "View the Readme.txt file.";
m_reslbl[IDS_MAIN_ORDERHELP] = "Order the full version of Half-Life.";
m_reslbl[IDS_MAIN_QUITHELP] = "Quit playing Half-Life.";
m_reslbl[IDS_MAIN_QUICKHELP] = "Connect to the fastest, active Internet game server found.";
m_reslbl[IDS_MAIN_MULTIPLAYERHELP] = "Search for Half-Life servers, chat with other players, configure character.";
m_reslbl[IDS_CHAT_PROMPT] = "Type Message:";
m_reslbl[IDS_NEWGAME_EASYHELP] = "Play Half-Life on the 'easy' skill setting.";
m_reslbl[IDS_NEWGAME_MEDIUMHELP] = "Play Half-Life on the 'medium' skill setting.";
m_reslbl[IDS_NEWGAME_DIFFICULTHELP] = "Play Half-Life on the 'difficult' skill setting.";
m_reslbl[IDS_NEWGAME_RETURNHELP] = "Go back to the Main Menu.";
m_reslbl[IDS_NEWPROFILE_TITLE] = "Select Player";
m_reslbl[IDS_NEWPROFILE_NAME] = "Na&me:";
m_reslbl[IDS_NEWPROFILE_PASSWORD] = "Password:";
m_reslbl[IDS_NEWPROFILE_REMEMBER] = "remember password";
m_reslbl[IDS_PROFILE_MODEL] = "Player Model";
m_reslbl[IDS_PROFILE_NICKNAME] = "Player Name";
m_reslbl[IDS_PROFILE_SELECT] = "Player profile:";
m_reslbl[IDS_PROFILE_PROCEEDHELP] = "Chat with users and browse for servers.";
m_reslbl[IDS_PROFILE_RETURNHELP] = "Go back to the Main Menu.";
m_reslbl[IDS_VIDEO_SCREENSIZE] = "Screen size";
m_reslbl[IDS_VIDEO_GAMMA] = "Gamma";
m_reslbl[IDS_VIDEO_GLARE] = "Glare reduction";
m_reslbl[IDS_VIDEO_GAMMAHELP] = "Gamma: Adjusts Half-Life's color balance to best suit your monitor. Move the slider until you can just make out the figure standing in shadow on the right side of the sample image.";
m_reslbl[IDS_VIDEO_GLAREHELP] = "Glare Reduction: Adjusts darker colors to reduce the effect of glare on your monitor.";
m_reslbl[IDS_VIDMODE_WINDOWED] = "Run in a &window";
m_reslbl[IDS_VIDMODE_MOUSE] = "&Use mouse";
m_reslbl[IDS_VIDMODE_GLLISTHEADER] = "OpenGL Driver";
m_reslbl[IDS_VIDMODE_D3DHEADER] = "D3D Device";
m_reslbl[IDS_VIDSELECT_OPTIONSHELP] = "Set video options such as screen size, gamma, and glare reduction.";
m_reslbl[IDS_VIDSELECT_MODESHELP] = "Set video modes and configure 3D accelerators.";
m_reslbl[IDS_VIDSELECT_RETURNHELP] = "Go back to the previous menu.";
m_reslbl[IDS_SERVERS_REFRESH] = "Refreshing servers...";
m_reslbl[IDS_PROGRESS_START] = "Start";
m_reslbl[IDS_QUICK_CONTACT] = "Contacting servers...";
m_reslbl[IDS_QUICK_REQUESTLIST] = "Requesting list of servers...";
m_reslbl[IDS_README_NOFILE] = "Could not find readme.txt";
m_reslbl[IDS_STATUS_CONNECTING] = "Connecting to server '%s'";
m_reslbl[IDS_STATUS_CONNECTIONESTABLISHED] = "Connection established to %s, switching to game";
m_reslbl[IDS_STATUS_SKIPSERVER] = "Skipping...";
m_reslbl[IDS_STATUS_ELPASEDTIME] = "%s\n%3.1f Seconds Elapsed";
m_reslbl[IDS_TRAINING_EXITCURRENT] = "Entering the Hazard Course will exit any current game, OK to exit?";
m_reslbl[IDS_MAIN_QUITPROMPTINGAME] = "Quit Half-Life without saving current game?";
m_reslbl[IDS_MAIN_QUITPROMPT] = "Are you sure you want to quit?";
m_reslbl[IDS_CONTROLS_CANCELPROMPT] = "Exit without saving changes?";
m_reslbl[IDS_LOAD_LOADPROMPT] = "Loading a game will exit any current game, OK to exit?";
m_reslbl[IDS_LOADSAVE_DELETEPROMPT] = "Delete selected game?";
m_reslbl[IDS_NEWGAME_NEWPROMPT] = "Starting a new game will exit any current game, OK to exit?";
m_reslbl[IDS_NICKNAME_ADD] = "Enter a name:";
m_reslbl[IDS_PROFILE_CANCELPROMPT] = "Save changes made to profile?";
m_reslbl[IDS_SAVE_INGAMEPROMPT] = "Can't save, you are not currently playing a game.";
m_reslbl[IDS_SAVE_OVERWRITE] = "Are you sure you want to overwrite this saved game?";
m_reslbl[IDS_VIDEO_BADSETTINGS] = "Your video settings do not appear to be valid, use these settings anyway?";
m_reslbl[IDS_AUDIO_A3D] = "Enable A3D hardware support";
m_reslbl[IDS_BTN_DONE] = "&Done";
m_reslbl[IDS_BTN_CONTROLS] = "&Controls";
m_reslbl[IDS_BTN_AUDIO] = "&Audio";
m_reslbl[IDS_BTN_VIDEO] = "&Video";
m_reslbl[IDS_BTN_CANCEL] = "&Cancel";
m_reslbl[IDS_BTN_CREATE] = "Create &room";
m_reslbl[IDS_BTN_FILTER] = "&Filter";
m_reslbl[IDS_BTN_FIND] = "&Search";
m_reslbl[IDS_BTN_RETURN] = "&Return";
m_reslbl[IDS_BTN_NEWGAME] = "&New game";
m_reslbl[IDS_BTN_TRAINING] = "&Hazard course";
m_reslbl[IDS_BTN_CONFIGURE] = "&Configure";
m_reslbl[IDS_BTN_LOADSAVE] = "&Save/load game";
m_reslbl[IDS_BTN_LOAD] = "&Load game";
m_reslbl[IDS_BTN_MULTIPLAYER] = "&Multiplayer";
m_reslbl[IDS_BTN_README] = "&View readme";
m_reslbl[IDS_BTN_ORDER] = "&Order";
m_reslbl[IDS_BTN_QUIT] = "&Quit";
m_reslbl[IDS_BTN_ADVANCED] = "&Advanced controls";
m_reslbl[IDS_BTN_REVERT] = "&Cancel";
m_reslbl[IDS_BTN_RESTORE] = "&Use defaults";
m_reslbl[IDS_BTN_DELETE] = "&Delete";
m_reslbl[IDS_BTN_SAVE] = "&Save game";
m_reslbl[IDS_BTN_LOGIN] = "&Login";
m_reslbl[IDS_BTN_CONNECT] = "&Connect";
m_reslbl[IDS_BTN_CREATESV] = "Crea&te game";
m_reslbl[IDS_BTN_REFRESH] = "&Refresh";
m_reslbl[IDS_BTN_ROOM] = "&List rooms";
m_reslbl[IDS_BTN_EASY] = "&Easy";
m_reslbl[IDS_BTN_MEDIUM] = "&Medium";
m_reslbl[IDS_BTN_HARD] = "&Difficult";
m_reslbl[IDS_BTN_YES] = "&Yes";
m_reslbl[IDS_BTN_NO] = "&No";
m_reslbl[IDS_BTN_OK] = "&Ok";
m_reslbl[IDS_BTN_OPTIONS] = "&Video options";
m_reslbl[IDS_BTN_MODES] = "Video &modes";
m_reslbl[IDS_BTN_QUICK] = "&Quick start";
m_reslbl[IDS_PROFILE_LOGO] = "Spraypaint Image";
m_reslbl[IDS_BTN_BROWSE] = "&Internet games";
m_reslbl[IDS_MULTI_BROWSEHELP] = "View a list of Half-Life game servers and join the one of your choice.";
m_reslbl[IDS_BTN_CHAT] = "C&hat rooms";
m_reslbl[IDS_MULTI_CHATHELP] = "Talk online with other Half-Life players.";
m_reslbl[IDS_BTN_LAN] = "&Lan game";
m_reslbl[IDS_MULTI_LANHELP] = "Set up a Half-Life game on a local area network.";
m_reslbl[IDS_BTN_CUSTOMIZE] = "C&ustomize";
m_reslbl[IDS_MULTI_CUSTOMIZEHELP] = "Choose your player name, and select visual options for your character.";
m_reslbl[IDS_CREATEROOM_ROOMPASSWORD] = "Room Password (optional)";
m_reslbl[IDS_PLAYERINFO_RULENAME] = "Server Rule";
m_reslbl[IDS_PLAYERINFO_RULEVALUE] = "Value";
m_reslbl[IDS_BTN_SEARCH] = "&Search for Game";
m_reslbl[IDS_BTN_CHATMODE] = "Chat";
m_reslbl[IDS_BTN_LISTMODE] = "&Internet games";
m_reslbl[IDS_BTN_EXIT] = "&Exit";
m_reslbl[IDS_SERVER_MANUALADD] = "Add a server by manually by IP address...";
m_reslbl[IDS_SERVER_REQUESTNEWLIST] = "Request updated server list.";
m_reslbl[IDS_PLAYERINFO_SERVERNAME] = "Server hostname:";
m_reslbl[IDS_PLAYERINFO_SERVERIP] = "Server IP address:";
m_reslbl[IDS_PLAYERINFO_SERVERPING] = "Server 'ping' time:";
m_reslbl[IDS_PROFILE_FACE] = "Player Face";
m_reslbl[IDS_PROFILE_SKIN] = "Player Skin";
m_reslbl[IDS_BTN_JOIN] = "&Join Game";
m_reslbl[IDS_BTN_FINDGAME] = "&Find Game";
m_reslbl[IDS_BTN_START] = "S&tart Game";
m_reslbl[IDS_PROFILE_LOGOCOLOR] = "Color";
m_reslbl[IDS_MULTI_RESUMEHELP] = "Return to your current muli-player game.";
m_reslbl[IDS_MULTI_DISCONNECTHELP] = "Disconnect yourself from the game server.";
m_reslbl[IDS_BTN_RESUME] = "Resume";
m_reslbl[IDS_BTN_DISCONNECT] = "Disconnect";
m_reslbl[IDS_BTN_ADDSERVER] = "&Add server";
m_reslbl[IDS_BTN_UPDATE] = "&Update";
m_reslbl[IDS_BTN_INFO] = "&View game info";
m_reslbl[IDS_QUICKSTART_TITLE] = "Quick multiplayer";
m_reslbl[IDS_BTN_LISTROOMS] = "&List rooms";
m_reslbl[IDS_BTN_GORE] = "C&ontent control";
m_reslbl[IDS_BTN_AUTOPATCH] = "&Update Half-Life.";
m_reslbl[IDS_CONFIGURE_GOREHELP] = "Disable visuals inappropriate for younger players and multiplayer.";
m_reslbl[IDS_CONFIGURE_AUTOPATCHHELP] = "Download the latest version of Half-Life.";
m_reslbl[IDS_CHAT_NOSERVERS] = "Could not locate any Frag-Net servers.";
m_reslbl[IDS_CHAT_NOPROFILE] = "Couldn't locate player profile";
m_reslbl[IDS_INIT_DX6REQUIRED] = "Half-Life requires DirectX version 6 or above. Please install DirectX 6 and restart Half-Life.";
m_reslbl[IDS_WON_VALIDATIONFAIL] = "Validation refused\n'%s'";
m_reslbl[IDS_WON_VALIDATIONFAIL2] = "Validation refused.";
m_reslbl[IDS_WON_AUTHOUTOFORDER] = "Authentication out of order (1).";
m_reslbl[IDS_WON_AUTHPROBLEM] = "Authentication problem (2)";
m_reslbl[IDS_WON_ENCRYPTBAD] = "Error creating message (1).";
m_reslbl[IDS_WON_BADPUBLICKEY] = "Invalid signal from authentication server (1).";
m_reslbl[IDS_WON_AUTHNOMEM] = "Insufficient memory to receive authentication response.";
m_reslbl[IDS_CD_NEEDCDKEY] = "You must type in a valid CD Key to play Half-Life";
m_reslbl[IDS_CD_BADKEY] = "The CD Key you typed was invalid, please try again";
m_reslbl[IDS_CD_BADKEYTYPED] = "Your CD Key is invalid, please reenter the CD key";
m_reslbl[IDS_MD5_HASHFAIL] = "Could not validate Half-Life";
m_reslbl[IDS_MAIN_REGISTERMSGFAIL] = "Couldn't register Half-Life user message";
m_reslbl[IDS_CDCHECK_PROMPT] = "Please Insert the Half-Life CD";
m_reslbl[IDS_SETTINGS_SERVERTYPEINVALID] = "Bogus list type in %s";
m_reslbl[IDS_TOKEN_EXPECTLEFTBRACE] = "Expecting { in %s";
m_reslbl[IDS_TOKEN_EXPECTRIGHTBRACE] = "Expecting } in %s";
m_reslbl[IDS_MULTI_ADDIPUNRESOLVABLE] = "That IP address could not be resolved.";
m_reslbl[IDS_CHATCTRL_NOMEM] = "Couldn't allocate space for user name";
m_reslbl[IDS_CHATCTRL_NOTEXTMEM] = "Couldn't allocate space for chat text";
m_reslbl[IDS_CHATCTRL_WINREGFAIL] = "Couldn't register chat edit control";
m_reslbl[IDS_PROFILE_DEFAULTMISSING] = "Could not find default keybinding file %s";
m_reslbl[IDS_QUICK_NOMASTER] = "Unable to retrieve server list, check that your internet connection is active";
m_reslbl[IDS_QUICK_USINGPREVIOUSLIST] = "Unable to reach master, using previous list...";
m_reslbl[IDS_CHAT_NOROOMLIST] = "Could not obtain room list";
m_reslbl[IDS_SAVELOAD_NUMBEROFGAMESCHANGED] = "Number of saved games changed?";
m_reslbl[IDS_MAIN_EXITMULTIPLAYERPROMPT] = "Entering the multiplayer system will terminate your current single player game, OK to exit without saving?";
m_reslbl[IDS_CD_ENTERPROMPT] = "Please type in the CD Key displayed on the Half-Life CD case";
m_reslbl[IDS_MULTISELECT_EXITGAMEPROMPT] = "Exiting the multiplayer system will terminate your current multiplayer game, OK to exit?";
m_reslbl[IDS_MULTI_ADDSERVERPROMPT] = "Enter server Internet address\r\n(e.g., 209.255.10.255:27015)";
m_reslbl[IDS_ROOM_NEEDPASS] = "Enter room password:";
m_reslbl[IDS_SAVE_CANTSAVE] = "Can't save, you are not currently playing a game.";
m_reslbl[IDS_SAVE_OVERWRITEPROMPT] = "Are you sure you want to overwrite this saved game?";
m_reslbl[IDS_SAVE_DELETEPROMPT] = "Delete selected game?";
m_reslbl[IDS_AUTH_INUSE] = "Account in use";
m_reslbl[IDS_AUTH_BADACCOUNT] = "Invalid account";
m_reslbl[IDS_AUTH_BADREQ] = "Invalid server request";
m_reslbl[IDS_AUTH_BADCERTIFICATE] = "Invalid client certificate";
m_reslbl[IDS_AUTH_BADEXE] = "Invalid client value";
m_reslbl[IDS_AUTH_BADCERTIFICATE2] = "Invalid client certificate";
m_reslbl[IDS_AUTH_BADLOOKUP] = "Invalid client lookup value";
m_reslbl[IDS_AUTH_BADBITS] = "Invalid client authentication value";
m_reslbl[IDS_AUTH_CORRUPT] = "Corrupt executable";
m_reslbl[IDS_AUTH_INVALIDACCOUNT] = "Unknown account error";
m_reslbl[IDS_CHAT_STATUSUNCONNECTED] = "Unconnected.";
m_reslbl[IDS_CHAT_WONCONNECT] = "Attempting connection...";
m_reslbl[IDS_CHAT_USERENTER] = "%s entered...\r\n";
m_reslbl[IDS_CHAT_USERLEFT] = "%s left...\r\n";
m_reslbl[IDS_ENG_STARTING] = "Starting engine...";
m_reslbl[IDS_SERVERS_SEARCHING] = "Searching for servers...";
m_reslbl[IDS_SERVERS_LISTREC] = "Got Server List...";
m_reslbl[IDS_SERVERS_CONNECTING] = "Connecting to servers...";
m_reslbl[IDS_SERVERS_REQUESTINFO] = "Requesting server information";
m_reslbl[IDS_ROOM_CREATENOTICE] = "Creating room '%s', please wait";
m_reslbl[IDS_ROOM_CREATEPROMPTTITLE] = "Creating room";
m_reslbl[IDS_SAVE_TIMEHEADING] = "Time";
m_reslbl[IDS_SAVE_GAMEHEADING] = "Game";
m_reslbl[IDS_SAVE_ELAPSEDHEADING] = "Elapsed Time";
m_reslbl[IDS_SAVE_NEWCAPTION] = "New Saved Game";
m_reslbl[IDS_SAVE_NEWGAMETXT] = "New";
m_reslbl[IDS_SAVE_FILETIME] = "Current";
m_reslbl[IDS_STATUS_CONNECTINGNOTIME] = "Connecting to server '%s'...\n\n%s";
m_reslbl[IDS_MULTI_CHATROOMCAPTION] = "Room:";
m_reslbl[IDS_GORE_CHECKBOX] = "Activate content control";
m_reslbl[IDS_GORE_HELP] = "Check this box and enter password to disable visuals inappropriate for younger players and multiplayer. Anyone wishing to change this setting will need to use this password.";
m_reslbl[IDS_GORE_PWPROMPT1] = "Enter password:";
m_reslbl[IDS_GORE_PWPROMPT2] = "Enter again to confirm:";
m_reslbl[IDS_GORE_PWMISMATCHED] = "The passwords you entered did not match, please try again.";
m_reslbl[IDS_GORE_BADPW] = "Incorrect password";
m_reslbl[IDS_BTN_ADVANCEDSVR] = "&Advanced options";
m_reslbl[IDS_OPTS_AUTOAIM] = "Autoaim";
m_reslbl[IDS_OPTS_AUTOAIMHELP] = "Allow Half-Life to help you aim at enemies.";
m_reslbl[IDS_BTN_PREVIEWS] = "&Previews";
m_reslbl[IDS_MAIN_PREVIEWSHELP] = "Find out more about Valve's product lineup.";
m_reslbl[IDS_SECONDS_LEFT] = "%i seconds left...";
m_reslbl[IDS_MEDIA_PREVIEWURL] = "http://www.valvesoftware.com/projects.htm";
m_reslbl[IDS_ADVANCEDSVR_PAGE] = "Page %i of %i";
m_reslbl[IDS_EMPTY] = "";
m_reslbl[IDS_MULTI_TYPE] = "Internet Connection Speed";
m_reslbl[IDS_MULTI_LAN] = "LAN - T1 > 1M";
m_reslbl[IDS_MULTI_ISDN] = "ISDN - 112K";
m_reslbl[IDS_MODEM56K] = "Modem - 56K";
m_reslbl[IDS_MODEM28K] = "Modem - 28.8K";
m_reslbl[IDS_OPTS_HIMODELS] = "&High quality models (for fast computers)";
m_reslbl[IDS_OPTS_HIMODELSHELP] = "";
m_reslbl[IDS_CHAT_SOCKETERROR] = "Chat connection problem, retrying connection...";
m_reslbl[IDS_CHAT_RECONNECTFAIL] = "Reconnection to chat failed, please verify that you are connected to the internet and try again.";
m_reslbl[IDS_CHAT_RECONNECTSUCCESS] = "Reconnected...";
m_reslbl[IDS_CHAT_JOINFAILED] = "Could not join room '%s'. Click 'List rooms' to select a different room.";
m_reslbl[IDS_BTN_WON] = "Visit &FRAG-NET.COM";
m_reslbl[IDS_WON_URL] = "www.frag-net.com";
m_reslbl[IDS_AUDIO_CDHINT] = "Set CD volume with the Windows multimedia accessory for volume control.";
m_reslbl[IDS_PREVIOUS] = "Previous";
m_reslbl[IDS_NEXT] = "Next";
m_reslbl[IDS_MODEM33K] = "Modem - 33.6K";
m_reslbl[IDS_MODEM14K] = "Modem - 14.4K";
m_reslbl[IDS_ROOM_PERMANENT] = "Permanent rooms";
m_reslbl[IDS_ROOM_USER] = "User-created rooms";
m_reslbl[IDS_MULTI_DONEHELP] = "Go back to the Main Menu.";
m_reslbl[IDS_MULTI_WONHELP] = "Go to the Frag-Net.";
m_reslbl[IDS_AUDIO_EAX] = "Enable EAX hardware support";
m_reslbl[IDS_GL_NOMODE] = "The selected OpenGL mode is not supported by your video card.";
m_reslbl[IDS_D3D_NOMODE] = "The selected D3D mode is not supported by your video card.";
m_reslbl[IDS_VID_NOMODE] = "The selected video mode is not available.";
m_reslbl[IDS_VID_RESELECT] = "Please select a different video mode.";
m_reslbl[IDS_VID_INITFAIL] = "The video subsystem could not be initialized.";
m_reslbl[IDS_NET_WONCONNFAIL] = "Could not connect to the Frag-Net server. Please check your internet connection.";
m_reslbl[IDS_NET_CORRUPT] = "Your Half-Life executable is out of date. Half-Life will now update to the current version.";
m_reslbl[IDS_CDKEY_BAD] = "Your Half-Life CD Key is invalid.";
m_reslbl[IDS_MULTI_REFRESH] = "Requesting server information";
m_reslbl[IDS_CHAT_NOROOM] = "Not connected";
m_reslbl[IDS_RUN_PATCH] = "Check the Internet for updates?";
m_reslbl[IDS_WON_AUTHFAILURE] = "Unable to authenticate with Frag-Net servers.";
m_reslbl[IDS_WON_LOGIN] = "Logging on to Frag-Net";
m_reslbl[IDS_LOGO_SIZEMISMATCH] = "Custom logos must have the same width and height.";
m_reslbl[IDS_LOGO_OVERSIZED] = "Custom logos can be no larger than 64 x 64 pixels.";
m_reslbl[IDS_LOGO_POWEROF2] = "Custom logo width and height must be 2, 4, 8, 16, 32, ro 64.";
m_reslbl[IDS_MODEM_CUSTOM] = "Custom";
m_reslbl[IDS_MODEM_RATE] = "Enter data transfer rate ( 100 - 9999 )";
m_reslbl[IDS_REGISTRY_UPDATE] = "Updating registry settings for Half-Life. You will need to reconfigure your settings.";
m_reslbl[IDS_CHAT_JOIN] = "Tyring to join %s";
m_reslbl[IDS_CHAT_FLOOD] = "Too much text, please wait.";
m_reslbl[IDS_CHAT_SEARCH] = "Searching for user %s...";
m_reslbl[IDS_CHAT_NOINFO] = "Directory server did not return any user information.";
m_reslbl[IDS_CHAT_NOFIND] = "Couldn't find user %s";
m_reslbl[IDS_CHAT_FIND] = "Found %s in %s";
m_reslbl[IDS_CHAT_NOAUTH] = "Could not obtain authentication information";
m_reslbl[IDS_CHAT_NODIR] = "Server did not return any directory information.";
m_reslbl[IDS_CHAT_NOSUCHROOM] = "Could not find room %s";
m_reslbl[IDS_CHAT_ROOMFULL] = "Can't join %s..., room has too many users ( %i ), try again later";
m_reslbl[IDS_CREATESV_NOADVANCED] = "No advanced options available";
m_reslbl[IDS_WON_CDINUSE] = "Your Half-Life CD Key is currently in use. Please try again later.";
m_reslbl[IDS_CHAT_JOINHINT] = "Type /join [roomname] to join another chat room.";
m_reslbl[IDS_WON_BANNED] = "Your CD key cannot be used on the Frag-Net system.";
m_reslbl[IDS_CONTENT_NOMULTIPLAYER] = "Content control configuration - on";
m_reslbl[IDS_PATCH_ERROR] = "Half-Life AutoPatch Error";
m_reslbl[IDS_PATCH_NOUTIL] = "Sierra Utilites are not properly installed. Please reinstall from the CD.";
m_reslbl[IDS_PATCH_FAIL] = "Could Not Run the AutoPatch Program";
m_reslbl[IDS_PATCH_BADINSTALL] = "Half-Life is not properly Installed";
m_reslbl[IDS_CONNECT_FAILURE] = "Could not connect to game server\r\nReason: %s";
m_reslbl[IDS_MULTI_NEEDPASSWORD] = "Password required, please enter a password to try connecting again.";
m_reslbl[IDS_VID_HINT] = "640 x 480 is recommended as the most reliable OpenGL mode. Other modes are hardware dependent and may not be available on your card.\n\nIf you have a 3D card that incorporates the Voodoo, Voodoo 2, or Banshee chipsets, select the 3DFX Mini Driver as your OpenGL Driver.";
m_reslbl[IDS_MULTI_LOGODISCONNECT] = "Changing your logo will terminate your current multiplayer game, OK to exit?";
m_reslbl[IDS_3D_WARNING] = "For 3D support, Half-Life requires the current versions of device drivers on your system. The 3D Info link will help you ensure you have the correct drivers.";
m_reslbl[IDS_3DSITE_URL] = "www.sierrastudios.com/games/half-life/support/3Dinfo/";
m_reslbl[IDS_WON_MODIFIED] = "Your Half-Life executable has been modified. Please check your system for viruses and then re-install Half-Life.";
m_reslbl[IDS_ADVANCEDMP_OFFSETS] = "0";
m_reslbl[IDS_AUDIO_OFFSET] = "0 0 0 0";
m_reslbl[IDS_CONFIGURE_OFFSET] = "0 0";
m_reslbl[IDS_CREATEROOM_OFFSET] = "0";
m_reslbl[IDS_CREATESERVER_OFFSET] = "0";
m_reslbl[IDS_GAMEOPTIONS_OFFSET] = "0 0 0 0";
m_reslbl[IDS_HLMAIN_OFFSET] = "0";
m_reslbl[IDS_KEYBOARD_OFFSET] = "0";
m_reslbl[IDS_LAN_OFFSET] = "110 50 75 80 70";
m_reslbl[IDS_LOAD_OFFSET] = "0 0";
m_reslbl[IDS_NETGAMEDLG_OFFSET] = "0 0 0";
m_reslbl[IDS_NEWGAMEDLG_OFFSET] = "0";
m_reslbl[IDS_PLAYERINFODLG_OFFSET] = "0";
m_reslbl[IDS_PLAYERPROFILEDLG_OFFSET] = "0 0";
m_reslbl[IDS_PROMPT_OFFSET] = "0 0";
m_reslbl[IDS_ROOM_OFFSET] = "0";
m_reslbl[IDS_VIDEODLG_OFFSET] = "0";
m_reslbl[IDS_VIDEOMODEDLG_OFFSET] = "0 0";
m_reslbl[IDS_VIDSELECTDLG_OFFSET] = "0 0";
m_reslbl[IDS_UPDATERREGISTRYINSTALLDIR] = "HALFLIFE";
m_reslbl[IDS_SPANISH] = "0";
m_reslbl[IDS_FRENCH] = "0";
m_reslbl[IDS_OPTS_JLOOKHELP] = "Use the joystick to look around instead of using the joystick to move.";
m_reslbl[IDS_OPTS_JLOOK] = "Joystick look";
m_reslbl[IDS_GERMAN] = "0";
m_reslbl[IDS_CONNECT_PROTOCOLBAD] = "You cannot connect to a server which is operating under a different protocol version.";
m_reslbl[IDS_SERVER_MENU_QUICK] = "Sort list using best server estimate";
m_reslbl[IDS_DECAL_LIMIT] = "Maximum number of decals in multiplayer.";
m_reslbl[IDS_SPRITE_SKIP] = "Draw faster software sprites";
m_reslbl[IDS_MODEL_NAME] = "Player Model: %s";
m_reslbl[IDS_FILTER_BYGAME] = "are running game ";
m_reslbl[IDS_BTN_SETINFO] = "&Advanced options";
m_reslbl[IDS_MODLIST_TYPE] = "Type";
m_reslbl[IDS_MODLIST_NAME] = "Name";
m_reslbl[IDS_MODLIST_VERSION] = "Version";
m_reslbl[IDS_MODLIST_SIZE] = "Size";
m_reslbl[IDS_MODLIST_RATING] = "Rating";
m_reslbl[IDS_MODLIST_INSTALLED] = "Installed";
m_reslbl[IDS_MODLIST_SERVERS] = "Servers";
m_reslbl[IDS_MODLIST_PLAYERS] = "Players";
m_reslbl[IDS_MOD_DOWNLOADING] = "Downloading '%s'";
m_reslbl[IDS_MOD_DLSIZEMB] = "Total download size for game %s\r\n%.2fmb";
m_reslbl[IDS_MOD_DLSIZEKB] = "Total download size for game %s\r\n%.0fkb";
m_reslbl[IDS_MOD_DLSTATUS] = "Downloading %s from\r\n%s\r\nFile: %s\r\n%.0f%%";
m_reslbl[IDS_MOD_TIME] = "%.1f seconds";
m_reslbl[IDS_MOD_CONNECT] = "Connecting to %s";
m_reslbl[IDS_MOD_GETTINGSIZE] = "Getting download size";
m_reslbl[IDS_MOD_DLSTATUSSHORT] = "Downloading %s from\r\n%s";
m_reslbl[IDS_MOD_NOFILES] = "Nothing to download";
m_reslbl[IDS_MOD_NOLIBLIST] = "Could not find liblist.gam file on remote host\r\nDouble check that %s is a valid custom game site";
m_reslbl[IDS_INTERNET_CURRENTTOTALS] = "%i servers ( %i players online )";
m_reslbl[IDS_SERVER_REFRESH] = "Refresh selected server";
m_reslbl[IDS_CONNECT_NEEDMOD] = "You cannot connect to a server running custom game %s until you install the custom game";
m_reslbl[IDS_MOD_REMOTEOPENFAIL] = "Could not open %s on remote machine";
m_reslbl[IDS_MOD_LOCALOPENFAIL] = "Could not open %s on local machine";
m_reslbl[IDS_BTN_CUSTOMGAME] = "C&ustom game";
m_reslbl[IDS_MAIN_CUSTOMHELP] = "Select a custom game, search the Internet for custom games";
m_reslbl[IDS_BTN_ACTIVATE] = "&Activate";
m_reslbl[IDS_BTN_INSTALL] = "&Install";
m_reslbl[IDS_BTN_DETAILS] = "Details";
m_reslbl[IDS_BTN_VISIT] = "&Visit web site";
m_reslbl[IDS_BTN_REFRESHMODS] = "&Refresh list";
m_reslbl[IDS_BTN_DEACTIVATE] = "D&eactivate";
m_reslbl[IDS_MOD_INFO] = "Info:";
m_reslbl[IDS_YES] = "Yes";
m_reslbl[IDS_NO] = "No";
m_reslbl[IDS_UPDATE] = "Update";
m_reslbl[IDS_MODREQ_TITLE] = "Requesting custom game info";
m_reslbl[IDS_DOWNLOAD_WARNING] = "You are about to download a custom game. Downloading a custom game for Half-Life has the same issues and risks as downloading any program from the Internet. They could contain viruses, have bugs that will crash your system causing you to lose unsaved work, or could perform operations that might harm your computer.\r\nYou can disable this warning by checking the \"Don't show this warning again\" checkbox at the bottom of this form.";
m_reslbl[IDS_WARN_CHECKPROMPT] = "Don't show this warning again";
m_reslbl[IDS_MOD_VERSION] = "Custom game '%s' has a new version available, are you sure you want to select it before installing the updated version?";
m_reslbl[IDS_MOD_REINSTALL] = "Custom game %s is already installed, are you sure you want to re-install?";
m_reslbl[IDS_WARN_TITLE] = "Custom game download";
m_reslbl[IDS_MOD_ENGINEVERSION] = "Custom game '%s' was created for a different version of Half-Life than the current version you have installed. Are you sure you want to select it before installing the updated version?";
m_reslbl[IDS_MOD_CONNVERSION] = "You cannot connect to a server running version %i of custom game '%s' until you upgrade to that version. Your current version is %i";
m_reslbl[IDS_CONNHLVERSION] = "You are attempting to connect to a server running game '%s' for Half-Life version %s. Your current version of Half-Life is %s. Continue anyway?";
m_reslbl[IDS_MOD_NOTINSTALLED] = "Can't activate custom game '%s', you must install the custom game first.";
m_reslbl[IDS_REFRESH_SERVERS] = "%i servers remaining";
m_reslbl[IDS_DEDICATED] = "Dedicated server (faster, but you can't join the server from this machine).";
m_reslbl[IDS_MOD_MODVERSION] = "You are attempting to connect to a server running version %i of the game '%s', but you only have version %i installed. Continue anyway?";
m_reslbl[IDS_CONN_FULL] = "Can't connect to %s, server is full.";
m_reslbl[IDS_MOD_UNZIP] = "Do you want to uncompress the files for game '%s'?";
m_reslbl[IDS_FAVSVRS_CORRUPT] = "The server data file favsvrs.dat appears to be corrupt.\r\n\r\nYou can request a new list of servers by pressing the Update button.\r\n\r\nDo you want to remove the corrupt file ( you will have to re-enter your 'favorites' if you remove the file )?";
/* Override the defaults with custom entries */
stringslst = fopen("gfx/shell/strings.lst", FILE_READ);
if (stringslst >= 0) {
int lc;
while((lstline = fgets(stringslst))) {
lc = tokenize(lstline);
if (lc == 2) {
m_reslbl[stof(argv(0))] = argv(1);
}
}
}
}

564
Source/Menu-FN/strings.h Normal file
View file

@ -0,0 +1,564 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
string m_reslbl[558];
#define IDS_LANGUAGE 1
#define IDS_BORDERLESS_REGFAIL 2
#define IDS_CHAT_IGNORE_MISLINKED 3
#define IDS_CHAT_IGNORE_UNLINKED 4
#define IDS_CREATE_MAPSCHANGED 5
#define IDS_CREATE_LIBLISTBAD 6
#define IDS_SOCKET_CONNECTIONFAILURE 7
#define IDS_PLAYERINFO_NOMEM 8
#define IDS_CHAT_NOCONNECTION 9
#define IDS_CHAT_NOSTREAM 10
#define IDS_CHAT_NOSELECT 11
#define IDS_CONTROLS_DELETE_LINKED 12
#define IDS_CONTROLS_KBLIST_EMPTY 13
#define IDS_CONTROLS_KBLIST_PARSEERROR 14
#define IDS_CONTROLS_KBKEYS_EMPTY 15
#define IDS_CONTROLS_KBKEYS_PARSEERROR 16
#define IDS_CONTROLS_KBKEYS_OVERFLOW 17
#define IDS_PROFILE_COLOR 18
#define IDS_MAIN_NOCAPS 19
#define IDS_MAIN_INSUFFICIENTCAPS 20
#define IDS_MAIN_REGWNDCLSFAIL 21
#define IDS_MAIN_INSUFFICIENTSOCKETS 22
#define IDS_MAIN_MEMMAPFAILURE 23
#define IDS_PROFILE_NOMEM 24
#define IDS_BTN_STRANGESIZE 25
#define IDS_MAIN_NOUSERMSGS 26
#define IDS_MAIN_NOFILEMAPPING 27
#define IDS_MAIN_NOMEMMAPCONNECT 28
#define IDS_MSG_OVERFLOW 29
#define IDS_MSG_REQTOOBIG 30
#define IDS_MULTI_NOROOMSTATIC 31
#define IDS_MULTI_NOROOMTAB 32
#define IDS_MULTI_NOCHATWINDOW 33
#define IDS_MULTI_NOCHATINPUT 34
#define IDS_MULTI_NOUSERLIST 35
#define IDS_MULTI_NOSERVERLIST 36
#define IDS_MULTI_NOSELECTION 37
#define IDS_MULTI_NOARCHIVE 38
#define IDS_CHAT_USER_NOMEM 39
#define IDS_MULTI_SERVER_NOMEM 40
#define IDS_MULTI_MASTER_BADLISTFILE 41
#define IDS_MULTI_NODIALOG 42
#define IDS_PROFILE_REQUIRED 43
#define IDS_ODCOMBO_REGFAIL 44
#define IDS_ODEDIT_REGFAIL 45
#define IDS_ODLIST_REGFAIL 46
#define IDS_ODSCROLL_REGFAIL 47
#define IDS_ODSLIDER_REGFAIL 48
#define IDS_ODTAB_REGFAIL 49
#define IDS_PROFILE_NICKREMOVEFAIL 50
#define IDS_PROFILE_NOPROFILE 51
#define IDS_QUICK_NOSERVERS 52
#define IDS_QUICK_NOACTIVE 53
#define IDS_README_NOMEM 54
#define IDS_ROOM_BADNAME 55
#define IDS_SINGLE_NOSELECTION 56
#define IDS_SINGLE_CANTSAVE 57
#define IDS_ODLISTBOX_REGFAIL 58
#define IDS_DIB_OPENFAIL 59
#define IDS_MCI_OPENFAIL 60
#define IDS_MCI_GETIDFAIL 61
#define IDS_MCI_WINDOWFAIL 62
#define IDS_MCI_PUTFAIL 63
#define IDS_MCI_SEEKFAIL 64
#define IDS_MCI_BREAKFAIL 65
#define IDS_MCI_PLAYFAIL 66
#define IDS_MCI_STOPFAIL 67
#define IDS_MCI_CLOSEFAIL 68
#define IDS_CONTROLS_RESTOREFAIL 69
#define IDS_SND_BADNAME 70
#define IDS_PROFILE_ALLOCFAIL 71
#define IDS_AUDIO_NOPROFILE 72
#define IDS_VIDEO_NOPROFILE 73
#define IDS_CONTROLS_KEYHELP 74
#define IDS_ENDDEMO_URL 75
#define IDS_ORDER_URL 76
#define IDS_LOADSAVE_HINT 77
#define IDS_LAUNCHER_BUTTONSIZE 78
#define IDS_MEM_INSUFFICIENT 79
#define IDS_MEM_ALLOCFAIL 80
#define IDS_EVENT_CREATEFAIL 81
#define IDS_OSVER_FAIL 82
#define IDS_OSVER_OUTDATED 83
#define IDS_OSVER_NTSP3 84
#define IDS_OSVER_16BIT 85
#define IDS_BINDING_ACTIONHEADING 86
#define IDS_BINDING_PRIMARYHEADING 87
#define IDS_BINDING_ALTERNATEHEADING 88
#define IDS_BINDING_PROMPT 89
#define IDS_URL_BROWSERFAIL 90
#define IDS_SAVELOAD_TIMECOL 91
#define IDS_SAVELOAD_GAMECOL 92
#define IDS_SAVELOAD_ELAPSEDCOL 93
#define IDS_SERVER_GAMESERVER 94
#define IDS_SERVER_SPEED 95
#define IDS_SERVER_MAP 96
#define IDS_SERVER_PLAYERS 97
#define IDS_SERVER_MAX 98
#define IDS_SERVER_GAME 99
#define IDS_SERVER_NETWORK 100
#define IDS_QUERY_STARTING 101
#define IDS_QUERY_COMPLETED 102
#define IDS_SERVER_REMOVE 103
#define IDS_SERVER_CONNECT 104
#define IDS_SERVER_LANTAG 105
#define IDS_SERVER_INTERNETTAG 106
#define IDS_SERVER_MENU_CONNECT 107
#define IDS_SERVER_MENU_PLAYERINFO 108
#define IDS_SERVER_MENU_RULEINFO 109
#define IDS_SERVER_MENU_FILTER 110
#define IDS_SERVER_MENU_ADDTOFAVORITE 111
#define IDS_SERVER_MENU_REMOVEFROMFAV 112
#define IDS_SERVER_MENU_REMOVE 113
#define IDS_SERVER_MENU_NOPLAYERINFO 114
#define IDS_SERVER_MENU_NOLANPLAYERINFO 115
#define IDS_SAVELOAD_QUICKLISTTEXT 116
#define IDS_SAVELOAD_AUTOLISTITEM 117
#define IDS_PLAYERINFO_NUMBER 118
#define IDS_PLAYERINFO_NAME 119
#define IDS_PLAYERINFO_KILLS 120
#define IDS_PLAYERINFO_TIME 121
#define IDS_PLAYERINFO_SUIT 122
#define IDS_QUICK_REQUEST 123
#define IDS_QUICK_GOTLIST 124
#define IDS_QUICK_CONTACTING 125
#define IDS_QUICK_COMPLETEDSERVER 126
#define IDS_SAVE_NEWCOMMENT 127
#define IDS_SAVE_NEWTIME 128
#define IDS_SAVE_NEWFILETIME 129
#define IDS_DDRAW_FAILEINIT 130
#define IDS_DDRAW_DX4FAIL 131
#define IDS_VIDEO_MODECOL 132
#define IDS_ROOM_NAMECOL 133
#define IDS_ROOM_PEOPLECOL 134
#define IDS_ROOM_SERVERSCOL 135
#define IDS_DDRAW_REQUIRED 136
#define IDS_DLL_LOADFAIL 137
#define IDS_CMDLINE_VTOPTS 138
#define IDS_SAVE_NUMCHANGED 139
#define IDS_BINDINGS_ALLOCFAIL 140
#define IDS_GAMMA_LOADFAIL 141
#define IDS_DDRAW_RESTOREMODEFAIL 142
#define IDS_AUDIO_VOLUME 143
#define IDS_AUDIO_SUITVOL 144
#define IDS_AUDIO_USECD 145
#define IDS_AUDIO_HIGHQUALITY 146
#define IDS_CFG_VIDHELP 147
#define IDS_CFG_AUDIOHELP 148
#define IDS_CFG_CONTROLHELP 149
#define IDS_CFG_RETURNTOMAIN 150
#define IDS_CREATEROOM_TITLE 151
#define IDS_CREATEROOM_ROOMNAME 152
#define IDS_CREATEROOM_ROOMTOPIC 153
#define IDS_CREATESERVER_NAME 154
#define IDS_CREATESERVER_MAP 155
#define IDS_CREATESERVER_ROOM 156
#define IDS_CREATESERVER_GAMETYPE 157
#define IDS_CREATESERVER_MAXPLAYERS 158
#define IDS_FILTER_TITLE 159
#define IDS_FILTER_HEADING 160
#define IDS_FILTER_RESPONDING 161
#define IDS_FILTER_RESPONSETIME 162
#define IDS_FILTER_NOTFULL 163
#define IDS_FILTER_NOTEMPTY 164
#define IDS_FILTER_ONFAVORITES 165
#define IDS_FILTER_INCHATROOM 166
#define IDS_FINDPLAYER_TITLE 167
#define IDS_FINDPLAYER_PLAYER 168
#define IDS_FINDPLAYER_SERVER 169
#define IDS_OPTS_CROSSHAIR 170
#define IDS_OPTS_REVERSE 171
#define IDS_OPTS_MLOOK 172
#define IDS_OPTS_LOOKSPRING 173
#define IDS_OPTS_LOOKSTRAFE 174
#define IDS_OPTS_MFILTER 175
#define IDS_OPTS_JOYSTICK 176
#define IDS_OPTS_CROSSHAIRHELP 177
#define IDS_OPTS_REVERSEHELP 178
#define IDS_OPTS_MLOOKHELP 179
#define IDS_OPTS_LOOKSPRINGHELP 180
#define IDS_OPTS_LOOKSTRAFEHELP 181
#define IDS_OPTS_MFILTERHELP 182
#define IDS_OPTS_JOYSTICKHELP 183
#define IDS_OPTS_SENSITIVITYHELP 184
#define IDS_LOADSAVE_LOADHELP 185
#define IDS_LOADSAVE_SAVEHELP 186
#define IDS_LOADSAVE_RETURN 187
#define IDS_MAIN_RETURNHELP 188
#define IDS_MAIN_NEWGAMEHELP 189
#define IDS_MAIN_TRAININGHELP 190
#define IDS_MAIN_LOADHELP 191
#define IDS_MAIN_LOADSAVEHELP 192
#define IDS_MAIN_CONFIGUREHELP 193
#define IDS_MAIN_READMEHELP 194
#define IDS_MAIN_ORDERHELP 195
#define IDS_MAIN_QUITHELP 196
#define IDS_MAIN_QUICKHELP 197
#define IDS_MAIN_MULTIPLAYERHELP 198
#define IDS_CHAT_PROMPT 199
#define IDS_NEWGAME_EASYHELP 200
#define IDS_NEWGAME_MEDIUMHELP 201
#define IDS_NEWGAME_DIFFICULTHELP 202
#define IDS_NEWGAME_RETURNHELP 203
#define IDS_NEWPROFILE_TITLE 204
#define IDS_NEWPROFILE_NAME 205
#define IDS_NEWPROFILE_PASSWORD 206
#define IDS_NEWPROFILE_REMEMBER 207
#define IDS_PROFILE_MODEL 208
#define IDS_PROFILE_NICKNAME 209
#define IDS_PROFILE_SELECT 210
#define IDS_PROFILE_PROCEEDHELP 211
#define IDS_PROFILE_RETURNHELP 212
#define IDS_VIDEO_SCREENSIZE 213
#define IDS_VIDEO_GAMMA 214
#define IDS_VIDEO_GLARE 215
#define IDS_VIDEO_GAMMAHELP 216
#define IDS_VIDEO_GLAREHELP 217
#define IDS_VIDMODE_WINDOWED 218
#define IDS_VIDMODE_MOUSE 219
#define IDS_VIDMODE_GLLISTHEADER 220
#define IDS_VIDMODE_D3DHEADER 221
#define IDS_VIDSELECT_OPTIONSHELP 222
#define IDS_VIDSELECT_MODESHELP 223
#define IDS_VIDSELECT_RETURNHELP 224
#define IDS_SERVERS_REFRESH 225
#define IDS_PROGRESS_START 226
#define IDS_QUICK_CONTACT 227
#define IDS_QUICK_REQUESTLIST 228
#define IDS_README_NOFILE 229
#define IDS_STATUS_CONNECTING 230
#define IDS_STATUS_CONNECTIONESTABLISHED 231
#define IDS_STATUS_SKIPSERVER 232
#define IDS_STATUS_ELPASEDTIME 233
#define IDS_TRAINING_EXITCURRENT 234
#define IDS_MAIN_QUITPROMPTINGAME 235
#define IDS_MAIN_QUITPROMPT 236
#define IDS_CONTROLS_CANCELPROMPT 237
#define IDS_LOAD_LOADPROMPT 238
#define IDS_LOADSAVE_DELETEPROMPT 239
#define IDS_NEWGAME_NEWPROMPT 240
#define IDS_NICKNAME_ADD 241
#define IDS_PROFILE_CANCELPROMPT 242
#define IDS_SAVE_INGAMEPROMPT 243
#define IDS_SAVE_OVERWRITE 244
#define IDS_VIDEO_BADSETTINGS 245
#define IDS_AUDIO_A3D 246
#define IDS_BTN_DONE 247
#define IDS_BTN_CONTROLS 248
#define IDS_BTN_AUDIO 249
#define IDS_BTN_VIDEO 250
#define IDS_BTN_CANCEL 251
#define IDS_BTN_CREATE 252
#define IDS_BTN_FILTER 253
#define IDS_BTN_FIND 254
#define IDS_BTN_RETURN 255
#define IDS_BTN_NEWGAME 256
#define IDS_BTN_TRAINING 257
#define IDS_BTN_CONFIGURE 258
#define IDS_BTN_LOADSAVE 259
#define IDS_BTN_LOAD 260
#define IDS_BTN_MULTIPLAYER 261
#define IDS_BTN_README 262
#define IDS_BTN_ORDER 263
#define IDS_BTN_QUIT 264
#define IDS_BTN_ADVANCED 265
#define IDS_BTN_REVERT 266
#define IDS_BTN_RESTORE 267
#define IDS_BTN_DELETE 268
#define IDS_BTN_SAVE 269
#define IDS_BTN_LOGIN 270
#define IDS_BTN_CONNECT 271
#define IDS_BTN_CREATESV 272
#define IDS_BTN_REFRESH 273
#define IDS_BTN_ROOM 274
#define IDS_BTN_EASY 275
#define IDS_BTN_MEDIUM 276
#define IDS_BTN_HARD 277
#define IDS_BTN_YES 278
#define IDS_BTN_NO 279
#define IDS_BTN_OK 280
#define IDS_BTN_OPTIONS 281
#define IDS_BTN_MODES 282
#define IDS_BTN_QUICK 283
#define IDS_PROFILE_LOGO 284
#define IDS_BTN_BROWSE 285
#define IDS_MULTI_BROWSEHELP 286
#define IDS_BTN_CHAT 287
#define IDS_MULTI_CHATHELP 288
#define IDS_BTN_LAN 289
#define IDS_MULTI_LANHELP 290
#define IDS_BTN_CUSTOMIZE 291
#define IDS_MULTI_CUSTOMIZEHELP 292
#define IDS_CREATEROOM_ROOMPASSWORD 293
#define IDS_PLAYERINFO_RULENAME 294
#define IDS_PLAYERINFO_RULEVALUE 295
#define IDS_BTN_SEARCH 296
#define IDS_BTN_CHATMODE 297
#define IDS_BTN_LISTMODE 298
#define IDS_BTN_EXIT 299
#define IDS_SERVER_MANUALADD 300
#define IDS_SERVER_REQUESTNEWLIST 301
#define IDS_PLAYERINFO_SERVERNAME 302
#define IDS_PLAYERINFO_SERVERIP 303
#define IDS_PLAYERINFO_SERVERPING 304
#define IDS_PROFILE_FACE 305
#define IDS_PROFILE_SKIN 306
#define IDS_BTN_JOIN 307
#define IDS_BTN_FINDGAME 308
#define IDS_BTN_START 309
#define IDS_PROFILE_LOGOCOLOR 311
#define IDS_MULTI_RESUMEHELP 312
#define IDS_MULTI_DISCONNECTHELP 313
#define IDS_BTN_RESUME 314
#define IDS_BTN_DISCONNECT 315
#define IDS_BTN_ADDSERVER 316
#define IDS_BTN_UPDATE 317
#define IDS_BTN_INFO 318
#define IDS_QUICKSTART_TITLE 319
#define IDS_BTN_LISTROOMS 320
#define IDS_BTN_GORE 321
#define IDS_BTN_AUTOPATCH 322
#define IDS_CONFIGURE_GOREHELP 323
#define IDS_CONFIGURE_AUTOPATCHHELP 324
#define IDS_CHAT_NOSERVERS 325
#define IDS_CHAT_NOPROFILE 326
#define IDS_INIT_DX6REQUIRED 327
#define IDS_WON_VALIDATIONFAIL 328
#define IDS_WON_VALIDATIONFAIL2 329
#define IDS_WON_AUTHOUTOFORDER 330
#define IDS_WON_AUTHPROBLEM 331
#define IDS_WON_ENCRYPTBAD 332
#define IDS_WON_BADPUBLICKEY 333
#define IDS_WON_AUTHNOMEM 334
#define IDS_CD_NEEDCDKEY 335
#define IDS_CD_BADKEY 336
#define IDS_CD_BADKEYTYPED 337
#define IDS_MD5_HASHFAIL 338
#define IDS_MAIN_REGISTERMSGFAIL 339
#define IDS_CDCHECK_PROMPT 340
#define IDS_SETTINGS_SERVERTYPEINVALID 341
#define IDS_TOKEN_EXPECTLEFTBRACE 342
#define IDS_TOKEN_EXPECTRIGHTBRACE 343
#define IDS_MULTI_ADDIPUNRESOLVABLE 344
#define IDS_CHATCTRL_NOMEM 345
#define IDS_CHATCTRL_NOTEXTMEM 346
#define IDS_CHATCTRL_WINREGFAIL 347
#define IDS_PROFILE_DEFAULTMISSING 348
#define IDS_QUICK_NOMASTER 349
#define IDS_QUICK_USINGPREVIOUSLIST 350
#define IDS_CHAT_NOROOMLIST 351
#define IDS_SAVELOAD_NUMBEROFGAMESCHANGED 352
#define IDS_MAIN_EXITMULTIPLAYERPROMPT 353
#define IDS_CD_ENTERPROMPT 354
#define IDS_MULTISELECT_EXITGAMEPROMPT 355
#define IDS_MULTI_ADDSERVERPROMPT 356
#define IDS_ROOM_NEEDPASS 357
#define IDS_SAVE_CANTSAVE 358
#define IDS_SAVE_OVERWRITEPROMPT 359
#define IDS_SAVE_DELETEPROMPT 360
#define IDS_AUTH_INUSE 361
#define IDS_AUTH_BADACCOUNT 362
#define IDS_AUTH_BADREQ 363
#define IDS_AUTH_BADCERTIFICATE 364
#define IDS_AUTH_BADEXE 365
#define IDS_AUTH_BADCERTIFICATE2 366
#define IDS_AUTH_BADLOOKUP 367
#define IDS_AUTH_BADBITS 368
#define IDS_AUTH_CORRUPT 369
#define IDS_AUTH_INVALIDACCOUNT 370
#define IDS_CHAT_STATUSUNCONNECTED 371
#define IDS_CHAT_WONCONNECT 372
#define IDS_CHAT_USERENTER 373
#define IDS_CHAT_USERLEFT 374
#define IDS_ENG_STARTING 375
#define IDS_SERVERS_SEARCHING 376
#define IDS_SERVERS_LISTREC 377
#define IDS_SERVERS_CONNECTING 378
#define IDS_SERVERS_REQUESTINFO 379
#define IDS_ROOM_CREATENOTICE 380
#define IDS_ROOM_CREATEPROMPTTITLE 381
#define IDS_SAVE_TIMEHEADING 382
#define IDS_SAVE_GAMEHEADING 383
#define IDS_SAVE_ELAPSEDHEADING 384
#define IDS_SAVE_NEWCAPTION 385
#define IDS_SAVE_NEWGAMETXT 386
#define IDS_SAVE_FILETIME 387
#define IDS_STATUS_CONNECTINGNOTIME 388
#define IDS_MULTI_CHATROOMCAPTION 389
#define IDS_GORE_CHECKBOX 390
#define IDS_GORE_HELP 391
#define IDS_GORE_PWPROMPT1 392
#define IDS_GORE_PWPROMPT2 393
#define IDS_GORE_PWMISMATCHED 394
#define IDS_GORE_BADPW 395
#define IDS_BTN_ADVANCEDSVR 396
#define IDS_OPTS_AUTOAIM 397
#define IDS_OPTS_AUTOAIMHELP 398
#define IDS_BTN_PREVIEWS 399
#define IDS_MAIN_PREVIEWSHELP 400
#define IDS_SECONDS_LEFT 401
#define IDS_MEDIA_PREVIEWURL 402
#define IDS_ADVANCEDSVR_PAGE 403
#define IDS_EMPTY 404
#define IDS_MULTI_TYPE 405
#define IDS_MULTI_LAN 406
#define IDS_MULTI_ISDN 407
#define IDS_MODEM56K 408
#define IDS_MODEM28K 409
#define IDS_OPTS_HIMODELS 410
#define IDS_OPTS_HIMODELSHELP 411
#define IDS_CHAT_SOCKETERROR 412
#define IDS_CHAT_RECONNECTFAIL 413
#define IDS_CHAT_RECONNECTSUCCESS 414
#define IDS_CHAT_JOINFAILED 415
#define IDS_BTN_WON 416
#define IDS_WON_URL 417
#define IDS_AUDIO_CDHINT 418
#define IDS_PREVIOUS 419
#define IDS_NEXT 420
#define IDS_MODEM33K 421
#define IDS_MODEM14K 422
#define IDS_ROOM_PERMANENT 423
#define IDS_ROOM_USER 424
#define IDS_MULTI_DONEHELP 425
#define IDS_MULTI_WONHELP 426
#define IDS_AUDIO_EAX 427
#define IDS_GL_NOMODE 428
#define IDS_D3D_NOMODE 429
#define IDS_VID_NOMODE 430
#define IDS_VID_RESELECT 431
#define IDS_VID_INITFAIL 432
#define IDS_NET_WONCONNFAIL 433
#define IDS_NET_CORRUPT 434
#define IDS_CDKEY_BAD 435
#define IDS_MULTI_REFRESH 436
#define IDS_CHAT_NOROOM 437
#define IDS_RUN_PATCH 438
#define IDS_WON_AUTHFAILURE 439
#define IDS_WON_LOGIN 440
#define IDS_LOGO_SIZEMISMATCH 441
#define IDS_LOGO_OVERSIZED 442
#define IDS_LOGO_POWEROF2 443
#define IDS_MODEM_CUSTOM 444
#define IDS_MODEM_RATE 445
#define IDS_REGISTRY_UPDATE 446
#define IDS_CHAT_JOIN 447
#define IDS_CHAT_FLOOD 448
#define IDS_CHAT_SEARCH 449
#define IDS_CHAT_NOINFO 450
#define IDS_CHAT_NOFIND 451
#define IDS_CHAT_FIND 452
#define IDS_CHAT_NOAUTH 453
#define IDS_CHAT_NODIR 454
#define IDS_CHAT_NOSUCHROOM 455
#define IDS_CHAT_ROOMFULL 456
#define IDS_CREATESV_NOADVANCED 457
#define IDS_WON_CDINUSE 459
#define IDS_CHAT_JOINHINT 460
#define IDS_WON_BANNED 461
#define IDS_CONTENT_NOMULTIPLAYER 462
#define IDS_PATCH_ERROR 463
#define IDS_PATCH_NOUTIL 464
#define IDS_PATCH_FAIL 465
#define IDS_PATCH_BADINSTALL 466
#define IDS_CONNECT_FAILURE 467
#define IDS_MULTI_NEEDPASSWORD 468
#define IDS_VID_HINT 469
#define IDS_MULTI_LOGODISCONNECT 470
#define IDS_3D_WARNING 471
#define IDS_3DSITE_URL 472
#define IDS_WON_MODIFIED 473
#define IDS_ADVANCEDMP_OFFSETS 474
#define IDS_AUDIO_OFFSET 475
#define IDS_CONFIGURE_OFFSET 476
#define IDS_CREATEROOM_OFFSET 477
#define IDS_CREATESERVER_OFFSET 478
#define IDS_GAMEOPTIONS_OFFSET 479
#define IDS_HLMAIN_OFFSET 480
#define IDS_KEYBOARD_OFFSET 481
#define IDS_LAN_OFFSET 482
#define IDS_LOAD_OFFSET 483
#define IDS_NETGAMEDLG_OFFSET 484
#define IDS_NEWGAMEDLG_OFFSET 485
#define IDS_PLAYERINFODLG_OFFSET 486
#define IDS_PLAYERPROFILEDLG_OFFSET 487
#define IDS_PROMPT_OFFSET 488
#define IDS_ROOM_OFFSET 489
#define IDS_VIDEODLG_OFFSET 490
#define IDS_VIDEOMODEDLG_OFFSET 491
#define IDS_VIDSELECTDLG_OFFSET 492
#define IDS_UPDATERREGISTRYINSTALLDIR 493
#define IDS_SPANISH 494
#define IDS_FRENCH 495
#define IDS_OPTS_JLOOKHELP 496
#define IDS_OPTS_JLOOK 497
#define IDS_GERMAN 498
#define IDS_CONNECT_PROTOCOLBAD 499
#define IDS_SERVER_MENU_QUICK 500
#define IDS_DECAL_LIMIT 501
#define IDS_SPRITE_SKIP 502
#define IDS_MODEL_NAME 503
#define IDS_FILTER_BYGAME 504
#define IDS_BTN_SETINFO 505
#define IDS_MODLIST_TYPE 506
#define IDS_MODLIST_NAME 507
#define IDS_MODLIST_VERSION 508
#define IDS_MODLIST_SIZE 509
#define IDS_MODLIST_RATING 510
#define IDS_MODLIST_INSTALLED 511
#define IDS_MODLIST_SERVERS 512
#define IDS_MODLIST_PLAYERS 513
#define IDS_MOD_DOWNLOADING 514
#define IDS_MOD_DLSIZEMB 515
#define IDS_MOD_DLSIZEKB 516
#define IDS_MOD_DLSTATUS 517
#define IDS_MOD_TIME 518
#define IDS_MOD_CONNECT 519
#define IDS_MOD_GETTINGSIZE 520
#define IDS_MOD_DLSTATUSSHORT 521
#define IDS_MOD_NOFILES 522
#define IDS_MOD_NOLIBLIST 523
#define IDS_INTERNET_CURRENTTOTALS 524
#define IDS_SERVER_REFRESH 525
#define IDS_CONNECT_NEEDMOD 526
#define IDS_MOD_REMOTEOPENFAIL 527
#define IDS_MOD_LOCALOPENFAIL 528
#define IDS_BTN_CUSTOMGAME 529
#define IDS_MAIN_CUSTOMHELP 530
#define IDS_BTN_ACTIVATE 531
#define IDS_BTN_INSTALL 532
#define IDS_BTN_DETAILS 533
#define IDS_BTN_VISIT 534
#define IDS_BTN_REFRESHMODS 535
#define IDS_BTN_DEACTIVATE 536
#define IDS_MOD_INFO 537
#define IDS_YES 538
#define IDS_NO 539
#define IDS_UPDATE 540
#define IDS_MODREQ_TITLE 541
#define IDS_DOWNLOAD_WARNING 542
#define IDS_WARN_CHECKPROMPT 543
#define IDS_MOD_VERSION 544
#define IDS_MOD_REINSTALL 545
#define IDS_WARN_TITLE 546
#define IDS_MOD_ENGINEVERSION 547
#define IDS_MOD_CONNVERSION 548
#define IDS_CONNHLVERSION 549
#define IDS_MOD_NOTINSTALLED 550
#define IDS_REFRESH_SERVERS 552
#define IDS_DEDICATED 553
#define IDS_MOD_MODVERSION 554
#define IDS_CONN_FULL 555
#define IDS_MOD_UNZIP 556
#define IDS_FAVSVRS_CORRUPT 557

24
Source/Menu-FN/util.cpp Normal file
View file

@ -0,0 +1,24 @@
int Util_CheckMouse(int x, int y, int sx, int sy) {
int mins[2];
int maxs[2];
x += g_menuofs[0];
y += g_menuofs[1];
mins[0] = x;
mins[1] = y;
maxs[0] = x + sx;
maxs[1] = y + sy;
if (g_mousepos[0] >= mins[0] && g_mousepos[0] <= maxs[0]) {
if (g_mousepos[1] >= mins[1] && g_mousepos[1] <= maxs[1]) {
return TRUE;
}
}
return FALSE;
}
float lerp( float fA, float fB, float fPercent ) {
return ( fA * ( 1 - fPercent ) ) + ( fB * fPercent );
}

View file

@ -0,0 +1,64 @@
class CCheckBox:CWidget
{
int m_value;
int m_hover;
int m_click;
virtual void(float value) m_changed = 0;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(void(float val) vFunc) SetCallback;
virtual void(float val) SetValue;
};
void CCheckBox::Draw(void)
{
if (m_click) {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], g_bmp[CB_DOWN],
[19,19], [1,1,1], 1.0f, 0);
} else {
if (m_value) {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], g_bmp[CB_CHECKED],
[19,19], [1,1,1], 1.0f);
} else {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], g_bmp[CB_EMPTY],
[19,19], [1,1,1], 1.0f);
}
}
if (m_hover) {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], g_bmp[CB_OVER],
[19,19], [1,1,1], 1.0f, 1);
}
}
void CCheckBox::Input(float type, float x, float y, float devid)
{
if (Util_CheckMouse(m_x, m_y, 19, 19) == TRUE) {
m_hover = TRUE;
} else {
m_hover = FALSE;
}
if (m_hover && type == IE_KEYDOWN && x == K_MOUSE1) {
m_click = TRUE;
}
if (type == IE_KEYUP && x == K_MOUSE1) {
if (m_click) {
m_click = FALSE;
m_value = TRUE - m_value;
if (m_changed) {
m_changed(m_value);
}
}
}
}
void CCheckBox::SetCallback(void(float val) vFunc)
{
m_changed = vFunc;
}
void CCheckBox::SetValue(float val)
{
m_value = (int)val;
}

View file

@ -0,0 +1,8 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/

View file

@ -0,0 +1,24 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CComboBox:CWidget
{
void() CComboBox;
virtual void() Draw;
};
void CComboBox::CComboBox(void)
{
}
void CComboBox::Draw(void)
{
}

View file

@ -0,0 +1,18 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CDialog:CWidget
{
virtual void() Draw;
};
void CDialog::Draw(void)
{
drawfill([g_menuofs[0]+160,g_menuofs[1]+160], [320,160], [0,0,0], 1.0f);
drawfill([g_menuofs[0]+161,g_menuofs[1]+161], [318,158], col_prompt_bg, 1.0f);
}

View file

@ -0,0 +1,52 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CFrame:CWidget
{
int m_bsize[2];
int m_size[2];
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(int w, int h) SetSize;
};
void CFrame::CFrame(void)
{
m_bsize[0] = m_bsize[1] = 3;
}
void CFrame::Draw(void)
{
if (g_focuswidget == this) {
drawfill([g_menuofs[0] + m_x, g_menuofs[1] + m_y],
[m_size[0],m_size[1]], [0.5,0.5,0.5], 1.0f);
} else {
drawfill([g_menuofs[0] + m_x, g_menuofs[1] + m_y],
[m_size[0],m_size[1]], [0.25,0.25,0.25], 1.0f);
}
drawfill([g_menuofs[0] + m_x + m_bsize[0], g_menuofs[1] + m_y + m_bsize[1]],
[m_size[0] - (m_bsize[0] * 2),m_size[1]-(m_bsize[1] * 2)],
[0,0,0], 1.0f);
}
void CFrame::Input(float type, float x, float y, float devid)
{
if (Util_CheckMouse(m_x, m_y, m_size[0], m_size[1])) {
if (type == IE_KEYDOWN) {
if (x == K_MOUSE1) {
g_focuswidget = this;
}
}
}
}
void CFrame::SetSize(int x, int y)
{
m_size[0] = x;
m_size[1] = y;
}

View file

@ -0,0 +1,93 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CHeader:CWidget
{
int m_header;
float m_lerp;
int m_start_x;
int m_start_y;
int m_end_x;
int m_end_y;
int m_start_w;
int m_start_h;
int m_end_w;
int m_end_h;
int m_visible;
virtual void() m_execute = 0;
virtual void() Draw;
virtual void(int x1, int y1, int x2, int y2) SetStartEndPos;
virtual void(int x1, int y1, int x2, int y2) SetStartEndSize;
virtual void(int i) SetHeader;
};
void CHeader::Draw(void)
{
int pos[2];
int size[2];
if (m_visible == FALSE) {
return;
}
pos[0] = g_menuofs[0] + lerp(m_start_x, m_end_x, m_lerp);
pos[1] = g_menuofs[1] + lerp(m_start_y, m_end_y, m_lerp);
size[0] = lerp(m_start_w, m_end_w, m_lerp);
size[1] = lerp(m_start_h, m_end_h, m_lerp);
drawpic([pos[0],pos[1]], g_bmp[m_header],[size[0],size[1]], [1,1,1], 1.0f, 1);
#if 0
m_lerp += frametime * 0.25;
#else
m_lerp += frametime * 8;
#endif
m_lerp = bound(0.0f, m_lerp, 1.0f);
if (m_lerp == 1.0f) {
if (m_visible == TRUE) {
m_visible = FALSE;
if (m_execute) {
m_execute();
}
}
}
}
void CHeader::SetHeader(int i)
{
m_header = i;
}
void CHeader::SetExecute(void() vFunc)
{
m_execute = vFunc;
}
void CHeader::SetStartEndPos(int x1, int y1, int x2, int y2)
{
m_start_x = x1;
m_start_y = y1;
m_end_x = x2;
m_end_y = y2;
}
void CHeader::SetStartEndSize(int x1, int y1, int x2, int y2)
{
m_start_w = x1;
m_start_h = y1;
m_end_w = x2;
m_end_h = y2;
}
CHeader header;

View file

@ -0,0 +1,61 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CLabel:CWidget
{
string m_label;
vector m_color;
int m_sx;
int m_sy;
float m_alpha;
int m_font;
void() CLabel;
virtual void() Draw;
};
void CLabel::CLabel(void)
{
m_label = "Label";
m_color = [1,1,1];
m_alpha = 1.0f;
m_sx = m_sy = 8;
}
void CLabel::Draw(void)
{
drawfont = m_font;
drawstring([m_x,m_y], m_label, [m_sx,m_sy], m_color, m_alpha, 0);
}
/* Sometimes all you need is a static label */
void WLabel_Static(int x, int y, string msg, int sx, int sy, vector col,
float alpha, float flags, int font)
{
drawfont = font;
x += g_menuofs[0];
y += g_menuofs[1];
drawstring([x,y], msg, [sx,sy], col, alpha, flags);
}
void WLabel_StaticR(int x, int y, string msg, int sx, int sy, vector col,
float alpha, float flags, int font)
{
drawfont = font;
x += g_menuofs[0] - stringwidth(msg, TRUE,[sx,sy]);
y += g_menuofs[1];
drawstring([x,y], msg, [sx,sy], col, alpha, flags);
}
void WField_Static(int x, int y, string msg, int sx, int sy, vector col,
float alpha, float flags, int font)
{
drawfont = font;
x += g_menuofs[0];
y += g_menuofs[1];
drawtextfield([x,y], [sx,sy], flags, sprintf("^xAAA%s",msg));
}

View file

@ -0,0 +1,137 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
#define LB_MAX_ENTRIES 512
class CListBox:CWidget
{
int m_size[2];
string m_entries[LB_MAX_ENTRIES];
int m_count;
int m_scroll;
int m_selected;
virtual void(int val) m_execute = 0;
void() CListBox;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(string m) AddEntry;
virtual void() Clear;
virtual void(int w, int h) SetSize;
virtual void(void(int val) func) SetChanged;
virtual void(int i) SetSelected;
virtual string() GetSelectedItem;
virtual int() GetSelected;
};
void CListBox::CListBox(void)
{
m_selected = -1;
}
void CListBox::Draw(void)
{
int visible;
int pos[2];
drawfill([g_menuofs[0] + m_x, g_menuofs[1] + m_y], [m_size[0], m_size[1]],
[0,0,0], 1.0f);
visible = floor(m_size[1] / 15);
pos[0] = m_x + 2;
pos[1] = m_y + 2;
for ( int i = m_scroll; i < (visible + m_scroll); i++) {
if (m_selected == i) {
drawfill([g_menuofs[0] + pos[0] - 2, g_menuofs[1] + pos[1] - 2], [m_size[0], 15],
[84/255,45/255,0], 1.0f);
}
WLabel_Static(pos[0], pos[1], m_entries[i], 12, 12, [1,0.5,0.1],
1.0f, 0, font_label);
pos[1] += 15;
}
}
void CListBox::Input(float type, float x, float y, float devid)
{
int visible;
int pos[2];
drawfill([g_menuofs[0] + m_x, g_menuofs[1] + m_y], [m_size[0], m_size[1]],
[0,0,0], 1.0f);
visible = floor(m_size[1] / 15);
pos[0] = m_x;
pos[1] = m_y;
for ( int i = m_scroll; i < (visible + m_scroll); i++) {
if (Util_CheckMouse(pos[0], pos[1], m_size[0], 15)) {
if (type == IE_KEYDOWN) {
if (x == K_MOUSE1) {
m_selected = i;
if (m_execute) {
m_execute(i);
}
break;
}
}
}
pos[1] += 15;
}
}
void CListBox::AddEntry(string m)
{
for (int i = 0; i < LB_MAX_ENTRIES; i++) {
if (m_entries[i] == __NULL__) {
m_entries[i] = m;
m_count = i + 1;
break;
}
}
}
void CListBox::Clear(void)
{
for (int i = 0; i < LB_MAX_ENTRIES; i++) {
m_entries[i] = __NULL__;
}
}
void CListBox::SetSize(int w, int h)
{
m_size[0] = w;
m_size[1] = h;
}
void CListBox::SetScroll(int i)
{
m_scroll = i;
}
void CListBox::SetChanged(void(int val) func)
{
m_execute = func;
}
void CListBox::SetSelected(int i)
{
m_selected = i;
}
int CListBox::GetSelected(void)
{
return m_selected;
}
string CListBox::GetSelectedItem(void)
{
if (m_selected == -1) {
return __NULL__;
}
return m_entries[m_selected];
}

View file

@ -0,0 +1,171 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
enum {
BTN_NEWGAME,
BTN_RESUMEGAME,
BTN_TRAINING,
BTN_CONFIG,
BTN_LOADGAME,
BTN_SAVELOAD,
BTN_README,
BTN_QUIT,
BTN_MULTIPLAYER,
BTN_EASY,
BTN_MEDIUM,
BTN_DIFFICULT,
BTN_SAVEGAME,
BTN_LOADGAME2,
BTN_CANCEL,
BTN_OPTIONS,
BTN_VIDEO,
BTN_AUDIO,
BTN_CONTROLS,
BTN_DONE,
BTN_QUICKSTART,
BTN_DEFAULTS,
BTN_OK,
BTN_VIDEOOPTIONS,
BTN_VIDEOMODES,
BTN_ADVCONTROLS,
BTN_ORDER,
BTN_DELETE,
BTN_INTERNET,
BTN_IRCCHAT,
BTN_LAN,
BTN_CUSTOMIZE,
BTN_SKIP,
BTN_EXIT,
BTN_CONNECT,
BTN_REFRESH,
BTN_FILTER1,
BTN_FILTER2,
BTN_CREATE,
BTN_CREATEGAME,
BTN_CHATROOMS,
BTN_LISTROOMS,
BTN_SEARCH,
BTN_SERVERS,
BTN_JOIN,
BTN_FIND,
BTN_CREATEROOM,
BTN_JOINGAME,
BTN_SEARCHGAMES,
BTN_FINDGAME,
BTN_STARTGAME,
BTN_GAMEINFO,
BTN_UPDATELIST,
BTN_ADDSERVER,
BTN_DISCONNECT,
BTN_CONSOLE,
BTN_CONTENTCONTROL,
BTN_UPDATE,
BTN_VISITFRAGNET,
BTN_PREVIEWS,
BTN_ADVOPTIONS,
BTN_3DINFO,
BTN_CUSTOMGAME,
BTN_ACTIVATE,
BTN_INSTALL,
BTN_VISITWEB,
BTN_REFRESHLIST,
BTN_DEACTIVATE,
BTN_SPECTATEGAME,
BTN_SPECTATEGAMES
};
class CMainButton:CWidget
{
int m_bitmap;
float m_alpha;
int m_hover;
int m_click;
virtual void() m_execute = 0;
int m_length;
void() CMainButton;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(int i) SetImage;
virtual void(int i) SetLength;
virtual void(void() vFunc) SetExecute;
};
void CMainButton::CMainButton(void)
{
m_alpha = 1.0f;
m_length = 156;
}
void CMainButton::Draw(void)
{
if (!m_execute) {
drawsubpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], [156,26], g_bmp[0],
[0,(m_bitmap * 3) * g_btnofs], [1,g_btnofs], [1,1,1], 0.75f, 1);
return;
}
if (m_click) {
drawsubpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], [156,26], g_bmp[0],
[0,((m_bitmap * 3)+2) * g_btnofs], [1,g_btnofs],
[1,1,1], 1.0f, 1);
return;
}
drawsubpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], [156,26], g_bmp[0],
[0,(m_bitmap * 3) * g_btnofs], [1,g_btnofs], [1,1,1], 1.0f, 1);
drawsubpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], [156,26], g_bmp[0],
[0,((m_bitmap * 3)+1) * g_btnofs], [1,g_btnofs],
[1,1,1], 1 - m_alpha, 1);
if (m_hover) {
m_alpha -= frametime * 16;
} else {
m_alpha += frametime * 2;
}
m_alpha = bound(0.0f, m_alpha, 1.0f);
}
void CMainButton::Input(float type, float x, float y, float devid)
{
if (Util_CheckMouse(m_x, m_y, m_length, 26) == TRUE) {
m_hover = TRUE;
} else {
m_hover = FALSE;
}
if (m_hover && type == IE_KEYDOWN && x == K_MOUSE1) {
localsound("../media/launch_select2.wav");
m_click = TRUE;
}
if (type == IE_KEYUP && x == K_MOUSE1) {
if (m_click) {
if (m_execute) {
m_execute();
}
m_click = FALSE;
}
}
}
void CMainButton::SetImage(int i)
{
m_bitmap = i;
}
void CMainButton::SetLength(int i)
{
m_length = i;
}
void CMainButton::SetExecute(void() vFunc)
{
m_execute = vFunc;
}

View file

View file

View file

@ -0,0 +1,96 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CPictureSwitch:CWidget
{
int m_value;
string *m_pics;
int m_max;
int m_picsize[2];
int m_picofs[2];
int m_size[2];
void() CPictureSwitch;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(string *m) SetPics;
virtual void(int val) SetValue;
virtual void(int val) SetMax;
virtual void(string val) SetValueS;
virtual void(int w, int h) SetSize;
};
void CPictureSwitch::CPictureSwitch(void)
{
m_size[0] = 124;
m_size[1] = 124;
}
void CPictureSwitch::Draw(void)
{
drawfill([g_menuofs[0]+m_x,g_menuofs[1]+m_y], [m_size[0],m_size[1]], [0.25,0.25,0.25], 1.0f);
drawfill([g_menuofs[0]+m_x+3,g_menuofs[1]+m_y+3], [m_size[0]-6,m_size[1]-31], [0,0,0], 1.0f);
drawpic([m_picofs[0]+g_menuofs[0]+m_x+3,m_picofs[1]+g_menuofs[1]+m_y+3], m_pics[m_value],
[m_picsize[0],m_picsize[1]], [1,1,1], 1.0f);
WLabel_Static(g_menuofs[0]+m_x+3, g_menuofs[1]+m_y+m_size[1]-16, m_reslbl[IDS_PREVIOUS], 12, 12, [1,1,1],
1.0f, 0, font_arial);
WLabel_StaticR(g_menuofs[0]+m_x+m_size[0]-4,
g_menuofs[1]+m_y+m_size[1]-16, m_reslbl[IDS_NEXT], 12, 12,
[1,1,1],1.0f, 0, font_arial);
}
void CPictureSwitch::Input(float type, float x, float y, float devid)
{
}
void CPictureSwitch::SetPics(string *m)
{
m_pics = m;
}
void CPictureSwitch::SetValue(int val)
{
m_value = val;
}
void CPictureSwitch::SetMax(int val)
{
m_max = val;
}
void CPictureSwitch::SetValueS(string val)
{
for (int i = 0; i < m_max; i++) {
if (m_pics[i] == val) {
m_value = i;
}
}
}
void CPictureSwitch::SetSize(int w, int h)
{
m_size[0] = w;
m_size[1] = h;
}
void CPictureSwitch::SetPicSize(int w, int h)
{
m_picsize[0] = w;
m_picsize[1] = h;
}
void CPictureSwitch::SetPicOffset(int w, int h)
{
m_picofs[0] = w;
m_picofs[1] = h;
}

View file

@ -0,0 +1,180 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CScrollbar:CWidget
{
int m_hold;
int m_hover;
int m_height;
int m_theight;
int m_scroll;
int m_minus;
int m_max;
virtual void(int value) m_changed = 0;
int m_up_hover;
int m_up_hold;
int m_dn_hover;
int m_dn_hold;
void() CScrollbar;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(int val) SetScroll;
virtual void(int val) SetMax;
virtual void(int val) SetHeight;
virtual void(void(int val) vFunc) SetCallback;
};
void CScrollbar::CScrollbar(void)
{
/* There's the physical length (t_length) and the actual length
* (border, etc. ignored) */
SetHeight(128);
}
void CScrollbar::Draw(void)
{
int barheight = 0;
int barstep = 0;
if (m_up_hold) {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], g_bmp[UPARROWP],
[16,16], [1,1,1], 1.0f, 0);
} else if (m_up_hover) {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], g_bmp[UPARROWF],
[16,16], [1,1,1], 1.0f, 0);
} else {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y], g_bmp[UPARROWD],
[16,16], [1,1,1], 1.0f, 0);
}
if (m_dn_hold) {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y+m_height-16], g_bmp[DNARROWP],
[16,16], [1,1,1], 1.0f, 0);
} else if (m_dn_hover) {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y+m_height-16], g_bmp[DNARROWF],
[16,16], [1,1,1], 1.0f, 0);
} else {
drawpic([g_menuofs[0]+m_x,g_menuofs[1]+m_y+m_height-16], g_bmp[DNARROWD],
[16,16], [1,1,1], 1.0f, 0);
}
barheight = m_theight * (m_theight / (m_max * 15));
barstep = (m_scroll * 15) * (m_theight / (m_max * 15));
if (!m_hold) {
drawfill([g_menuofs[0]+m_x,g_menuofs[1]+m_y+16], [16,m_theight], [0.25,0.25,0.25], 1.0f);
if (!m_hover) {
drawfill([g_menuofs[0]+m_x+4,g_menuofs[1]+m_y+16+4+barstep], [8,barheight-8], [0,0,0], 1.0f);
} else {
drawfill([g_menuofs[0]+m_x+4,g_menuofs[1]+m_y+16+4+barstep], [8,barheight-8], [1,0.5,0.25], 1.0f);
}
} else {
drawfill([g_menuofs[0]+m_x,g_menuofs[1]+m_y+16], [16,m_theight], [0,0,0], 1.0f);
drawfill([g_menuofs[0]+m_x+4,g_menuofs[1]+m_y+16+4+barstep], [8,barheight-8], [1,0.5,0.25], 1.0f);
}
}
void CScrollbar::Input(float type, float x, float y, float devid)
{
int barheight = 0;
int barstep = 0;
/* Up Arrow */
if (Util_CheckMouse(m_x, m_y, 16, 16)) {
m_up_hover = TRUE;
} else {
m_up_hover = FALSE;
}
if (m_up_hover && type == IE_KEYDOWN && x == K_MOUSE1) {
m_up_hold = TRUE;
} else if (type == IE_KEYUP && x == K_MOUSE1) {
m_up_hold = FALSE;
}
if (m_up_hold) {
SetScroll(m_scroll - 1);
}
/* Down Arrow */
if (Util_CheckMouse(m_x, m_y + m_height - 16, 16, 16)) {
m_dn_hover = TRUE;
} else {
m_dn_hover = FALSE;
}
if (m_dn_hover && type == IE_KEYDOWN && x == K_MOUSE1) {
m_dn_hold = TRUE;
} else if (type == IE_KEYUP && x == K_MOUSE1) {
m_dn_hold = FALSE;
}
if (m_dn_hold) {
SetScroll(m_scroll + 1);
}
barheight = m_theight * (m_theight / (m_max * 15));
barstep = (m_scroll * 15) * (m_theight / (m_max * 15));
if (Util_CheckMouse(m_x, m_y + 16 + barstep, 16, barheight)) {
m_hover = TRUE;
} else {
m_hover = FALSE;
}
if (m_hover && type == IE_KEYDOWN && x == K_MOUSE1) {
m_hold = TRUE;
} else if (type == IE_KEYUP && x == K_MOUSE1) {
m_hold = FALSE;
}
if (m_hold) {
if (g_mousepos[0] != g_lastmousepos[0] || g_mousepos[1] != g_lastmousepos[1]) {
int mdelta;
float m_value;
/* The - 10 is putting the slider in the middle of the cursor */
mdelta = (g_mousepos[1]-barheight) - (g_menuofs[1]+m_y);
m_value = ((float)mdelta / (float)m_theight);
m_value = bound(0.0f, m_value, 1.0f);
SetScroll(rint(m_max * m_value));
g_lastmousepos[0] = g_mousepos[0];
g_lastmousepos[1] = g_mousepos[1];
/*if (m_changed) {
m_changed(m_value);
}*/
}
}
}
void CScrollbar::SetScroll(int val)
{
m_scroll = bound(0,val,m_max);
if (m_changed) {
m_changed(m_scroll);
}
}
void CScrollbar::SetMax(int val)
{
m_minus = (m_height - 6) / 15;
m_max = val - m_minus;
}
void CScrollbar::SetHeight(int val)
{
m_height = val;
m_theight = m_height - 32;
}
void CScrollbar::SetCallback(void(int val) vFunc)
{
m_changed = vFunc;
}

View file

@ -0,0 +1,137 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
#define SL_MAX_ENTRIES 512
class CServerList:CWidget
{
int m_size[2];
string m_entries[SL_MAX_ENTRIES];
int m_count;
int m_scroll;
int m_selected;
virtual void(int val) m_execute = 0;
void() CServerList;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(string m) AddEntry;
virtual void() Clear;
virtual void(int w, int h) SetSize;
virtual void(void(int val) func) SetChanged;
virtual void(int i) SetSelected;
virtual string() GetSelectedItem;
virtual int() GetSelected;
};
void CServerList::CServerList(void)
{
m_selected = -1;
}
void CServerList::Draw(void)
{
int visible;
int pos[2];
drawfill([g_menuofs[0] + m_x, g_menuofs[1] + m_y], [m_size[0], m_size[1]],
[0,0,0], 1.0f);
visible = floor(m_size[1] / 15);
pos[0] = m_x + 2;
pos[1] = m_y + 2;
for ( int i = m_scroll; i < (visible + m_scroll); i++) {
if (m_selected == i) {
drawfill([g_menuofs[0] + pos[0] - 2, g_menuofs[1] + pos[1] - 2], [m_size[0], 15],
[84/255,45/255,0], 1.0f);
}
WLabel_Static(pos[0], pos[1], m_entries[i], 12, 12, [1,0.5,0.1],
1.0f, 0, font_label);
pos[1] += 15;
}
}
void CServerList::Input(float type, float x, float y, float devid)
{
int visible;
int pos[2];
drawfill([g_menuofs[0] + m_x, g_menuofs[1] + m_y], [m_size[0], m_size[1]],
[0,0,0], 1.0f);
visible = floor(m_size[1] / 15);
pos[0] = m_x;
pos[1] = m_y;
for ( int i = m_scroll; i < (visible + m_scroll); i++) {
if (Util_CheckMouse(pos[0], pos[1], m_size[0], 15)) {
if (type == IE_KEYDOWN) {
if (x == K_MOUSE1) {
m_selected = i;
if (m_execute) {
m_execute(i);
}
break;
}
}
}
pos[1] += 15;
}
}
void CServerList::AddEntry(string m)
{
for (int i = 0; i < SL_MAX_ENTRIES; i++) {
if (m_entries[i] == __NULL__) {
m_entries[i] = m;
m_count = i + 1;
break;
}
}
}
void CServerList::Clear(void)
{
for (int i = 0; i < SL_MAX_ENTRIES; i++) {
m_entries[i] = __NULL__;
}
}
void CServerList::SetSize(int w, int h)
{
m_size[0] = w;
m_size[1] = h;
}
void CServerList::SetScroll(int i)
{
m_scroll = i;
}
void CServerList::SetChanged(void(int val) func)
{
m_execute = func;
}
void CServerList::SetSelected(int i)
{
m_selected = i;
}
int CServerList::GetSelected(void)
{
return m_selected;
}
string CServerList::GetSelectedItem(void)
{
if (m_selected == -1) {
return __NULL__;
}
return m_entries[m_selected];
}

View file

@ -0,0 +1,87 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CSlider:CWidget
{
int m_length;
int m_tlength;
int m_hover;
int m_hold;
float m_value;
virtual void(float value) m_changed = 0;
void() CSlider;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(float val) SetValue;
virtual void(void(float val) vFunc) SetCallback;
};
void CSlider::CSlider(void)
{
/* There's the physical length (t_length) and the actual length
* (border, etc. ignored) */
m_length = 156;
m_tlength = m_length - 27;
}
void CSlider::Draw(void)
{
drawfill([g_menuofs[0]+m_x,g_menuofs[1]+m_y], [m_length,8], [0.25,0.25,0.25], 1.0f);
drawfill([g_menuofs[0]+m_x+3,g_menuofs[1]+m_y+3], [m_length-6,2], [0,0,0], 1.0f);
drawpic([g_menuofs[0]+m_x+(m_value * m_tlength)+3,g_menuofs[1]+m_y], g_bmp[SLIDER],
[21,8], [1,1,1], 1.0f);
}
void CSlider::Input(float type, float x, float y, float devid)
{
if (Util_CheckMouse(m_x, m_y, m_length, 8) == TRUE) {
m_hover = TRUE;
} else {
m_hover = FALSE;
}
if (m_hover && type == IE_KEYDOWN && x == K_MOUSE1) {
m_hold = TRUE;
}
if (type == IE_KEYUP && x == K_MOUSE1) {
if (m_hold) {
m_hold = FALSE;
}
}
if (m_hold) {
if (g_mousepos[0] != g_lastmousepos[0] || g_mousepos[1] != g_lastmousepos[1]) {
int mdelta;
/* The - 10 is putting the slider in the middle of the cursor */
mdelta = (g_mousepos[0] - 10) - (g_menuofs[0]+m_x);
m_value = ((float)mdelta / (float)m_tlength);
m_value = bound(0.0f, m_value, 1.0f);
g_lastmousepos[0] = g_mousepos[0];
g_lastmousepos[1] = g_mousepos[1];
if (m_changed) {
m_changed(m_value);
}
}
}
}
void CSlider::SetValue(float val)
{
m_value = val;
}
void CSlider::SetCallback(void(float val) vFunc)
{
m_changed = vFunc;
}

View file

@ -0,0 +1,93 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
enumflags
{
TEXTBOX_VISIBLE,
TEXTBOX_HOVER,
TEXTBOX_DOWN,
TEXTBOX_FOCUS,
};
class CTextBox:CWidget
{
string m_text;
int m_length;
int m_flags;
void() CTextBox;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(string txt) SetText;
};
void CTextBox::CTextBox(void)
{
m_length = 184;
}
void CTextBox::Draw(void)
{
if (g_focuswidget == this) {
drawfill([g_menuofs[0]+m_x,g_menuofs[1]+m_y], [m_length,24], [0.5,0.5,0.5], 1.0f);
} else {
drawfill([g_menuofs[0]+m_x,g_menuofs[1]+m_y], [m_length,24], [0.25,0.25,0.25], 1.0f);
}
drawfill([g_menuofs[0]+m_x+3,g_menuofs[1]+m_y+3], [m_length-6,18], [0,0,0], 1.0f);
drawfont = font_label;
if (m_flags & TEXTBOX_FOCUS) {
if (rint(time*4) & 1) {
drawstring([g_menuofs[0]+m_x+6,g_menuofs[1]+m_y+6],
sprintf("%s|", m_text), [12,12], col_input_text, 1.0f, 0);
return;
}
}
if (m_text) {
drawstring([g_menuofs[0] + m_x + 6, g_menuofs[1] + m_y + 6], m_text,
[12,12], col_input_text, 1.0f, 0);
}
}
void CTextBox::Input(float type, float x, float y, float devid)
{
if (type == IE_KEYDOWN) {
switch (x) {
case K_MOUSE1:
if (Util_CheckMouse(m_x,m_y,m_length,24)) {
g_focuswidget = this;
m_flags |= TEXTBOX_DOWN;
}
break;
case K_BACKSPACE:
if (m_flags & TEXTBOX_FOCUS) {
m_text = substring(m_text, 0, strlen(m_text) - 1);
}
break;
default:
if (m_flags & TEXTBOX_FOCUS) {
m_text = sprintf("%s%s", m_text, chr2str(y));
}
}
} else if (type == IE_KEYUP) {
if (x == K_MOUSE1) {
if (m_flags & TEXTBOX_DOWN && Util_CheckMouse(m_x,m_y,m_length,24)) {
m_flags |= TEXTBOX_FOCUS;
} else {
m_flags -= (m_flags & TEXTBOX_FOCUS);
}
m_flags -= (m_flags & TEXTBOX_DOWN);
}
}
}
void CTextBox::SetText(string txt)
{
m_text = txt;
}

View file

@ -0,0 +1,77 @@
/***
*
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class CWidget
{
int m_x;
int m_y;
CWidget m_next;
CWidget m_parent;
void() CWidget;
virtual void() Draw;
virtual void(float type, float x, float y, float devid) Input;
virtual void(int x, int y) SetPos;
};
void CWidget::CWidget(void)
{
m_x = g_menuofs[0];
m_y = g_menuofs[1];
}
void CWidget::Draw(void)
{
}
void CWidget::Input(float type, float x, float y, float devid)
{
}
void CWidget::SetPos(int x, int y)
{
m_x = x;
m_y = y;
}
void Widget_Add(CWidget parent, CWidget item)
{
CWidget wNext = parent;
CWidget wParent;
do {
wParent = wNext;
wNext = wNext.m_next;
} while (wNext);
wParent.m_next = item;
item.m_parent = parent;
}
void Widget_Draw(CWidget start)
{
CWidget wNext = start;
do {
wNext = wNext.m_next;
if (wNext) {
wNext.Draw();
}
} while (wNext);
}
void Widget_Input(CWidget start, float type, float x, float y, float devid)
{
CWidget wNext = start;
do {
wNext = wNext.m_next;
if (wNext) {
wNext.Input(type, x, y, devid);
}
} while (wNext);
}
CWidget g_focuswidget;

View file

@ -61,19 +61,19 @@ void m_init( void ) {
}
// Initialize all the spraylogos
searchhandle shSprays = search_begin( "logos/*.bmp", TRUE, TRUE );
searchhandle shSprays = search_begin( "*.bmp", TRUE, TRUE );
sLogos = memalloc( sizeof( string ) * search_getsize( shSprays ) );
for ( int i = 0; i < search_getsize( shSprays ); i++ ) {
string sShadername;
string sShortname = search_getfilename( shSprays, i );
precache_pic( sShortname );
sShortname = substring( sShortname, 6, strlen( sShortname ) - 10 );
sShortname = substring( sShortname, 0, strlen( sShortname ) - 4 );
sLogos[ i ] = sShortname;
sShadername = sprintf( "spray_%s", sShortname );
if ( substring( sShortname, 0, 1 ) == "#" ) {
shaderforname( sShadername, sprintf("{\ncull disable\npolygonOffset\n{\nmap %s\n}\n}\n", search_getfilename( shSprays, i ) ) );
} else {
shaderforname( sShadername, sprintf("{\ncull disable\npolygonOffset\n{\nmap %s\nblendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR\n\nrgbgen vertex\n}\n}\n", search_getfilename( shSprays, i ) ) );
shaderforname( sShadername, sprintf("{\ncull disable\npolygonOffset\n{\nmap %s\nblendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR\nrgbgen vertex\n}\n}\n", search_getfilename( shSprays, i ) ) );
}
iLogos += 1;
}

View file

@ -365,7 +365,7 @@ void Menu_Multiplayer_IRC(void) {
strGameDir_Support = sprintf("#%s_support", cvar_string("game"));
strGameDir_Maps = sprintf("#%s_maps", cvar_string("game"));
strGameDir_Mods = sprintf("#%s_mods", cvar_string("game"));
localcmd("irc /connect www.vera-visions.com\n");
localcmd("irc /open www.vera-visions.com\n");
iIRCInit = TRUE;
iIRCShowRooms = TRUE;
}

View file

@ -245,9 +245,9 @@ void hostage_physics( void ) {
// Decide speed and stuff
if ( self.style == HOSTAGE_WALK ) {
self.frame = A_WALK;
input_movevalues_x = 110;
input_movevalues_x = 160;
} else if ( self.style == HOSTAGE_RUN ) {
input_movevalues_x = 220;
input_movevalues_x = 320;
self.frame = A_RUN;
} else {
input_movevalues_x = 0;

View file

@ -31,7 +31,7 @@ int iBombProgress;
#endif
// Weapon Info
weaponinfo_t wptC4BOMB = {
weaponinfo_t wptC4BOMB = {
WEAPON_C4BOMB, // Identifier
SLOT_GRENADE,
0, // Price

Binary file not shown.

View file

@ -60,20 +60,21 @@ seta fcs_autoreload 0
// Movement Variables
seta sv_maxspeed 240
seta cl_forwardspeed 240
seta cl_sidespeed 240
seta cl_backspeed 240
seta cl_forwardspeed 400
seta cl_sidespeed 400
seta cl_backspeed 400
seta cl_movespeedkey 0.5
seta sv_accelerate "5"
seta pm_bunnyspeedcap "0"
seta pm_stepdown 0
seta cl_bob 0
seta v_bobcycle 0.8
seta v_bob 0.01
seta v_bobup 0.5
seta r_particledesc default
seta pm_bunnyspeedcap "0"
seta pm_stepdown 0
seta sv_accelerate "8"
seta con_textsize "12"
seta con_color "255 170 0"
seta con_color "255 150 0"
seta vgui_color "255 170 0"
seta cross_color "0 255 0"
@ -101,8 +102,6 @@ seta lang "en_us"
seta cfg_save_auto "1"
seta r_meshpitch "1"
seta gl_overbright "0"
seta cl_idlefps "0"
seta maxpitch "89"
seta minpitch "-89"
seta net_masterextra1 "www.vera-visions.com"
seta net_masterextra2 "dpmaster.deathmask.net:27950"
seta net_masterextra3 "dpmaster.tchr.no:27950"

BIN
freecs/gfx/shell/arial.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,4 +1,4 @@
!!ver 110
!!ver 120
!!permu FRAMEBLEND
!!permu SKELETAL
!!permu FOG
@ -21,7 +21,7 @@ varying vec3 light;
vec3 n, s, t, w;
gl_Position = skeletaltransform_wnst(w,n,s,t);
tex_c = v_texcoord;
light = ( hl( n, e_light_dir ) * e_light_mul ) + e_light_ambient;
light = e_light_ambient + ( e_light_mul * hl( n, e_light_dir ) );
}
#endif

Binary file not shown.

Binary file not shown.