home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 51 / PCGamer51_17Demos.iso / games / CM / CyclingManagerDemoCangas.exe / CyclingManagerDemo / scripts / common / admin / object_users.cnc < prev    next >
Text File  |  2001-06-02  |  11KB  |  401 lines

  1. // Message box callback
  2. func void KickUser_Callback(i32x _iResult)
  3. {
  4.     var szx szLogin;
  5.     if(_iResult == g_iTypeOkDialog)
  6.     {
  7.         if(oAdminUsers.m_iSelectedUserMode==G_iRegisteredUser)
  8.         {
  9.  
  10.             szLogin = Join_GetStringFromKey(g_oMenuJoins.m_jUser_szLogin,oAdminUsers.m_iSelectedUserId);
  11.             
  12.             // Unsubscribe user
  13.             g_oMenuServer.m_oServer << mGame_AdminKickUser(szLogin);
  14.         }
  15.         else
  16.         {
  17.             szLogin = Join_GetStringFromKey(g_oMenuJoins.m_jGuest_szLogin,oAdminUsers.m_iSelectedUserId);
  18.  
  19.             // Kick guest user
  20.             g_oMenuServer.m_oServer << mGame_AdminKickGuest(szLogin);
  21.         }
  22.     }
  23. }
  24. //Object User Item Create func
  25. //----------------------------------------------------------------------------------------------------------------//
  26. func void Object_Users_Item_Create ()
  27. {
  28.     var i32x id;
  29.     SetComponentNumber(6);
  30.  
  31.     // Members number to save guest flag and user id
  32.     SetObjectMembersNumber(2);
  33.  
  34.     // back
  35.     oUserItem.m_cBack=InitContainer(tCommonTableBorder);
  36.     SetContainerSize(oUserItem.m_cBack,480,32);
  37.     SetEvents(oUserItem.m_cBack,GUI_NoEvent);
  38.  
  39.     // selection
  40.     oUserItem.m_cSelection=InitContainer(tCommonTableBorder);
  41.     SetContainerColor(oUserItem.m_cSelection,c_ListSelection);
  42.     SetContainerSize(oUserItem.m_cSelection, 480, 32);
  43.     SetComponentClipper(oUserItem.m_cSelection, 0, 0, 480, 32);
  44.     SetComponentVisibleStatus(oUserItem.m_cSelection,false);
  45.  
  46.     // User name
  47.     oUserItem.m_cName = InitContainer(tFontArial);
  48.     SetComponentSize(oUserItem.m_cName,204,16);
  49.     SetComponentPosition(oUserItem.m_cName,0,8);
  50.  
  51.     // User info
  52.     oUserItem.m_cInfo = InitContainer(tFontArial);
  53.     SetContainerOffset(oUserItem.m_cInfo,-1);
  54.     SetComponentSize(oUserItem.m_cInfo,96,16);
  55.     SetComponentPosition(oUserItem.m_cInfo,204,8);
  56.  
  57.     // Connected or not ?
  58.     oUserItem.m_cConnected = InitContainer(tFontArial);
  59.     SetContainerOffset(oUserItem.m_cConnected,-1);
  60.     SetComponentSize(oUserItem.m_cConnected,132,16);
  61.     SetComponentPosition(oUserItem.m_cConnected,300,8);
  62.  
  63.     SetObjectSize(480,32);
  64. }
  65. //Object User Item Update func
  66. //----------------------------------------------------------------------------------------------------------------//
  67. func void Object_Users_Item_Update (i32x _iItemID)
  68. {
  69.     var i32x iGuestIndex;
  70.     var i32x iGuestID;
  71.     var szx szLogin;
  72.  
  73.     iGuestIndex = _iItemID+oAdminUsers.m_iFirstGuest;
  74.     iGuestID =    Join_GetIntFromSortedIndex(        g_oMenuJoins.m_jGuest_iId,        iGuestIndex);
  75.     szLogin =    Join_GetStringFromSortedIndex(    g_oMenuJoins.m_jGuest_szLogin,    iGuestIndex);
  76.  
  77.     // back color
  78.     if ((_iItemID%2)==0) SetContainerColor(oUserItem.m_cBack,MakeARGB(50,255,255,255));
  79.     else SetContainerColor(oUserItem.m_cBack,MakeARGB(75,255,255,255));
  80.  
  81.     // Guest or user
  82.     if(_iItemID<oAdminUsers.m_iNumGuests)
  83.     {
  84.         // Guest user
  85.  
  86.         // Update members
  87.         Seti32x(0,G_iGuestUser);
  88.         Seti32x(1,iGuestID);
  89.  
  90.         // Fill item
  91.         SetContainerText(oUserItem.m_cName,szLogin);
  92.  
  93.         // Guest user
  94.         SetContainerText(oUserItem.m_cInfo,GetLocalizedFromGMKey(176));
  95.  
  96.         // Guest user is always connected !
  97.         SetContainerText(oUserItem.m_cConnected,GetLocalizedFromGMKey(175));
  98.     }
  99.     else
  100.     {
  101.         // Registered user
  102.         var i32x iUserID;
  103.         var szx szTeam;
  104.  
  105.         // tutu debug : this is slow
  106.         iUserID = Join_FindKeyFromStringData(g_oMenuJoins.m_jUser_szLogin, szLogin);
  107.  
  108.         // Update members
  109.         Seti32x(0,G_iRegisteredUser);
  110.         Seti32x(1,iUserID);
  111.         
  112.         // Fill item
  113.         SetContainerText(oUserItem.m_cName,Join_GetStringFromKey(g_oMenuJoins.m_jUser_szPseudo,iUserID));
  114.         
  115.         // team
  116.         szTeam = Join_GetStringFromKey(g_oMenuJoins.m_jUser_szTeamAbrev,iUserID);
  117.         SetContainerText(oUserItem.m_cInfo,szTeam);
  118.         
  119.         // connected ?
  120.         if(Join_GetIntFromKey(g_oMenuJoins.m_jUser_iConnected,iUserID)==1)
  121.         {
  122.             //print("User ");print(itoa(iUserID));print(" Connected.");
  123.             if(Join_GetIntFromKey(g_oMenuJoins.m_jUser_iReady,iUserID)==1)
  124.             {
  125.                 //print("User ");print(itoa(iUserID));print(" ready.");
  126.                 SetContainerText(oUserItem.m_cConnected,GetLocalizedFromGMKey(379));
  127.             }
  128.             else
  129.             {
  130.                 SetContainerText(oUserItem.m_cConnected,GetLocalizedFromGMKey(381));
  131.             }
  132.         }
  133.         else
  134.         {
  135.             //print("User ");print(itoa(iUserID));print(" Not Connected.");
  136.             SetContainerText(oUserItem.m_cConnected,GetLocalizedFromGMKey(437));
  137.         }
  138.         // admin ?
  139.         if(IsAdmin())
  140.         {
  141.             SetContainerColor(oUserItem.m_cName,c_Highlight);
  142.         }
  143.         else
  144.         {
  145.             SetContainerColor(oUserItem.m_cName,c_White);
  146.         }
  147.     }
  148. }
  149. //Onglet_Results Item Event func
  150. //----------------------------------------------------------------------------------------------------------------//
  151. func i32x Object_Users_Item_Event (i32x _iComponentID, i32x _iEvent)
  152. {
  153.     if (_iComponentID == -1)
  154.     {
  155.         if (_iEvent == GUI_LIST_UNSELECTITEM)
  156.         {
  157.             SetComponentVisibleStatus(oUserItem.m_cSelection,false);
  158.         }
  159.  
  160.         if (_iEvent == GUI_LIST_SELECTITEM)
  161.         {
  162.             oAdminUsers.m_iSelectedUserMode = Geti32x(0);
  163.             oAdminUsers.m_iSelectedUserId = Geti32x(1);
  164.             SetComponentVisibleStatus(oUserItem.m_cSelection,true);
  165.         }
  166.     }
  167.     
  168.     if (_iEvent == GUI_COMPONENT_MOUSE_LDOWN)
  169.     {
  170.         if (_iComponentID != oUserItem.m_cSelection)
  171.         {
  172.             PlaySound(0,sbClickSound[0]);
  173.             PushEvent(GUI_LIST_SELECTION);
  174.         }
  175.     }
  176.     return 1;
  177. }
  178.  
  179. // Query callback
  180. func void vFillUsersList()
  181. {
  182.     var component pOld;
  183.     var i32x i;
  184.     var i32x iNumRows;
  185.     var i32x iStatus;
  186.  
  187.     // Delete old join if any
  188.     vObjectUsers_DeleteJoins();
  189.  
  190.     // Create joins
  191.     vObjectUsers_CreateJoins();
  192.  
  193.     // Save current context
  194.     pOld = GetParserComponent();
  195.  
  196.     // Set object users context
  197.     SetParserComponent(oAdminUsers.pThis);
  198.  
  199.     // number of users/guests
  200.     i = 0;
  201.     iNumRows = Join_GetNumRows(g_oMenuJoins.m_jGuest_iFree);
  202.     oAdminUsers.m_iNumFree = 0;
  203.     oAdminUsers.m_iNumGuests = 0;
  204.     oAdminUsers.m_iNumUsers = 0;
  205.     while (i<iNumRows)
  206.     {
  207.         iStatus = Join_GetIntFromIndex(g_oMenuJoins.m_jGuest_iFree,i);
  208.         if (iStatus==0)
  209.         {
  210.             oAdminUsers.m_iNumFree    =  oAdminUsers.m_iNumFree+1;
  211.         }
  212.         else if (iStatus==1)
  213.         {
  214.             oAdminUsers.m_iNumGuests    =  oAdminUsers.m_iNumGuests+1;
  215.         }
  216.         else if (iStatus==2)
  217.         {
  218.             oAdminUsers.m_iNumUsers    =  oAdminUsers.m_iNumUsers+1;
  219.         }
  220.         i = i+1;
  221.     }
  222.  
  223.     // sorted acces
  224.     Join_Sort(g_oMenuJoins.m_jGuest_iFree,1);
  225.     oAdminUsers.m_iFirstGuest = Join_FindSortedIntData(g_oMenuJoins.m_jGuest_iFree,g_iGUEST_STATUS_Guest);
  226.     if (oAdminUsers.m_iFirstGuest<0)
  227.         oAdminUsers.m_iFirstGuest  = Join_FindSortedIntData(g_oMenuJoins.m_jGuest_iFree,g_iGUEST_STATUS_User);
  228.     
  229.         // Create list
  230.     if(oAdminUsers.m_cList == ID_NOT_CREATED)
  231.     {
  232.         oAdminUsers.m_cList =  InitList(
  233.             "Users List", // List name
  234.             32, // Max item number
  235.             500,300, // Width, height
  236.             Object_Users_Item_Create,Object_Users_Item_Update,Object_Users_Item_Event, // Item oFunc
  237.             t_btn_slider, // Slider texture
  238.             NullButtonState);    // State func for the slider
  239.         SetComponentPosition(oAdminUsers.m_cList,0,50);
  240.     }
  241.     SetListNbItems(oAdminUsers.m_cList,oAdminUsers.m_iNumUsers + oAdminUsers.m_iNumGuests);
  242.  
  243.     if(oAdminUsers.m_iNumUsers + oAdminUsers.m_iNumGuests>0)
  244.     {
  245.         SetListSelectedItem(oAdminUsers.m_cList,0);
  246.         SetListPosition(oAdminUsers.m_cList,0);
  247.     }
  248.  
  249.     // Restore context
  250.     SetParserComponent(pOld);
  251.  
  252. }
  253.  
  254. func void vObjectUsers_DeleteJoins()
  255. {
  256. }
  257.  
  258. func void vObjectUsers_CreateJoins()
  259. {
  260. }
  261.  
  262. func void Object_Users_Create()
  263. {
  264.     var i32x id;
  265.     //Get Current Context
  266.     oAdminUsers.pThis=GetParserComponent();
  267.  
  268.     // Component number
  269.     SetComponentNumber(21);
  270.  
  271.     // Title background
  272.     id=InitContainer(tCommonTableBorder);
  273.     SetContainerColor(id,c_TitleList);
  274.     SetContainerSize(id,500,15);
  275.     SetComponentPosition(id,0,35);
  276.     SetEvents(id,GUI_NoEvent);
  277.  
  278.     // Game Password
  279.     // password caption
  280.     //id = InitContainer(tFontArialItalique);
  281.     //SetContainerText(id,GetLocalizedFromGMKey(169));
  282.     //SetComponentPosition(id,220,2);
  283.     // Password background
  284.     //id = Init_LibObject_FilledCadre(tFCadre7,110,20);
  285.     //SetComponentPosition(id,316,10);
  286.     // Password editbox
  287.     //oAdminUsers.m_cPassword = InitEditBox(tFontArial,8);
  288.     //SetComponentPosition(oAdminUsers.m_cPassword,320,2);
  289.     //SetComponentSize(oAdminUsers.m_cPassword,100,16);
  290.  
  291.     // Title Column
  292.     id = InitContainer(tFontArialItalique);
  293.     SetContainerText(id,GetLocalizedFromGMKey(65)); // Name
  294.     SetContainerOffset(id,-1);
  295.     SetComponentPosition(id,0,35);
  296.     id = InitContainer(tFontArialItalique);
  297.     SetContainerText(id,GetLocalizedFromGMKey(7)); // team
  298.     SetContainerOffset(id,-1);
  299.     SetComponentPosition(id,204,35);
  300.     id = InitContainer(tFontArialItalique);
  301.     SetContainerText(id,GetLocalizedFromGMKey(178)); // status
  302.     SetContainerOffset(id,-1);
  303.     SetComponentPosition(id,300,35);
  304.  
  305.     // Slider background
  306.     id=InitContainer(tCommonTableBorder);
  307.     SetContainerColor(id,c_TitleList);
  308.     SetContainerSize(id,20,300);
  309.     SetComponentPosition(id,480,50);
  310.  
  311.     // Create list
  312.     oAdminUsers.m_cList =  InitList(
  313.         "Users List", // List name
  314.         96, // Max item number
  315.         500,300, // Width, height
  316.         Object_Users_Item_Create,Object_Users_Item_Update,Object_Users_Item_Event, // Item oFunc
  317.         t_btn_slider, // Slider texture
  318.         NullButtonState);    // State func for the slider
  319.     SetComponentPosition(oAdminUsers.m_cList,0,50);
  320.  
  321.     // Horizontal line
  322.     id = InitContainer(tCommonTableBorder);
  323.     SetContainerSize(id,500,1);
  324.     SetComponentPosition(id,0,35);
  325.  
  326.     id = InitContainer(tCommonTableBorder);
  327.     SetContainerSize(id,500,1);
  328.     SetComponentPosition(id,0,50);
  329.  
  330.     id = InitContainer(tCommonTableBorder);
  331.     SetContainerSize(id,500,1);
  332.     SetComponentPosition(id,0,350);
  333.  
  334.     // Vertical line
  335.     id = InitContainer(tCommonTableBorder);
  336.     SetContainerSize(id,1,315);
  337.     SetComponentPosition(id,0,35);
  338.  
  339.     id = InitContainer(tCommonTableBorder);
  340.     SetContainerSize(id,1,315);
  341.     SetComponentPosition(id,204,35);
  342.  
  343.     id = InitContainer(tCommonTableBorder);
  344.     SetContainerSize(id,1,315);
  345.     SetComponentPosition(id,300,35);
  346.  
  347.     id = InitContainer(tCommonTableBorder);
  348.     SetContainerSize(id,1,315);
  349.     SetComponentPosition(id,480,35);
  350.  
  351.     id = InitContainer(tCommonTableBorder);
  352.     SetContainerSize(id,1,315);
  353.     SetComponentPosition(id,500,35);
  354.  
  355.     // kick button
  356.     oAdminUsers.m_cKick = InitLibMultiSpriteButtonWithText(tButton32Multi,9,GetLocalizedFromGMKey(174),tFontArial,0);
  357.     SetComponentPosition(oAdminUsers.m_cKick,500-GetComponentWidth(oAdminUsers.m_cKick),375);
  358.  
  359.     // admin ?
  360.     if(IsAdmin())
  361.     {
  362.         SetComponentVisibleStatus(oAdminUsers.m_cKick,true);
  363.     }
  364.     else
  365.     {
  366.         SetComponentVisibleStatus(oAdminUsers.m_cKick,false);
  367.  
  368.     }
  369.     // Defaul object size
  370.     AutoResize();
  371. }
  372.  
  373. func i32x Object_Users_Event(i32x _iComponentID,i32x _iEvent)
  374. {
  375.     if(_iComponentID == -1)
  376.     {
  377.         if(_iEvent == GUI_COMPONENT_DESTRUCTOR)
  378.         {
  379.             vObjectUsers_DeleteJoins();
  380.  
  381.             oAdminUsers.pThis = g_poNullComponent;
  382.             oAdminUsers.m_cList = ID_NOT_CREATED;
  383.         }
  384.     }
  385.     if(_iEvent == GUI_BUTTON_PRESSED)
  386.     {
  387.         if(_iComponentID == oAdminUsers.m_cKick)
  388.         {
  389.             // Ask before kick user
  390.             CreateMessageBox(GetLocalizedFromGMKey(438),g_iTypeOkCancelDialog,KickUser_Callback);
  391.         }
  392.     }
  393.     return 1;
  394. }
  395.  
  396. func void Object_Users_InitMembers()
  397. {
  398.     oAdminUsers.oFunc.pcreate    = Object_Users_Create;
  399.     oAdminUsers.oFunc.pevent    = Object_Users_Event;
  400. }
  401.