r2977 - in trunk/data/qcsrc/menu-div0test: . item nexuiz

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Nov 17 05:28:19 EST 2007


Author: div0
Date: 2007-11-17 05:28:18 -0500 (Sat, 17 Nov 2007)
New Revision: 2977

Added:
   trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create_mapinfo.c
   trunk/data/qcsrc/menu-div0test/nexuiz/image.c
Modified:
   trunk/data/qcsrc/menu-div0test/classes.c
   trunk/data/qcsrc/menu-div0test/item/button.c
   trunk/data/qcsrc/menu-div0test/item/dialog.c
   trunk/data/qcsrc/menu-div0test/item/image.c
   trunk/data/qcsrc/menu-div0test/item/label.c
   trunk/data/qcsrc/menu-div0test/item/modalcontroller.c
   trunk/data/qcsrc/menu-div0test/item/slider.c
   trunk/data/qcsrc/menu-div0test/nexuiz/button.c
   trunk/data/qcsrc/menu-div0test/nexuiz/checkbox.c
   trunk/data/qcsrc/menu-div0test/nexuiz/colorbutton.c
   trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c
   trunk/data/qcsrc/menu-div0test/nexuiz/gametypebutton.c
   trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c
   trunk/data/qcsrc/menu-div0test/nexuiz/maplist.c
   trunk/data/qcsrc/menu-div0test/nexuiz/radiobutton.c
   trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c
   trunk/data/qcsrc/menu-div0test/nexuiz/slider.c
   trunk/data/qcsrc/menu-div0test/nexuiz/textlabel.c
   trunk/data/qcsrc/menu-div0test/nexuiz/textslider.c
   trunk/data/qcsrc/menu-div0test/skin.qh
Log:
add map info dialog


Modified: trunk/data/qcsrc/menu-div0test/classes.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/classes.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/classes.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -44,5 +44,7 @@
 #include "nexuiz/dialog_quit.c"
 #include "nexuiz/dialog_multiplayer_create.c"
 #include "nexuiz/dialog_multiplayer_create_mutators.c"
+#include "nexuiz/dialog_multiplayer_create_mapinfo.c"
 #include "nexuiz/gametypebutton.c"
 #include "nexuiz/maplist.c"
+#include "nexuiz/image.c"

Modified: trunk/data/qcsrc/menu-div0test/item/button.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/button.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/item/button.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -19,6 +19,7 @@
 	ATTRIB(Button, pressed, float, 0)
 	ATTRIB(Button, clickTime, float, 0)
 	ATTRIB(Button, disabled, float, 0)
+	ATTRIB(Button, disabledAlpha, float, 0.3)
 	ATTRIB(Button, forcePressed, float, 0)
 	ATTRIB(Button, color, vector, '1 1 1')
 	ATTRIB(Button, colorC, vector, '1 1 1')
@@ -88,10 +89,13 @@
 void drawButton(entity me)
 {
 	vector bOrigin, bSize;
+	float save;
 
 	me.focusable = !me.disabled;
+
+	save = draw_alpha;
 	if(me.disabled)
-		draw_alpha *= 0.5;
+		draw_alpha *= me.disabledAlpha;
 
 	if(me.src)
 	{
@@ -136,6 +140,9 @@
 		bSize = eY + eX * (1 - me.keepspaceLeft);
 		draw_Picture(bOrigin, me.src2, bSize, me.color2, 1);
 	}
+
+	draw_alpha = save;
+
 	drawLabel(me);
 
 	if(me.clickTime > 0 && me.clickTime < frametime)

Modified: trunk/data/qcsrc/menu-div0test/item/dialog.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/dialog.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/item/dialog.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -58,6 +58,8 @@
 
 	ATTRIB(Dialog, backgroundImage, string, string_null)
 	ATTRIB(Dialog, closeButtonImage, string, string_null)
+
+	ATTRIB(Dialog, frame, entity, NULL)
 ENDCLASS(Dialog)
 #endif
 
@@ -120,12 +122,12 @@
 
 void configureDialogDialog(entity me)
 {
-	entity frame, closebutton;
+	entity closebutton;
 	float absWidth, absHeight;
 
-	frame = spawnBorderImage();
-	frame.configureBorderImage(frame, me.title, me.titleFontSize, me.color, me.backgroundImage, me.titleHeight);
-	me.addItem(me, frame, '0 0 0', '1 1 0', 1);
+	me.frame = spawnBorderImage();
+	me.frame.configureBorderImage(me.frame, me.title, me.titleFontSize, me.color, me.backgroundImage, me.titleHeight);
+	me.addItem(me, me.frame, '0 0 0', '1 1 0', 1);
 
 	if not(me.titleFontSize)
 		me.titleHeight = 0; // no title bar
@@ -154,7 +156,7 @@
 		me.addItem(me, closebutton, '0 0 0', '1 1 0', 1); // put it as LAST
 	}
 
-	frame.closeButton = closebutton;
+	me.frame.closeButton = closebutton;
 }
 
 void closeDialog(entity me)

Modified: trunk/data/qcsrc/menu-div0test/item/image.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/image.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/item/image.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -3,8 +3,12 @@
 	METHOD(Image, configureImage, void(entity, string))
 	METHOD(Image, draw, void(entity))
 	METHOD(Image, toString, string(entity))
+	METHOD(Image, resizeNotify, void(entity, vector, vector, vector, vector))
 	ATTRIB(Image, src, string, string_null)
 	ATTRIB(Image, color, vector, '1 1 1')
+	ATTRIB(Image, forcedAspect, float, 0)
+	ATTRIB(Image, imgOrigin, vector, '0 0 0')
+	ATTRIB(Image, imgSize, vector, '0 0 0')
 ENDCLASS(Image)
 #endif
 
@@ -19,6 +23,28 @@
 }
 void drawImage(entity me)
 {
-	draw_Picture('0 0 0', me.src, '1 1 0', me.color, 1);
-};
+	draw_Picture(me.imgOrigin, me.src, me.imgSize, me.color, 1);
+}
+void resizeNotifyImage(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
+{
+	if(me.forcedAspect == 0)
+	{
+		me.imgOrigin = '0 0 0';
+		me.imgSize = '1 1 0';
+	}
+	else
+	{
+		if(absSize_x > me.forcedAspect * absSize_y)
+		{
+			// x too large, so center x-wise
+			me.imgSize = eY + eX * (absSize_y * me.forcedAspect / absSize_x);
+		}
+		else
+		{
+			// y too large, so center y-wise
+			me.imgSize = eX + eY * (absSize_x / (me.forcedAspect * absSize_y));
+		}
+		me.imgOrigin = '0.5 0.5 0' - 0.5 * me.imgSize;
+	}
+}
 #endif

Modified: trunk/data/qcsrc/menu-div0test/item/label.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/label.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/item/label.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -8,11 +8,15 @@
 	ATTRIB(Label, text, string, string_null)
 	ATTRIB(Label, fontSize, float, 8)
 	ATTRIB(Label, align, float, 0.5)
+	ATTRIB(Label, allowCut, float, 0)
 	ATTRIB(Label, keepspaceLeft, float, 0) // for use by subclasses (radiobuttons for example)
 	ATTRIB(Label, keepspaceRight, float, 0)
 	ATTRIB(Label, realFontSize, vector, '0 0 0')
 	ATTRIB(Label, realOrigin, vector, '0 0 0')
 	ATTRIB(Label, alpha, float, 0.7)
+	ATTRIB(Label, colorL, vector, '1 1 1')
+	ATTRIB(Label, disabled, float, 0)
+	ATTRIB(Label, disabledAlpha, float, 0.3)
 ENDCLASS(Label)
 #endif
 
@@ -42,8 +46,15 @@
 }
 void drawLabel(entity me)
 {
+	if(me.disabled)
+		draw_alpha *= me.disabledAlpha;
 	if(me.fontSize)
 		if(me.text)
-			draw_Text(me.realOrigin, me.text, me.realFontSize, '1 1 1', me.alpha, 0);
+		{
+			if(me.allowCut)
+				draw_Text(me.realOrigin, draw_TextShortenToWidth(me.text, 1 / me.realFontSize_x, 0), me.realFontSize, me.colorL, me.alpha, 0);
+			else
+				draw_Text(me.realOrigin, me.text, me.realFontSize, me.colorL, me.alpha, 0);
+		}
 }
 #endif

Modified: trunk/data/qcsrc/menu-div0test/item/modalcontroller.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/modalcontroller.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/item/modalcontroller.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -22,6 +22,7 @@
 .vector size;
 void TabButton_Click(entity button, entity tab); // assumes a button has set the above fields to its own absolute origin, its size, and the tab to activate
 void DialogOpenButton_Click(entity button, entity tab); // assumes a button has set the above fields to its own absolute origin, its size, and the tab to activate
+void DialogOpenButton_Click_withCoords(entity button, entity tab, vector theOrigin, vector theSize);
 void DialogCloseButton_Click(entity button, entity tab); // assumes a button has set the above fields to the tab to close
 #endif
 
@@ -75,11 +76,17 @@
 
 void DialogOpenButton_Click(entity button, entity tab)
 {
+	DialogOpenButton_Click_withCoords(button, tab, button.origin, button.size);
+}
+
+void DialogOpenButton_Click_withCoords(entity button, entity tab, vector theOrigin, vector theSize)
+{
 	if(tab.ModalController_state)
 		return;
-	button.forcePressed = 1;
+	if(button)
+		button.forcePressed = 1;
 	tab.ModalController_controllingButton = button;
-	tab.parent.showChild(tab.parent, tab, button.origin, button.size, 0);
+	tab.parent.showChild(tab.parent, tab, theOrigin, theSize, 0);
 }
 
 void DialogCloseButton_Click(entity button, entity tab)

Modified: trunk/data/qcsrc/menu-div0test/item/slider.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/slider.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/item/slider.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -35,6 +35,7 @@
 	ATTRIB(Slider, colorD, vector, '1 1 1')
 	ATTRIB(Slider, colorC, vector, '1 1 1')
 	ATTRIB(Slider, colorF, vector, '1 1 1')
+	ATTRIB(Slider, disabledAlpha, float, 0.3)
 ENDCLASS(Slider)
 #endif
 
@@ -195,9 +196,11 @@
 void drawSlider(entity me)
 {
 	float controlLeft;
+	float save;
 	me.focusable = !me.disabled;
+	save = draw_alpha;
 	if(me.disabled)
-		draw_alpha *= 0.5;
+		draw_alpha *= me.disabledAlpha;
 	draw_ButtonPicture('0 0 0', strcat(me.src, "_s"), eX * (1 - me.textSpace) + eY, me.color2, 1);
 	if(me.value == median(me.valueMin, me.value, me.valueMax))
 	{
@@ -212,6 +215,7 @@
 			draw_Picture(eX * controlLeft, strcat(me.src, "_n"), eX * me.controlWidth + eY, me.color, 1);
 	}
 	me.setText(me, me.valueToText(me, me.value));
+	draw_alpha = save;
 	drawLabel(me);
 	me.text = string_null; // TEMPSTRING!
 }

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/button.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/button.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/button.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -8,6 +8,7 @@
 	ATTRIB(NexuizButton, colorC, vector, SKINCOLOR_BUTTON_C)
 	ATTRIB(NexuizButton, colorF, vector, SKINCOLOR_BUTTON_F)
 	ATTRIB(NexuizButton, colorD, vector, SKINCOLOR_BUTTON_D)
+	ATTRIB(NexuizButton, disabledAlpha, float, SKINALPHA_DISABLED)
 ENDCLASS(NexuizButton)
 entity makeNexuizButton(string theText, vector theColor);
 #endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/checkbox.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/checkbox.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/checkbox.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -14,6 +14,8 @@
 	ATTRIB(NexuizCheckBox, cvarName, string, string_null)
 	METHOD(NexuizCheckBox, loadCvars, void(entity))
 	METHOD(NexuizCheckBox, saveCvars, void(entity))
+
+	ATTRIB(NexuizCheckBox, disabledAlpha, float, SKINALPHA_DISABLED)
 ENDCLASS(NexuizCheckBox)
 entity makeNexuizCheckBox(float, string, string);
 #endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/colorbutton.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/colorbutton.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/colorbutton.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -14,6 +14,8 @@
 	ATTRIB(NexuizColorButton, cvarValueFloat, float, 0)
 	METHOD(NexuizColorButton, loadCvars, void(entity))
 	METHOD(NexuizColorButton, saveCvars, void(entity))
+
+	ATTRIB(NexuizColorButton, disabledAlpha, float, SKINALPHA_DISABLED)
 ENDCLASS(NexuizColorButton)
 entity makeNexuizColorButton(float, float, float);
 #endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -27,29 +27,34 @@
 void fillNexuizServerCreateTab(entity me)
 {
 	entity e, e0;
+	float n;
 
 	me.TR(me);
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_dm", "Deathmatch"));
+		n = 7 + 2 * !!cvar("developer");
+		me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_dm", "Deathmatch"));
 			e0 = e;
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_tdm", "TDM"));
+		me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_tdm", "TDM"));
 			if(e.checked) e0 = NULL;
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_lms", "LMS"));
+		me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_lms", "LMS"));
 			if(e.checked) e0 = NULL;
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_arena", "Arena"));
+		me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_arena", "Arena"));
 			if(e.checked) e0 = NULL;
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_runematch", "Rune"));
+		me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_runematch", "Rune"));
 			if(e.checked) e0 = NULL;
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_keyhunt", "Key Hunt"));
+		me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_keyhunt", "Key Hunt"));
 			if(e.checked) e0 = NULL;
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_ctf", "CTF"));
+		me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_ctf", "CTF"));
 			if(e.checked) e0 = NULL;
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_assault", "Assault"));
-			if(e.checked) e0 = NULL;
-		me.TD(me, 2, me.columns / 9, e = makeNexuizGametypeButton(1, "g_onslaught", "Onslaught"));
-			if(e.checked) e0 = NULL;
+		if(cvar("developer"))
+		{
+			me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_assault", "Assault"));
+				if(e.checked) e0 = NULL;
+			me.TD(me, 2, me.columns / n, e = makeNexuizGametypeButton(1, "g_onslaught", "Onslaught"));
+				if(e.checked) e0 = NULL;
+		}
 		if(e0)
 		{
-			print("NO CHECK\n");
+			//print("NO CHECK\n");
 			e0.setChecked(e0, 1);
 		}
 	me.TR(me);
@@ -60,13 +65,14 @@
 		me.TD(me, me.rows - 6, 3, e = makeNexuizMapList());
 		me.mapListBox = e;
 	me.gotoXY(me, me.rows - 2, 0);
+		me.TDempty(me, 0.5);
 		me.TD(me, 1, 1, e = makeNexuizButton("All", '0 0 0'));
 			e.onClick = MapList_All;
 			e.onClickEntity = me.mapListBox;
 		me.TD(me, 1, 1, e = makeNexuizButton("None", '0 0 0'));
 			e.onClick = MapList_None;
 			e.onClickEntity = me.mapListBox;
-		me.TD(me, 1, 1, e = makeNexuizButton("Details...", '0 0 0'));
+		me.TDempty(me, 0.5);
 
 	me.gotoXY(me, 3, 3.5); me.setFirstColumn(me, me.currentColumn);
 		me.TD(me, 1, 3, e = makeNexuizTextLabel(0, "Settings:"));

Added: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create_mapinfo.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create_mapinfo.c	                        (rev 0)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create_mapinfo.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -0,0 +1,142 @@
+#ifdef INTERFACE
+CLASS(NexuizMapInfoDialog) EXTENDS(NexuizDialog)
+	METHOD(NexuizMapInfoDialog, fill, void(entity))
+	METHOD(NexuizMapInfoDialog, loadMapInfo, void(entity, float))
+	ATTRIB(NexuizMapInfoDialog, title, string, "Map Information")
+	ATTRIB(NexuizMapInfoDialog, color, vector, SKINCOLOR_DIALOG_MAPINFO)
+	ATTRIB(NexuizMapInfoDialog, intendedWidth, float, 0.75)
+	ATTRIB(NexuizMapInfoDialog, rows, float, 9)
+	ATTRIB(NexuizMapInfoDialog, columns, float, 9)
+
+	ATTRIB(NexuizMapInfoDialog, previewImage, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, titleLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, authorLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, descriptionLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, featuresLabel, entity, NULL)
+
+	ATTRIB(NexuizMapInfoDialog, typeDeathmatchLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, typeTDMLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, typeLMSLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, typeArenaLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, typeRuneLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, typeKeyHuntLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, typeCTFLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, typeAssaultLabel, entity, NULL)
+	ATTRIB(NexuizMapInfoDialog, typeOnslaughtLabel, entity, NULL)
+
+	ATTRIB(NexuizMapInfoDialog, currentMapIndex, float, 0)
+	ATTRIB(NexuizMapInfoDialog, currentMapBSPName, string, string_null)
+	ATTRIB(NexuizMapInfoDialog, currentMapTitle, string, string_null)
+	ATTRIB(NexuizMapInfoDialog, currentMapAuthor, string, string_null)
+	ATTRIB(NexuizMapInfoDialog, currentMapDescription, string, string_null)
+	ATTRIB(NexuizMapInfoDialog, currentMapPreviewImage, string, string_null)
+	ATTRIB(NexuizMapInfoDialog, currentMapFeaturesText, string, string_null)
+ENDCLASS(NexuizMapInfoDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void loadMapInfoNexuizMapInfoDialog(entity me, float i)
+{
+	me.currentMapIndex = i;
+	MapInfo_Get_ByID(i);
+
+	if(me.currentMapBSPName)
+	{
+		strunzone(me.currentMapBSPName);
+		strunzone(me.currentMapTitle);
+		strunzone(me.currentMapAuthor);
+		strunzone(me.currentMapDescription);
+		strunzone(me.currentMapPreviewImage);
+		strunzone(me.currentMapFeaturesText);
+	}
+	me.currentMapBSPName = strzone(MapInfo_Map_bspname);
+	me.currentMapTitle = strzone(MapInfo_Map_title);
+	me.currentMapAuthor = strzone(MapInfo_Map_author);
+	me.currentMapDescription = strzone(MapInfo_Map_description);
+	me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? "Full item placement" : "MinstaGib only");
+	me.currentMapPreviewImage = strzone(strcat("/maps/", MapInfo_Map_bspname));
+
+	me.frame.setText(me.frame, me.currentMapBSPName);
+	me.titleLabel.setText(me.titleLabel, me.currentMapTitle);
+	me.authorLabel.setText(me.authorLabel, me.currentMapAuthor);
+	me.descriptionLabel.setText(me.descriptionLabel, me.currentMapDescription);
+	me.featuresLabel.setText(me.featuresLabel, me.currentMapFeaturesText);
+	me.previewImage.src = me.currentMapPreviewImage;
+
+	me.typeDeathmatchLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DEATHMATCH);
+	me.typeTDMLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_TEAM_DEATHMATCH);
+	me.typeLMSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS);
+	me.typeArenaLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ARENA);
+	me.typeRuneLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RUNEMATCH);
+	me.typeKeyHuntLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_KEYHUNT);
+	me.typeCTFLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTF);
+	if(me.typeAssaultLabel)
+		me.typeAssaultLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT);
+	if(me.typeOnslaughtLabel)
+		me.typeOnslaughtLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT);
+}
+void fillNexuizMapInfoDialog(entity me)
+{
+	entity e;
+	me.TR(me);
+		me.TD(me, me.rows - 2, 3, e = makeNexuizImage(string_null, 4.0/3.0));
+		me.previewImage = e;
+	me.gotoXY(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Title:"));
+		me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
+			e.alpha = 1;
+			e.colorL = SKINCOLOR_MAPLIST_TITLE;
+			e.allowCut = 1;
+			me.titleLabel = e;
+	me.TR(me);
+		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Author:"));
+		me.TD(me, 1, 4.5, e = makeNexuizTextLabel(0, ""));
+			e.alpha = 1;
+			e.colorL = SKINCOLOR_MAPLIST_AUTHOR;
+			e.allowCut = 1;
+			me.authorLabel = e;
+	me.TR(me);
+		me.TD(me, 1, 5.5, e = makeNexuizTextLabel(0, ""));
+			e.allowCut = 1;
+			me.featuresLabel = e;
+	me.TR(me);
+		me.TD(me, 1, 5.5, e = makeNexuizTextLabel(0, "Game types:"));
+	me.TR(me);
+		me.TDempty(me, 1);
+		me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "Deathmatch"));
+			me.typeDeathmatchLabel = e;
+		me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "TDM"));
+			me.typeTDMLabel = e;
+		me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "LMS"));
+			me.typeLMSLabel = e;
+	me.TR(me);
+		me.TDempty(me, 1);
+		me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "Arena"));
+			me.typeArenaLabel = e;
+		me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "Rune"));
+			me.typeRuneLabel = e;
+		me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "Key Hunt"));
+			me.typeKeyHuntLabel = e;
+	me.TR(me);
+		me.TDempty(me, 1);
+		me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "CTF"));
+			me.typeCTFLabel = e;
+		if(cvar("developer"))
+		{
+			me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "Assault"));
+				me.typeAssaultLabel = e;
+			me.TD(me, 1, 1.5, e = makeNexuizTextLabel(0, "Onslaught"));
+				me.typeOnslaughtLabel = e;
+		}
+
+	me.gotoXY(me, me.rows - 2, 0);
+		me.TD(me, 1, me.columns, e = makeNexuizTextLabel(0.5, ""));
+			e.allowCut = 1;
+			me.descriptionLabel = e;
+
+	me.gotoXY(me, me.rows - 1, 0);
+		me.TD(me, 1, me.columns, e = makeNexuizButton("OK", '0 0 0'));
+			e.onClick = Dialog_Close;
+			e.onClickEntity = me;
+}
+#endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/gametypebutton.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/gametypebutton.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/gametypebutton.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -14,6 +14,8 @@
 	ATTRIB(NexuizGametypeButton, cvarName, string, string_null)
 	METHOD(NexuizGametypeButton, loadCvars, void(entity))
 	METHOD(NexuizGametypeButton, saveCvars, void(entity))
+
+	ATTRIB(NexuizGametypeButton, disabledAlpha, float, SKINALPHA_DISABLED)
 ENDCLASS(NexuizGametypeButton)
 entity makeNexuizGametypeButton(float, string, string);
 #endif

Added: trunk/data/qcsrc/menu-div0test/nexuiz/image.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/image.c	                        (rev 0)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/image.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -0,0 +1,21 @@
+#ifdef INTERFACE
+CLASS(NexuizImage) EXTENDS(Image)
+	METHOD(NexuizImage, configureNexuizImage, void(entity, string, float))
+ENDCLASS(NexuizImage)
+entity makeNexuizImage(string theImage, float theAspect);
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeNexuizImage(string theImage, float theAspect)
+{
+	entity me;
+	me = spawnNexuizImage();
+	me.configureNexuizImage(me, theImage, theAspect);
+	return me;
+}
+void configureNexuizImageNexuizImage(entity me, string theImage, float theAspect)
+{
+	me.configureImage(me, theImage);
+	me.forcedAspect = theAspect;
+}
+#endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/mainwindow.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -2,6 +2,7 @@
 CLASS(MainWindow) EXTENDS(ModalController)
 	METHOD(MainWindow, configureMainWindow, void(entity))
 	ATTRIB(MainWindow, mutatorsDialog, entity, NULL)
+	ATTRIB(MainWindow, mapInfoDialog, entity, NULL)
 ENDCLASS(MainWindow)
 #endif
 
@@ -27,6 +28,10 @@
 	i.configureDialog(i);
 	me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, 1);
 
+	me.mapInfoDialog = i = spawnNexuizMapInfoDialog();
+	i.configureDialog(i);
+	me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, 1);
+
 	n = spawnNexuizNexposee();
 		i = spawnNexuizSettingsDialog();
 		i.configureDialog(i);

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/maplist.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/maplist.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/maplist.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -20,6 +20,12 @@
 	ATTRIB(NexuizMapList, lastClickedMap, float, -1)
 	ATTRIB(NexuizMapList, lastClickedTime, float, 0)
 
+	ATTRIB(NexuizMapList, lastGametype, float, 0)
+	ATTRIB(NexuizMapList, lastFeatures, float, 0)
+
+	ATTRIB(NexuizMapList, origin, vector, '0 0 0')
+	ATTRIB(NexuizMapList, itemAbsSize, vector, '0 0 0')
+
 	ATTRIB(NexuizMapList, g_maplistCache, string, string_null)
 	METHOD(NexuizMapList, g_maplistCacheToggle, void(entity, float))
 	METHOD(NexuizMapList, g_maplistCacheQuery, float(entity, float))
@@ -83,22 +89,21 @@
 
 void resizeNotifyNexuizMapList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
-	vector itemAbsSize;
-	itemAbsSize = '0 0 0';
-
+	me.origin = absOrigin;
+	me.itemAbsSize = '0 0 0';
 	resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
 
-	me.realFontSize_y = me.fontSize / (itemAbsSize_y = (absSize_y * me.itemHeight));
-	me.realFontSize_x = me.fontSize / (itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
+	me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
+	me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
 	me.realUpperMargin1 = 0.5 * (1 - 2.5 * me.realFontSize_y);
 	me.realUpperMargin2 = me.realUpperMargin1 + 1.5 * me.realFontSize_y;
 
 	me.columnPreviewOrigin = 0;
-	me.columnPreviewSize = itemAbsSize_y / itemAbsSize_x * 4 / 3;
+	me.columnPreviewSize = me.itemAbsSize_y / me.itemAbsSize_x * 4 / 3;
 	me.columnNameOrigin = me.columnPreviewOrigin + me.columnPreviewSize + me.realFontSize_x;
 	me.columnNameSize = 1 - me.columnPreviewSize - 2 * me.realFontSize_x;
 
-	me.checkMarkSize = (eX * (itemAbsSize_y / itemAbsSize_x) + eY) * 0.5;
+	me.checkMarkSize = (eX * (me.itemAbsSize_y / me.itemAbsSize_x) + eY) * 0.5;
 	me.checkMarkOrigin = eY + eX * (me.columnPreviewOrigin + me.columnPreviewSize) - me.checkMarkSize;
 }
 void clickListBoxItemNexuizMapList(entity me, float i, vector where)
@@ -116,6 +121,8 @@
 					{
 						// DOUBLE CLICK!
 						// pop up map info screen
+						main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, i);
+						DialogOpenButton_Click_withCoords(NULL, main.mapInfoDialog, me.origin + eX * (me.columnNameOrigin * me.size_x) + eY * ((me.itemHeight * i - me.scrollPos) * me.size_y), eY * me.itemAbsSize_y + eX * (me.itemAbsSize_x * me.columnNameSize));
 						return;
 					}
 				me.lastClickedMap = i;
@@ -161,7 +168,10 @@
 {
 	float i, j, n;
 	string s;
-	MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures());
+	float gt, f;
+	gt = MapInfo_CurrentGametype();
+	f = MapInfo_CurrentFeatures();
+	MapInfo_FilterGametype(gt, f);
 	me.nItems = MapInfo_count;
 	for(i = 0; i < MapInfo_count; ++i)
 		draw_PreloadPicture(strcat("/maps/", MapInfo_BSPName_ByID(i)));
@@ -182,6 +192,12 @@
 			);
 	}
 	me.g_maplistCache = strzone(s);
+	if(gt != me.lastGametype || f != me.lastFeatures)
+	{
+		me.lastGametype = gt;
+		me.lastFeatures = f;
+		me.setSelected(me, 0);
+	}
 }
 void MapList_All(entity btn, entity me)
 {

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/radiobutton.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/radiobutton.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/radiobutton.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -14,6 +14,8 @@
 	ATTRIB(NexuizRadioButton, cvarValue, string, string_null)
 	METHOD(NexuizRadioButton, loadCvars, void(entity))
 	METHOD(NexuizRadioButton, saveCvars, void(entity))
+
+	ATTRIB(NexuizRadioButton, disabledAlpha, float, SKINALPHA_DISABLED)
 ENDCLASS(NexuizRadioButton)
 entity makeNexuizRadioButton(float, string, string, string);
 #endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/serverlist.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -112,7 +112,7 @@
 	// 0: just reparametrize
 	// 1: also ask for new servers
 	// 2: clear
-	print("refresh of type ", ftos(mode), "\n");
+	//print("refresh of type ", ftos(mode), "\n");
 	/* if(mode == 2) // borken
 	{
 		// clear list
@@ -144,7 +144,7 @@
 {
 	if(time < me.nextRefreshTime)
 	{
-		print("sorry, no refresh yet\n");
+		//print("sorry, no refresh yet\n");
 		return;
 	}
 	me.nextRefreshTime = time + 10;

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/slider.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/slider.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/slider.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -16,6 +16,8 @@
 	ATTRIB(NexuizSlider, cvarName, string, string_null)
 	METHOD(NexuizSlider, loadCvars, void(entity))
 	METHOD(NexuizSlider, saveCvars, void(entity))
+
+	ATTRIB(NexuizSlider, disabledAlpha, float, SKINALPHA_DISABLED)
 ENDCLASS(NexuizSlider)
 entity makeNexuizSlider(float, float, float, string);
 #endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/textlabel.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/textlabel.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/textlabel.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -3,7 +3,7 @@
 	METHOD(NexuizTextLabel, configureNexuizTextLabel, void(entity, float, string))
 	METHOD(NexuizTextLabel, draw, void(entity))
 	ATTRIB(NexuizTextLabel, fontSize, float, SKINFONTSIZE_NORMAL)
-	ATTRIB(NexuizTextLabel, disabled, float, 0)
+	ATTRIB(NexuizTextLabel, disabledAlpha, float, SKINALPHA_DISABLED)
 ENDCLASS(NexuizTextLabel)
 entity makeNexuizTextLabel(float theAlign, string theText);
 #endif
@@ -22,8 +22,6 @@
 }
 void drawNexuizTextLabel(entity me)
 {
-	if(me.disabled)
-		draw_alpha *= 0.5;
 	drawLabel(me);
 }
 #endif

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/textslider.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/textslider.c	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/textslider.c	2007-11-17 10:28:18 UTC (rev 2977)
@@ -17,6 +17,8 @@
 	ATTRIB(NexuizTextSlider, cvarName, string, string_null)
 	METHOD(NexuizTextSlider, loadCvars, void(entity))
 	METHOD(NexuizTextSlider, saveCvars, void(entity))
+
+	ATTRIB(NexuizTextSlider, disabledAlpha, float, SKINALPHA_DISABLED)
 ENDCLASS(NexuizTextSlider)
 entity makeNexuizTextSlider(string); // note: you still need to call addValue and configureNexuizTextSliderValues!
 #endif

Modified: trunk/data/qcsrc/menu-div0test/skin.qh
===================================================================
--- trunk/data/qcsrc/menu-div0test/skin.qh	2007-11-17 08:20:28 UTC (rev 2976)
+++ trunk/data/qcsrc/menu-div0test/skin.qh	2007-11-17 10:28:18 UTC (rev 2977)
@@ -30,12 +30,14 @@
 const vector SKINCOLOR_DIALOG_TEAMSELECT = '1 1 1';
 const vector SKINCOLOR_DIALOG_QUIT = '1 0 0';
 const vector SKINCOLOR_DIALOG_MUTATORS = '0.7 0.7 1';
+const vector SKINCOLOR_DIALOG_MAPINFO = '0.7 0.7 1';
 /* ideal for xaw skin:
 const vector SKINCOLOR_DIALOG_MULTIPLAYER = '1 1 1';
 const vector SKINCOLOR_DIALOG_SETTINGS = '1 1 1';
 const vector SKINCOLOR_DIALOG_TEAMSELECT = '1 1 1';
 const vector SKINCOLOR_DIALOG_QUIT = '1 1 1';
 const vector SKINCOLOR_DIALOG_MUTATORS = '1 1 1';
+const vector SKINCOLOR_DIALOG_MAPINFO = '1 1 1';
 */
 
 const string SKINGFX_SLIDER = "slider";
@@ -68,3 +70,5 @@
 
 const vector SKINCOLOR_MAPLIST_TITLE = '1 1 1';
 const vector SKINCOLOR_MAPLIST_AUTHOR = '0.4 0.4 0.7';
+
+const float SKINALPHA_DISABLED = 0.2;




More information about the nexuiz-commits mailing list