r4951 - in trunk/data/qcsrc/menu: . item nexuiz

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Oct 31 09:42:55 EDT 2008


Author: div0
Date: 2008-10-31 09:42:54 -0400 (Fri, 31 Oct 2008)
New Revision: 4951

Added:
   trunk/data/qcsrc/menu/nexuiz/demolist.c
   trunk/data/qcsrc/menu/nexuiz/dialog_settings_demo.c
Modified:
   trunk/data/qcsrc/menu/classes.c
   trunk/data/qcsrc/menu/item/modalcontroller.c
   trunk/data/qcsrc/menu/menu.qc
   trunk/data/qcsrc/menu/nexuiz/dialog_settings.c
   trunk/data/qcsrc/menu/nexuiz/dialog_settings_misc.c
   trunk/data/qcsrc/menu/nexuiz/mainwindow.c
   trunk/data/qcsrc/menu/skin-customizables.inc
Log:
demo browser


Modified: trunk/data/qcsrc/menu/classes.c
===================================================================
--- trunk/data/qcsrc/menu/classes.c	2008-10-31 12:36:48 UTC (rev 4950)
+++ trunk/data/qcsrc/menu/classes.c	2008-10-31 13:42:54 UTC (rev 4951)
@@ -70,3 +70,5 @@
 #include "nexuiz/dialog_multiplayer_playersetup_weapons.c"
 #include "nexuiz/weaponslist.c"
 #include "nexuiz/dialog_multiplayer_playersetup_radar.c"
+#include "nexuiz/dialog_settings_demo.c"
+#include "nexuiz/demolist.c"

Modified: trunk/data/qcsrc/menu/item/modalcontroller.c
===================================================================
--- trunk/data/qcsrc/menu/item/modalcontroller.c	2008-10-31 12:36:48 UTC (rev 4950)
+++ trunk/data/qcsrc/menu/item/modalcontroller.c	2008-10-31 13:42:54 UTC (rev 4951)
@@ -18,6 +18,7 @@
 	ATTRIB(ModalController, fadedAlpha, float, 0.3)
 ENDCLASS(ModalController)
 
+.entity tabSelectingButton;
 .vector origin;
 .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
@@ -229,6 +230,7 @@
 	me.addItem(me, other, '0 0 0', '1 1 1', 1);
 	tabButton.onClick = TabButton_Click;
 	tabButton.onClickEntity = other;
+	other.tabSelectingButton = tabButton;
 	if(other == me.firstChild)
 	{
 		tabButton.forcePressed = 1;

Modified: trunk/data/qcsrc/menu/menu.qc
===================================================================
--- trunk/data/qcsrc/menu/menu.qc	2008-10-31 12:36:48 UTC (rev 4950)
+++ trunk/data/qcsrc/menu/menu.qc	2008-10-31 13:42:54 UTC (rev 4951)
@@ -422,8 +422,12 @@
 
 	if(par.instanceOfModalController)
 	{
-		// tabs
-		par.initializeDialog(par, wnd);
+		if(wnd.tabSelectingButton)
+			// tabs
+			TabButton_Click(wnd.tabSelectingButton, wnd);
+		else
+			// root
+			par.initializeDialog(par, wnd);
 	}
 	else if(par.instanceOfNexposee)
 	{

Added: trunk/data/qcsrc/menu/nexuiz/demolist.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/demolist.c	                        (rev 0)
+++ trunk/data/qcsrc/menu/nexuiz/demolist.c	2008-10-31 13:42:54 UTC (rev 4951)
@@ -0,0 +1,151 @@
+#ifdef INTERFACE
+CLASS(NexuizDemoList) EXTENDS(NexuizListBox)
+    METHOD(NexuizDemoList, configureNexuizDemoList, void(entity))
+    ATTRIB(NexuizDemoList, rowsPerItem, float, 1)
+    METHOD(NexuizDemoList, resizeNotify, void(entity, vector, vector, vector, vector))
+    METHOD(NexuizDemoList, drawListBoxItem, void(entity, float, vector, float))
+    METHOD(NexuizDemoList, getDemos, void(entity))
+    METHOD(NexuizDemoList, startDemo, void(entity))    
+    METHOD(NexuizDemoList, demoName, string(entity, float))
+    METHOD(NexuizDemoList, clickListBoxItem, void(entity, float, vector))
+    METHOD(NexuizDemoList, keyDown, float(entity, float, float, float))
+    METHOD(NexuizDemoList, destroy, void(entity))
+    ATTRIB(NexuizDemoList, listDemo, float, -1)
+    ATTRIB(NexuizDemoList, realFontSize, vector, '0 0 0')
+    ATTRIB(NexuizDemoList, columnNameOrigin, float, 0)
+    ATTRIB(NexuizDemoList, columnNameSize, float, 0)
+    ATTRIB(NexuizDemoList, realUpperMargin, float, 0)
+    ATTRIB(NexuizDemoList, origin, vector, '0 0 0')
+    ATTRIB(NexuizDemoList, itemAbsSize, vector, '0 0 0')
+    ATTRIB(NexuizDemoList, lastClickedDemo, float, -1)
+    ATTRIB(NexuizDemoList, lastClickedTime, float, 0)
+    ATTRIB(NexuizDemoList, filterString, string, string_null)    
+ENDCLASS(NexuizDemoList)
+
+entity makeNexuizDemoList();
+void StartDemo_Click(entity btn, entity me);
+void DemoList_Filter_Change(entity box, entity me);
+#endif
+
+#ifdef IMPLEMENTATION
+
+entity makeNexuizDemoList()
+{
+    entity me;
+    me = spawnNexuizDemoList();
+    me.configureNexuizDemoList(me);
+    return me;
+}
+
+void configureNexuizDemoListNexuizDemoList(entity me)
+{
+    me.configureNexuizListBox(me);
+    me.getDemos(me);    
+}
+
+string demoNameNexuizDemoList(entity me, float i )
+{
+    string s;
+    s = search_getfilename(me.listDemo, i);
+    s = substring(s, 6, strlen(s) - 6 - 4);  // demos/, .dem
+    return s;
+}
+
+
+void getDemosNexuizDemoList(entity me)
+{
+    string s;
+    
+    if(me.filterString)
+    	//subdirectory in filterString allowed    
+    	s=strcat("demos/*", me.filterString, "*.dem");    	
+    else
+    	s="demos/*.dem";
+	
+    //dprint("Search demos with the pattern ", s, "\n");    
+    me.listDemo = search_begin(s, FALSE, TRUE);
+    if(me.listDemo < 0)
+    	me.nItems=0;
+    else
+    	me.nItems=search_getsize(me.listDemo);				
+}
+
+void destroyNexuizDemoList(entity me)
+{
+    search_end(me.listDemo);
+}
+
+void resizeNotifyNexuizDemoList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
+{
+    me.origin = absOrigin;
+    me.itemAbsSize = '0 0 0';
+    resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
+
+    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.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
+
+    me.columnNameOrigin = me.realFontSize_x;
+    me.columnNameSize = 1 - 2 * me.realFontSize_x;
+}
+
+void drawListBoxItemNexuizDemoList(entity me, float i, vector absSize, float isSelected)
+{
+    string s;
+    if(isSelected)
+    	draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
+		
+    s = me.demoName(me,i);
+    s = draw_TextShortenToWidth(s, me.columnNameSize / me.realFontSize_x, 0);
+    draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0) * me.realFontSize_x)) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);		
+}
+
+void DemoList_Filter_Change(entity box, entity me)
+{	
+    if(me.filterString)
+    	strunzone(me.filterString);
+    
+    if(box.text != "")
+    	me.filterString = strzone(box.text);
+    else
+    	me.filterString = string_null;
+		
+    me.getDemos(me);
+}
+
+void startDemoNexuizDemoList(entity me)
+{
+    string s;
+    s = me.demoName(me,me.selectedItem);
+    localcmd("playdemo demos/", s, ".dem\nwait\ntogglemenu\n");	
+}
+
+void StartDemo_Click(entity btn, entity me)
+{
+    me.startDemo(me);
+}
+
+void clickListBoxItemNexuizDemoList(entity me, float i, vector where)
+{
+    if(i == me.lastClickedDemo)
+        if(time < me.lastClickedTime + 0.3)
+        {
+            // DOUBLE CLICK!
+            me.setSelected(me, i);
+            me.startDemo(me);
+        }
+    me.lastClickedDemo = i;
+    me.lastClickedTime = time;
+}
+
+float keyDownNexuizDemoList(entity me, float scan, float ascii, float shift)
+{
+    if(scan == K_ENTER) {
+        me.startDemo(me);
+        return 1;
+    }
+    else
+        return keyDownListBox(me, scan, ascii, shift);
+}
+#endif
+

Modified: trunk/data/qcsrc/menu/nexuiz/dialog_settings.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_settings.c	2008-10-31 12:36:48 UTC (rev 4950)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_settings.c	2008-10-31 13:42:54 UTC (rev 4951)
@@ -19,6 +19,7 @@
 		me.TD(me, 1, 1, mc.makeTabButton(mc, "Video",   makeNexuizVideoSettingsTab()));
 		me.TD(me, 1, 1, mc.makeTabButton(mc, "Effects", makeNexuizEffectsSettingsTab()));
 		me.TD(me, 1, 1, mc.makeTabButton(mc, "Audio",   makeNexuizAudioSettingsTab()));
+		me.TD(me, 1, 1, mc.makeTabButton(mc, "Demos",   makeNexuizDemoSettingsTab()));
 		me.TD(me, 1, 1, mc.makeTabButton(mc, "Misc",    makeNexuizMiscSettingsTab()));
 	me.TR(me);
 	me.TR(me);

Added: trunk/data/qcsrc/menu/nexuiz/dialog_settings_demo.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_settings_demo.c	                        (rev 0)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_settings_demo.c	2008-10-31 13:42:54 UTC (rev 4951)
@@ -0,0 +1,47 @@
+#ifdef INTERFACE
+CLASS(NexuizDemoSettingsTab) EXTENDS(NexuizTab)
+	METHOD(NexuizDemoSettingsTab, fill, void(entity))
+	ATTRIB(NexuizDemoSettingsTab, title, string, "Demo")
+	ATTRIB(NexuizDemoSettingsTab, intendedWidth, float, 0.9)
+	ATTRIB(NexuizDemoSettingsTab, rows, float, 15)
+	ATTRIB(NexuizDemoSettingsTab, columns, float, 6.5)
+	ATTRIB(NexuizDemoSettingsTab, name, string, "DemoBroswer")	
+ENDCLASS(NexuizDemoSettingsTab)
+entity makeNexuizDemoSettingsTab();
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeNexuizDemoSettingsTab()
+{
+	entity me;
+	me = spawnNexuizDemoSettingsTab();
+	me.configureDialog(me);
+	return me;
+}
+void fillNexuizDemoSettingsTab(entity me)
+{
+	entity e;
+	entity btn;
+	entity dlist;
+
+	me.TR(me);
+		me.TD(me, 1, me.columns, e = makeNexuizCheckBox(0, "cl_autodemo", "Record demos while playing"));
+	me.TR(me);
+	dlist = makeNexuizDemoList();
+	me.TR(me);
+		me.TD(me, 1, 0.5, e = makeNexuizTextLabel(0, "Filter:"));
+		me.TD(me, 1, 0.5, btn = makeNexuizButton("Clear", '0 0 0'));
+			btn.onClick = InputBox_Clear_Click;
+		me.TD(me, 1, me.columns - 1, e = makeNexuizInputBox(0, string_null));
+			e.onChange = DemoList_Filter_Change;
+			e.onChangeEntity = dlist;
+			btn.onClickEntity = e;
+			dlist.controlledTextbox = e;
+	me.TR(me);
+		me.TD(me, me.rows - 4, me.columns, dlist);
+	me.gotoRC(me, me.rows - 1, 0);
+		me.TD(me, 1, me.columns, e = makeNexuizButton("Play", '0 0 0'));
+			e.onClick = StartDemo_Click;
+			e.onClickEntity = dlist;
+}
+#endif

Modified: trunk/data/qcsrc/menu/nexuiz/dialog_settings_misc.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_settings_misc.c	2008-10-31 12:36:48 UTC (rev 4950)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_settings_misc.c	2008-10-31 13:42:54 UTC (rev 4951)
@@ -32,9 +32,6 @@
 			e.onClickEntity = sk;
 		
 	me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
-		me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "cl_autodemo", "Automatic demo recording"));
-	me.TR(me);
-	me.TR(me);
 		me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "showtime", "Show current time"));
 	me.TR(me);
 		me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "showdate", "Show current date"));

Modified: trunk/data/qcsrc/menu/nexuiz/mainwindow.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/mainwindow.c	2008-10-31 12:36:48 UTC (rev 4950)
+++ trunk/data/qcsrc/menu/nexuiz/mainwindow.c	2008-10-31 13:42:54 UTC (rev 4951)
@@ -53,7 +53,7 @@
 	me.radarDialog = i = spawnNexuizRadarDialog();
 	i.configureDialog(i);
 	me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
+	
 	me.mainNexposee = n = spawnNexuizNexposee();
 	/*
 		if(checkextension("DP_GECKO_SUPPORT"))

Modified: trunk/data/qcsrc/menu/skin-customizables.inc
===================================================================
--- trunk/data/qcsrc/menu/skin-customizables.inc	2008-10-31 12:36:48 UTC (rev 4950)
+++ trunk/data/qcsrc/menu/skin-customizables.inc	2008-10-31 13:42:54 UTC (rev 4951)
@@ -52,6 +52,7 @@
 	SKINVECTOR(COLOR_DIALOG_CREDITS, '0.7 0.7 1');
 	SKINVECTOR(COLOR_DIALOG_WEAPONS, '1 0.7 0.7');
 	SKINVECTOR(COLOR_DIALOG_RADAR, '0.7 0.7 1');
+	SKINVECTOR(COLOR_DIALOG_DEMOBROSWER, '0.7 0.7 1');
 
 	// nexposee positions of windows (they are the scale transformation
 	// centers, NOT the actual positions of the windows!)




More information about the nexuiz-commits mailing list