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