]> ruin.nu Git - hbs.git/commitdiff
some algorithms..
authorMichael Andreen <harv@ruin.nu>
Tue, 9 Apr 2002 19:19:27 +0000 (19:19 +0000)
committerMichael Andreen <harv@ruin.nu>
Tue, 9 Apr 2002 19:19:27 +0000 (19:19 +0000)
bs/fleet.cpp
bs/fleet.h

index 5f6b0155f01444431167c66f60abe72edbcb4c45..3ce2b71344e50574694a6280d54c6c52cd2a899a 100644 (file)
@@ -180,28 +180,34 @@ unsigned Fleet::score(int tick = 0) const
 
 //////////////////////////////////////////////////////////////////////////
 //
-void Fleet::setFleet(string unittype, int number)
+void Fleet::setFleet(string unittype, int number, int tick = 0)
 {
-       if (m_Fleet[unittype].size() == 0)
+       if (m_Fleet[unittype].size() <= tick)
        {
                m_Fleet[unittype].push_back(number);
                return;
        }
-       m_Fleet[unittype][0] = number;
+       m_Fleet[unittype][tick] = number;
 }
 
 //////////////////////////////////////////////////////////////////////////
 //
 int     Fleet::fleet(string unittype, int tick = 0)
 {
-       if (m_Fleet[unittype].size() == 0)
+       int ticks = m_Fleet[unittype].size();
+       if (ticks == 0)
                return 0;
 
+       --ticks;
+
+       if (ticks < tick)
+               m_Fleet[unittype][ticks];
+
        return m_Fleet[unittype][tick];
 }
 
 //////////////////////////////////////////////////////////////////////////
-//
+//FIXME
 void Fleet::addToThis(std::vector<Fleet*> fleets, int tick = 0)
 {
        for (UnitList::iterator i = s_Units.begin();  i != s_Units.end(); ++i)
@@ -226,6 +232,15 @@ void Fleet::distributeLossesGains(std::vector<Fleet*> fleets, int tick = 0)
 //
 std::vector<Fleet*> Fleet::calculateSide(std::vector<Fleet*> fleets, int stays = 0, 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)
+                       fl.push_back((*i));
+               else if ((*i)->name() == "Home Planet")
+                       fl.push_back((*i));
+       }
+       return fl;
 }
 
 //////////////////////////////////////////////////////////////////////////
@@ -257,17 +272,49 @@ void Fleet::takeEMP(std::string unittype, int number)
 //
 void Fleet::killFleet(std::string unittype, int number, int tick = 0)
 {
+       if (m_Fleet[unittype].size() <= tick)
+       {
+               m_Fleet[unittype].push_back(m_Fleet[unittype][m_Fleet[unittype].size()] - number);
+               return;
+       }
+       m_Fleet[unittype][tick] -= number;
 }
 
 //////////////////////////////////////////////////////////////////////////
 //
-void setResource(std::string type, int number, int tick = 0)
+void Fleet::setResource(std::string type, int number, int tick = 0)
 {
+
+       if (m_Resources[type].size() <= tick)
+               m_Resources[type].push_back(number);
+       m_Resources[type][tick] = number;
 }
 
 //////////////////////////////////////////////////////////////////////////
 //
-int resource(std::string type, int tick = 0)
+int Fleet::resource(std::string type, int tick = 0) const
 {
+       vector<int>const* resource = 0;
+       for (ResourceList::const_iterator i = m_Resources.begin(); i != m_Resources.end(); ++i)
+       {
+               if (i->first == type)
+               {
+                       resource = &i->second;
+                       break;
+               }
+       }
+       if (resource == 0)
+               return 0;
+
+       int ticks = resource->size();
+
+       if( ticks == 0)
+               return 0;
+
+       --ticks;
+
+       if (ticks < tick)
+               return resource->at(ticks);
+       return resource->at(tick);
 }
 
index 3bdab65924c5f9db08ffd1f2decf47fbeac5da3a..dfc5fdd6657479343f5219474e7dae2b3dcb54d4 100644 (file)
@@ -88,7 +88,7 @@ public:
         */
        unsigned score(int tick = 0) const;
 
-       void setFleet(std::string unittype, int number);
+       void setFleet(std::string unittype, int number, int tick = 0);
        int      fleet(std::string unittype, int tick = 0);
 
        int freeFleet(std:: string unittype, int tick = 0);
@@ -110,7 +110,7 @@ public:
        void killFleet(std::string unittype, int number, int tick = 0);
 
        void setResource(std::string type, int number, int tick = 0);
-       int resource(std::string type, int tick = 0);
+       int resource(std::string type, int tick = 0)const;
        
 protected: