Fleet::Fleet()
{
m_iETA = 0;
+ m_iStays = 3;
m_sRace = "Cathaar";
}
m_Fleet[unittype][tick] = number;
}
+//////////////////////////////////////////////////////////////////////////
+//
+void Fleet::addFleet(std::string unittype, int number, int tick = 0)
+{
+ int earlier = 0;
+ int ticks = m_Fleet[unittype].size();
+
+ if (ticks != 0)
+ earlier = m_Fleet[unittype][ticks - 1];
+
+ for (int i = ticks; i <= tick; ++i)
+ {
+ m_Fleet[unittype].push_back(earlier);
+ }
+ m_Fleet[unittype][tick] += number;
+}
+
//////////////////////////////////////////////////////////////////////////
//
int Fleet::fleet(string unittype, int tick = 0)
vector<Fleet*> fl;
for (vector<Fleet*>::iterator i = fleets.begin(); i != fleets.end(); ++i)
{
- if (( tick - (*i)->ETA()) >= 0 && (tick - (*i)->ETA()) < stays)
+ if (( tick - (*i)->ETA()) >= 0 && (tick - (*i)->ETA()) < (*i)->stays())
{
fl.push_back((*i));
cerr << "Using fleet " << (*i)->name() << " for tick " << tick << endl;
}
- else if ((*i)->name() == "Home Planet")
+ else if ((*i)->stays() < 0)
fl.push_back((*i));
}
return fl;
{
int ticks = m_Resources[type].size();
- int latest = 0;
-
- if (ticks > 0)
- latest = m_Resources[type][ticks - 1];
+ int latest = resource(type, tick - 1);
for (int i = ticks; i <= tick; ++i)
m_Resources[type].push_back(latest);
//
int Fleet::resource(std::string type, int tick = 0) const
{
+ if (tick < 0)
+ return 0;
+
vector<int>const* resource = 0;
for (ResourceList::const_iterator i = m_Resources.begin(); i != m_Resources.end(); ++i)
{
return resource->at(tick);
}
+//////////////////////////////////////////////////////////////////////////
+//
+void Fleet::resetResources()
+{
+ m_Resources.clear() ;
+}
+
//////////////////////////////////////////////////////////////////////////
//
void Fleet::printFleet()
{
string res = i->first;
+
cerr << "Distributing type: " << res << endl;
for (vector<int>::iterator j = i->second.begin(); j != i->second.end(); ++j)
cout << (*j) << endl;
int lost = totcapped * part;
cerr << (*j)->name() << " gaining " << lost << " " << res << " since it's " << part * 100 << "% of the whole score, and it had : " << fl1 << " score last tick.. compared to fleet total of: " << score(0) << endl;
- (*j)->setResource(res, (*j)->resource(res,tick-1) + lost, tick);
+
+ //(*j)->setResource(res, (*j)->resource(res,tick-1) + lost, tick);
+ (*j)->addResource(res,lost, tick);
}
}
}
+//////////////////////////////////////////////////////////////////////////
+//
+void Fleet::addFleet(std::map<string, int> units, int tick = 0)
+{
+ for (map<string, int>::iterator i = units.begin(); i != units.end(); ++i)
+ addFleet(i->first, i->second, tick);
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+int Fleet::stays() const
+{
+ return m_iStays;
+}
+//////////////////////////////////////////////////////////////////////////
+//
+void Fleet::setStays(int ticks)
+{
+ m_iStays = ticks;
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void Fleet::calculateLostStealships(string unittype, std::map<std::string, int> stolen, int tick = 1)
+{
+ int stealscore = 0;
+ for (map<string, int>::iterator i = stolen.begin(); i != stolen.end(); ++i)
+ {
+ stealscore += stolen[i->first] * (s_Units[i->first].totRes() / 10.0);
+ }
+
+ int lost = stealscore / (s_Units[unittype].totRes() / 10.0);
+
+ cerr << "Lost " << lost << " " << unittype << " due to stealing ships worth: " << stealscore << endl;
+ killFleet(unittype, lost, tick);
+}