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 >
Wrap
Text File
|
2001-05-25
|
6KB
|
208 lines
//groups management (visu + interface)
func void Groups_Team_Time_Trial_UpdateButtonStates()
{
var i32x i;
i=0;
while(i<oGroups.m_iNumGroups)
{
if (GetCyclistPreRaceTeamID(GetActiveCyclistPreRaceID()) == i)
{
SetTextRadioButtonCheckBox(oGroups.m_cGroups[i],1);
}
else
{
SetTextRadioButtonCheckBox(oGroups.m_cGroups[i],0);
}
i=i+1;
}
}
func void Groups_Team_Time_Trial_UpdatePosition()
{
var i32x i,iTextID,iBitmapId,iPosX,iPosY,iGroupNameLength,iNbCyclists,iCyclistID;
var f32x fGroupSplinePercentageDone;
// Get Active group
oGroups.m_iActiveGroup=GetActiveGroupIndex();
i=0;
while(i<oGroups.m_iNumGroups)
{
iNbCyclists=GetTeamNumCyclists(i);
if(iNbCyclists>0)
{
if (iNbCyclists>=5)
iCyclistID=GetInTeamSortedCyclistPreraceIndex(i,4);
else
iCyclistID=GetInTeamSortedCyclistPreraceIndex(i,iNbCyclists-1);
fGroupSplinePercentageDone=GetCyclistSplinePercentageDone(iCyclistID);
iPosX=iGetProfileCameraXPixelPosFromSplinePercentageDone(fGroupSplinePercentageDone);
iPosY=iGetProfileCameraYPixelPosFromAltitude(GetAltitudeFromSplinePercentageDone(fGroupSplinePercentageDone));
iPosX=iPosX-(GetComponentWidth(oGroups.m_cGroups[i])/2)+1;
iPosY=iPosY-(GetComponentHeight(oGroups.m_cGroups[i]));
SetComponentPosition(oGroups.m_cGroups[i],iPosX,iPosY);
}
else
{
SetComponentVisibleStatus(oGroups.m_cGroups[i],0);
}
i=i+1;
}
//update camera cursor
SetComponentPositionX(oGroups.m_iCurrent,iGetProfileCameraXPixelPosFromSplinePercentageDone(GetSplinePercentageDoneFromDistance(GetActiveCameraPosition()))-(GetComponentWidth(oGroups.m_iCurrent)/2));
// Update RadioBtn state
Groups_Team_Time_Trial_UpdateButtonStates();
}
func void Groups_Team_Time_Trial_Update()
{
var i32x i;
oGroups.m_iNumGroups = 20; // Num group = num cyclist of team
i=20 ;
while(i>=0)
{
if(i<oGroups.m_iNumGroups)
{
var szx szGroupName;
szGroupName="";//itoa(i);
if(oGroups.m_cGroups[i]!=ID_NOT_CREATED)
{
SetTextButtonCaption(oGroups.m_cGroups[i],szGroupName);
}
else
{
var component pgroup;
oGroups.m_cGroups[i] = Init_LibObject_RadioButtonWithText(t_ArrowGroup,szGroupName,0,-8);
pgroup = GetObject(oGroups.m_cGroups[i]);
SetParserComponent(pgroup);
// LibObject_RadioButton context
SetContainerOffset(1,-3);
SetContainerScale(1,0.8,0.8);
ResizeComponent(1);
LibObject_UpdateButtonText();
// Restor context
SetParserComponent(oGroups.pGroups);
SetTextButtonStateFunc(oGroups.m_cGroups[i],CheckboxState,RadioButtonWithText_TextState);
oGroups.m_cIdToIndex[oGroups.m_cGroups[i]] = i;
}
}
else if(oGroups.m_cGroups[i]!=ID_NOT_CREATED)
{
oGroups.m_cIdToIndex[oGroups.m_cGroups[i]] = ID_NOT_CREATED;
DeleteComponent(oGroups.m_cGroups[i]);
oGroups.m_cGroups[i] = ID_NOT_CREATED;
}
i=i-1;
}
}
//----------------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------//
// Groups Create
//----------------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------//
func void Groups_Team_Time_Trial_Create ()
{
/*
print("--- Groups_Create\n");
print("oGroups.m_iNumGroups=");
print(itoa(oGroups.m_iNumGroups));
print("\n");
*/
// Get Context
oGroups.pGroups = GetParserComponent();
// Max component number
SetComponentNumber(181); // (180+1)
// Current active cyclist cursor
oGroups.m_iCurrent=InitContainer(t_IndicVideo);
SetComponentPositionY(oGroups.m_iCurrent,55);
// Init groups array
var i32x i;
i=0;
while(i<180)
{
oGroups.m_cGroups[i] = ID_NOT_CREATED;
oGroups.m_cIdToIndex[i] = ID_NOT_CREATED;
i=i+1;
}
oGroups.m_cIdToIndex[180] = ID_NOT_CREATED;
// Create groups
Groups_Time_Trial_Update();
// Update groups position
Groups_Team_Time_Trial_UpdatePosition();
}
//----------------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------//
//Groups Event func
//----------------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------//
func i32x Groups_Team_Time_Trial_Event (i32x _iComponentID,i32x _iEvent)
{
if(_iEvent == GUI_RADIOBUTTON_CHANGED)
{
var i32x iNewGroup;
iNewGroup=oGroups.m_cIdToIndex[_iComponentID];
var i32x iNbCyclists,iCyclistID;
iNbCyclists=GetTeamNumCyclists(iNewGroup);
if(iNbCyclists>0)
{
if (iNbCyclists>=5)
iCyclistID=GetInTeamSortedCyclistPreraceIndex(iNewGroup,4);
else
iCyclistID=GetInTeamSortedCyclistPreraceIndex(iNewGroup,iNbCyclists-1);
if (oGroups.m_iActive==0)
{
SetActiveCamera(0);
oRace.ploop = FollowCyclistCamera;
SetLoopFunc(oRace.ploop);
oGroups.m_iActive = 1;
}
SetActiveCyclist(iCyclistID);
}
oGroups.m_iActiveGroup=GetActiveGroupIndex();
Groups_Team_Time_Trial_UpdateButtonStates();
RefreshInfos();
}
else if (_iEvent==GUI_RESET_GROUPS)
{
var i32x i;
i=0;
while (i<oGroups.m_iNumGroups)
{
SetTextRadioButtonCheckBox(oGroups.m_cGroups[i],0);
i=i+1;
}
oGroups.m_iActive = 0;
}
return 1;
}