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