12 #ifndef COMPANY_MANAGER_FACE_H 
   13 #define COMPANY_MANAGER_FACE_H 
   34 enum CompanyManagerFaceVariable {
 
   61   byte     valid_values[GE_END]; 
 
   68  {  0, 1, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, 
 
   69    {  1, 2, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, 
 
   70    {  0, 3, {  4,  4,  4,  4 }, {     0,     0,     0,     0 } }, 
 
   71    {  3, 1, {  2,  0,  2,  0 }, {     0,     0,     0,     0 } }, 
 
   72    {  3, 1, {  0,  2,  0,  2 }, {     0,     0,     0,     0 } }, 
 
   73    {  4, 1, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, 
 
   74    {  5, 2, {  3,  3,  1,  1 }, {     0,     0,     0,     0 } }, 
 
   75    {  0, 0, {  1,  1,  1,  1 }, { 0x325, 0x326, 0x390, 0x3B0 } }, 
 
   76    {  7, 2, {  4,  1,  2,  2 }, { 0x327, 0x327, 0x391, 0x3B1 } },
 
   77    {  9, 4, { 12, 16, 11, 16 }, { 0x32B, 0x337, 0x39A, 0x3B8 } },
 
   78    { 13, 2, {  3,  0,  3,  0 }, { 0x367,     0, 0x397,     0 } }, 
 
   79    { 13, 4, { 12, 10,  9,  9 }, { 0x35B, 0x351, 0x3A5, 0x3C8 } }, 
 
   80    { 17, 3, {  8,  4,  4,  5 }, { 0x349, 0x34C, 0x393, 0x3B3 } }, 
 
   81    { 20, 4, {  9,  5,  5,  4 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } },
 
   82    { 24, 2, {  3,  3,  3,  3 }, { 0x36B, 0x378, 0x36B, 0x378 } },
 
   83    { 26, 2, {  4,  4,  4,  4 }, { 0x36E, 0x37B, 0x36E, 0x37B } },
 
   84    { 28, 3, {  6,  3,  6,  3 }, { 0x372, 0x37F, 0x372, 0x3D1 } }, 
 
   85    { 31, 1, {  2,  2,  2,  2 }, { 0x347, 0x347, 0x3AE, 0x3AE } }  
 
   88 assert_compile(
lengthof(_cmf_info) == CMFV_END);
 
  100   assert(_cmf_info[cmfv].valid_values[ge] != 0);
 
  102   return GB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length);
 
  115   assert(val < _cmf_info[cmfv].valid_values[ge]);
 
  117   SB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length, val);
 
  137   if (val >= _cmf_info[cmfv].valid_values[ge]) {
 
  139   } 
else if (val < 0) {
 
  155   return GB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length) < _cmf_info[cmfv].
valid_values[ge];
 
  168   assert(val < (1U << _cmf_info[cmfv].length));
 
  170   return (val * _cmf_info[cmfv].valid_values[ge]) >> _cmf_info[cmfv].
length;
 
  187   for (CompanyManagerFaceVariable cmfv = CMFV_EYE_COLOUR; cmfv < CMFV_END; cmfv++) { 
 
  190     if (cmfv != CMFV_MOUSTACHE || is_moust_male) {
 
  212   cmf = interactive ? InteractiveRandom() : Random(); 
 
  238   assert(_cmf_info[cmfv].valid_values[ge] != 0);
 
  240   return _cmf_info[cmfv].
first_sprite[ge] + 
GB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length);