]> ruin.nu Git - hbs.git/blobdiff - bs/fleet.cpp
solved an evil bug in Fleet::distributeLossesGains and some other stuff
[hbs.git] / bs / fleet.cpp
index f0fb8e1dee9d07d45c42c8d0784d65d6f8b5c907..2daa5cf052920866b68d158819a42e7a23c554d9 100644 (file)
@@ -118,7 +118,7 @@ void Fleet::setUnits(UnitList& units)
        s_Units = units;
 
        
-
+/*
        for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); i++)
        {
                cerr << s_Units[(*i).first].Name() << "\t\t"
@@ -140,6 +140,7 @@ void Fleet::setUnits(UnitList& units)
                        << s_Units[(*i).first].type() << endl;
        }
        
+       */
 }
 
 //////////////////////////////////////////////////////////////////////////
@@ -235,16 +236,21 @@ void Fleet::distributeLossesGains(std::vector<Fleet*> fleets, int tick = 0)
        for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); ++i)
        {
                string unittype = i->first;
+
+               cerr << "Distributing type: " << unittype << endl;
+
                if (m_Fleet[unittype].size() < 1)
-                       break;
-    if (m_Fleet[unittype][0] == 0)
-                       break;
+                       continue;
+               if (m_Fleet[unittype][0] == 0)
+                       continue;
 
                int totallost = m_Fleet[unittype][1] - m_Fleet[unittype][0];
+
                
                for (vector<Fleet*>::iterator j = fleets.begin(); j != fleets.end(); ++j)
                {
                        int lost =  totallost * ( (*j)->fleet(unittype, tick - 1) / m_Fleet[unittype][0] );
+                       cerr << (*j)->name() << " gaining " << lost << " " << unittype << endl;
                        (*j)->setFleet(unittype, (*j)->fleet(unittype, tick - 1) + lost, tick);
                }
        }
@@ -258,7 +264,10 @@ std::vector<Fleet*> Fleet::calculateSide(std::vector<Fleet*> fleets, int stays =
        for (vector<Fleet*>::iterator i = fleets.begin(); i != fleets.end(); ++i)
        {
                if (( tick - (*i)->ETA()) >= 0 && (tick - (*i)->ETA()) < stays)
+               {
                        fl.push_back((*i));
+                       cerr << "Using fleet " << (*i)->name() << " for tick " << tick;
+               }
                else if ((*i)->name() == "Home Planet")
                        fl.push_back((*i));
        }
@@ -442,3 +451,19 @@ int Fleet::resource(std::string type, int tick = 0) const
        return resource->at(tick);
 }
 
+//////////////////////////////////////////////////////////////////////////
+//
+void Fleet::printFleet()
+{
+       for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); ++i)
+       {
+               for (int tick = 0; tick < 5 ;++tick)
+               {
+                       int num = fleet(i->first, tick);
+
+                       if (num <= 0)
+                               break;
+                       cerr << num << " " << i->first << " during tick: " << tick << endl;
+               }
+       }
+}