Ejemplo n.º 1
0
CombatUnit*
CombatGroup::GetRandomUnit()
{
	CombatUnit*       result = 0;
	List<CombatUnit>  live;

	ListIter<CombatUnit> unit = units;
	while (++unit) {
		if (unit->Count() - unit->DeadCount() > 0)
		live.append(unit.value());
	}

	if (live.size() > 0) {
		int ntries = 5;
		while (!result && ntries-- > 0) {
			int index = rand() % live.size();
			result = live[index];

			int ship_class = result->GetShipClass();
			if (ship_class >= Ship::CRUISER &&
					ship_class <= Ship::FARCASTER)
			result = 0;
		}
	}

	if (!result) {
		ListIter<CombatGroup> comp = components;
		while (++comp && !result) {
			CombatUnit* u = comp->GetRandomUnit();
			if (u)
			result = u;
		}
	}

	return result;
}