[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Stratagus-CVS] stratagus data/ccl/menus.ccl src/include/master...
From: |
Russell Smith |
Subject: |
[Stratagus-CVS] stratagus data/ccl/menus.ccl src/include/master... |
Date: |
Sat, 11 Oct 2003 23:21:38 -0400 |
CVSROOT: /cvsroot/stratagus
Module name: stratagus
Branch:
Changes by: Russell Smith <address@hidden> 03/10/11 23:21:38
Modified files:
data/ccl : menus.ccl
src/include : master.h
src/network : master.c network.c
src/ui : menus.c
Log message:
Updates to Meta Server Implementation. Remove Old Meta Server menu items
Patches:
Index: stratagus/data/ccl/menus.ccl
diff -u stratagus/data/ccl/menus.ccl:1.90 stratagus/data/ccl/menus.ccl:1.91
--- stratagus/data/ccl/menus.ccl:1.90 Fri Sep 26 14:52:17 2003
+++ stratagus/data/ccl/menus.ccl Sat Oct 11 23:21:37 2003
@@ -26,7 +26,7 @@
;; along with this program; if not, write to the Free Software
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
;;
-;; $Id: menus.ccl,v 1.90 2003/09/26 18:52:17 jsalmon3 Exp $
+;; $Id: menus.ccl,v 1.91 2003/10/12 03:21:37 mr-russ Exp $
;;
;; load the keystroke helps
@@ -550,14 +550,14 @@
'panel 'none 'default '2)
(define-menu-item 'pos (list 208 (+ 320 (* 36 0))) 'font 'large
'button '(size (224 27)
- caption "~!Join Game"
+ caption "~!Join LAN Game"
hotkey "j"
func net-join-game
style gm-full)
'menu 'menu-create-join-menu)
(define-menu-item 'pos (list 208 (+ 320 (* 36 1))) 'font 'large
'button '(size (224 27)
- caption "~!Create Game"
+ caption "~!Create LAN Game"
hotkey "c"
func net-create-game
style gm-full)
@@ -570,6 +570,32 @@
style gm-full)
'menu 'menu-create-join-menu)
+;;
+;; menu-internet-create-join-menu
+;;
+(define-menu 'name 'menu-internet-create-join-menu 'geometry '(0 0 640 480)
+ 'panel 'none 'default '2)
+(define-menu-item 'pos (list 208 (+ 320 (* 36 0))) 'font 'large
+ 'button '(size (224 27)
+ caption "~!Join Internet Game"
+ hotkey "j"
+ func menu-multi-master-gem
+ style gm-full)
+ 'menu 'menu-internet-create-join-menu)
+(define-menu-item 'pos (list 208 (+ 320 (* 36 1))) 'font 'large
+ 'button '(size (224 27)
+ caption "~!Create Internet Game"
+ hotkey "c"
+ func net-internet-create-game
+ style gm-full)
+ 'menu 'menu-internet-create-join-menu)
+(define-menu-item 'pos (list 208 (+ 320 (* 36 2))) 'font 'large
+ 'button '(size (224 27)
+ caption "~!Previous Menu"
+ hotkey "p"
+ func end-menu
+ style gm-full)
+ 'menu 'menu-internet-create-join-menu)
;;
;; menu-multi-net-type-menu
@@ -584,11 +610,10 @@
style gm-full)
'menu 'menu-multi-net-type-menu)
(define-menu-item 'pos (list 208 (+ 320 (* 36 1))) 'font 'large
- 'flags '(disabled)
'button '(size (224 27)
caption "~!Internet Game"
hotkey "i"
- func null
+ func net-internet-game
style gm-full)
'menu 'menu-multi-net-type-menu)
(define-menu-item 'pos (list 208 (+ 320 (* 36 2))) 'font 'large
@@ -983,18 +1008,6 @@
func null
style gem-round)
'menu 'menu-multi-setup)
-(define-menu-item 'pos (list 15 402)
- 'gem '(size (18 18)
- text "Show game on master server"
- state unchecked
- func menu-multi-master-gem
- style gem-square)
- 'menu 'menu-multi-setup)
-(define-menu-item 'pos (list 17 430) 'font 'game
- 'input '(size (212 20)
- func enter-master-action
- style pulldown)
- 'menu 'menu-multi-setup)
;;
;; menu-enter-server
@@ -3757,4 +3770,147 @@
func end-menu
style gm-full)
'menu 'menu-exit-confirm)
+
+;;-----------------------------------------------------------------
+;; **** Show master server game list
+;;-----------------------------------------------------------------
+;; menu-metaserver-list
+;;
+(define-menu 'name 'menu-metaserver-list 'geometry '(0 0 640 480)
+ 'panel 'none 'default '3)
+(define-menu-item 'pos (list 0 0) 'font 'game 'init 'menu-metaserver-init
'exit 'menu-metaserver-exit
+ 'menu 'menu-metaserver-list )
+(define-menu-item 'pos (list (+ (/ 640 2) 12) 8) 'font 'large
+ 'text '(caption "~<Online Game List ~>" align center)
+ 'menu 'menu-metaserver-list )
+(define-menu-item 'pos (list (- 640 224 16) (+ 360 (* 36 2))) 'font 'large
+ 'button '(size (224 27)
+ caption "~!Cancel Game"
+ hotkey "c"
+ func end-menu
+ style gm-full)
+ 'menu 'menu-metaserver-list )
+(define-menu-item 'pos (list (- 640 224 16) (+ 360 (* 36 1))) 'font 'large
+ 'button '(size (224 27)
+ caption "~!Refresh"
+ hotkey "c"
+ func menu-metaserver-list ;; refresh game list.
+ style gm-full)
+ 'menu 'menu-metaserver-list )
+
+;;------------------------------------------------- nickname
+(define-menu-item 'pos (list 40 (+ 32 (* 22 0))) 'font 'game
+ 'text '(caption "~<Nickname~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- IP:Port
+(define-menu-item 'pos (list 160 (+ 32 (* 22 0))) 'font 'game
+ 'text '(caption "~<IP:PORT~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- OS
+(define-menu-item 'pos (list 280 (+ 32 (* 22 0))) 'font 'game
+ 'text '(caption "~<OS~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- Other
+(define-menu-item 'pos (list 400 (+ 32 (* 22 0))) 'font 'game
+ 'text '(caption "~<Other Argument~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- checkbox
+(define-menu-item 'pos (list 15 (+ 32 (* 22 0)))
+ 'gem '(size (18 18)
+ state unchecked
+ func select-game-server
+ style gem-square)
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- nickname
+(define-menu-item 'pos (list 40 (+ 32 (* 22 1))) 'font 'game
+ 'text '(caption "~<Nickname~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- IP:Port
+(define-menu-item 'pos (list 160 (+ 32 (* 22 1))) 'font 'game
+ 'text '(caption "~<IP:PORT~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- OS
+(define-menu-item 'pos (list 280 (+ 32 (* 22 1))) 'font 'game
+ 'text '(caption "~<OS~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- Other
+(define-menu-item 'pos (list 400 (+ 32 (* 22 1))) 'font 'game
+ 'text '(caption "~<Other Argument~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- checkbox
+(define-menu-item 'pos (list 15 (+ 32 (* 22 1)))
+ 'gem '(size (18 18)
+ state unchecked
+ func select-game-server
+ style gem-square)
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- nickname
+(define-menu-item 'pos (list 40 (+ 32 (* 22 2))) 'font 'game
+ 'text '(caption "~<Nickname~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- IP:Port
+(define-menu-item 'pos (list 160 (+ 32 (* 22 2))) 'font 'game
+ 'text '(caption "~<IP:PORT~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- OS
+(define-menu-item 'pos (list 280 (+ 32 (* 22 2))) 'font 'game
+ 'text '(caption "~<OS~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- Other
+(define-menu-item 'pos (list 400 (+ 32 (* 22 2))) 'font 'game
+ 'text '(caption "~<Other Argument~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- checkbox
+(define-menu-item 'pos (list 15 (+ 32 (* 22 2)))
+ 'gem '(size (18 18)
+ state unchecked
+ func select-game-server
+ style gem-square)
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- nickname
+(define-menu-item 'pos (list 40 (+ 32 (* 22 3))) 'font 'game
+ 'text '(caption "~<Nickname~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- IP:Port
+(define-menu-item 'pos (list 160 (+ 32 (* 22 3))) 'font 'game
+ 'text '(caption "~<IP:PORT~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- OS
+(define-menu-item 'pos (list 280 (+ 32 (* 22 3))) 'font 'game
+ 'text '(caption "~<OS~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- Other
+(define-menu-item 'pos (list 400 (+ 32 (* 22 3))) 'font 'game
+ 'text '(caption "~<Other Argument~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- checkbox
+(define-menu-item 'pos (list 15 (+ 32 (* 22 3)))
+ 'gem '(size (18 18)
+ state unchecked
+ func select-game-server
+ style gem-square)
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- nickname
+(define-menu-item 'pos (list 40 (+ 32 (* 22 4))) 'font 'game
+ 'text '(caption "~<Nickname~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- IP:Port
+(define-menu-item 'pos (list 160 (+ 32 (* 22 4))) 'font 'game
+ 'text '(caption "~<IP:PORT~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- OS
+(define-menu-item 'pos (list 280 (+ 32 (* 22 4))) 'font 'game
+ 'text '(caption "~<OS~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- Other
+(define-menu-item 'pos (list 400 (+ 32 (* 22 4))) 'font 'game
+ 'text '(caption "~<Other Argument~>" )
+ 'menu 'menu-metaserver-list )
+;;------------------------------------------------- checkbox
+(define-menu-item 'pos (list 15 (+ 32 (* 22 4)))
+ 'gem '(size (18 18)
+ state unchecked
+ func select-game-server
+ style gem-square)
+ 'menu 'menu-metaserver-list )
Index: stratagus/src/include/master.h
diff -u stratagus/src/include/master.h:1.9 stratagus/src/include/master.h:1.10
--- stratagus/src/include/master.h:1.9 Sat Oct 11 02:43:45 2003
+++ stratagus/src/include/master.h Sat Oct 11 23:21:37 2003
@@ -26,7 +26,7 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
-// $Id: master.h,v 1.9 2003/10/11 06:43:45 mr-russ Exp $
+// $Id: master.h,v 1.10 2003/10/12 03:21:37 mr-russ Exp $
#ifndef __MASTER_H__
#define __MASTER_H__
@@ -51,6 +51,8 @@
/*----------------------------------------------------------------------------
-- Variables
----------------------------------------------------------------------------*/
+
+extern int MetaServerInUse;
extern int MetaInit(void);
extern int MetaClose(void);
Index: stratagus/src/network/master.c
diff -u stratagus/src/network/master.c:1.10 stratagus/src/network/master.c:1.11
--- stratagus/src/network/master.c:1.10 Sat Oct 11 02:43:45 2003
+++ stratagus/src/network/master.c Sat Oct 11 23:21:37 2003
@@ -26,7 +26,7 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
-// $Id: master.c,v 1.10 2003/10/11 06:43:45 mr-russ Exp $
+// $Id: master.c,v 1.11 2003/10/12 03:21:37 mr-russ Exp $
//@{
@@ -69,6 +69,7 @@
//###### For Magnant META SERVER
local int sockfd; // This is a TCP socket.
+global int MetaServerInUse;
/*----------------------------------------------------------------------------
-- Functions
@@ -167,17 +168,20 @@
if ((p = malloc(size)) == NULL) {
return -1;
}
+ if ((s = malloc(size)) == NULL) {
+ return -1;
+ }
// Message Structure
// Player Name, Game Name, VERSION, Command, **Paramaters**
- strcpy(p, LocalPlayerName);
- strcat(p, "\n");
- strcat(p, GameName);
- strcat(p, "\n");
- strcat(p, VERSION);
- strcat(p, "\n");
- strcat(p, command);
- strcat(p, "\n");
+ strcpy(s, LocalPlayerName);
+ strcat(s, "\n");
+ strcat(s, GameName);
+ strcat(s, "\n");
+ strcat(s, VERSION);
+ strcat(s, "\n");
+ strcat(s, command);
+ strcat(s, "\n");
// Commands
// Login - 1, password
@@ -194,7 +198,6 @@
while (1) {
/* Try to print in the allocated space. */
va_start(ap, format);
- s = va_arg(ap, char *);
n = vsnprintf(p, size, format, ap);
va_end(ap);
/* If that worked, string was processed. */
@@ -212,9 +215,15 @@
}
}
// Allocate the correct size
- size = strlen(p);
- ret = NetSendTCP(sockfd, p, size);
+ if ((s = realloc(s, size + strlen(s))) == NULL ) {
+ free(p);
+ return -1;
+ }
+ strcat(s, p);
+ size = strlen(s);
+ ret = NetSendTCP(sockfd, s, size);
free(p);
+ free(s);
return ret;
}
Index: stratagus/src/network/network.c
diff -u stratagus/src/network/network.c:1.120
stratagus/src/network/network.c:1.121
--- stratagus/src/network/network.c:1.120 Sat Oct 11 02:43:45 2003
+++ stratagus/src/network/network.c Sat Oct 11 23:21:37 2003
@@ -26,7 +26,7 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
-// $Id: network.c,v 1.120 2003/10/11 06:43:45 mr-russ Exp $
+// $Id: network.c,v 1.121 2003/10/12 03:21:37 mr-russ Exp $
//@{
@@ -474,14 +474,6 @@
NIPQUAD(ntohl(MyHost)) _C_ ntohs(MyPort));
}
#endif
-
-// This goes to all of you networking programmers out there.
-// People are not always on the net. Traffic congestion, low
-// speed links, unplugged cables or an bad adress can result
-// in long wait times for gethostbyname. So here is the catch:
-// Don't get the master server adress until you need it. Or we
-// will make sure that horrible horrible things happen to you.
-// MasterInit();
dl_init(CommandsIn);
dl_init(CommandsOut);
Index: stratagus/src/ui/menus.c
diff -u stratagus/src/ui/menus.c:1.560 stratagus/src/ui/menus.c:1.561
--- stratagus/src/ui/menus.c:1.560 Sat Oct 11 02:43:46 2003
+++ stratagus/src/ui/menus.c Sat Oct 11 23:21:37 2003
@@ -26,7 +26,7 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
-// $Id: menus.c,v 1.560 2003/10/11 06:43:46 mr-russ Exp $
+// $Id: menus.c,v 1.561 2003/10/12 03:21:37 mr-russ Exp $
//@{
@@ -173,9 +173,11 @@
// Net create join
local void JoinNetGameMenu(void);
local void CreateNetGameMenu(void);
+local void CreateInternetGameMenu(void);
// Multi net type
local void MultiPlayerLANGame(void);
+local void MultiPlayerInternetGame(void);
// Net multi setup
local void MultiGameSetupInit(Menuitem *mi);
@@ -384,7 +386,14 @@
// Metaserver
local void MultiGameMasterReport(void);
local void EnterMasterAction(Menuitem *mi, int key);
+local void ShowMetaServerList(void); // Addition for Magnant
+local void MultiMetaServerGameSetupInit(Menuitem *mi); // init callback
+local void MultiMetaServerGameSetupExit(Menuitem *mi); // exit callback
+local void SelectGameServer(Menuitem *mi); // Game Server selection so that
client joins the game
+local void AddGameServer(void); //Add Game Server on Meta server
+local int MetaServerConnectError(void); // Display error message
+//others
local void GameMenuReturn(void);
local void NetErrorMenu(char *error);
local void NetworkGamePrepareGameSettings(void);
@@ -552,9 +561,11 @@
// Net create join
HASHADD(JoinNetGameMenu,"net-join-game");
HASHADD(CreateNetGameMenu,"net-create-game");
+ HASHADD(CreateInternetGameMenu,"net-internet-create-game");
// Multi net type
HASHADD(MultiPlayerLANGame,"net-lan-game");
+ HASHADD(MultiPlayerInternetGame,"net-internet-game");
// Net multi setup
HASHADD(MultiGameSetupInit,"multi-game-setup-init");
@@ -769,6 +780,10 @@
HASHADD(ReplayGameCancel,"replay-game-cancel");
// Metaserver
+ HASHADD(ShowMetaServerList,"menu-metaserver-list");
+ HASHADD(MultiMetaServerGameSetupInit,"menu-metaserver-init");
+ HASHADD(MultiMetaServerGameSetupExit,"menu-metaserver-exit");
+ HASHADD(SelectGameServer,"select-game-server");
}
/*----------------------------------------------------------------------------
@@ -3144,16 +3159,28 @@
*/
local void CreateNetGameMenu(void)
{
- Menu *menu;
-
- menu = FindMenu("menu-multi-setup");
+ DestroyCursorBackground();
+ GuiGameStarted = 0;
+ ProcessMenu("menu-multi-setup", 1);
+ if (GuiGameStarted) {
+ GameMenuReturn();
+ }
+}
+/**
+** Start process network game setup menu (server).
+** Internet game, register with meta server
+*/
+local void CreateInternetGameMenu(void)
+{
DestroyCursorBackground();
GuiGameStarted = 0;
+ AddGameServer();
ProcessMenu("menu-multi-setup", 1);
if (GuiGameStarted) {
GameMenuReturn();
}
+
}
/**
@@ -3166,6 +3193,8 @@
VideoUnlockScreen();
Invalidate();
+ SendMetaCommand("StartGame","");
+
GameSettings.Presets[0].Race = SettingsPresetMapDefault;
NetworkServerStartGame();
@@ -3215,7 +3244,9 @@
GuiGameStarted = 0;
// Here we really go...
// ProcessMenu("menu-create-join-menu", 1);
+
ProcessMenu("menu-multi-net-type-menu", 1);
+
DebugLevel0Fn("GuiGameStarted: %d\n" _C_ GuiGameStarted);
if (GuiGameStarted) {
@@ -3229,6 +3260,25 @@
local void MultiPlayerLANGame(void)
{
ProcessMenu("menu-create-join-menu", 1);
+ MetaServerInUse = 0;
+ if (GuiGameStarted) {
+ GameMenuReturn();
+ }
+}
+
+/**
+** Process Internet game menu
+*/
+local void MultiPlayerInternetGame(void)
+{
+ // Connect to Meta Server
+ if (MetaInit() == -1 ) {
+ MetaServerInUse = 0;
+ MetaServerConnectError();
+ return;
+ }
+ MetaServerInUse = 1;
+ ProcessMenu("menu-internet-create-join-menu", 1);
if (GuiGameStarted) {
GameMenuReturn();
}
@@ -4771,6 +4821,10 @@
{
NetworkExitServerConnect();
+ if (MetaServerInUse) {
+ SendMetaCommand("AbandonGame","");
+ }
+
NetPlayers = 0; // Make single player menus work again!
GameCancel();
}
@@ -7184,4 +7238,192 @@
#endif
}
+
+
+
+
+/**
+** FIXME: docu
+*/
+local void MultiGameMasterReport(void)
+{
+// EndMenu();
+ VideoLockScreen();
+ MenusSetBackground();
+ VideoUnlockScreen();
+ Invalidate();
+
+ ProcessMenu("menu-metaserver-list", 1);
+ if (GuiGameStarted) {
+ GameMenuReturn();
+ }
+
+}
+
+/**
+** Menu for Mater Server Game list.
+*/
+local void ShowMetaServerList(void)
+{
+ Invalidate();
+ VideoLockScreen();
+ MenusSetBackground();
+ VideoUnlockScreen();
+
+ DestroyCursorBackground();
+ GuiGameStarted = 0;
+ ProcessMenu("menu-metaserver-list", 1);
+ if (GuiGameStarted) {
+ GameMenuReturn();
+ }
+
+}
+
+
+/**
+** Multiplayer server menu init callback
+** Mohydine: Right now, because I find it simpler, the client is sending n
commands, one for each online game.
+** TODO: well, redo this :)
+*/
+local void MultiMetaServerGameSetupInit(Menuitem *mi)
+{
+ int i;
+ int j;
+ int k;
+ int numparams;
+ int nummenus;
+ char **reply;
+
+ SendMetaCommand("GameList","");
+ reply = NULL;
+ //receive
+ //check okay
+
+ // Meta server only sends matching version
+ // Only Displays games from Matching version
+ nummenus=5;
+ i=1;
+ k=0;
+ numparams=4; //TODO: To be changed if more params are sent
+
+ //Retrieve list of online game from the meta server
+ for (j=4; j <= nummenus*(numparams+1); j = j + numparams + 1) { // loop
over the number of items in the menu
+ //TODO: hard coded.
+ // Check if connection to meta server is there.
+ SendMetaCommand("NextGameInList","");
+ i=RecvMetaReply(reply);
+ if (i == 0) {
+ // fill the menus with the right info.
+ mi->menu->Items[j].d.text.text="Nick";
+ mi->menu->Items[j+1].d.text.text="IP";
+ mi->menu->Items[j+2].d.text.text="OS";
+ mi->menu->Items[j+3].d.text.text="Engine Version";
+ }
+ k++;
+ }
+ // mi->menu->Items[4].d.text.text=TheMessage->Nickname;
+ // mi->menu->Items[9].d.text.text=TheMessage->Nickname;
+ // mi->menu->Items[14].d.text.text=TheMessage->Nickname;
+}
+
+/**
+** Multiplayer server menu exit callback
+*/
+local void MultiMetaServerGameSetupExit(Menuitem *mi)
+{
+ //TODO: how to free stuff?
+
+ VideoLockScreen();
+ MenusSetBackground();
+ VideoUnlockScreen();
+ Invalidate();
+ EndMenu();
+}
+
+/**
+** Action taken when a player select an online game
+*/
+local void SelectGameServer(Menuitem *mi)
+{
+
+ char server_host_buffer[64];
+ char *port;
+ int j;
+
+ j=mi - mi->menu->Items;
+ mi->menu->Items[j].d.gem.state=MI_GSTATE_UNCHECKED;
+ VideoLockScreen();
+ MenusSetBackground();
+ VideoUnlockScreen();
+ Invalidate();
+ EndMenu();
+
+ strcpy(server_host_buffer,mi->menu->Items[j-3].d.text.text);
+
+
+ //Launch join directly
+ if ( (port = strchr(server_host_buffer, ':')) != NULL) {
+ NetworkPort = atoi(port + 1);
+ port[0] = 0;
+ }
+
+ // Now finally here is the address
+ //server_host_buffer[menu->Items[1].d.input.nch] = 0;
+ if (NetworkSetupServerAddress(server_host_buffer)) {
+ NetErrorMenu("Unable to lookup host.");
+ VideoLockScreen();
+ MenusSetBackground();
+ VideoUnlockScreen();
+ ProcessMenu("menu-metaserver-list",1);
+ return;
+ }
+ NetworkInitClientConnect();
+ if (!NetConnectRunning) {
+ TerminateNetConnect();
+ return;
+ }
+
+ if (NetworkArg) {
+ free(NetworkArg);
+ }
+ NetworkArg = strdup(server_host_buffer);
+
+ // Here we really go...
+ ProcessMenu("menu-net-connecting", 1);
+
+ if (GuiGameStarted) {
+ VideoLockScreen();
+ MenusSetBackground();
+ VideoUnlockScreen();
+ Invalidate();
+ EndMenu();
+ }
+
+
+}
+/**
+** Action to add a game server on the meta-server.
+*/
+local void AddGameServer()
+{
+ //send message to meta server. meta server will detect IP address.
+ //Meta-server will return "BUSY" if the list of online games is busy.
+
+
SendMetaCommand("AddGame","%s\n%s\n%s\n%s\n","Name","Map","Players","Free");
+
+ // FIXME: Get Reply from Queue
+
+}
+
+
+local int MetaServerConnectError()
+{
+ Invalidate();
+ NetErrorMenu("Cannot Connect to Meta-Server");
+ VideoLockScreen();
+ MenusSetBackground();
+ VideoUnlockScreen();
+ return 0;
+
+}
//@}
- [Stratagus-CVS] stratagus data/ccl/menus.ccl src/include/master...,
Russell Smith <=