//cerr << "Shooting at target class: " << ta << endl;
while (gunsleft > 0)
{
-
- map<string, int*> targets;
-
- for (UnitList::iterator j = s_Units.begin(); j != s_Units.end(); ++j)
- {
- if (m_Fleet[j->first].size() == 0)
- continue;
-
-
- if (m_Fleet[j->first].size() == 1 )
- m_Fleet[j->first].push_back(m_Fleet[j->first][0]);
-
- //cerr << "Target is class: " << j->second.type() << endl;
-
- if (m_Fleet[j->first][1] > 0 && ( ta == j->second.unitClass() || ta == "All"))
- {
-
- // cerr << "Looking at target: " << j->first << endl;
- targets[j->first] = &m_Fleet[j->first][1];
- }
- }
+ int total = 0;
+ map<string, int*> targets = findTargets(ta,total, 0);
if (targets.size() == 0)
break;
- int total = 0;
- for (map<string, int*>::iterator j = targets.begin(); j != targets.end(); ++j)
- total += (*j->second);
-
for (map<string, int*>::iterator j = targets.begin(); j != targets.end(); ++j)
{
float maxguns = float((*j->second))/total * guns;
//cerr << "Shooting at target class: " << ta << endl;
while (gunsleft > 0)
{
-
- map<string, int*> targets;
-
- for (UnitList::iterator j = s_Units.begin(); j != s_Units.end(); ++j)
- {
- if (j->second.type() == "PDS")
- continue;
-
- if (freeFleet(j->first, 1) <= 0)
- continue;
-
- if (m_Fleet[j->first].size() == 0)
- continue;
-
- if (m_Fleet[j->first].size() == 1)
- m_Fleet[j->first].push_back(m_Fleet[j->first][0]);
-
- //cerr << "Target is class: " << j->second.type() << endl;
-
- if (m_Fleet[j->first][1] > 0 && ( ta == j->second.unitClass() || ta == "All"))
- {
-
- // cerr << "Looking at target: " << j->first << endl;
- targets[j->first] = &m_Fleet[j->first][1];
- }
-
- }
+ int total = 0;
+ map<string, int*> targets = findTargets(ta, total, 1);
if (targets.size() == 0)
break;
- int total = 0;
- for (map<string, int*>::iterator j = targets.begin(); j != targets.end(); ++j)
- total += (*j->second);
-
for (map<string, int*>::iterator j = targets.begin(); j != targets.end(); ++j)
{
- float maxguns = float((*j->second))/total * guns;
+ float maxguns = float((*j->second))/total * gunsleft;
//cerr << "Now shooting at target: " << j->first << endl;
double k = maxguns;
}
m_UsedPodGuns[tick] += guns;
}
+
+//////////////////////////////////////////////////////////////////////////
+//
+std::map<std::string, int*> Fleet::findTargets(std::string targetClass,int& total, int attackerType)
+{
+ map<string, int*> targets;
+
+ for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); ++i)
+ {
+ if (m_Fleet[i->first].size() == 0)
+ continue;
+
+
+ if (m_Fleet[i->first].size() == 1 )
+ m_Fleet[i->first].push_back(m_Fleet[i->first][0]);
+
+ //cerr << "Target is class: " << j->second.type() << endl;
+
+ if (m_Fleet[i->first][1] > 0 && ( targetClass == i->second.unitClass() || targetClass == "All"))
+ {
+ if (i->second.unitClass() == "PDS" && attackerType == 1)
+ continue;
+ // cerr << "Looking at target: " << j->first << endl;
+ targets[i->first] = &m_Fleet[i->first][1];
+ total += m_Fleet[i->first][1];
+ }
+ }
+
+ return targets;
+}