]> icculus.org git repositories - divverent/nexuiz.git/blob - data/oldmenuqc/custom/player/color.qc
Merge first change into the branch.
[divverent/nexuiz.git] / data / oldmenuqc / custom / player / color.qc
1 // Property of Alientrap/AK
2 // custom/player/color.qc
3
4 /*
5 color/_cl_color
6
7 color = shirt * 16 + pants
8 */
9
10 /*
11 ===================
12 Item_Data_Nex_Color
13 ===================
14 */
15
16 void( string pValue ) _IDNC_SendSyncCmd = {
17         local float lPants, lShirt, lCombined;
18
19         lCombined = stof( pValue );
20         lPants = lCombined & 0x0F;
21         lShirt = (lCombined & 0xF0) / 16;
22
23         cmd( "color ", ftos( lShirt ), " ", ftos( lPants ), "\n" );
24         //print( "%color ", ftos( lPants ), " ", ftos( lShirt ), "\n" );
25 };
26
27 void() _IDNC_Sync =
28 {
29         String_EntitySet( self, value, cvar_string( "_cl_color" ) );
30         String_EntitySet( self, _syncValue, self.value );
31 };
32
33 void() _IDNC_Send =
34 {
35         _IDNC_SendSyncCmd( self.value );
36
37         String_EntitySet( self, _syncValue, self.value );
38 };
39
40 void() _IDNC_Test_Start =
41 {
42         _IDNC_SendSyncCmd( self.value );
43 };
44
45 void() _IDNC_Test_End =
46 {
47         String_EntitySet( self, value, self._syncValue );
48         _IDNC_SendSyncCmd( self.value );
49 };
50
51 void() _IDNC_Reset =
52 {
53         String_EntitySet( self, value, self.defValue );
54         _IDNC_Send();
55 };
56
57 void( float pEvent ) Item_Data_Nex_Color_DataEvent =
58 {
59         switch( pEvent ) {
60         case ITEM_DATA_SYNC:
61                 _IDNC_Sync();
62                 break;
63         case ITEM_DATA_SEND:
64                 _IDNC_Send();
65                 break;
66         case ITEM_DATA_RESET:
67                 _IDNC_Reset();
68                 break;
69         case ITEM_DATA_TEST_START:
70                 _IDNC_Test_Start();
71                 break;
72         case ITEM_DATA_TEST_END:
73                 _IDNC_Test_End();
74                 break;
75         }
76 };
77
78 void() Item_Data_Nex_Color_Spawn =
79 {
80         Item_Data_Init();
81
82         self._reinit = _IDNC_Sync;
83         self._dataEvent = Item_Data_Nex_Color_DataEvent;
84 };
85
86 /*
87 ===================
88 Item_DataLink_Nex_PantsColor
89 ===================
90 */
91
92 void( float pEvent ) Item_DataLink_Nex_PantsColor_DataEvent =
93 {
94         Item_DataLink_Update();
95
96         if( pEvent == ITEM_DATALINK_SET ) {
97                 Item_DataLink_Value_Clamp();
98                 if( self._link ) {
99                         local float lShirt;
100                         local float lNewColor;
101
102                         self._realValue = stof( self.value );
103
104                         lShirt = (stof( self._link.value ) & 0xF0) / 16;
105                         lNewColor = self._realValue + lShirt * 16;
106
107                         self._link._realValue = lNewColor;
108                         String_EntitySet( self._link, value, Util_FloatToClampedText( lNewColor, 1.0 ) );
109
110                         Raise_DataEvent( self._link, ITEM_DATALINK_SET );
111                 }
112         } else if( !self._link )
113                 return;
114         else if( pEvent == ITEM_DATALINK_GET ) {
115                 Raise_DataEvent( self._link, ITEM_DATALINK_GET );
116                 self._realValue = stof( self._link.value ) & 0x0F;
117
118                 Item_DataLink_Value_Clamp();
119                 String_EntitySet( self, value, Item_DataLink_Value_ClampedText() );
120         } else
121                 Raise_DataEvent( self._link, pEvent );
122 };
123
124 void() Item_DataLink_Nex_PantsColor_Spawn =
125 {
126         Item_DataLink_Value_Spawn();
127
128         self.stepValue = 1.0;
129
130         self._dataEvent = Item_DataLink_Nex_PantsColor_DataEvent;
131 };
132
133 /*
134 ===================
135 Item_DataLink_Nex_ShirtColor
136 ===================
137 */
138
139 void( float pEvent ) Item_DataLink_Nex_ShirtColor_DataEvent =
140 {
141         Item_DataLink_Update();
142
143         if( pEvent == ITEM_DATALINK_SET ) {
144                 Item_DataLink_Value_Clamp();
145                 if( self._link ) {
146                         local float lPants;
147                         local float lNewColor;
148
149                         self._realValue = stof( self.value );
150
151                         lPants = stof( self._link.value ) & 0x0F;
152                         lNewColor = self._realValue * 16 + lPants;
153
154                         self._link._realValue = lNewColor;
155                         String_EntitySet( self._link, value, Util_FloatToClampedText( lNewColor, 1.0 ) );
156
157                         Raise_DataEvent( self._link, ITEM_DATALINK_SET );
158                 }
159         } else if( !self._link )
160                 return;
161         else if( pEvent == ITEM_DATALINK_GET ) {
162                 Raise_DataEvent( self._link, ITEM_DATALINK_GET );
163                 self._realValue = (stof( self._link.value ) & 0xF0) / 16;
164
165                 Item_DataLink_Value_Clamp();
166                 String_EntitySet( self, value, Item_DataLink_Value_ClampedText() );
167         } else
168                 Raise_DataEvent( self._link, pEvent );
169 };
170
171 void() Item_DataLink_Nex_ShirtColor_Spawn =
172 {
173         Item_DataLink_Value_Spawn();
174
175         self.stepValue = 1.0;
176
177         self._dataEvent = Item_DataLink_Nex_ShirtColor_DataEvent;
178 };