r3169 - in trunk/data: gfx/menu/default gfx/menu/xaw qcsrc/menu-div0test qcsrc/menu-div0test/item qcsrc/menu-div0test/nexuiz

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Jan 18 06:39:59 EST 2008


Author: div0
Date: 2008-01-18 06:39:59 -0500 (Fri, 18 Jan 2008)
New Revision: 3169

Modified:
   trunk/data/gfx/menu/default/skinvalues.txt
   trunk/data/gfx/menu/xaw/skinvalues.txt
   trunk/data/qcsrc/menu-div0test/item/checkbox.c
   trunk/data/qcsrc/menu-div0test/item/inputbox.c
   trunk/data/qcsrc/menu-div0test/menu.qc
   trunk/data/qcsrc/menu-div0test/nexuiz/campaign.c
   trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c
   trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create_mutators.c
   trunk/data/qcsrc/menu-div0test/nexuiz/maplist.c
   trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c
   trunk/data/qcsrc/menu-div0test/skin-customizables.inc
   trunk/data/qcsrc/menu-div0test/skin.qh
Log:
make menu more keyboard aware; improve skinnability


Modified: trunk/data/gfx/menu/default/skinvalues.txt
===================================================================
--- trunk/data/gfx/menu/default/skinvalues.txt	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/gfx/menu/default/skinvalues.txt	2008-01-18 11:39:59 UTC (rev 3169)
@@ -1,50 +1,122 @@
-ALPHAS_MAINMENU                 '0.6 0.8 0.9'
+// font sizes (used for everything)
+FONTSIZE_NORMAL                 12
+HEIGHT_NORMAL                   1.5
+FONTSIZE_TITLE                  24
+HEIGHT_TITLE                    1.5
+
+// the individual dialog background colors
+COLOR_DIALOG_MULTIPLAYER        '0.7 0.7 1'
+COLOR_DIALOG_SETTINGS           '0.7 0.7 1'
+COLOR_DIALOG_TEAMSELECT         '1 1 1'
+COLOR_DIALOG_QUIT               '1 0 0'
+COLOR_DIALOG_MUTATORS           '0.7 0.7 1'
+COLOR_DIALOG_MAPINFO            '0.7 0.7 1'
+COLOR_DIALOG_USERBIND           '0.7 0.7 1'
+COLOR_DIALOG_SINGLEPLAYER       '1 1 0.7'
+
+// mouse
+//   uses "cursor" images
+SIZE_CURSOR                     '32 32 0'
+OFFSET_CURSOR                   '0 0 0'
+ALPHA_CURSOR_INTRO              0
+
+// general
+//   uses "background" images
 ALPHA_DISABLED                  0.2
-ALPHA_BEHIND                    0.3
+ALPHA_BEHIND                    0.5
+
+// item: button
+//   uses "button" images
+//   uses "buttongray" images
+COLOR_BUTTON_N                  '1 1 1'
 COLOR_BUTTON_C                  '1 1 1'
+COLOR_BUTTON_F                  '1 1 1'
 COLOR_BUTTON_D                  '1 1 1'
-COLOR_BUTTON_F                  '1 1 1'
-COLOR_BUTTON_N                  '1 1 1'
+
+// item: campaign
+ALPHA_CAMPAIGN_SELECTABLE       0.8
+COLOR_CAMPAIGN_SELECTABLE       '1 1 1'
+ALPHA_CAMPAIGN_CURRENT          1
+COLOR_CAMPAIGN_CURRENT          '1 1 0'
+ALPHA_CAMPAIGN_FUTURE           0.2
+COLOR_CAMPAIGN_FUTURE           '1 1 1'
+ALPHA_CAMPAIGN_DESCRIPTION      0.7
+
+// item: checkbox
+//   uses "checkbox" images
+COLOR_CHECKBOX_N                '1 1 1'
 COLOR_CHECKBOX_C                '1 1 1'
+COLOR_CHECKBOX_F                '1 1 1'
 COLOR_CHECKBOX_D                '1 1 1'
-COLOR_CHECKBOX_F                '1 1 1'
-COLOR_CHECKBOX_N                '1 1 1'
-COLOR_DIALOG_MAPINFO            '0.7 0.7 1'
-COLOR_DIALOG_MULTIPLAYER        '0.7 0.7 1'
-COLOR_DIALOG_MUTATORS           '0.7 0.7 1'
-COLOR_DIALOG_QUIT               '1 0 0'
-COLOR_DIALOG_SETTINGS           '0.7 0.7 1'
-COLOR_DIALOG_TEAMSELECT         '1 1 1'
-COLOR_DIALOG_USERBIND           '0.7 0.7 1'
-COLOR_DIALOG_SINGLEPLAYER       '1 1 0.7'
+
+// item: crosshair button
+//   uses "crosshairbutton" images
+
+// item: dialog
+//   uses "border" images
+//   uses "closebutton" images
+MARGIN_TOP                      8
+MARGIN_LEFT                     8
+MARGIN_COLUMNS                  4
+MARGIN_ROWS                     4
+
+// item: input box
+//   uses "inputbox" images
+COLOR_INPUTBOX_N                '1 1 1'
 COLOR_INPUTBOX_F                '1 1 1'
-COLOR_INPUTBOX_N                '1 1 1'
+MARGIN_INPUTBOX                 0.02
+
+// item: list box
+COLOR_LISTBOX_SELECTED          '0 0 1'
+ALPHA_LISTBOX_SELECTED          0.5
+
+// item: map list
+COLOR_MAPLIST_TITLE             '1 1 1'
 COLOR_MAPLIST_AUTHOR            '0.4 0.4 0.7'
-COLOR_MAPLIST_TITLE             '1 1 1'
+COLOR_MAPLIST_INCLUDEDBG        '0 0 0'
+ALPHA_MAPLIST_INCLUDEDFG        1
+ALPHA_MAPLIST_INCLUDEDBG        0.5
+ALPHA_MAPLIST_NOTINCLUDEDFG     0.4
+
+// item: nexposee
+ALPHAS_MAINMENU                 '0.6 0.8 0.9'
+
+// item: player color button
+//   uses "colorbutton" images
+//   uses "color" images
+
+// item: player name editor
+//   uses "charmap" images
+//   uses "charmapbutton" images
+
+// item: radio button
+//   uses "radiobutton" images
+COLOR_RADIOBUTTON_N             '1 1 1'
 COLOR_RADIOBUTTON_C             '1 1 1'
+COLOR_RADIOBUTTON_F             '1 1 1'
 COLOR_RADIOBUTTON_D             '1 1 1'
-COLOR_RADIOBUTTON_F             '1 1 1'
-COLOR_RADIOBUTTON_N             '1 1 1'
+
+// item: scrollbar
+//   uses "scrollbar" images
+COLOR_SCROLLBAR_N               '1 1 1'
 COLOR_SCROLLBAR_F               '1 1 1'
-COLOR_SCROLLBAR_N               '1 1 1'
 COLOR_SCROLLBAR_S               '1 1 1'
+WIDTH_SCROLLBAR                 16
+
+// item: server list
+ALPHA_SERVERLIST_FULL           0.2
+ALPHA_SERVERLIST_EMPTY          0.5
+COLOR_SERVERLIST_LOWPING        '0 1 0'
+COLOR_SERVERLIST_MEDPING        '1 1 0'
+COLOR_SERVERLIST_HIGHPING       '1 0 0'
+ALPHA_SERVERLIST_HIGHPING       0.2
+
+// item: slider
+//   uses "slider" images
+COLOR_SLIDER_N                  '1 1 1'
 COLOR_SLIDER_C                  '1 1 1'
+COLOR_SLIDER_F                  '1 1 1'
 COLOR_SLIDER_D                  '1 1 1'
-COLOR_SLIDER_F                  '1 1 1'
-COLOR_SLIDER_N                  '1 1 1'
 COLOR_SLIDER_S                  '1 1 1'
-FONTSIZE_NORMAL                 12
-FONTSIZE_TITLE                  24
-HEIGHT_NORMAL                   1.5
-HEIGHT_TITLE                    1.5
-MARGIN_COLUMNS                  4
-MARGIN_INPUTBOX                 0.02
-MARGIN_LEFT                     8
-MARGIN_ROWS                     4
-MARGIN_TOP                      8
+WIDTH_SLIDERTEXT                0.333333333333
 TOLERANCE_SLIDER                '0.2 2 0'
-WIDTH_SCROLLBAR                 16
-WIDTH_SLIDERTEXT                0.333333333333
-SIZE_CURSOR                     '32 32 0'
-OFFSET_CURSOR                   '0 0 0'
-ALPHA_CURSOR_INTRO              0

Modified: trunk/data/gfx/menu/xaw/skinvalues.txt
===================================================================
--- trunk/data/gfx/menu/xaw/skinvalues.txt	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/gfx/menu/xaw/skinvalues.txt	2008-01-18 11:39:59 UTC (rev 3169)
@@ -1,14 +1,10 @@
-ALPHAS_MAINMENU                 '1 1 1'
-ALPHA_DISABLED                  0.2
-ALPHA_BEHIND                    1
-COLOR_BUTTON_C                  '1 1 1'
-COLOR_BUTTON_D                  '1 1 1'
-COLOR_BUTTON_F                  '1 1 1'
-COLOR_BUTTON_N                  '1 1 1'
-COLOR_CHECKBOX_C                '1 1 1'
-COLOR_CHECKBOX_D                '1 1 1'
-COLOR_CHECKBOX_F                '1 1 1'
-COLOR_CHECKBOX_N                '1 1 1'
+// font sizes (used for everything)
+FONTSIZE_NORMAL                 12
+HEIGHT_NORMAL                   1.5
+FONTSIZE_TITLE                  24
+HEIGHT_TITLE                    1.5
+
+// the individual dialog background colors
 COLOR_DIALOG_MAPINFO            '1 1 1'
 COLOR_DIALOG_MULTIPLAYER        '1 1 1'
 COLOR_DIALOG_MUTATORS           '1 1 1'
@@ -17,34 +13,110 @@
 COLOR_DIALOG_TEAMSELECT         '1 1 1'
 COLOR_DIALOG_USERBIND           '1 1 1'
 COLOR_DIALOG_SINGLEPLAYER       '1 1 1'
+
+// mouse
+//   uses cursor.tga
+SIZE_CURSOR                     '32 32 0'
+OFFSET_CURSOR                   '0 0 0'
+ALPHA_CURSOR_INTRO              1
+
+// general
+//   uses background.tga
+ALPHA_DISABLED                  0.2
+ALPHA_BEHIND                    1
+
+// item: button
+//   uses button.tga
+//   uses buttongray.tga
+COLOR_BUTTON_N                  '1 1 1'
+COLOR_BUTTON_C                  '1 1 1'
+COLOR_BUTTON_F                  '1 1 1'
+COLOR_BUTTON_D                  '1 1 1'
+
+// item: campaign
+ALPHA_CAMPAIGN_SELECTABLE       0.8
+COLOR_CAMPAIGN_SELECTABLE       '1 1 1'
+ALPHA_CAMPAIGN_CURRENT          1
+COLOR_CAMPAIGN_CURRENT          '1 1 0'
+ALPHA_CAMPAIGN_FUTURE           0.2
+COLOR_CAMPAIGN_FUTURE           '1 1 1'
+ALPHA_CAMPAIGN_DESCRIPTION      0.7
+
+// item: checkbox
+//   uses checkbox.tga
+COLOR_CHECKBOX_N                '1 1 1'
+COLOR_CHECKBOX_C                '1 1 1'
+COLOR_CHECKBOX_F                '1 1 1'
+COLOR_CHECKBOX_D                '1 1 1'
+
+// item: crosshair button
+//   uses crosshairbutton.tga
+
+// item: dialog
+//   uses border.tga
+//   uses closebutton.tga
+MARGIN_TOP                      8
+MARGIN_LEFT                     8
+MARGIN_COLUMNS                  4
+MARGIN_ROWS                     4
+
+// item: input box
+//   uses inputbox.tga
+COLOR_INPUTBOX_N                '1 1 1'
 COLOR_INPUTBOX_F                '1 1 1'
-COLOR_INPUTBOX_N                '1 1 1'
+MARGIN_INPUTBOX                 0.02
+
+// item: list box
+COLOR_LISTBOX_SELECTED          '0 0 1'
+ALPHA_LISTBOX_SELECTED          0.5
+
+// item: map list
+COLOR_MAPLIST_TITLE             '1 1 1'
 COLOR_MAPLIST_AUTHOR            '0.5 0.5 0.5'
-COLOR_MAPLIST_TITLE             '1 1 1'
+COLOR_MAPLIST_INCLUDEDBG        '0 0 0'
+ALPHA_MAPLIST_INCLUDEDFG        1
+ALPHA_MAPLIST_INCLUDEDBG        0.5
+ALPHA_MAPLIST_NOTINCLUDEDFG     0.4
+
+// item: nexposee
+ALPHAS_MAINMENU                 '1 1 1'
+
+// item: player color button
+//   uses colorbutton.tga
+//   uses color.tga
+
+// item: player name editor
+//   uses charmap.tga
+//   uses charmapbutton.tga
+
+// item: radio button
+//   uses radiobutton.tga
+COLOR_RADIOBUTTON_N             '1 1 1'
 COLOR_RADIOBUTTON_C             '1 1 1'
+COLOR_RADIOBUTTON_F             '1 1 1'
 COLOR_RADIOBUTTON_D             '1 1 1'
-COLOR_RADIOBUTTON_F             '1 1 1'
-COLOR_RADIOBUTTON_N             '1 1 1'
+
+// item: scrollbar
+//   uses scrollbar.tga
+COLOR_SCROLLBAR_N               '1 1 1'
 COLOR_SCROLLBAR_F               '1 1 1'
-COLOR_SCROLLBAR_N               '1 1 1'
 COLOR_SCROLLBAR_S               '1 1 1'
+WIDTH_SCROLLBAR                 16
+
+// item: server list
+ALPHA_SERVERLIST_FULL           0.2
+ALPHA_SERVERLIST_EMPTY          0.5
+COLOR_SERVERLIST_LOWPING        '0 1 0'
+COLOR_SERVERLIST_MEDPING        '1 1 0'
+COLOR_SERVERLIST_HIGHPING       '1 0 0'
+ALPHA_SERVERLIST_HIGHPING       0.2
+
+// item: slider
+//   uses slider.tga
+COLOR_SLIDER_N                  '1 1 1'
 COLOR_SLIDER_C                  '1 1 1'
+COLOR_SLIDER_F                  '1 1 1'
 COLOR_SLIDER_D                  '1 1 1'
-COLOR_SLIDER_F                  '1 1 1'
-COLOR_SLIDER_N                  '1 1 1'
 COLOR_SLIDER_S                  '1 1 1'
-FONTSIZE_NORMAL                 12
-FONTSIZE_TITLE                  24
-HEIGHT_NORMAL                   1.5
-HEIGHT_TITLE                    1.5
-MARGIN_COLUMNS                  4
-MARGIN_INPUTBOX                 0.02
-MARGIN_LEFT                     8
-MARGIN_ROWS                     4
-MARGIN_TOP                      8
+WIDTH_SLIDERTEXT                0.333333333333
 TOLERANCE_SLIDER                '0.2 2 0'
-WIDTH_SCROLLBAR                 16
-WIDTH_SLIDERTEXT                0.333333333333
-SIZE_CURSOR                     '32 32 0'
-OFFSET_CURSOR                   '0.5 0.5 0'
-ALPHA_CURSOR_INTRO              1

Modified: trunk/data/qcsrc/menu-div0test/item/checkbox.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/checkbox.c	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/item/checkbox.c	2008-01-18 11:39:59 UTC (rev 3169)
@@ -31,10 +31,6 @@
 	me.configureButton(me, txt, sz, gfx);
 	me.align = 0;
 }
-void showNotifyCheckBox(entity me)
-{
-	me.focusable = !me.disabled;
-}
 void drawCheckBox(entity me)
 {
 	float s;

Modified: trunk/data/qcsrc/menu-div0test/item/inputbox.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/inputbox.c	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/item/inputbox.c	2008-01-18 11:39:59 UTC (rev 3169)
@@ -8,6 +8,7 @@
 	METHOD(InputBox, mouseRelease, float(entity, vector))
 	METHOD(InputBox, mousePress, float(entity, vector))
 	METHOD(InputBox, mouseDrag, float(entity, vector))
+	METHOD(InputBox, showNotify, void(entity))
 
 	ATTRIB(InputBox, src, string, string_null)
 
@@ -15,6 +16,7 @@
 	ATTRIB(InputBox, scrollPos, float, 0) // widths
 
 	ATTRIB(InputBox, focusable, float, 1)
+	ATTRIB(InputBox, disabled, float, 0)
 	ATTRIB(InputBox, lastChangeTime, float, 0)
 	ATTRIB(InputBox, dragScrollTimer, float, 0)
 	ATTRIB(InputBox, dragScrollPos, vector, '0 0 0')
@@ -131,9 +133,13 @@
 	if(me.pressed)
 		me.mouseDrag(me, me.dragScrollPos); // simulate mouseDrag event
 
+	me.focusable = !me.disabled;
+	if(me.disabled)
+		draw_alpha *= me.disabledAlpha;
+
 	if(me.src)
 	{
-		if(me.focused)
+		if(me.focused && !me.disabled)
 			draw_ButtonPicture('0 0 0', strcat(me.src, "_f"), '1 1 0', me.colorF, 1);
 		else
 			draw_ButtonPicture('0 0 0', strcat(me.src, "_n"), '1 1 0', me.color, 1);
@@ -222,4 +228,9 @@
 
 	draw_ClearClip();
 }
+
+void showNotifyInputBox(entity me)
+{
+	me.focusable = !me.disabled;
+}
 #endif

Modified: trunk/data/qcsrc/menu-div0test/menu.qc
===================================================================
--- trunk/data/qcsrc/menu-div0test/menu.qc	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/menu.qc	2008-01-18 11:39:59 UTC (rev 3169)
@@ -79,7 +79,7 @@
 			Skin_ApplySetting(argv(0), argv(1));
 	fclose(fh);
 
-	draw_setMousePointer("cursor", SKINSIZE_CURSOR, SKINOFFSET_CURSOR);
+	draw_setMousePointer(SKINGFX_CURSOR, SKINSIZE_CURSOR, SKINOFFSET_CURSOR);
 
 	conwidth = conheight = -1;
 	draw_reset();

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/campaign.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/campaign.c	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/campaign.c	2008-01-18 11:39:59 UTC (rev 3169)
@@ -7,6 +7,7 @@
 	METHOD(NexuizCampaignList, clickListBoxItem, void(entity, float, vector))
 	METHOD(NexuizCampaignList, resizeNotify, void(entity, vector, vector, vector, vector))
 	METHOD(NexuizCampaignList, setSelected, void(entity, float))
+	METHOD(NexuizCampaignList, keyDown, float(entity, float, float, float))
 
 	ATTRIB(NexuizCampaignList, realFontSize, vector, '0 0 0')
 	ATTRIB(NexuizCampaignList, columnPreviewOrigin, float, 0)
@@ -193,22 +194,22 @@
 
 	if(i < me.campaignIndex)
 	{
-		theAlpha = 1;
-		theColor = '1 1 1';
+		theAlpha = SKINALPHA_CAMPAIGN_SELECTABLE;
+		theColor = SKINCOLOR_CAMPAIGN_SELECTABLE;
 	}
 	else if(i == me.campaignIndex)
 	{
-		theAlpha = 1;
-		theColor = '1 1 0';
+		theAlpha = SKINALPHA_CAMPAIGN_CURRENT;
+		theColor = SKINCOLOR_CAMPAIGN_CURRENT;
 	}
 	else
 	{
-		theAlpha = 0.2;
-		theColor = '1 1 1';
+		theAlpha = SKINALPHA_CAMPAIGN_FUTURE;
+		theColor = SKINCOLOR_CAMPAIGN_FUTURE;
 	}
 
 	if(isSelected)
-		draw_Fill('0 0 0', '1 1 0', '0 0 1', 0.5);
+		draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
 
 	s = ftos(p);
 	draw_Picture(me.columnPreviewOrigin * eX, strcat("/maps/", campaign_mapname[i]), me.columnPreviewSize * eX + eY, '1 1 1', theAlpha);
@@ -229,7 +230,7 @@
 		for(j = 0; j < n; ++j)
 			if(argv(j) != "")
 			{
-				draw_Text(o, argv(j), me.realFontSize, theColor, theAlpha * 0.7, 0);
+				draw_Text(o, argv(j), me.realFontSize, theColor, theAlpha * SKINALPHA_CAMPAIGN_DESCRIPTION, 0);
 				o_y += me.realFontSize_y;
 			}
 			else
@@ -248,4 +249,13 @@
 	// prevent too late items from being played
 	setSelectedListBox(me, min(i, me.campaignIndex));
 }
+
+float keyDownNexuizCampaignList(entity me, float scan, float ascii, float shift)
+{
+	if(scan == K_ENTER || scan == K_SPACE)
+		CampaignList_LoadMap(me, me);
+	else
+		return keyDownListBox(me, scan, ascii, shift);
+	return 1;
+}
 #endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c	2008-01-18 11:39:59 UTC (rev 3169)
@@ -140,8 +140,11 @@
 		me.TDempty(me, 0.2);
 		me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Bot names:"));
 		me.TD(me, 1, 0.7, e = makeNexuizInputBox(1, "bot_prefix"));
+			setDependent(e, "bot_number", 0, -1);
 		me.TD(me, 1, 0.6, e = makeNexuizTextLabel(0.5, "Spellbinder"));
+			setDependent(e, "bot_number", 0, -1);
 		me.TD(me, 1, 0.7, e = makeNexuizInputBox(1, "bot_suffix"));
+			setDependent(e, "bot_number", 0, -1);
 	me.TR(me);
 	me.TR(me);
 		me.TD(me, 1, 1, e = makeNexuizButton("Mutators...", '0 0 0'));

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create_mutators.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create_mutators.c	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create_mutators.c	2008-01-18 11:39:59 UTC (rev 3169)
@@ -85,10 +85,11 @@
 		me.TD(me, 1, 2, e = makeNexuizRadioButton(1, "g_rocketarena", string_null, "Rocket launcher arena"));
 
 	me.gotoXY(me, me.rows - 2, 0);
-		s = makeNexuizSlider(80, 400, 40, "sv_gravity");
+		s = makeNexuizSlider(80, 400, 8, "sv_gravity");
 			s.valueDigits = 0;
 			s.valueDisplayMultiplier = 0.125; // show gravity in percent
 		me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(800, 1, s, "Low gravity"));
+			e.savedValue = 200; // good on silvercity
 		me.TD(me, 1, 3, s);
 
 	me.gotoXY(me, me.rows - 1, 0);

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/maplist.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/maplist.c	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/maplist.c	2008-01-18 11:39:59 UTC (rev 3169)
@@ -7,6 +7,7 @@
 	METHOD(NexuizMapList, clickListBoxItem, void(entity, float, vector))
 	METHOD(NexuizMapList, resizeNotify, void(entity, vector, vector, vector, vector))
 	METHOD(NexuizMapList, refilter, void(entity))
+	METHOD(NexuizMapList, keyDown, float(entity, float, float, float))
 
 	ATTRIB(NexuizMapList, realFontSize, vector, '0 0 0')
 	ATTRIB(NexuizMapList, columnPreviewOrigin, float, 0)
@@ -153,25 +154,22 @@
 	// layout: Ping, Map name, Map name, NP, TP, MP
 	string s;
 	float p;
-	vector theColor;
 	float theAlpha;
 	float included;
 
-	theColor = '1 1 1';
-
 	if(!MapInfo_Get_ByID(i))
 		return;
 
 	included = me.g_maplistCacheQuery(me, i);
 	if(included)
-		theAlpha = 1;
+		theAlpha = SKINALPHA_MAPLIST_INCLUDEDFG;
 	else
-		theAlpha = 0.4;
+		theAlpha = SKINALPHA_MAPLIST_NOTINCLUDEDFG;
 
 	if(isSelected)
-		draw_Fill('0 0 0', '1 1 0', '0 0 1', 0.5);
+		draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
 	else if(included)
-		draw_Fill('0 0 0', '1 1 0', '0 0 0', 0.5);
+		draw_Fill('0 0 0', '1 1 0', SKINCOLOR_MAPLIST_INCLUDEDBG, SKINALPHA_MAPLIST_INCLUDEDBG);
 
 	s = ftos(p);
 	draw_Picture(me.columnPreviewOrigin * eX, strcat("/maps/", MapInfo_Map_bspname), me.columnPreviewSize * eX + eY, '1 1 1', theAlpha);
@@ -253,4 +251,31 @@
 		me.refilter(me);
 	}
 }
+
+float keyDownNexuizMapList(entity me, float scan, float ascii, float shift)
+{
+	if(scan == K_ENTER)
+	{
+		// pop up map info screen
+		main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, me.selectedItem);
+		DialogOpenButton_Click_withCoords(NULL, main.mapInfoDialog, me.origin + eX * (me.columnNameOrigin * me.size_x) + eY * ((me.itemHeight * me.selectedItem - me.scrollPos) * me.size_y), eY * me.itemAbsSize_y + eX * (me.itemAbsSize_x * me.columnNameSize));
+	}
+	else if(scan == K_SPACE)
+	{
+		me.g_maplistCacheToggle(me, me.selectedItem);
+	}
+	else if(ascii == 43) // +
+	{
+		if not(me.g_maplistCacheQuery(me, me.selectedItem))
+			me.g_maplistCacheToggle(me, me.selectedItem);
+	}
+	else if(ascii == 45) // -
+	{
+		if(me.g_maplistCacheQuery(me, me.selectedItem))
+			me.g_maplistCacheToggle(me, me.selectedItem);
+	}
+	else
+		return keyDownListBox(me, scan, ascii, shift);
+	return 1;
+}
 #endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c	2008-01-18 11:39:59 UTC (rev 3169)
@@ -6,6 +6,7 @@
 	METHOD(NexuizServerList, drawListBoxItem, void(entity, float, vector, float))
 	METHOD(NexuizServerList, clickListBoxItem, void(entity, float, vector))
 	METHOD(NexuizServerList, resizeNotify, void(entity, vector, vector, vector, vector))
+	METHOD(NexuizServerList, keyDown, float(entity, float, float, float))
 
 	ATTRIB(NexuizServerList, realFontSize, vector, '0 0 0')
 	ATTRIB(NexuizServerList, realUpperMargin, float, 0)
@@ -323,29 +324,29 @@
 	float theAlpha;
 
 	if(isSelected)
-		draw_Fill('0 0 0', '1 1 0', '0 0 1', 0.5);
+		draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
 
 	if(gethostcachenumber(SLIST_FIELD_NUMPLAYERS, i) >= gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i))
-		theAlpha = 0.2;
+		theAlpha = SKINALPHA_SERVERLIST_FULL;
 	else if not(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i))
-		theAlpha = 0.5;
+		theAlpha = SKINALPHA_SERVERLIST_EMPTY;
 	else
 		theAlpha = 1;
 	
 	p = gethostcachenumber(SLIST_FIELD_PING, i);
 	if(p < 50)
-		theColor = eX * (p / 50) + eY;
+		theColor = SKINCOLOR_SERVERLIST_LOWPING + (SKINCOLOR_SERVERLIST_MEDPING - SKINCOLOR_SERVERLIST_LOWPING) * (p / 50);
 	else if(p < 150)
-		theColor = eX + eY * ((150 - p) / 100);
+		theColor = SKINCOLOR_SERVERLIST_MEDPING + (SKINCOLOR_SERVERLIST_HIGHPING - SKINCOLOR_SERVERLIST_MEDPING) * ((p - 50) / 100);
 	else if(p < 650)
 	{
-		theColor = eX;
-		theAlpha *= 0.1 + 0.9 * (650 - p) / 500;
+		theColor = SKINCOLOR_SERVERLIST_HIGHPING;
+		theAlpha *= 1 + (SKINALPHA_SERVERLIST_HIGHPING - 1) * ((p - 150) / 500);
 	}
 	else
 	{
 		theColor = eX;
-		theAlpha *= 0.1;
+		theAlpha *= SKINALPHA_SERVERLIST_HIGHPING;
 	}
 	
 	s = ftos(p);
@@ -357,4 +358,13 @@
 	s = strcat(ftos(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i)), "/", ftos(gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i)));
 	draw_Text(me.realUpperMargin * eY + (me.columnPlayersOrigin + (me.columnPlayersSize - draw_TextWidth(s, 0) * me.realFontSize_x) * 0.5) * eX, s, me.realFontSize, theColor, theAlpha, 0);
 }
+
+float keyDownNexuizServerList(entity me, float scan, float ascii, float shift)
+{
+	if(scan == K_ENTER || scan == K_SPACE)
+		ServerList_Connect_Click(NULL, me);
+	else
+		return keyDownListBox(me, scan, ascii, shift);
+	return 1;
+}
 #endif

Modified: trunk/data/qcsrc/menu-div0test/skin-customizables.inc
===================================================================
--- trunk/data/qcsrc/menu-div0test/skin-customizables.inc	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/skin-customizables.inc	2008-01-18 11:39:59 UTC (rev 3169)
@@ -1,82 +1,155 @@
+#if 0
+"Perl code to convert this to a skinvalues.txt file.";
+while(<DATA>)
+{
+	chomp;
+	if(/^\s*(?:SKINFLOAT|SKINVECTOR)\(([A-Z_]+), ([-'0-9. ]+)\);$/)
+	{
+		printf "%-31s %s\n", $1, $2;
+	}
+	elsif(/^\s*SKINSTRING\(([A-Z_]+), "(.*)"\);$/)
+	{
+		printf "//   uses \"$2\" images\n";
+	}
+	elsif(/^$/)
+	{
+		print "\n";
+	}
+	elsif(/^\s+\/\/ (.*)$/)
+	{
+		print "// $1\n";
+	}
+	elsif(/^SKINBEGIN$|^SKINEND$|^#endif$/)
+	{
+	}
+	else
+	{
+		print "!!! $_\n";
+	}
+}
+__DATA__
+#endif
 SKINBEGIN
+	// font sizes (used for everything)
 	SKINFLOAT(FONTSIZE_NORMAL, 12);
 	SKINFLOAT(HEIGHT_NORMAL, 1.5);
-
 	SKINFLOAT(FONTSIZE_TITLE, 24);
 	SKINFLOAT(HEIGHT_TITLE, 1.5);
 
+	// the individual dialog background colors
+	SKINVECTOR(COLOR_DIALOG_MULTIPLAYER, '0.7 0.7 1');
+	SKINVECTOR(COLOR_DIALOG_SETTINGS, '0.7 0.7 1');
+	SKINVECTOR(COLOR_DIALOG_TEAMSELECT, '1 1 1');
+	SKINVECTOR(COLOR_DIALOG_QUIT, '1 0 0');
+	SKINVECTOR(COLOR_DIALOG_MUTATORS, '0.7 0.7 1');
+	SKINVECTOR(COLOR_DIALOG_MAPINFO, '0.7 0.7 1');
+	SKINVECTOR(COLOR_DIALOG_USERBIND, '0.7 0.7 1');
+	SKINVECTOR(COLOR_DIALOG_SINGLEPLAYER, '1 1 0.7');
+
+	// mouse
+	SKINSTRING(GFX_CURSOR, "cursor");
+	SKINVECTOR(SIZE_CURSOR, '32 32 0');
+	SKINVECTOR(OFFSET_CURSOR, '0 0 0');
+	SKINFLOAT(ALPHA_CURSOR_INTRO, 0);
+
+	// general
+	SKINSTRING(GFX_BACKGROUND, "background");
+	SKINFLOAT(ALPHA_DISABLED, 0.2);
+	SKINFLOAT(ALPHA_BEHIND, 0.5);
+
+	// item: button
 	SKINSTRING(GFX_BUTTON, "button");
+	SKINSTRING(GFX_BUTTON_GRAY, "buttongray");
 	SKINVECTOR(COLOR_BUTTON_N, '1 1 1');
 	SKINVECTOR(COLOR_BUTTON_C, '1 1 1');
 	SKINVECTOR(COLOR_BUTTON_F, '1 1 1');
 	SKINVECTOR(COLOR_BUTTON_D, '1 1 1');
 
-	SKINSTRING(GFX_BUTTON_GRAY, "buttongray");
+	// item: campaign
+	SKINFLOAT(ALPHA_CAMPAIGN_SELECTABLE, 0.8);
+	SKINVECTOR(COLOR_CAMPAIGN_SELECTABLE, '1 1 1');
+	SKINFLOAT(ALPHA_CAMPAIGN_CURRENT, 1);
+	SKINVECTOR(COLOR_CAMPAIGN_CURRENT, '1 1 0');
+	SKINFLOAT(ALPHA_CAMPAIGN_FUTURE, 0.2);
+	SKINVECTOR(COLOR_CAMPAIGN_FUTURE, '1 1 1');
+	SKINFLOAT(ALPHA_CAMPAIGN_DESCRIPTION, 0.7);
 
+	// item: checkbox
 	SKINSTRING(GFX_CHECKBOX, "checkbox");
 	SKINVECTOR(COLOR_CHECKBOX_N, '1 1 1');
 	SKINVECTOR(COLOR_CHECKBOX_C, '1 1 1');
 	SKINVECTOR(COLOR_CHECKBOX_F, '1 1 1');
 	SKINVECTOR(COLOR_CHECKBOX_D, '1 1 1');
 
+	// item: crosshair button
+	SKINSTRING(GFX_CROSSHAIRBUTTON, "crosshairbutton");
+
+	// item: dialog
 	SKINSTRING(GFX_DIALOGBORDER, "border");
 	SKINSTRING(GFX_CLOSEBUTTON, "closebutton");
 	SKINFLOAT(MARGIN_TOP, 8);
 	SKINFLOAT(MARGIN_LEFT, 8);
 	SKINFLOAT(MARGIN_COLUMNS, 4);
 	SKINFLOAT(MARGIN_ROWS, 4);
-	SKINVECTOR(COLOR_DIALOG_MULTIPLAYER, '0.7 0.7 1');
-	SKINVECTOR(COLOR_DIALOG_SETTINGS, '0.7 0.7 1');
-	SKINVECTOR(COLOR_DIALOG_TEAMSELECT, '1 1 1');
-	SKINVECTOR(COLOR_DIALOG_QUIT, '1 0 0');
-	SKINVECTOR(COLOR_DIALOG_MUTATORS, '0.7 0.7 1');
-	SKINVECTOR(COLOR_DIALOG_MAPINFO, '0.7 0.7 1');
-	SKINVECTOR(COLOR_DIALOG_USERBIND, '0.7 0.7 1');
-	SKINVECTOR(COLOR_DIALOG_SINGLEPLAYER, '1 1 0.7');
 
-	SKINSTRING(GFX_SLIDER, "slider");
-	SKINVECTOR(COLOR_SLIDER_N, '1 1 1');
-	SKINVECTOR(COLOR_SLIDER_C, '1 1 1');
-	SKINVECTOR(COLOR_SLIDER_F, '1 1 1');
-	SKINVECTOR(COLOR_SLIDER_D, '1 1 1');
-	SKINVECTOR(COLOR_SLIDER_S, '1 1 1');
-	SKINFLOAT(WIDTH_SLIDERTEXT, 0.333333333333);
-	SKINVECTOR(TOLERANCE_SLIDER, '0.2 2 0');
+	// item: input box
+	SKINSTRING(GFX_INPUTBOX, "inputbox");
+	SKINVECTOR(COLOR_INPUTBOX_N, '1 1 1');
+	SKINVECTOR(COLOR_INPUTBOX_F, '1 1 1');
+	SKINFLOAT(MARGIN_INPUTBOX, 0.02);
 
+	// item: list box
+	SKINVECTOR(COLOR_LISTBOX_SELECTED, '0 0 1');
+	SKINFLOAT(ALPHA_LISTBOX_SELECTED, 0.5);
+
+	// item: map list
+	SKINVECTOR(COLOR_MAPLIST_TITLE, '1 1 1');
+	SKINVECTOR(COLOR_MAPLIST_AUTHOR, '0.4 0.4 0.7');
+	SKINVECTOR(COLOR_MAPLIST_INCLUDEDBG, '0 0 0');
+	SKINFLOAT(ALPHA_MAPLIST_INCLUDEDFG, 1);
+	SKINFLOAT(ALPHA_MAPLIST_INCLUDEDBG, 0.5);
+	SKINFLOAT(ALPHA_MAPLIST_NOTINCLUDEDFG, 0.4);
+
+	// item: nexposee
+	SKINVECTOR(ALPHAS_MAINMENU, '0.6 0.8 0.9');
+
+	// item: player color button
+	SKINSTRING(GFX_COLORBUTTON, "colorbutton");
+	SKINSTRING(GFX_COLORBUTTON_COLOR, "color");
+
+	// item: player name editor
+	SKINSTRING(GFX_CHARMAP, "charmap");
+	SKINSTRING(GFX_CHARMAP_SELECTED, "charmapbutton");
+
+	// item: radio button
 	SKINSTRING(GFX_RADIOBUTTON, "radiobutton");
 	SKINVECTOR(COLOR_RADIOBUTTON_N, '1 1 1');
 	SKINVECTOR(COLOR_RADIOBUTTON_C, '1 1 1');
 	SKINVECTOR(COLOR_RADIOBUTTON_F, '1 1 1');
 	SKINVECTOR(COLOR_RADIOBUTTON_D, '1 1 1');
 
-	SKINSTRING(GFX_COLORBUTTON, "colorbutton");
-	SKINSTRING(GFX_COLORBUTTON_COLOR, "color");
-	SKINSTRING(GFX_CROSSHAIRBUTTON, "crosshairbutton");
+	// item: scrollbar
 	SKINSTRING(GFX_SCROLLBAR, "scrollbar");
 	SKINVECTOR(COLOR_SCROLLBAR_N, '1 1 1');
 	SKINVECTOR(COLOR_SCROLLBAR_F, '1 1 1');
 	SKINVECTOR(COLOR_SCROLLBAR_S, '1 1 1');
 	SKINFLOAT(WIDTH_SCROLLBAR, 16);
 
-	SKINSTRING(GFX_INPUTBOX, "inputbox");
-	SKINVECTOR(COLOR_INPUTBOX_N, '1 1 1');
-	SKINVECTOR(COLOR_INPUTBOX_F, '1 1 1');
-	SKINFLOAT(MARGIN_INPUTBOX, 0.02);
+	// item: server list
+	SKINFLOAT(ALPHA_SERVERLIST_FULL, 0.2);
+	SKINFLOAT(ALPHA_SERVERLIST_EMPTY, 0.5);
+	SKINVECTOR(COLOR_SERVERLIST_LOWPING, '0 1 0');
+	SKINVECTOR(COLOR_SERVERLIST_MEDPING, '1 1 0');
+	SKINVECTOR(COLOR_SERVERLIST_HIGHPING, '1 0 0');
+	SKINFLOAT(ALPHA_SERVERLIST_HIGHPING, 0.2);
 
-	SKINVECTOR(COLOR_MAPLIST_TITLE, '1 1 1');
-	SKINVECTOR(COLOR_MAPLIST_AUTHOR, '0.4 0.4 0.7');
-
-	SKINFLOAT(ALPHA_DISABLED, 0.2);
-	SKINFLOAT(ALPHA_BEHIND, 0.5);
-
-	SKINSTRING(GFX_CHARMAP, "charmap");
-	SKINSTRING(GFX_CHARMAP_SELECTED, "charmapbutton");
-
-	SKINSTRING(GFX_BACKGROUND, "background");
-
-	SKINVECTOR(ALPHAS_MAINMENU, '0.6 0.8 0.9');
-
-	SKINVECTOR(SIZE_CURSOR, '32 32 0');
-	SKINVECTOR(OFFSET_CURSOR, '0 0 0');
-	SKINFLOAT(ALPHA_CURSOR_INTRO, 0);
+	// item: slider
+	SKINSTRING(GFX_SLIDER, "slider");
+	SKINVECTOR(COLOR_SLIDER_N, '1 1 1');
+	SKINVECTOR(COLOR_SLIDER_C, '1 1 1');
+	SKINVECTOR(COLOR_SLIDER_F, '1 1 1');
+	SKINVECTOR(COLOR_SLIDER_D, '1 1 1');
+	SKINVECTOR(COLOR_SLIDER_S, '1 1 1');
+	SKINFLOAT(WIDTH_SLIDERTEXT, 0.333333333333);
+	SKINVECTOR(TOLERANCE_SLIDER, '0.2 2 0');
 SKINEND

Modified: trunk/data/qcsrc/menu-div0test/skin.qh
===================================================================
--- trunk/data/qcsrc/menu-div0test/skin.qh	2008-01-18 09:18:10 UTC (rev 3168)
+++ trunk/data/qcsrc/menu-div0test/skin.qh	2008-01-18 11:39:59 UTC (rev 3169)
@@ -14,7 +14,7 @@
 #define SKINVECTOR(name,def) case #name: SKIN##name = stov(value); break
 #define SKINFLOAT(name,def) case #name: SKIN##name = stof(value); break
 #define SKINSTRING(name,def) break
-#define SKINEND default: print("Invalid key in skin file: ", key, "\n"); } }
+#define SKINEND case "": break; case "//": break; default: print("Invalid key in skin file: ", key, "\n"); } }
 #include "skin-customizables.inc"
 #undef SKINEND
 #undef SKINSTRING




More information about the nexuiz-commits mailing list