home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Revista CD Expert 51
/
PCGamer51_17Demos.iso
/
games
/
CM
/
CyclingManagerDemoCangas.exe
/
CyclingManagerDemo
/
scripts
/
inrace
/
race_events.cnc
< prev
next >
Wrap
Text File
|
2001-06-10
|
7KB
|
247 lines
//----------------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------//
//
//----------------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------//
func void Object_InRaceEvents_List_Item_Create ()
{
SetObjectMembersNumber(2);
SetComponentNumber(2);
// selection
oInRaceEvents_List_Item.m_cSelection=InitContainer(t_Common_Color_White);
SetContainerSize(oInRaceEvents_List_Item.m_cSelection, 400, 16);
SetContainerColor(oInRaceEvents_List_Item.m_cSelection,c_ListSelection);
SetComponentClipper(oInRaceEvents_List_Item.m_cSelection, 0, 0, 400, 16);
SetComponentVisibleStatus(oInRaceEvents_List_Item.m_cSelection,false);
// race name
oInRaceEvents_List_Item.m_cEvents=InitContainer(tFontArial);
SetComponentSize(oInRaceEvents_List_Item.m_cEvents,400,16);
SetObjectSize(400,16);
// No event affected
Seti32x(1,0);
}
//----------------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------//
//
//----------------------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------//
func void Object_InRaceEvents_List_Item_Update (i32x _iItemID)
{
var szx szTemp;
// Store cyclist id into object
var i32x item,cyclistid,eventid;
item = _iItemID;
cyclistid=Join_GetIntFromIndex(oRaceEvent.m_jCyclistID,item);
eventid = Join_GetIntFromIndex(oRaceEvent.m_jEventID,item);
if(eventid != Geti32x(1))
{
// Store selected cyclist id into list member
Seti32x(0,cyclistid);
// Store event id
Seti32x(1,eventid);
// Retrieve race name
szTemp=Join_GetStringFromIndex(oRaceEvent.m_jEventsString,item);
SetContainerText(oInRaceEvents_List_Item.m_cEvents,szTemp);
}
}
func i32x Object_InRaceEvents_List_Item_Event (i32x _iComponentID, i32x _iEvent)
{
if (_iComponentID == -1)
{
if (_iEvent == GUI_COMPONENT_MOUSE_LEAVE)
{
SetComponentVisibleStatus(oInRaceEvents_List_Item.m_cSelection, 0);
}
if (_iEvent == GUI_COMPONENT_MOUSE_ENTER)
{
SetComponentVisibleStatus(oInRaceEvents_List_Item.m_cSelection, 1);
}
if (_iEvent == GUI_LIST_SELECTITEM)
{
var i32x id;
// Get cyclist id
id = Geti32x(0);
// Change selected cyclist
SetActiveCyclist(id);
// Refresh cyclist info
RefreshInfos();
}
}
if (_iEvent == GUI_COMPONENT_MOUSE_LDOWN)
{
if (_iComponentID != oInRaceEvents_List_Item.m_cSelection)
{
PlaySound(0,sbClickSound[0]);
PushEvent(GUI_LIST_PRESSED);
}
}
if (_iEvent == GUI_COMPONENT_MOUSE_LUP)
{
if (_iComponentID != oInRaceEvents_List_Item.m_cSelection)
{
PushEvent(GUI_LIST_SELECTION);
}
}
return 1;
}
//panel inrace chat
func void Panel_Inrace_EventLog_Create()
{
SetComponentNumber(11);
var i32x iID,iNumItems;
// Save context
oPanelInraceEventLog.pThis=GetParserComponent();
// Chat background
iID=Init_LibObject_FilledCadre(tCadreDialbox,500,300);
SetStackEvents(iID,GUI_NoEvent);
oPanelInraceEventLog.m_iMaxItems = 128;
iNumItems = Join_GetNumRows(oRaceEvent.m_jCyclistID);
while(iNumItems >= oPanelInraceEventLog.m_iMaxItems)
{
oPanelInraceEventLog.m_iMaxItems = oPanelInraceEventLog.m_iMaxItems + 128;
}
// Slider background
iID=InitContainer(tCommonTableBorder);
SetContainerColor(iID,c_TitleList);
SetContainerSize(iID,20,200);
SetComponentPosition(iID,445-20,40);
//print("\n Creating event list \n");
oPanelInraceEventLog.m_cList = InitList(
"InRaceEvents List", // List name
oPanelInraceEventLog.m_iMaxItems, // Max item number
440,200, // Width, height
Object_InRaceEvents_List_Item_Create,Object_InRaceEvents_List_Item_Update,Object_InRaceEvents_List_Item_Event, // Item oFunc
t_btn_slider, // Slider texture
NullButtonState); // State func for the slider
SetComponentPosition(oPanelInraceEventLog.m_cList,5,40);
SetListNbItems(oPanelInraceEventLog.m_cList,iNumItems);
// Border line
// Horizontal line
iID = InitContainer(tCommonTableBorder);
SetContainerSize(iID,440,1);
SetComponentPosition(iID,5,40);
iID = InitContainer(tCommonTableBorder);
SetContainerSize(iID,440,1);
SetComponentPosition(iID,5,40+200);
// Vertical line
iID = InitContainer(tCommonTableBorder);
SetContainerSize(iID,1,200);
SetComponentPosition(iID,5,40);
iID = InitContainer(tCommonTableBorder);
SetContainerSize(iID,1,200);
SetComponentPosition(iID,445-20,40);
iID = InitContainer(tCommonTableBorder);
SetContainerSize(iID,1,200);
SetComponentPosition(iID,445,40);
if(iNumItems)
{
SetListPosition(oPanelInraceEventLog.m_cList,iNumItems-1);
}
SetObjectSize(460,300);
}
func void Panel_Inrace_EventLog_InitMembers ()
{
oPanelInraceEventLog.oFunc.pcreate=Panel_Inrace_EventLog_Create;
oPanelInraceEventLog.oFunc.pevent=Panel_Inrace_EventLog_Event;
}
func void Panel_Inrace_EventLog_Update()
{
var i32x iNumItems;
//update the list if the chat window is open
if(oRace.iLogWindow != ID_NOT_CREATED)
{
var component pold;
if(oPanelInraceEventLog.pThis != g_poNullComponent)
{
// Save current contex
pold=GetParserComponent();
// Set Chat window context
SetParserComponent(oPanelInraceEventLog.pThis);
iNumItems = Join_GetNumRows(oRaceEvent.m_jCyclistID);
if(iNumItems >= oPanelInraceEventLog.m_iMaxItems)
{
while(iNumItems >= oPanelInraceEventLog.m_iMaxItems)
{
oPanelInraceEventLog.m_iMaxItems = oPanelInraceEventLog.m_iMaxItems + 128;
}
if (oPanelInraceEventLog.m_cList != ID_NOT_CREATED)
{
//print("\n Deleting event list \n");
DeleteComponent(oPanelInraceEventLog.m_cList);
oPanelInraceEventLog.m_cList = ID_NOT_CREATED;
}
}
if(oPanelInraceEventLog.m_cList == ID_NOT_CREATED)
{
//print("\n Creating event list \n");
oPanelInraceEventLog.m_cList = InitList(
"InRaceEvents List", // List name
oPanelInraceEventLog.m_iMaxItems, // Max item number
400,190, // Width, height
Object_InRaceEvents_List_Item_Create,Object_InRaceEvents_List_Item_Update,Object_InRaceEvents_List_Item_Event, // Item oFunc
t_btn_slider, // Slider texture
NullButtonState); // State func for the slider
SetComponentPosition(oPanelInraceEventLog.m_cList,5,40);
}
SetListNbItems(oPanelInraceEventLog.m_cList,iNumItems);
if(iNumItems)
{
SetListPosition(oPanelInraceEventLog.m_cList,iNumItems-1);
}
//restore context
SetParserComponent(pold);
}
}
}
func i32x Panel_Inrace_EventLog_Event(i32x _iComponentID, i32x _iEvent)
{
if(_iComponentID==-1)
{
if(_iEvent == GUI_COMPONENT_DESTRUCTOR)
{
oPanelInraceEventLog.pThis = g_poNullComponent;
}
}
return 1;
}