예제 #1
0
bool Runtime::parseConditionalAny( KILLENUM &kill )
{
  Token::Code code = tokenizer.token();
  Token::Code colorCode = Token::UNKNOWN;
  unsigned char colorCheck = 0xFF;

  // Check for color prefix first:
  switch (code)
  {
    case Token::BLUE:   colorCode = code; colorCheck = Defines::BLUE; break;
    case Token::GREEN:  colorCode = code; colorCheck = Defines::GREEN; break;
    case Token::CYAN:   colorCode = code; colorCheck = Defines::CYAN; break;
    case Token::RED:    colorCode = code; colorCheck = Defines::RED; break;
    case Token::PURPLE: colorCode = code; colorCheck = Defines::MAGENTA; break;
    case Token::YELLOW: colorCode = code; colorCheck = Defines::YELLOW; break;
    case Token::WHITE:  colorCode = code; colorCheck = Defines::WHITE; break;
    default: break;
  }

  // Get actual entity after color prefix
  if (colorCode != Token::UNKNOWN) {
    accept( colorCode );
    code = tokenizer.token();
  }

  // translate from Token code to ZZTEntity code.
  unsigned char idCheck = translateEntityToken( code );

  if ( idCheck == ZZTEntity::NONE_ENTITY ) {
    kill = throwError("CONDITIONAL ERROR");
    return false;
  }

  return board->isAnyEntity( idCheck, colorCheck );
}