r4506 - in trunk/data/qcsrc/menu: . nexuiz

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Sep 26 14:01:06 EDT 2008


Author: esteel
Date: 2008-09-26 14:00:54 -0400 (Fri, 26 Sep 2008)
New Revision: 4506

Modified:
   trunk/data/qcsrc/menu/mbuiltin.qh
   trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
   trunk/data/qcsrc/menu/nexuiz/serverlist.c
Log:
First working version of an editable Connect/Add-to-favorites feature


Modified: trunk/data/qcsrc/menu/mbuiltin.qh
===================================================================
--- trunk/data/qcsrc/menu/mbuiltin.qh	2008-09-26 14:55:33 UTC (rev 4505)
+++ trunk/data/qcsrc/menu/mbuiltin.qh	2008-09-26 18:00:54 UTC (rev 4506)
@@ -298,6 +298,7 @@
 string(string in) uri_escape = #510;
 string(string in) uri_unescape = #511;
 
+string(string, float) netaddress_resolve = #625;
 
 #ifdef FIXEDFOPEN
 float 	fopen( string filename, float mode ) =

Modified: trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c	2008-09-26 14:55:33 UTC (rev 4505)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c	2008-09-26 18:00:54 UTC (rev 4506)
@@ -7,6 +7,8 @@
 	ATTRIB(NexuizServerListTab, columns, float, 6.5)
 ENDCLASS(NexuizServerListTab)
 entity makeNexuizServerListTab();
+void Join_Connect(entity btn, entity me);
+void Join_AddToFavorites(entity btn, entity me);
 #endif
 
 #ifdef IMPLEMENTATION
@@ -20,18 +22,18 @@
 }
 void fillNexuizServerListTab(entity me)
 {
-	entity e, slist, clearbtn;
+	entity e, slist, btn;
 
 	slist  = makeNexuizServerList();
 
 	me.TR(me);
 		me.TD(me, 1, 0.5, e = makeNexuizTextLabel(0, "Filter:"));
-		me.TD(me, 1, 0.5, clearbtn = makeNexuizButton("Clear", '0 0 0'));
-			clearbtn.onClick = InputBox_Clear_Click;
+		me.TD(me, 1, 0.5, btn = makeNexuizButton("Clear", '0 0 0'));
+			btn.onClick = InputBox_Clear_Click;
 		me.TD(me, 1, me.columns - 2.5, e = makeNexuizInputBox(0, string_null));
 			e.onChange = ServerList_Filter_Change;
 			e.onChangeEntity = slist;
-			clearbtn.onClickEntity = e;
+			btn.onClickEntity = e;
 			slist.controlledTextbox = e;
 		me.TD(me, 1, 0.5, e = makeNexuizCheckBox(0, "menu_slist_showempty", "Empty"));
 			slist.filterShowEmpty = e.checked;
@@ -50,12 +52,38 @@
 		me.TD(me, 1, 1, slist.sortButton4 = makeNexuizButton(string_null, '0 0 0'));
 		me.TD(me, 1, 1, slist.sortButton5 = makeNexuizButton(string_null, '0 0 0'));
 	me.TR(me);
-		me.TD(me, me.rows - 3, me.columns, slist);
+		me.TD(me, me.rows - 5, me.columns, slist);
 		
-	me.gotoRC(me, me.rows - 1, 0);
+	me.gotoRC(me, me.rows - 3, 0);
 		me.TD(me, 1, me.columns, e = makeNexuizButton("Join!", '0 0 0'));
 			e.onClick = ServerList_Connect_Click;
 			e.onClickEntity = slist;
 			slist.connectButton = e;
+
+	me.TR(me);
+
+	me.TR(me);
+		me.TD(me, 1, 1.8, e = makeNexuizTextLabel(0, "Address (Name or IP[:Port]):"));
+		me.TD(me, 1, 0.5, btn = makeNexuizButton("Clear", '0 0 0'));
+			btn.onClick = InputBox_Clear_Click;
+		me.TD(me, 1, me.columns - 4.3, e = makeNexuizInputBox(0, string_null));
+			btn.onClickEntity = e;
+		me.TD(me, 1, 0.8, btn = makeNexuizButton("Connect", '0 0 0'));
+			btn.onClick = Join_Connect;
+			btn.onClickEntity = e;
+		me.TD(me, 1, 1.2, btn = makeNexuizButton("Add to favorites", '0 0 0'));
+			btn.onClick = Join_AddToFavorites;
+			btn.onClickEntity = e;
 }
+void Join_Connect(entity btn, entity me)
+{
+	if (me.text)
+	{
+		localcmd("\nconnect \"", me.text, "\"\n");
+	}
+}
+void Join_AddToFavorites(entity btn, entity me)
+{
+	ServerList_AddRemoveFavorites(me.text, true, true);
+}
 #endif

Modified: trunk/data/qcsrc/menu/nexuiz/serverlist.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/serverlist.c	2008-09-26 14:55:33 UTC (rev 4505)
+++ trunk/data/qcsrc/menu/nexuiz/serverlist.c	2008-09-26 18:00:54 UTC (rev 4506)
@@ -49,6 +49,7 @@
 void ServerList_ShowEmpty_Click(entity box, entity me);
 void ServerList_ShowFull_Click(entity box, entity me);
 void ServerList_Filter_Change(entity box, entity me);
+void ServerList_AddRemoveFavorites(string fav, float resolv, float addonly);
 #endif
 
 #ifdef IMPLEMENTATION
@@ -385,6 +386,32 @@
 	if(me.nItems > 0)
 		localcmd("connect ", me.selectedServer, "\n");
 }
+void ServerList_AddRemoveFavorites(string fav, float resolv, float addonly)
+{
+	string s;
+	float i, o;
+
+	if (resolv)
+	{
+		o = strstrofs(fav, ":", 0);
+		if (o != -1)
+		{
+			i = stof(substring(fav, o + 1, strlen(fav) - o - 1));
+			fav = substring(fav, 0, o);
+		}
+		s = netaddress_resolve(fav, i);
+		if(s!="") fav = s;
+	}
+	
+	s = cvar_string("net_slist_favorites");
+	o = strstrofs(strcat(" ", s, " "), strcat(" ", fav, " "), 0);
+	if(o == -1)
+		cvar_set("net_slist_favorites", strcat(s, " ", fav));
+	else if(!addonly)
+			cvar_set("net_slist_favorites", strcat(
+					 substring(s, 0, o - 1), substring(s, o + strlen(fav), strlen(s) - o - strlen(fav))));
+	resorthostcache();
+}
 void clickListBoxItemNexuizServerList(entity me, float i, vector where)
 {
 	if(i == me.lastClickedServer)
@@ -472,19 +499,7 @@
 		i = me.selectedItem;
 		if(i < me.nItems)
 		{
-			s = cvar_string("net_slist_favorites");
-			o = strstrofs(strcat(" ", s, " "), strcat(" ", me.selectedServer, " "), 0);
-			if(o == -1)
-			{
-				cvar_set("net_slist_favorites", strcat(s, " ", me.selectedServer));
-			}
-			else
-			{
-				cvar_set("net_slist_favorites", strcat(
-					substring(s, 0, o - 1), substring(s, o + strlen(me.selectedServer), strlen(s) - o - strlen(me.selectedServer))
-				));
-			}
-			resorthostcache();
+			ServerList_AddRemoveFavorites(me.selectedServer, false, false);
 		}
 		me.lastClickedServer = -1; // inhibit double clicks using these buttons
 		if(scan != K_INS)




More information about the nexuiz-commits mailing list