Example #1
0
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;
			}
		}
}
Example #2
0
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;
}