Esempio n. 1
0
Parser::ObjType Parser::ParseObjType(char *msg)
{
	switch( *msg ) {
	case 'g':
	case 'G':
		return ParseGoal(msg);
	case 'f':
	case 'F':
		return ParseMarker(msg);
	case 'l':
		return ParseLine(msg);
	case 'p':
	case 'P':
		return ParsePlayer(msg);
	case 'b':
	case 'B':
		return ParseBall(msg);
	default:
		PARSE_ERROR("unknown object"); break;
	}

	ObjType result;
	result.type = OBJ_None;
	return result;
}
Esempio n. 2
0
void LoadConfigFile (const char *fn)
{
	xmlDocPtr doc;
	xmlNodePtr root,
		   child;

	doc = xmlParseFile (fn);
	Player *players = g_players;

	if (doc == NULL)
	{
		std::cerr << "Could not parse config file\n";
		return;
	}

	root = xmlDocGetRootElement (doc);

	if (root == NULL)
	{
		std::cerr << "Empty config file\n";
		xmlFreeDoc (doc);
		return;
	}
	
	child = root->xmlChildrenNode;
	while (child != NULL)
	{
		if (!xmlStrcmp (child->name, (const xmlChar*)"display"))
			ParseDisplay (doc, child);
		else if (!xmlStrcmp (child->name, (const xmlChar*)"keyBindings"))
			ParseKeyBindings (doc, child);
		else if (!strncmp ((char*)child->name, "player",6))
		{
			char str[2];
			for (int i=0; i<4; i++)
			{
				str[0] = '1'+i;
				str[1] = '\0';
				if (!strcmp ((char*)child->name+6, str))
					ParsePlayer (players+i, doc, child);
			}
		}
		child = child->next;
	}

	xmlFreeDoc (doc);
	xmlCleanupParser ();
	xmlMemoryDump ();

}
void BoardConfigurationSerializer::LoadBoard(BoardConfiguration* board, const std::string& file)
{
    if (board == nullptr)
        return;
    
    board->Clear();
    
    //TODO: Add some error detection here. If the config file is malformed, random stuff (most probably crash) happens.
    boost::property_tree::ptree configTree;
    boost::property_tree::json_parser::read_json(file, configTree);
    
    for (auto& value : configTree.get_child("board"))
    {
        Player player = ParsePlayer(value.second.get<std::string>("player"));
        ChessPiece::Type pieceType = ParseType(value.second.get<std::string>("type"));
        char xPos = value.second.get<char>("x");
        unsigned int yPos = value.second.get<unsigned int>("y");

        board->m_BitBoards[player][pieceType] |= (uint64_t)1 << ParsePosition(xPos, yPos);
    }
    
    board->m_CurrentPlayer = ParsePlayer(configTree.get<std::string>("currentPlayer"));
}