stratagus-cvs
[Top][All Lists]
Advanced

[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;
+
+}
 //@}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]