void Group::carryOverFormationStatistics() { width = formation->getWidth(); height = formation->getHeight(); base = vector<vector<Unit*> >(width, vector<Unit*>(height)); grid = vector<vector<Unit*> >(width, vector<Unit*>(height)); for (int x = 0; x < width; ++x) for (int y = 0; y < height; ++y) { if (formation->getCharacterAt(x, y) != NULL) { Unit* unit = new Unit(formation->getCharacterAt(x, y), gid, x, y); unit->applyCharacterSkillSets(); base[x][y] = unit; grid[x][y] = base[x][y]; if (formation->getLeaderPosition() == GridPoint(x, y)) { leader = unit; unit->setLeader(true); } addUnitToGroup(unit); } else { base[x][y] = NULL; grid[x][y] = NULL; } } }
bool Selection::assignGroup(int groupIndex, bool clearGroup,const UnitContainer *pUnits) { if(groupIndex < 0 || groupIndex >= maxGroups) { throw megaglest_runtime_error("Invalid value for groupIndex = " + intToStr(groupIndex)); } //clear group if(true==clearGroup){ groups[groupIndex].clear(); } //assign new group const UnitContainer *addUnits = &selectedUnits; if(pUnits != NULL) { addUnits = pUnits; } for(unsigned int i = 0; i < addUnits->size(); ++i) { if(false == addUnitToGroup(groupIndex,(*addUnits)[i])){ // don't try to add more, group is maybe full return false; } } return true; }