2 // control/visual/list.qc
4 void() Item_List_Draw =
15 lLines = floor( self.size_y / ( self.fontSize_y + 2 ) );
16 lStart = max( 0, floor( Item_DataLink_Switch_GetOrdinal( self._target, self._target._realValue ) - lLines / 2 ) );
17 lEnd = min( lStart + lLines, Item_DataLink_Switch_GetOrdinal( self._target, self._target.maxValue ) );
19 lPos = '0 1 0' + self.pos;
20 for( lLine = lStart ; lLine <= lEnd ; lLine++ ) {
22 lText = Util_GetAltStringItem( self._target.descList, lLine );
23 if( lLine == Item_DataLink_Switch_GetOrdinal( self._target, self._target._realValue ) ) {
24 if( self._state == ITEM_STATE_SELECTED )
25 Menu_DrawString( lPos, lText, self.fontSize, self.colorSelected, self.alphas_y, self.drawFlags_y );
26 else if( self._state == ITEM_STATE_PRESSED )
27 Menu_DrawString( lPos, lText, self.fontSize, self.colorPressed, self.alphas_z, self.drawFlags_z );
29 Menu_DrawString( lPos, lText, self.fontSize, self.colorInactive, self.alphaInactive, self.drawFlagInactive );
31 Menu_DrawString( lPos, lText, self.fontSize, self.color, self.alphas_x, self.drawFlags_x );
34 lPos_y = lPos_y + self.fontSize_y + 1;
40 void() Item_List_Update =
42 Item_DataUser_Update();
44 if( self._presstime + ITEM_BUTTON_ACTIONTIME > Timer_Time )
45 self._state = ITEM_STATE_PRESSED;
46 else if( Menu_ActiveItem == self )
47 self._state = ITEM_STATE_SELECTED;
49 self._state = ITEM_STATE_NORMAL;
51 /*if( Menu_HasRunFlag( self, RUNFLAG_MOUSEINAREA ) ) {
56 lLines = floor( self.size_y / ( self.fontSize_y + 2 ) );
57 lStart = max( 0, floor( Item_DataLink_Switch_GetOrdinal( self._target, self._target._realValue ) - lLines / 2 ) );
58 lItem = floor( ( Menu_Cursor_Position_y - self.pos_y ) / ( self.fontSize_y + 2 ) );
59 lItem = min( lStart + lItem, Item_DataLink_Switch_GetOrdinal( self._target, self._target.maxValue ) );
61 print( ftos( lItem ), "\n" );
63 self._target._realValue = lItem * self._target.stepValue + self._target.minValue;
64 Raise_DataEvent( self._target, ITEM_DATALINK_SET );
70 void( bool pSelect, bool pUser ) Item_List_Select =
72 if( pSelect && pUser )
73 Sound_Play( self.soundSelected );
76 bool( float pKey, float pAscii ) Item_List_Key =
78 if( pKey == K_DOWNARROW ) {
79 Sound_Play( self.soundPressed );
80 self._presstime = Timer_Time;
82 self._target._realValue = self._target._realValue + 1;
83 if( self._target._realValue > self._target.maxValue )
84 self._target._realValue = self._target.minValue;
85 Raise_DataEvent( self._target, ITEM_DATALINK_SET );
89 } else if( pKey == K_UPARROW ) {
90 Sound_Play( self.soundPressed );
91 self._presstime = Timer_Time;
93 self._target._realValue = self._target._realValue - 1;
94 if( self._target._realValue < self._target.minValue )
95 self._target._realValue = self._target.maxValue;
97 Raise_DataEvent( self._target, ITEM_DATALINK_SET );
105 void() Item_List_Destroy =
109 String_EntityFree( self, soundSelected );
110 String_EntityFree( self, soundPressed );
112 Item_DataUser_Destroy();
115 void() Item_List_Spawn =
117 Item_DataUser_Init();
119 String_EntityZone( self, soundSelected );
120 String_EntityZone( self, soundPressed );
122 Sound_Precache( self.soundSelected );
123 Sound_Precache( self.soundPressed );
125 self._draw = Item_List_Draw;
126 self._update = Item_List_Update;
127 self._select = Item_List_Select;
128 self._key = Item_List_Key;
129 self._reinit = CtCall_Reinit;