r4513 - trunk/data/qcsrc/menu/nexuiz

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Sep 27 02:21:50 EDT 2008


Author: div0
Date: 2008-09-27 02:21:49 -0400 (Sat, 27 Sep 2008)
New Revision: 4513

Modified:
   trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
   trunk/data/qcsrc/menu/nexuiz/inputbox.c
   trunk/data/qcsrc/menu/nexuiz/serverlist.c
Log:
slightly cleaned up favorites list. Thanks for the idea, esteel :)


Modified: trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c	2008-09-27 05:17:38 UTC (rev 4512)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c	2008-09-27 06:21:49 UTC (rev 4513)
@@ -7,8 +7,6 @@
 	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
@@ -52,38 +50,23 @@
 		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 - 5, me.columns, slist);
-		
-	me.gotoRC(me, me.rows - 3, 0);
-		me.TD(me, 1, me.columns, e = makeNexuizButton("Join!", '0 0 0'));
+		me.TD(me, me.rows - 3, me.columns, slist);
+
+	me.gotoRC(me, me.rows - 1, 0);
+		me.TD(me, 1, 0.5, e = makeNexuizTextLabel(0, "Address:"));
+		me.TD(me, 1, 1.5, e = makeNexuizInputBox(0, string_null));
+			e.onEnter = ServerList_Connect_Click;
+			e.onEnterEntity = slist;
+			slist.ipAddressBox = e;
+		me.TD(me, 1, 1, e = makeNexuizButton("", '0 0 0'));
+			e.onClick = ServerList_Favorite_Click;
+			e.onClickEntity = slist;
+			slist.favoriteButton = e;
+		me.TD(me, 1, me.columns - 0.5 - 1.5 - 1, 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/inputbox.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/inputbox.c	2008-09-27 05:17:38 UTC (rev 4512)
+++ trunk/data/qcsrc/menu/nexuiz/inputbox.c	2008-09-27 06:21:49 UTC (rev 4513)
@@ -7,6 +7,8 @@
 	ATTRIB(NexuizInputBox, image, string, SKINGFX_INPUTBOX)
 	ATTRIB(NexuizInputBox, onChange, void(entity, entity), SUB_Null)
 	ATTRIB(NexuizInputBox, onChangeEntity, entity, NULL)
+	ATTRIB(NexuizInputBox, onEnter, void(entity, entity), SUB_Null)
+	ATTRIB(NexuizInputBox, onEnterEntity, entity, NULL)
 	ATTRIB(NexuizInputBox, marginLeft, float, SKINMARGIN_INPUTBOX_CHARS)
 	ATTRIB(NexuizInputBox, marginRight, float, SKINMARGIN_INPUTBOX_CHARS)
 	ATTRIB(NexuizInputBox, color, vector, SKINCOLOR_INPUTBOX_N)
@@ -69,11 +71,14 @@
 	float r;
 	r = 0;
 	if(key == K_ENTER)
+	{
 		if(me.cvarName)
 		{
 			me.saveCvars(me);
 			r = 1;
 		}
+		me.onEnter(me, me.onEnterEntity);
+	}
 	if(keyDownInputBox(me, key, ascii, shift))
 		r = 1;
 	return r;

Modified: trunk/data/qcsrc/menu/nexuiz/serverlist.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/serverlist.c	2008-09-27 05:17:38 UTC (rev 4512)
+++ trunk/data/qcsrc/menu/nexuiz/serverlist.c	2008-09-27 06:21:49 UTC (rev 4513)
@@ -28,6 +28,8 @@
 	ATTRIB(NexuizServerList, filterShowFull, float, 1)
 	ATTRIB(NexuizServerList, filterString, string, string_null)
 	ATTRIB(NexuizServerList, controlledTextbox, entity, NULL)
+	ATTRIB(NexuizServerList, ipAddressBox, entity, NULL)
+	ATTRIB(NexuizServerList, favoriteButton, entity, NULL)
 	ATTRIB(NexuizServerList, nextRefreshTime, float, 0)
 	METHOD(NexuizServerList, refreshServerList, void(entity, float)) // refresh mode: 0 = just reparametrize, 1 = send new requests, 2 = clear
 	ATTRIB(NexuizServerList, needsRefresh, float, 1)
@@ -49,7 +51,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);
+void ServerList_Favorite_Click(entity btn, entity me);
 #endif
 
 #ifdef IMPLEMENTATION
@@ -87,6 +89,36 @@
 	SLIST_FIELD_ISFAVORITE = gethostcacheindexforkey( "isfavorite" );
 }
 
+float IsFavorite(string srv)
+{
+	string s;
+	float o;
+	s = cvar_string("net_slist_favorites");
+	s = strcat(" ", s, " ");
+	srv = strcat(" ", srv, " ");
+	o = strstrofs(s, srv, 0);
+	return (o != -1);
+}
+
+void ToggleFavorite(string srv)
+{
+	string s;
+	float o;
+	s = cvar_string("net_slist_favorites");
+	o = strstrofs(strcat(" ", s, " "), strcat(" ", srv, " "), 0);
+	if(o == -1)
+	{
+		cvar_set("net_slist_favorites", strcat(s, " ", srv));
+	}
+	else
+	{
+		cvar_set("net_slist_favorites", strcat(
+					substring(s, 0, o - 1), substring(s, o + strlen(srv), strlen(s) - o - strlen(srv))
+					));
+	}
+	resorthostcache();
+}
+
 entity makeNexuizServerList()
 {
 	entity me;
@@ -115,9 +147,13 @@
 		return;
 	if(gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT) != me.nItems)
 		return; // sorry, it would be wrong
+
 	if(me.selectedServer)
 		strunzone(me.selectedServer);
 	me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem));
+
+	me.ipAddressBox.setText(me.ipAddressBox, me.selectedServer);
+	me.ipAddressBox.cursorPos = strlen(me.selectedServer);
 }
 void refreshServerListNexuizServerList(entity me, float mode)
 {
@@ -185,7 +221,7 @@
 }
 void drawNexuizServerList(entity me)
 {
-	float i, found;
+	float i, found, owned;
 
 	if(me.currentSortField == -1)
 	{
@@ -202,6 +238,8 @@
 		me.refreshServerList(me, 0);
 	}
 
+	owned = (me.selectedServer == me.ipAddressBox.text);
+
 	me.nItems = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
 	me.connectButton.disabled = (me.nItems == 0);
 
@@ -230,6 +268,17 @@
 			me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem));
 		}
 
+	if(owned)
+	{
+		me.ipAddressBox.setText(me.ipAddressBox, me.selectedServer);
+		me.ipAddressBox.cursorPos = strlen(me.selectedServer);
+	}
+
+	if(IsFavorite(me.ipAddressBox.text))
+		me.favoriteButton.setText(me.favoriteButton, "Remove");
+	else
+		me.favoriteButton.setText(me.favoriteButton, "Bookmark");
+
 	drawListBox(me);
 }
 void ServerList_PingSort_Click(entity btn, entity me)
@@ -383,34 +432,18 @@
 }
 void ServerList_Connect_Click(entity btn, entity me)
 {
-	if(me.nItems > 0)
-		localcmd("connect ", me.selectedServer, "\n");
+	localcmd("connect ", me.ipAddressBox.text, "\n");
 }
-void ServerList_AddRemoveFavorites(string fav, float resolv, float addonly)
+void ServerList_Favorite_Click(entity btn, entity me)
 {
-	string s;
-	float i, o;
-
-	if (resolv)
+	string ipstr;
+	ipstr = netaddress_resolve(me.ipAddressBox.text, 26000);
+	if(ipstr != "")
 	{
-		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;
+		me.ipAddressBox.setText(me.ipAddressBox, ipstr);
+		me.ipAddressBox.cursorPos = strlen(ipstr);
+		ToggleFavorite(ipstr);
 	}
-	
-	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)
 {
@@ -498,9 +531,7 @@
 	{
 		i = me.selectedItem;
 		if(i < me.nItems)
-		{
-			ServerList_AddRemoveFavorites(me.selectedServer, false, false);
-		}
+			ToggleFavorite(me.selectedServer);
 		me.lastClickedServer = -1; // inhibit double clicks using these buttons
 		if(scan != K_INS)
 			me.setSelected(me, me.selectedItem);




More information about the nexuiz-commits mailing list