]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/control/data/value.qc
I did not want to do that. Sorry, disk space. Some admin better get rid of that mess.
[divverent/nexuiz.git] / data / qcsrc / menu / control / data / value.qc
1 // DP/Nex Menu
2 // control/data/value.qc
3
4 /*
5 ===================
6 Item_DataLink_Value_Clamp
7 ===================
8 */
9 void() Item_DataLink_Value_Clamp =
10 {
11         if( self._realValue > self.maxValue && self.maxValue > self.minValue )
12                 self._realValue = self.maxValue;
13         else if( self._realValue < self.minValue )
14                 self._realValue = self.minValue;
15         else // clamp it to(?) stepValue
16                 self._realValue =  self.minValue + self.stepValue * rint( ( self._realValue - self.minValue ) / self.stepValue );
17 };
18
19 /*
20 ===================
21 Item_DataLink_Value_ClampedText
22 ===================
23 */
24 string() Item_DataLink_Value_ClampedText =
25 {
26         return Util_FloatToClampedText( self._realValue, self.stepValue );
27 }
28
29 /*
30 ===================
31 Item_DataLink_Value_DataEvent
32 ===================
33 */
34 void( float pEvent ) Item_DataLink_Value_DataEvent =
35 {
36         Item_DataLink_Update();
37
38         if( pEvent == ITEM_DATALINK_SET ) {
39                 Item_DataLink_Value_Clamp();
40                 if( self._link ) {
41                         self._link._realValue = self._realValue;
42                         String_EntitySet( self._link, value, ftos( self._realValue ) );
43                         Raise_DataEvent( self._link, ITEM_DATALINK_SET );
44                 }
45         } else if( !self._link )
46                 return;
47         else if( pEvent == ITEM_DATALINK_GET ) {
48                 Raise_DataEvent( self._link, ITEM_DATALINK_GET );
49                 self._realValue = stof( self._link.value );
50                 String_EntitySet( self, value, Item_DataLink_Value_ClampedText() );
51                 Item_DataLink_Value_Clamp();
52         } else
53                 Raise_DataEvent( self._link, pEvent );
54 };
55
56 /*
57 ===================
58 Item_DataLink_Value_Spawn
59 ===================
60 */
61 void() Item_DataLink_Value_Spawn =
62 {
63         Item_DataLink_Init();
64
65         if( self.stepValue == 0.0 )
66                 self.stepValue = 1;
67
68         self._dataEvent = Item_DataLink_Value_DataEvent;
69 };
70