X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=bs%2Fbsdoc.cpp;h=11042b73cccf8eca3f063286fc74db110935b539;hb=45577c33bdaab669fd787a0411996d506307708b;hp=3d32cad004dd1aa92a123bdbc730ab7755d4115d;hpb=1bb3da557a983d00ec3ff37ff94152e6f109ee4a;p=hbs.git diff --git a/bs/bsdoc.cpp b/bs/bsdoc.cpp index 3d32cad..11042b7 100644 --- a/bs/bsdoc.cpp +++ b/bs/bsdoc.cpp @@ -17,6 +17,10 @@ #include "bsdoc.h" +#include "planet.h" + +using namespace std; + BSDoc::BSDoc() { modified = false; @@ -37,12 +41,14 @@ bool BSDoc::save() bool BSDoc::saveAs(const QString &filename) { + QString test = filename; return true; } bool BSDoc::load(const QString &filename) { - emit documentChanged(); + QString test = filename; + emit documentChanged(); return true; } @@ -50,3 +56,117 @@ bool BSDoc::isModified() const { return modified; } + +/////////////////////////////////////////////////////////////////////////// +// + +int BSDoc::newBattle(QString name) +{ + m_Battles[name]["Friendly"]["Home Planet"] = new Planet();; + m_Battles[name]["Friendly"]["Home Fleet"] = new Fleet(); + m_Battles[name]["Hostile"]["Evil guy"] = new Fleet(); + + m_Battles[name]["Friendly"]["Home Planet"]->setName("Home Planet"); + m_Battles[name]["Friendly"]["Home Fleet"]->setName("Home Fleet"); + m_Battles[name]["Friendly"]["Home Fleet"]->setRace("Terran"); + m_Battles[name]["Hostile"]["Evil guy"]->setName("Evil guy"); + m_Battles[name]["Hostile"]["Evil guy"]->setETA(1); + + modified = true; + emit documentChanged(); + return 0; +} + +///////////////////////////////////////////////////////////////////////// +// + +const BattleList& BSDoc::battles() const +{ + return m_Battles; +} + +////////////////////////////////////////////////////////////////////////// +// +const Fleet* BSDoc::specificFleet(QString battle, QString group, QString fleet) const +{ + for (BattleList::const_iterator i = m_Battles.begin(); i != m_Battles.end(); ++i) + { + if (i->first == battle) + { + for (map >::const_iterator j = i->second.begin(); j != i->second.end(); j++) + { + if (j->first == group) + { + for (map::const_iterator k = j->second.begin(); k != j->second.end(); ++k) + { + if (k->first == fleet) + { + return k->second; + } + } + } + } + } + } + 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(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 > battle; + for (map >::iterator j = i->second.begin(); j != i->second.end(); ++j) + { + for (map::iterator k = j->second.begin(); k != j->second.end(); ++k) + battle[j->first].push_back(k->second); + } + + Planet* pl = dynamic_cast(i->second["Friendly"]["Home Planet"]); + + if (pl) + { + pl->runBattle(battle["Friendly"], battle["Hostile"]); + } + } + + emit documentChanged(); +}