home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 51 / PCGamer51_17Demos.iso / games / CM / CyclingManagerDemoCangas.exe / CyclingManagerDemo / scripts / inrace / groups_team_time_trial.cnc next >
Text File  |  2001-05-25  |  6KB  |  208 lines

  1. //groups management (visu + interface)
  2.  
  3. func void Groups_Team_Time_Trial_UpdateButtonStates()
  4. {
  5.     var i32x i;
  6.     
  7.     i=0;
  8.     while(i<oGroups.m_iNumGroups)
  9.     {
  10.         if (GetCyclistPreRaceTeamID(GetActiveCyclistPreRaceID()) == i)
  11.         {
  12.             SetTextRadioButtonCheckBox(oGroups.m_cGroups[i],1);
  13.         }
  14.         else
  15.         {
  16.             SetTextRadioButtonCheckBox(oGroups.m_cGroups[i],0);
  17.         }
  18.         i=i+1;
  19.     }
  20. }
  21.  
  22.  
  23. func void Groups_Team_Time_Trial_UpdatePosition()
  24. {
  25.     var i32x i,iTextID,iBitmapId,iPosX,iPosY,iGroupNameLength,iNbCyclists,iCyclistID;
  26.     var f32x fGroupSplinePercentageDone;
  27.  
  28.     // Get Active group
  29.     oGroups.m_iActiveGroup=GetActiveGroupIndex();
  30.     
  31.     i=0;
  32.     while(i<oGroups.m_iNumGroups)
  33.     {
  34.         iNbCyclists=GetTeamNumCyclists(i);
  35.         
  36.         if(iNbCyclists>0)
  37.         {
  38.             if (iNbCyclists>=5)
  39.                 iCyclistID=GetInTeamSortedCyclistPreraceIndex(i,4);
  40.             else
  41.                 iCyclistID=GetInTeamSortedCyclistPreraceIndex(i,iNbCyclists-1);
  42.             
  43.             fGroupSplinePercentageDone=GetCyclistSplinePercentageDone(iCyclistID);
  44.             
  45.             iPosX=iGetProfileCameraXPixelPosFromSplinePercentageDone(fGroupSplinePercentageDone);
  46.             iPosY=iGetProfileCameraYPixelPosFromAltitude(GetAltitudeFromSplinePercentageDone(fGroupSplinePercentageDone));
  47.             
  48.             iPosX=iPosX-(GetComponentWidth(oGroups.m_cGroups[i])/2)+1;
  49.             iPosY=iPosY-(GetComponentHeight(oGroups.m_cGroups[i]));
  50.             SetComponentPosition(oGroups.m_cGroups[i],iPosX,iPosY);
  51.         }
  52.         else
  53.         {
  54.             SetComponentVisibleStatus(oGroups.m_cGroups[i],0);
  55.         }
  56.  
  57.         i=i+1;
  58.     }
  59.     //update camera cursor
  60.     SetComponentPositionX(oGroups.m_iCurrent,iGetProfileCameraXPixelPosFromSplinePercentageDone(GetSplinePercentageDoneFromDistance(GetActiveCameraPosition()))-(GetComponentWidth(oGroups.m_iCurrent)/2));
  61.  
  62.     // Update RadioBtn state
  63.     Groups_Team_Time_Trial_UpdateButtonStates();
  64. }
  65.  
  66. func void Groups_Team_Time_Trial_Update()
  67. {
  68.     var i32x i;
  69.  
  70.     oGroups.m_iNumGroups = 20; // Num group = num cyclist of team
  71.  
  72.     i=20 ;
  73.     while(i>=0)
  74.     {
  75.         if(i<oGroups.m_iNumGroups)
  76.         {
  77.             var szx szGroupName;
  78.             szGroupName="";//itoa(i);
  79.             if(oGroups.m_cGroups[i]!=ID_NOT_CREATED)
  80.             {
  81.                 SetTextButtonCaption(oGroups.m_cGroups[i],szGroupName);
  82.             }
  83.             else
  84.             {
  85.                 var component pgroup;
  86.                 oGroups.m_cGroups[i] = Init_LibObject_RadioButtonWithText(t_ArrowGroup,szGroupName,0,-8);
  87.                 pgroup = GetObject(oGroups.m_cGroups[i]);
  88.                 SetParserComponent(pgroup);
  89.                 // LibObject_RadioButton context
  90.                 SetContainerOffset(1,-3);
  91.                 SetContainerScale(1,0.8,0.8);
  92.                 ResizeComponent(1);
  93.                 LibObject_UpdateButtonText();
  94.  
  95.                 // Restor context
  96.                 SetParserComponent(oGroups.pGroups);
  97.                 SetTextButtonStateFunc(oGroups.m_cGroups[i],CheckboxState,RadioButtonWithText_TextState);
  98.                 oGroups.m_cIdToIndex[oGroups.m_cGroups[i]] = i;
  99.             }
  100.         }
  101.         else if(oGroups.m_cGroups[i]!=ID_NOT_CREATED)
  102.         {
  103.             oGroups.m_cIdToIndex[oGroups.m_cGroups[i]] = ID_NOT_CREATED;
  104.             DeleteComponent(oGroups.m_cGroups[i]);
  105.             oGroups.m_cGroups[i] = ID_NOT_CREATED;
  106.         }
  107.  
  108.         i=i-1;
  109.     }
  110. }
  111.  
  112.  
  113. //----------------------------------------------------------------------------------------------------------------//
  114. //----------------------------------------------------------------------------------------------------------------//
  115. // Groups Create
  116. //----------------------------------------------------------------------------------------------------------------//
  117. //----------------------------------------------------------------------------------------------------------------//
  118. func void Groups_Team_Time_Trial_Create ()
  119. {
  120.     /*
  121.     print("--- Groups_Create\n");
  122.     print("oGroups.m_iNumGroups=");
  123.     print(itoa(oGroups.m_iNumGroups));
  124.     print("\n");
  125.     */
  126.  
  127.     // Get Context
  128.     oGroups.pGroups = GetParserComponent();
  129.  
  130.     // Max component number
  131.     SetComponentNumber(181); // (180+1)
  132.  
  133.     // Current active cyclist cursor
  134.     oGroups.m_iCurrent=InitContainer(t_IndicVideo);
  135.     SetComponentPositionY(oGroups.m_iCurrent,55);
  136.  
  137.     // Init groups array
  138.     var i32x i;
  139.     i=0;
  140.     while(i<180)
  141.     {
  142.         oGroups.m_cGroups[i] = ID_NOT_CREATED;
  143.         oGroups.m_cIdToIndex[i]  = ID_NOT_CREATED;
  144.         i=i+1;
  145.     }
  146.     oGroups.m_cIdToIndex[180] = ID_NOT_CREATED;
  147.  
  148.     // Create groups
  149.     Groups_Time_Trial_Update();
  150.  
  151.     // Update groups position
  152.     Groups_Team_Time_Trial_UpdatePosition();
  153. }
  154. //----------------------------------------------------------------------------------------------------------------//
  155. //----------------------------------------------------------------------------------------------------------------//
  156. //Groups Event func
  157. //----------------------------------------------------------------------------------------------------------------//
  158. //----------------------------------------------------------------------------------------------------------------//
  159. func i32x Groups_Team_Time_Trial_Event (i32x _iComponentID,i32x _iEvent)
  160. {
  161.     if(_iEvent == GUI_RADIOBUTTON_CHANGED)
  162.     {
  163.         var i32x iNewGroup;
  164.         iNewGroup=oGroups.m_cIdToIndex[_iComponentID];
  165.         
  166.         var i32x iNbCyclists,iCyclistID;
  167.         iNbCyclists=GetTeamNumCyclists(iNewGroup);
  168.         
  169.         if(iNbCyclists>0)
  170.         {
  171.             if (iNbCyclists>=5)
  172.                 iCyclistID=GetInTeamSortedCyclistPreraceIndex(iNewGroup,4);
  173.             else
  174.                 iCyclistID=GetInTeamSortedCyclistPreraceIndex(iNewGroup,iNbCyclists-1);
  175.             
  176.             if (oGroups.m_iActive==0)
  177.             {
  178.                 SetActiveCamera(0);
  179.                 oRace.ploop = FollowCyclistCamera;
  180.                 SetLoopFunc(oRace.ploop);
  181.                 oGroups.m_iActive = 1;
  182.             }
  183.             SetActiveCyclist(iCyclistID);
  184.         }
  185.     
  186.         oGroups.m_iActiveGroup=GetActiveGroupIndex();
  187.         Groups_Team_Time_Trial_UpdateButtonStates();
  188.         RefreshInfos();
  189.     }
  190.     else if (_iEvent==GUI_RESET_GROUPS)
  191.     {
  192.         var i32x i;
  193.         i=0;
  194.         while (i<oGroups.m_iNumGroups)
  195.         {
  196.             SetTextRadioButtonCheckBox(oGroups.m_cGroups[i],0);
  197.             i=i+1;
  198.         }
  199.         oGroups.m_iActive = 0;
  200.     }
  201.     
  202.     return 1;
  203. }
  204.  
  205.     
  206.  
  207.  
  208.