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)); } }
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); }