From 6c1fbd079cf139d494ba1a685a0d4d73f04beb8c Mon Sep 17 00:00:00 2001 From: Robin Redeker Date: Tue, 29 Jan 2002 19:04:24 +0000 Subject: [PATCH] Added options menu. Can now be find in options.qc. Only mouse-grab, fullscreen and crosshair can be changed by it now. --- cs-code/Makefile.am | 2 +- cs-code/game_def.qc | 5 ++ cs-code/menu.qc | 6 +- cs-code/options.qc | 128 ++++++++++++++++++++++++++++++++++++++++++ cs-code/string_def.qc | 1 + 5 files changed, 136 insertions(+), 6 deletions(-) create mode 100644 cs-code/game_def.qc create mode 100644 cs-code/options.qc diff --git a/cs-code/Makefile.am b/cs-code/Makefile.am index fd11a18ef..5f3baaf52 100644 --- a/cs-code/Makefile.am +++ b/cs-code/Makefile.am @@ -11,7 +11,7 @@ QCPPFLAGS=-I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include pkgdata_DATA= menu.dat -menu_src= menu.qc cbuf_def.qc draw_def.qc file_def.qc menu_def.qc string_def.qc +menu_src= menu.qc options.qc cbuf_def.qc draw_def.qc file_def.qc menu_def.qc string_def.qc game_def.qc menu.dat: menu.src $(menu_src) $(QFCC) $(QCFLAGS) $(QCPPFLAGS) -P $< diff --git a/cs-code/game_def.qc b/cs-code/game_def.qc new file mode 100644 index 000000000..e9e763520 --- /dev/null +++ b/cs-code/game_def.qc @@ -0,0 +1,5 @@ +float(string s) cvar = #45; // return cvar.value +void(string var, string val) cvar_set = #72; // sets cvar.value +string(float f) ftos = #26; // converts float to string +integer(float f) ftoi = #110; // converts float to integer +string(integer i) itos = #112; // converts interger to string diff --git a/cs-code/menu.qc b/cs-code/menu.qc index 69cc8409d..90d8bc573 100644 --- a/cs-code/menu.qc +++ b/cs-code/menu.qc @@ -1,4 +1,3 @@ -#include "QF/keys.h" float () random = #0; string () gametype = #0; @@ -417,10 +416,7 @@ void () multi_player_menu = Menu_End (); }; -void () options_menu = -{ - Menu_Item (54, 72, "", quit_f); -}; + void () help_menu = { diff --git a/cs-code/options.qc b/cs-code/options.qc new file mode 100644 index 000000000..91dd12c16 --- /dev/null +++ b/cs-code/options.qc @@ -0,0 +1,128 @@ +#include "QF/keys.h" + +float time; + +void (integer x, integer y) opt_cursor = +{ + Draw_Character (x, y, 12 + (integer (time * 4) & 1)); +}; + +void (string text, integer key) video_options_f = +{ + local integer selected_crosshair; + + switch (text) { + case "fullscreen": + Cbuf_AddText ("toggle vid_fullscreen\n"); + return; + case "crosshair": + selected_crosshair = ftoi(cvar("crosshair")); + selected_crosshair++; + if(selected_crosshair >= 3) { + selected_crosshair = 0; + } + cvar_set("crosshair", itos(selected_crosshair)); + } +}; +void (string text, integer key) control_options_f = +{ + switch (text) { + case "in_grab": + Cbuf_AddText ("toggle in_grab\n"); + return; + } +}; + + +/* FIXME - how to catch a key ? +void (string text, integer key) set_key_f = +{ + Cbuf_AddText ("in_bind IMT_0 "); + Cbuf_AddText (itos(key)); + Cbuf_AddText (" \"+jump\"\n"); +}; +*/ + +// ********* OPTIONS + +string (string cvarstr) get_cvar_state = +{ + if(cvar(cvarstr)) { + return("On"); + } else { + return("Off"); + } +}; + +integer (integer key, integer unicode, integer down) options_controls_keyevent = +{ + if (key == QFK_RETURN) { + } else { + } + return 0; +}; + +integer () options_controls_draw = +{ + local string tmp; + + Draw_Pic (16, 4, "gfx/qplaque.lmp"); + Draw_CenterPic (160, 4, "gfx/p_option.lmp"); + Draw_String (54, 40, "Controls"); + Draw_String (54, 50, "--------"); + Draw_String (70, 60, "Grab mouse: " + get_cvar_state ("in_grab")); + opt_cursor (62, (Menu_GetIndex() * 10) + 60); + return 1; +}; + +void () options_controls_menu = +{ + Menu_Begin (54, 40, "Controls"); + Menu_CenterPic (160, 4, "gfx/p_option.lmp"); + Menu_Draw (options_controls_draw); + Menu_KeyEvent (options_controls_keyevent); + Menu_Item (54, 60, "in_grab", control_options_f); + Menu_End (); +}; + +integer (integer key, integer unicode, integer down) options_video_keyevent = +{ + if (key == QFK_RETURN) { + } else { + } + // i have a question ;) + return 0; +}; + +integer () options_video_draw = +{ + local string tmp = ftos(cvar("crosshair")); + Draw_Pic (16, 4, "gfx/qplaque.lmp"); + Draw_CenterPic (160, 4, "gfx/p_option.lmp"); + Draw_String (54, 40, "Video"); + Draw_String (54, 50, "-----"); + Draw_String (70, 60, "Fullscreen: " + get_cvar_state("vid_fullscreen")); + Draw_String (70, 70, "Crosshair: " + tmp); + opt_cursor (62, (Menu_GetIndex() * 10) + 60); + return 1; +}; + +void () options_video_menu = +{ + Menu_Begin (54, 50, "Video"); + Menu_Draw (options_video_draw); + Menu_KeyEvent (options_video_keyevent); + Menu_Item (54, 60, "fullscreen", video_options_f); + Menu_Item (54, 70, "crosshair", video_options_f); + Menu_End (); +}; + +void () options_menu = +{ + Menu_Begin (54, 72, ""); + Menu_Pic (16, 4, "gfx/qplaque.lmp"); + Menu_CenterPic (160, 4, "gfx/p_option.lmp"); + options_video_menu (); + options_controls_menu (); + Menu_End (); +}; diff --git a/cs-code/string_def.qc b/cs-code/string_def.qc index 4a84e711e..c18692a70 100644 --- a/cs-code/string_def.qc +++ b/cs-code/string_def.qc @@ -1 +1,2 @@ string (integer old, integer new, string str) String_ReplaceChar = #0; +