/* Copyright (C) 1997-2001 Id Software, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // // m_opts_screen.c // #include "m_local.h" /* ======================================================================= SCREEN MENU ======================================================================= */ #define MAX_CROSSHAIRS 512 typedef struct crosshairInfo_s { int number; struct shader_s *shader; } crosshairInfo_t; typedef struct m_screenMenu_s { // Menu items uiFrameWork_t frameWork; uiImage_t banner; // // console // uiAction_t con_header; uiList_t con_clock_toggle; uiList_t con_notfade_toggle; uiList_t con_notlarge_toggle; uiList_t con_timestamp_list; uiSlider_t con_notlines_slider; uiAction_t con_notlines_amount; uiSlider_t con_alpha_slider; uiAction_t con_alpha_amount; uiSlider_t con_drop_slider; uiAction_t con_drop_amount; uiSlider_t con_scroll_slider; uiAction_t con_scroll_amount; uiSlider_t con_fontscale_slider; uiAction_t con_fontscale_amount; // // crosshair // uiAction_t ch_header; uiList_t ch_number_list; uiImage_t ch_image; uiSlider_t ch_alpha_slider; uiAction_t ch_alpha_amount; uiSlider_t ch_pulse_slider; uiAction_t ch_pulse_amount; uiSlider_t ch_scale_slider; uiAction_t ch_scale_amount; uiSlider_t ch_red_slider; uiAction_t ch_red_amount; uiSlider_t ch_green_slider; uiAction_t ch_green_amount; uiSlider_t ch_blue_slider; uiAction_t ch_blue_amount; uiAction_t back_action; // crosshair information qBool crosshairsFound; crosshairInfo_t crosshairs[MAX_CROSSHAIRS]; char *crosshairNames[MAX_CROSSHAIRS]; int numCrosshairs; } m_screenMenu_t; static m_screenMenu_t m_screenMenu; // // console // static void ConsoleClockFunc (void *unused) { cgi.Cvar_SetValue ("con_clock", m_screenMenu.con_clock_toggle.curValue, qFalse); } static void ConsoleNotFadeFunc (void *unused) { cgi.Cvar_SetValue ("con_notifyfade", m_screenMenu.con_notfade_toggle.curValue, qFalse); } static void ConsoleNotLargeFunc (void *unused) { cgi.Cvar_SetValue ("con_notifylarge", m_screenMenu.con_notlarge_toggle.curValue, qFalse); } static void ConsoleTimeStampFunc (void *unused) { cgi.Cvar_SetValue ("cl_timestamp", m_screenMenu.con_timestamp_list.curValue, qFalse); } static void ConsoleNotLinesFunc (void *unused) { cgi.Cvar_SetValue ("con_notifylines", m_screenMenu.con_notlines_slider.curValue, qFalse); m_screenMenu.con_notlines_amount.generic.name = cgi.Cvar_GetStringValue ("con_notifylines"); } static void ConsoleAlphaFunc (void *unused) { cgi.Cvar_SetValue ("con_alpha", m_screenMenu.con_alpha_slider.curValue * 0.1, qFalse); m_screenMenu.con_alpha_amount.generic.name = cgi.Cvar_GetStringValue ("con_alpha"); } static void ConsoleDropFunc (void *unused) { cgi.Cvar_SetValue ("con_drop", m_screenMenu.con_drop_slider.curValue * 0.1, qFalse); m_screenMenu.con_drop_amount.generic.name = cgi.Cvar_GetStringValue ("con_drop"); } static void ConsoleScrollFunc (void *unused) { cgi.Cvar_SetValue ("con_scroll", m_screenMenu.con_scroll_slider.curValue, qFalse); m_screenMenu.con_scroll_amount.generic.name = cgi.Cvar_GetStringValue ("con_scroll"); } static void ConsoleFontScaleFunc (void *unused) { cgi.Cvar_SetValue ("r_fontScale", m_screenMenu.con_fontscale_slider.curValue * 0.25, qFalse); m_screenMenu.con_fontscale_amount.generic.name = cgi.Cvar_GetStringValue ("r_fontScale"); } // // crosshair // static void CrosshairFunc (void *unused) { if (m_screenMenu.ch_number_list.curValue < m_screenMenu.numCrosshairs) cgi.Cvar_SetValue ("crosshair", m_screenMenu.crosshairs[m_screenMenu.ch_number_list.curValue].number, qFalse); } static void CrosshairAlphaFunc (void *unused) { cgi.Cvar_SetValue ("ch_alpha", m_screenMenu.ch_alpha_slider.curValue * 0.1, qFalse); m_screenMenu.ch_alpha_amount.generic.name = cgi.Cvar_GetStringValue ("ch_alpha"); } static void CrosshairPulseFunc (void *unused) { cgi.Cvar_SetValue ("ch_pulse", m_screenMenu.ch_pulse_slider.curValue * 0.1, qFalse); m_screenMenu.ch_pulse_amount.generic.name = cgi.Cvar_GetStringValue ("ch_pulse"); } static void CrosshairScaleFunc (void *unused) { cgi.Cvar_SetValue ("ch_scale", m_screenMenu.ch_scale_slider.curValue * 0.1, qFalse); m_screenMenu.ch_scale_amount.generic.name = cgi.Cvar_GetStringValue ("ch_scale"); } static void CrosshairRedFunc (void *unused) { cgi.Cvar_SetValue ("ch_red", m_screenMenu.ch_red_slider.curValue * 0.1, qFalse); m_screenMenu.ch_red_amount.generic.name = cgi.Cvar_GetStringValue ("ch_red"); } static void CrosshairGreenFunc (void *unused) { cgi.Cvar_SetValue ("ch_green", m_screenMenu.ch_green_slider.curValue * 0.1, qFalse); m_screenMenu.ch_green_amount.generic.name = cgi.Cvar_GetStringValue ("ch_green"); } static void CrosshairBlueFunc (void *unused) { cgi.Cvar_SetValue ("ch_blue", m_screenMenu.ch_blue_slider.curValue * 0.1, qFalse); m_screenMenu.ch_blue_amount.generic.name = cgi.Cvar_GetStringValue ("ch_blue"); } /* ============= ScreenMenu_SetValues ============= */ static void ScreenMenu_SetValues (void) { int i; // // console // cgi.Cvar_SetValue ("con_clock", clamp (cgi.Cvar_GetIntegerValue ("con_clock"), 0, 1), qFalse); m_screenMenu.con_clock_toggle.curValue = cgi.Cvar_GetIntegerValue ("con_clock"); cgi.Cvar_SetValue ("con_notifyfade", clamp (cgi.Cvar_GetIntegerValue ("con_notifyfade"), 0, 1), qFalse); m_screenMenu.con_notfade_toggle.curValue = cgi.Cvar_GetIntegerValue ("con_notifyfade"); cgi.Cvar_SetValue ("con_notifylarge", clamp (cgi.Cvar_GetIntegerValue ("con_notifylarge"), 0, 1), qFalse); m_screenMenu.con_notlarge_toggle.curValue = cgi.Cvar_GetIntegerValue ("con_notifylarge"); cgi.Cvar_SetValue ("cl_timestamp", clamp (cgi.Cvar_GetIntegerValue ("cl_timestamp"), 0, 2), qFalse); m_screenMenu.con_timestamp_list.curValue = cgi.Cvar_GetIntegerValue ("cl_timestamp"); m_screenMenu.con_notlines_slider.curValue = cgi.Cvar_GetFloatValue ("con_notifylines"); m_screenMenu.con_notlines_amount.generic.name = cgi.Cvar_GetStringValue ("con_notifylines"); m_screenMenu.con_alpha_slider.curValue = cgi.Cvar_GetFloatValue ("con_alpha") * 10; m_screenMenu.con_alpha_amount.generic.name = cgi.Cvar_GetStringValue ("con_alpha"); m_screenMenu.con_drop_slider.curValue = cgi.Cvar_GetFloatValue ("con_drop") * 10; m_screenMenu.con_drop_amount.generic.name = cgi.Cvar_GetStringValue ("con_drop"); m_screenMenu.con_scroll_slider.curValue = cgi.Cvar_GetFloatValue ("con_scroll"); m_screenMenu.con_scroll_amount.generic.name = cgi.Cvar_GetStringValue ("con_scroll"); m_screenMenu.con_fontscale_slider.curValue = cgi.Cvar_GetFloatValue ("r_fontScale") * 4; m_screenMenu.con_fontscale_amount.generic.name = cgi.Cvar_GetStringValue ("r_fontScale"); // // crosshair // m_screenMenu.ch_number_list.curValue = cgi.Cvar_GetFloatValue ("crosshair"); for (i=0 ; i