]> ruin.nu Git - hbs.git/blobdiff - bs/bsdoc.cpp
added this file.. thought it was there before
[hbs.git] / bs / bsdoc.cpp
index 5bf5f46863c6c28ec325cabca60f5b99703449e5..9d3c21ba8c10323052bdd8a28be1282dadbbc8ea 100644 (file)
@@ -106,4 +106,62 @@ const Fleet* BSDoc::specificFleet(QString battle, QString group, QString fleet)
        return '\0';
 }
 
+//////////////////////////////////////////////////////////////////////////
+//
+void BSDoc::changeFleet(QString battle, QString group, QString fleet, const Fleet* fl)
+{
+       delete m_Battles[battle][group][fleet];
+
+       const Planet* planet = 0;
+       if((planet = dynamic_cast<const Planet*>(fl)))
+       {
+                       m_Battles[battle][group][fleet] = new Planet(*planet);
+       }
+       else
+       {
+               m_Battles[battle][group][fleet] = new Fleet(*fl);
+       }
+       emit documentChanged();
+}
 
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSDoc::newFleet(QString battle, QString group, QString fleet, Fleet* fl)
+{
+       m_Battles[battle][group][fleet] = fl;
+       emit documentChanged();
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSDoc::removeFleet(QString battle, QString group, QString fleet)
+{
+       delete m_Battles[battle][group][fleet];
+       m_Battles[battle][group].erase(fleet);
+       emit documentChanged();
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSDoc::runBattleSimulation()
+{
+       for(BattleList::iterator i = m_Battles.begin(); i != m_Battles.end(); ++i)
+       {
+               map<QString, vector<Fleet*> > battle;
+               for (map<QString, map<QString, Fleet*> >::iterator j = i->second.begin(); j != i->second.end(); ++j)
+               {
+                       for (map<QString, Fleet*>::iterator k = j->second.begin(); k != j->second.end(); ++k)
+                               battle[j->first].push_back(k->second);
+               }
+
+               Planet* pl = dynamic_cast<Planet*>(i->second["Friendly"]["Home Planet"]);
+
+               if (pl)
+               {
+                       pl->runBattle(battle["Friendly"], battle["Hostile"]);
+               }
+       }
+
+       emit documentChanged();
+}