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