Ejemplo n.º 1
0
void Sync(Player::Id pid)
{
	NodeID nid = nodes[pid];
	TeamInfo(nid);
	PlayerInfo(nid);
	StructInfo(nid);
	ItemInfo(nid);
}
/**
    This method loads the teams from the [TEAMS] section.
*/
void INIMapEditorLoader::loadTeams()
{
    INIFile::KeyIterator iter;

    for(iter = inifile->begin("TEAMS"); iter != inifile->end("TEAMS"); ++iter) {
		std::string strHouseName;
		std::string strTeamBehavior;
		std::string strTeamType;
		std::string strMinUnits;
		std::string strMaxUnits;

        if(splitString(iter->getStringValue(), 5, &strHouseName, &strTeamBehavior, &strTeamType, &strMinUnits, &strMaxUnits) == false) {
            logWarning(iter->getLineNumber(), "Invalid teams string: " + iter->getKeyName() + " = " + iter->getStringValue());
            continue;
        }

        int houseID = getHouseID(strHouseName);
        if(houseID == HOUSE_UNUSED) {
            // skip reinforcement for unused house
            continue;
        } else if(houseID == HOUSE_INVALID) {
            logWarning(iter->getLineNumber(), "Invalid house string: '" + strHouseName + "'!");
            continue;
        }

        TeamBehavior teamBehavior = getTeamBehaviorByName(strTeamBehavior);
        if(teamBehavior == TeamBehavior_Invalid) {
            logWarning(iter->getLineNumber(), "Invalid team behavior string: '" + strTeamBehavior + "'!");
            teamBehavior = TeamBehavior_Normal;
        }

        TeamType teamType = getTeamTypeByName(strTeamType);
        if(teamType == TeamType_Invalid) {
            logWarning(iter->getLineNumber(), "Invalid team type string: '" + strTeamType + "'!");
            teamType = TeamType_Foot;
        }

        int minUnits;
        if(!parseString(strMinUnits, minUnits)) {
            logWarning(iter->getLineNumber(), "Invalid min units string: '" + strMinUnits + "'!");
            continue;
        }

        int maxUnits;
        if(!parseString(strMaxUnits, maxUnits)) {
            logWarning(iter->getLineNumber(), "Invalid max units string: '" + strMaxUnits + "'!");
            continue;
        }

        pMapEditor->getTeams().push_back(TeamInfo(houseID, teamBehavior, teamType, minUnits, maxUnits));
	}
}
Ejemplo n.º 3
0
RECEIVE(ENTER, id, msg, reliable)
{
	if (!tokenring->authorized()) return;
	unsigned char team = (unsigned char) (long) msg[1];
	string name = msg[2];
	
	Player::Id pid = game.topId++;
	ObjectHandle player = Player(pid, team, name);
	game.root->children.insert(player);
	game.players[pid] = player;
	nodes[id] = pid;
	
	Welcome(pid);
	
	// Send game state
	TeamInfo(id);
	PlayerInfo(id);
	StructInfo(id);
	ItemInfo(id);
	
	Join(findNode(pid), pid, team, name);
}