]> icculus.org git repositories - divverent/nexuiz.git/blob - data/menuqc/custom/player/color.qc
fix menu picking up old pants color
[divverent/nexuiz.git] / data / menuqc / custom / player / color.qc
1 // Property of Alientrap/AK
2 // custom/player/color.qc
3
4
5 /*
6 ===================
7 Item_Data_Nex_Color
8 ===================
9 */
10
11 string pantscolor;
12
13 void() _IDNC_Sync =
14 {
15         local float lPants;
16
17
18         // color = shirt * 16 + pants
19         lPants = cvar( "_cl_color" ) & 15;
20         //bprint("Pants: ", ftos(lPants), "\n");
21
22         String_EntitySet( self, value, ftos( lPants ) );
23         String_EntitySet( self, _syncValue, self.value );
24 };
25
26 void() _IDNC_Send =
27 {
28
29         // set global value "pantscolor" to our nice new value
30         // *could* be directly exectued via a color command
31         // BUT the shirt color send method will then pickup the old value
32         // (as _cl_color isn't updated immediately)
33         // which will result in resetting the pants color to its old value
34         pantscolor = self.value;
35         
36         String_EntitySet( self, _syncValue, self.value );
37 };
38
39 void() _IDNC_Test_Start =
40 {
41         cmd( strcat( "color \"", self.value, "\"\n" ) );
42 };
43
44 void() _IDNC_Test_End =
45 {
46         String_EntitySet( self, value, self._syncValue );
47         cmd( strcat( "color \"", self.value, "\"\n" ) );
48 };
49
50 void() _IDNC_Reset =
51 {
52         String_EntitySet( self, value, self.defValue );
53         _IDNN_Send();
54 };
55
56 void( float pEvent ) Item_Data_Nex_Color_DataEvent =
57 {
58         switch( pEvent ) {
59         case ITEM_DATA_SYNC:
60                 _IDNC_Sync();
61                 break;
62         case ITEM_DATA_SEND:
63                 _IDNC_Send();
64                 break;
65         case ITEM_DATA_RESET:
66                 _IDNC_Reset();
67                 break;
68         case ITEM_DATA_TEST_START:
69                 _IDNC_Test_Start();
70                 break;
71         case ITEM_DATA_TEST_END:
72                 _IDNC_Test_End();
73                 break;
74         }
75 };
76
77 void() Item_Data_Nex_Color_Spawn =
78 {
79         Item_Data_Init();
80
81         self._reinit = _IDNC_Sync;
82         self._dataEvent = Item_Data_Nex_Color_DataEvent;
83 };
84
85
86 /*
87 ===================
88 Item_Data_Nex_ColorShirt
89 ===================
90 */
91
92 void() _IDNCS_Sync =
93 {
94         local float lShirt;
95
96         // color = shirt * 16 + pants
97         lShirt = (cvar( "_cl_color" ) / 16) & 15;
98         
99         //bprint("Shirt: ", ftos(lShirt), "\n");
100
101         String_EntitySet( self, value, ftos( lShirt ) );
102         String_EntitySet( self, _syncValue, self.value );
103 };
104
105 void() _IDNCS_Send =
106 {
107         
108         cmd( strcat( "color ", self.value , " ", pantscolor , "\n" ) );
109         
110         String_EntitySet( self, _syncValue, self.value );
111 };
112
113
114 void() _IDNCS_Test_Start =
115 {
116         //cmd( strcat( "color \"", self.value, "\"\n" ) );
117 };
118
119 void() _IDNCS_Test_End =
120 {
121         String_EntitySet( self, value, self._syncValue );
122         //cmd( strcat( "color \"", self.value, "\"\n" ) );
123 };
124
125
126 void() _IDNCS_Reset =
127 {
128         String_EntitySet( self, value, self.defValue );
129         _IDNN_Send();
130 };
131
132 void( float pEvent ) Item_Data_Nex_ColorShirt_DataEvent =
133 {
134         switch( pEvent ) {
135         case ITEM_DATA_SYNC:
136                 _IDNCS_Sync();
137                 break;
138         case ITEM_DATA_SEND:
139                 _IDNCS_Send();
140                 break;
141         case ITEM_DATA_RESET:
142                 _IDNCS_Reset();
143                 break;
144         case ITEM_DATA_TEST_START:
145                 _IDNCS_Test_Start();
146                 break;
147         case ITEM_DATA_TEST_END:
148                 _IDNCS_Test_End();
149                 break;
150         }
151 };
152
153 void() Item_Data_Nex_ColorShirt_Spawn =
154 {
155         Item_Data_Init();
156
157         self._reinit = _IDNCS_Sync;
158         self._dataEvent = Item_Data_Nex_ColorShirt_DataEvent;
159 };