home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 51 / PCGamer51_17Demos.iso / games / CM / CyclingManagerDemoCangas.exe / CyclingManagerDemo / scripts / common / multiplayer / page_multi.cnc < prev    next >
Text File  |  2001-07-02  |  20KB  |  533 lines

  1. func void ConfirmOnlineDelete_MessageBoxCallback(i32x _iResult)
  2. {
  3.     if(_iResult == g_iTypeOkDialog)
  4.     {
  5.         var i32x iSlotID;
  6.  
  7.         // Selected team
  8.         iSlotID = oPage_MultiPlayer.m_iSelectedSlotId;
  9.  
  10.         DeleteOnlineSlot(iSlotID);
  11.     }
  12. }
  13.  
  14. func void DeleteOnlineSlot(i32x _iSlotID)
  15. {
  16.     var i32x iTableSlot;
  17.  
  18.     iTableSlot = Table_GetIndexFromName(DATABASE_LOCAL,"GAM_slot_multi");
  19.  
  20.     // delete row in database
  21.     Table_DeleteRowFromKey(DATABASE_LOCAL,iTableSlot,_iSlotID);
  22.  
  23.     Table_Update(DATABASE_LOCAL,iTableSlot);
  24.     Table_Sort(DATABASE_LOCAL,"GAM_slot_multi","gene_i_date",-1);
  25. }
  26.  
  27. func i32x iCreateNewOnlineGame(i32x _iGameMode,szx _szGameName,szx _szGamePassword)
  28. {
  29.     var szx szDatabase;
  30.     var i32x iTableSlot,iNewRow,iSlotId;
  31.     // add row in database
  32.     iTableSlot = Table_GetIndexFromName(DATABASE_LOCAL,"GAM_slot_multi");
  33.     iNewRow = Table_AddRow(DATABASE_LOCAL,iTableSlot);
  34.     iSlotId = Join_GetIntFromIndex(    g_oLocalJoins.m_iMSlot_iId,    iNewRow);
  35.  
  36.     szDatabase = strcat("Multi_",itoa(iSlotId));
  37.  
  38.     Join_SetIntFromIndex(g_oLocalJoins.m_iMSlot_iGameMode,iNewRow,_iGameMode);
  39.     Join_SetIntFromIndex(g_oLocalJoins.m_iMSlot_bFirstLaunch,iNewRow,1);
  40.     Join_SetStringFromIndex(g_oLocalJoins.m_iMSlot_szDatabase,iNewRow,szDatabase);
  41.     Join_SetStringFromIndex(g_oLocalJoins.m_iMSlot_szName,iNewRow,_szGameName);
  42.     Join_SetStringFromIndex(g_oLocalJoins.m_iMSlot_szPass,iNewRow,_szGamePassword);
  43.     Join_SetIntFromIndex(g_oLocalJoins.m_iMSlot_iDate,iNewRow,GetLocalTime());
  44.     Join_SetIntFromIndex(g_oLocalJoins.m_iMSlot_bGameOver,iNewRow,0);
  45.  
  46.     Table_Update(DATABASE_LOCAL,iTableSlot);
  47.  
  48.     return iSlotId;
  49. }
  50.  
  51. func void fnCreateMultiplayer(i32x _iSlotId,i32x _iStartingDay)
  52. {
  53.     var szx szDatabase,szName,szPassword;
  54.     var i32x bFirstLaunch;
  55.  
  56.     // create waiting dialog    
  57.     CreateDialog(DIALOG_LOADING_DATA);
  58.  
  59.     // Database dest name
  60.     szDatabase = Join_GetStringFromKey(g_oLocalJoins.m_iMSlot_szDatabase,_iSlotId);
  61.     szDatabase = strcat("Database/",szDatabase);
  62.     szDatabase = strcat(szDatabase,".cdb");
  63.  
  64.     // First launch
  65.     bFirstLaunch = Join_GetIntFromKey(g_oLocalJoins.m_iMSlot_bFirstLaunch,_iSlotId);
  66.     Join_SetIntFromKey(g_oLocalJoins.m_iMSlot_bFirstLaunch,_iSlotId,0);
  67.  
  68.     // Game mode
  69.     g_oGameConfig.m_iGameMode =  Join_GetIntFromKey(g_oLocalJoins.m_iMSlot_iGameMode,_iSlotId);
  70.     
  71.     // Game Name
  72.     szName        = Join_GetStringFromKey(g_oLocalJoins.m_iMSlot_szName,_iSlotId);
  73.     szPassword    = Join_GetStringFromKey(g_oLocalJoins.m_iMSlot_szPass,_iSlotId);
  74.  
  75.     print("create menu server\n");
  76.     print("ip:");print(g_oLobby.m_szIP);print(" port:");println(itoa(g_oLobby.m_iGamePort));
  77.     print("name:");print(szName);print("password:");println(szPassword);
  78.     print("admin:");print(g_oUser.m_szLogin);print(" password:");println(g_oUser.m_szPass);
  79.     print("database:");println(szDatabase);
  80.  
  81.     // create menu server
  82.     CreateMenuServer(
  83.         g_oLobby.m_szIP,g_oLobby.m_iGamePort,
  84.         szName, szPassword,
  85.         g_oUser.m_szLogin,g_oUser.m_szPass,
  86.         bFirstLaunch, "Database/Database.cdb", g_oGameConfig.m_iGameMode, _iStartingDay,
  87.         szDatabase
  88.     );
  89.  
  90.     if (g_oGameConfig.m_iInternet==0)
  91.     {
  92.         // ** lan **
  93.         fnLanBroadcast_CreateReceiver();
  94.     }
  95.  
  96.     // Online mode
  97.     g_oGameConfig.m_iSinglePlayer = 0;
  98.  
  99.     // Valid slot
  100.     g_oUser.m_iCurrentSlotId = _iSlotId;
  101. }
  102. //----------------------------------------------------------------------------------------------------------------//
  103. //----------------------------------------------------------------------------------------------------------------//
  104. //PageServers Window Create func
  105. //----------------------------------------------------------------------------------------------------------------//
  106. //----------------------------------------------------------------------------------------------------------------//
  107. func void Page_MultiPlayer_Create ()
  108. {
  109.     var i32x id;
  110.     var i32x iNumServers;
  111.     
  112.     g_oGameConfig.m_iSinglePlayer = 0;
  113.     
  114.     // ** Lan ** 
  115.     // default login = machine name
  116.     if (g_oGameConfig.m_iInternet==0)
  117.     {
  118.         g_oUser.m_szLogin = Join_GetStringFromIndex(g_oLocalJoins.m_iUser_szName,0);
  119.         if (strcmp(g_oUser.m_szLogin,"0")==0)
  120.         {
  121.             g_oUser.m_szLogin = GetHostName();
  122.             Join_SetStringFromIndex(g_oLocalJoins.m_iUser_szName,0,g_oUser.m_szLogin);
  123.         }
  124.     }
  125.  
  126.     // Get current context
  127.     oPage_MultiPlayer.pthis = GetParserComponent();
  128.     
  129.     // destroy loading dialog if found (return from bad login)
  130.     if (oManager.iDialogID == DIALOG_LOADING_DATA)
  131.     {
  132.         DestroyDialog();
  133.     }
  134.  
  135.     // reset net flags
  136.     g_oInRaceServer.m_iCanStartRace = 0;
  137.  
  138.     // destroy menu if found
  139.     HideMenuPrincipal();
  140.  
  141.     // *** Update Title Bar ***
  142.     Set_Title_Bar_Text(GetLocalizedFromGMKey(361)); // page title
  143.  
  144.     SetComponentNumber(25);
  145.  
  146.     // multi player frame
  147.     id = Init_LibObject_FilledCadre(tCadreDialbox,700,550);
  148.  
  149.     // new game
  150.     oPage_MultiPlayer.c_new_multi_game = Init_LibObject_MultiRadioButtonWithText(tButton32Multi,10,GetLocalizedFromGMKey(372),tFontArial,1441);
  151.     SetTextButtonStateFunc(oPage_MultiPlayer.c_new_multi_game,CheckBoxMultiState,MultiRadioButtonWithText_TextState);
  152.     SetComponentPosition(oPage_MultiPlayer.c_new_multi_game, 5, 40);
  153.  
  154.     // load game
  155.     oPage_MultiPlayer.c_load_multi_game = Init_LibObject_MultiRadioButtonWithText(tButton32Multi,10,GetLocalizedFromGMKey(446),tFontArial,1445);
  156.     SetTextButtonStateFunc(oPage_MultiPlayer.c_load_multi_game,CheckBoxMultiState,MultiRadioButtonWithText_TextState);
  157.     SetComponentPosition(oPage_MultiPlayer.c_load_multi_game, 220, 40);
  158.  
  159.     // join game (lan only)
  160.     if (g_oGameConfig.m_iInternet==0)
  161.     {
  162.         oPage_MultiPlayer.c_join_multi_game = Init_LibObject_MultiRadioButtonWithText(tButton32Multi,10,GetLocalizedFromGMKey(373),tFontArial,1457);
  163.         SetTextButtonStateFunc(oPage_MultiPlayer.c_join_multi_game,CheckBoxMultiState,MultiRadioButtonWithText_TextState);
  164.         SetComponentPosition(oPage_MultiPlayer.c_join_multi_game, 455, 40);
  165.     }
  166.  
  167.     // Horizontal line
  168.     id = InitContainer(tCommonTableBorder);
  169.     SetContainerSize(id,650,1);
  170.     SetComponentPosition(id,5,70);
  171.  
  172.     oPage_MultiPlayer.m_iConfirm = false;
  173.     Table_Sort(DATABASE_LOCAL,"GAM_slot_multi","gene_i_date",-1);
  174.     // Game mode object
  175.     oPage_MultiPlayer.m_cGameMode = InitObject(
  176.         "GameMode",
  177.         GameMode_Dialog_Create,
  178.         GameMode_Dialog_Event
  179.     );
  180.     SetComponentPosition(oPage_MultiPlayer.m_cGameMode,40,80);
  181.  
  182.     // slot object
  183.     Slot_InitJoin(g_oLocalJoins.m_iMSlot_iId,g_oLocalJoins.m_iMSlot_iDate,g_oLocalJoins.m_iMSlot_iStageId,g_oLocalJoins.m_iMSlot_iGameMode,g_oLocalJoins.m_iMSlot_bGameOver);
  184.     oPage_MultiPlayer.m_cSlotlist = InitObject(
  185.         "GameSlot",
  186.         Object_GameSlot_Create,
  187.         Object_GameSlot_Event
  188.     );
  189.     SetStackEvents(oPage_MultiPlayer.m_cGameMode,GUI_Destroy);
  190.     SetComponentPosition(oPage_MultiPlayer.m_cSlotlist,55,150-15);
  191.  
  192.     // Game server object
  193.     oPage_MultiPlayer.m_cGamelist = InitObject(
  194.         "GameList",
  195.         Object_GameServerListbox_Create,
  196.         Object_GameServerListbox_Event
  197.     );
  198.     SetComponentPosition(oPage_MultiPlayer.m_cGamelist,55,150-15);
  199.  
  200.     // Launch buttons
  201.     oPage_MultiPlayer.m_cCreate = InitLibMultiSpriteButtonWithText(tButton32Multi,8,GetLocalizedFromGMKey(367),tFontArial,0);
  202.     SetComponentPosition(oPage_MultiPlayer.m_cCreate,325-GetComponentWidth(oPage_MultiPlayer.m_cCreate)/2,480);
  203.  
  204.     oPage_MultiPlayer.m_cLoad = InitLibMultiSpriteButtonWithText(tButton32Multi,8,GetLocalizedFromGMKey(368),tFontArial,0);
  205.     SetComponentPosition(oPage_MultiPlayer.m_cLoad,325-GetComponentWidth(oPage_MultiPlayer.m_cLoad)/2,480);
  206.  
  207.     oPage_MultiPlayer.m_cDelete = InitLibMultiSpriteButtonWithText(tButton32Multi,7,GetLocalizedFromGMKey(416),tFontArial,1508);
  208.     SetComponentPosition(oPage_MultiPlayer.m_cDelete,650-GetComponentWidth(oPage_MultiPlayer.m_cDelete),480);
  209.  
  210.     oPage_MultiPlayer.m_cJoin = InitLibMultiSpriteButtonWithText(tButton32Multi,8,GetLocalizedFromGMKey(376),tFontArial,0);
  211.     SetComponentPosition(oPage_MultiPlayer.m_cJoin,325-GetComponentWidth(oPage_MultiPlayer.m_cJoin)/2,480);
  212.  
  213.     oPage_MultiPlayer.m_cRefresh = InitLibMultiSpriteButtonWithText(tButton32Multi,7,GetLocalizedFromGMKey(436),tFontArial,0);
  214.     SetComponentPosition(oPage_MultiPlayer.m_cRefresh,650-GetComponentWidth(oPage_MultiPlayer.m_cRefresh ),480);
  215.  
  216.     /*
  217.     oPage_MultiPlayer.m_cGateway = InitLibMultiSpriteButtonWithText(tButton32Multi,6,GetLocalizedFromGMKey(293),tFontArial,0);
  218.     SetComponentPosition(oPage_MultiPlayer.m_cGateway,5,480);
  219.     */
  220.  
  221.     // Default game selection : new
  222.     oPage_MultiPlayer.m_iSelectedSlotId = -1;
  223.     oPage_MultiPlayer.m_iMode = 0;
  224.     SetTextRadioButtonCheckBox(oPage_MultiPlayer.c_new_multi_game,true);
  225.     SetComponentVisibleStatus(oPage_MultiPlayer.m_cSlotlist,false);
  226.     SetComponentVisibleStatus(oPage_MultiPlayer.m_cLoad,false);
  227.     SetComponentVisibleStatus(oPage_MultiPlayer.m_cDelete,false);
  228.     SetComponentVisibleStatus(oPage_MultiPlayer.m_cGamelist,false);
  229.     SetComponentVisibleStatus(oPage_MultiPlayer.m_cJoin,false);
  230.     SetComponentVisibleStatus(oPage_MultiPlayer.m_cRefresh,false);
  231.  
  232.     DisplayMenuPrincipal();
  233.     SetObjectSize(700,525);
  234. }
  235.  
  236. //----------------------------------------------------------------------------------------------------------------//
  237. //----------------------------------------------------------------------------------------------------------------//
  238. //PageServers Window Event func
  239. //----------------------------------------------------------------------------------------------------------------//
  240. //----------------------------------------------------------------------------------------------------------------//
  241. func i32x Page_MultiPlayer_Event (i32x _iComponentID,i32x _iEvent)
  242. {
  243.     if(_iEvent == GUI_RADIOBUTTON_CHANGED)
  244.     {
  245.         PlaySound(0,sbClickSound[0]);
  246.  
  247.         if (_iComponentID == oPage_MultiPlayer.c_new_multi_game)
  248.         {
  249.             // Select new game onglet
  250.             oPage_MultiPlayer.m_iMode = 0;
  251.             SetTextRadioButtonCheckBox(oPage_MultiPlayer.c_load_multi_game,false);
  252.  
  253.             if (g_oGameConfig.m_iInternet==0)
  254.             {
  255.                 SetTextRadioButtonCheckBox(oPage_MultiPlayer.c_join_multi_game,false);
  256.             }
  257.  
  258.             // Hide game list
  259.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cGamelist,false);
  260.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cJoin,false);
  261.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cRefresh,false);
  262.             // Hide slot
  263.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cSlotlist,false);
  264.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cLoad,false);
  265.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cDelete,false);
  266.             // show game mode
  267.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cGameMode,true);
  268.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cCreate,true);
  269.         }
  270.         else if(_iComponentID == oPage_MultiPlayer.c_load_multi_game)
  271.         {
  272.             // Select load game onglet
  273.             oPage_MultiPlayer.m_iMode = 1;
  274.             SetTextRadioButtonCheckBox(oPage_MultiPlayer.c_new_multi_game,false);
  275.  
  276.             if (g_oGameConfig.m_iInternet==0)
  277.             {
  278.                 SetTextRadioButtonCheckBox(oPage_MultiPlayer.c_join_multi_game,false);
  279.             }
  280.  
  281.             // Hide game list
  282.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cGamelist,false);
  283.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cJoin,false);
  284.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cRefresh,false);
  285.             // show slot
  286.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cSlotlist,true);
  287.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cLoad,true);
  288.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cDelete,true);
  289.             // hide game mode
  290.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cGameMode,false);
  291.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cCreate,false);
  292.         }
  293.         else if ((_iComponentID == oPage_MultiPlayer.c_join_multi_game) && (g_oGameConfig.m_iInternet==0))
  294.         {
  295.             // Select Join game onglet
  296.             oPage_MultiPlayer.m_iMode = 2;
  297.             SetTextRadioButtonCheckBox(oPage_MultiPlayer.c_load_multi_game,false);
  298.             SetTextRadioButtonCheckBox(oPage_MultiPlayer.c_new_multi_game,false);
  299.  
  300.             // Show game list
  301.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cGamelist,true);
  302.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cJoin,true);
  303.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cRefresh,true);
  304.             // hide slot
  305.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cSlotlist,false);
  306.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cLoad,false);
  307.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cDelete,false);
  308.             // hide game mode
  309.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cGameMode,false);
  310.             SetComponentVisibleStatus(oPage_MultiPlayer.m_cCreate,false);
  311.         }
  312.     }
  313.     else if(_iEvent == GUI_BUTTON_PRESSED)
  314.     {
  315.         PlaySound(0,sbClickSound[0]);
  316.  
  317.         if(_iComponentID == oPage_MultiPlayer.m_cGateway)
  318.         {
  319.             CreateDialog(DIALOG_LOGIN);
  320.         }
  321.         else if(_iComponentID == oPage_MultiPlayer.m_cCreate)
  322.         {
  323.             // create game
  324.             // Create a new slot
  325.             var i32x iSlotId;
  326.             iSlotId = iCreateNewOnlineGame(oGameMode_Dialog.m_iSelectedGameMode,g_oUser.m_szLogin,"");
  327.             fnCreateMultiplayer(iSlotId,oGameMode_Dialog.m_iSelectedStartingDay);
  328.         }
  329.         else if(_iComponentID == oPage_MultiPlayer.m_cLoad)
  330.         {
  331.             // load game
  332.             oPage_MultiPlayer.m_iSelectedSlotId = oObject_GameSlot.m_iSelectedSlotId;
  333.             if(oPage_MultiPlayer.m_iSelectedSlotId>0)
  334.             {
  335.                 // starting day is no more valid
  336.                 fnCreateMultiplayer(oPage_MultiPlayer.m_iSelectedSlotId,0);
  337.             }
  338.         }
  339.         else if(_iComponentID == oPage_MultiPlayer.m_cJoin)
  340.         {
  341.             if(oObject_GameServerListbox.m_iSelectedServer>=0)
  342.             {
  343.                 // No save slot
  344.                 g_oUser.m_iCurrentSlotId = 0;
  345.  
  346.                 // Join server
  347.                 if (Join_GetIntFromKey(g_oGatewayJoins.bHasPassword, oObject_GameServerListbox.m_iSelectedServer)==0)
  348.                 {
  349.                     // no password
  350.                     if (g_oGameConfig.m_iInternet)
  351.                     {
  352.                         // ** internet **
  353.                         fnInternetLogin(Join_GetStringFromKey(g_oGatewayJoins.m_iGame_szDescJoin,oObject_GameServerListbox.m_iSelectedServer),"");
  354.                     }
  355.                     else
  356.                     {
  357.                         // ** lan **
  358.                         g_oLobby.m_szIP            = Join_GetStringFromKey(    g_oGatewayJoins.szIP,    oObject_GameServerListbox.m_iSelectedServer);
  359.                         g_oLobby.m_iGamePort    = Join_GetIntFromKey(    g_oGatewayJoins.iPort,    oObject_GameServerListbox.m_iSelectedServer);
  360.                         g_oLobby.m_oServer        = NetClient_Create(        g_oLobby.m_szIP, g_oLobby.m_iGamePort, GatewayInterface, fnGatewaySimpleConnectCB, fnGatewayDisconnectCB);
  361.                     }
  362.                 }
  363.                 else
  364.                 {
  365.                     // password
  366.                     Dialog_Game_Param_Default(0,oObject_GameServerListbox.m_iSelectedServer,Join_GetStringFromKey(g_oGatewayJoins.m_iGame_szDescJoin,oObject_GameServerListbox.m_iSelectedServer),"");
  367.                     CreateDialog(DIALOG_GAME_PARAM);
  368.                 }
  369.             }
  370.         }
  371.         else if(_iComponentID == oPage_MultiPlayer.m_cDelete)
  372.         {
  373.             oPage_MultiPlayer.m_iSelectedSlotId = oObject_GameSlot.m_iSelectedSlotId;
  374.             if(oPage_MultiPlayer.m_iSelectedSlotId>0)
  375.             {
  376.                 oPage_MultiPlayer.m_iConfirm = true;
  377.                 CreateMessageBox(GetLocalizedFromGMKey(418), 1, ConfirmOnlineDelete_MessageBoxCallback);
  378.             }
  379.         }
  380.         else if(_iComponentID == oPage_MultiPlayer.m_cRefresh)
  381.         {
  382.             // ** lan **
  383.             fnLanBroadcast();
  384.         }
  385.     }
  386.     else if(_iEvent == GUI_DBLCLICK_MULTIEXIST)
  387.     {
  388.         if(oObject_GameServerListbox.m_iSelectedServer>=0)
  389.         {
  390.             // No save slot
  391.             g_oUser.m_iCurrentSlotId = 0;
  392.  
  393.             // Join server
  394.             if (Join_GetIntFromKey(g_oGatewayJoins.bHasPassword, oObject_GameServerListbox.m_iSelectedServer)==0)
  395.             {
  396.                 // no password
  397.                 if (g_oGameConfig.m_iInternet)
  398.                 {
  399.                     // ** internet **
  400.                     fnInternetLogin(Join_GetStringFromKey(g_oGatewayJoins.m_iGame_szDescJoin,oObject_GameServerListbox.m_iSelectedServer),"");
  401.                 }
  402.                 else
  403.                 {
  404.                     // ** lan **
  405.                     g_oLobby.m_szIP            = Join_GetStringFromKey(    g_oGatewayJoins.szIP,    oObject_GameServerListbox.m_iSelectedServer);
  406.                     g_oLobby.m_iGamePort    = Join_GetIntFromKey(    g_oGatewayJoins.iPort,    oObject_GameServerListbox.m_iSelectedServer);
  407.                     g_oLobby.m_oServer        = NetClient_Create(        g_oLobby.m_szIP, g_oLobby.m_iGamePort, GatewayInterface, fnGatewaySimpleConnectCB, fnGatewayDisconnectCB);
  408.                 }
  409.             }
  410.             else
  411.             {
  412.                 // password
  413.                 Dialog_Game_Param_Default(0,oObject_GameServerListbox.m_iSelectedServer,Join_GetStringFromKey(g_oGatewayJoins.m_iGame_szDescJoin,oObject_GameServerListbox.m_iSelectedServer),"");
  414.                 CreateDialog(DIALOG_GAME_PARAM);
  415.             }
  416.         }
  417.     }
  418.     else if((_iEvent == GUI_DBLCLICK_STAGE)||(_iEvent == GUI_DBLCLICK_TOUR))
  419.     {
  420.         // create game
  421.         // Create a new slot
  422.         var i32x iSlotId;
  423.         iSlotId = iCreateNewOnlineGame(oGameMode_Dialog.m_iSelectedGameMode,g_oUser.m_szLogin,"");
  424.         fnCreateMultiplayer(iSlotId,oGameMode_Dialog.m_iSelectedStartingDay);
  425.     }
  426.     else if(_iEvent == GUI_DBLCLICK_SAVE)
  427.     {
  428.         // load game
  429.         oPage_MultiPlayer.m_iSelectedSlotId = oObject_GameSlot.m_iSelectedSlotId;
  430.         if(oPage_MultiPlayer.m_iSelectedSlotId>0)
  431.         {
  432.             // starting day is no more valid
  433.             fnCreateMultiplayer(oPage_MultiPlayer.m_iSelectedSlotId,0);
  434.         }
  435.     }
  436.  
  437.     else if(_iEvent == GUI_DIALOG_RETURN)
  438.     {
  439.         if(oPage_MultiPlayer.m_iConfirm == true)
  440.         {
  441.             // Return from delete dialbox
  442.             PushEventOnChild(oPage_MultiPlayer.m_cSlotlist,GUI_COMPONENT_REFRESH);
  443.             oPage_MultiPlayer.m_iConfirm = false;
  444.         }
  445.     }
  446.     return 1;
  447. }
  448.  
  449. //----------------------------------------------------------------------------------------------------------------//
  450. //----------------------------------------------------------------------------------------------------------------//
  451. //Constructor
  452. //----------------------------------------------------------------------------------------------------------------//
  453. //----------------------------------------------------------------------------------------------------------------//
  454. func i32x Page_MultiPlayer_Constructor ()
  455. {
  456.     oPage_MultiPlayer.m_iSelectedServerIndex = 0;
  457.     
  458.     // At this point we are not logued on a game
  459.     g_oGameConfig.m_iLogued = false;
  460.  
  461.     // create page
  462.     oPage_MultiPlayer.iWindowID = InitObject("PageServers",oPage_MultiPlayer.oFunc.pcreate,oPage_MultiPlayer.oFunc.pevent);
  463.     SetStackEvents(oPage_MultiPlayer.iWindowID,GUI_Mouse|GUI_Key);
  464.  
  465.     
  466.     if (g_oGameConfig.m_iInternet==0)
  467.     {        
  468.         // ** lan **
  469.         fnLanBroadcast();
  470.     }
  471.     else
  472.     {
  473.  
  474.         /*
  475.         // If already connected
  476.         if(g_oLobby.m_oServer)
  477.         {
  478.             // disconnect from gateway to allow new login
  479.             NetClient_Disconnect(g_oLobby.m_oServer);
  480.         }
  481.         
  482.         // connect to gateway
  483.         g_oLobby.m_oServer = NetClient_Create( g_oLobby.m_szIP, g_oLobby.m_iUserPort, GatewayInterface, fnGatewayConnectCB, fnGatewayDisconnectCB);
  484.         */
  485.  
  486.         // connecting to internet game
  487.         if (g_oGameConfig.m_iInternetServer==0)
  488.         {
  489.  
  490.             // ** internet **
  491.             CreateDialog(DIALOG_LOADING_DATA);
  492.  
  493.             // waiting dialog
  494.             // MistER-j WARNING LOCALIZED
  495.             Dialog_Loading_Data_SetText("Connecting to game");
  496.             
  497.             // connect to game
  498.             g_oMenuServer.m_oServer = NetClient_Create(
  499.                 g_oMenuServer.m_szIP,
  500.                 g_oMenuServer.m_iPort, 
  501.                 iClientLogin, 
  502.                 MenuServerConnectCB, 
  503.                 MenuServerDisconnectCB);
  504.         }
  505.     }
  506.  
  507.     return oPage_MultiPlayer.iWindowID;
  508. }
  509.  
  510. //----------------------------------------------------------------------------------------------------------------//
  511. //----------------------------------------------------------------------------------------------------------------//
  512. //Destructor
  513. //----------------------------------------------------------------------------------------------------------------//
  514. //----------------------------------------------------------------------------------------------------------------//
  515. func void Page_MultiPlayer_Destructor ()
  516. {
  517.     // delete page
  518.     DeleteComponent(oPage_MultiPlayer.iWindowID);
  519. }
  520.  
  521. //----------------------------------------------------------------------------------------------------------------//
  522. //----------------------------------------------------------------------------------------------------------------//
  523. //Page Multiplayer Window Init member
  524. //----------------------------------------------------------------------------------------------------------------//
  525. //----------------------------------------------------------------------------------------------------------------//
  526.  
  527. func void Page_MultiPlayer_InitMembers ()
  528. {
  529.     oPage_MultiPlayer.oFunc.pcreate    = Page_MultiPlayer_Create;
  530.     oPage_MultiPlayer.oFunc.pevent    = Page_MultiPlayer_Event;
  531. }
  532.  
  533.