#include "bsdoc.h"
+#include "planet.h"
+
+using namespace std;
BSDoc::BSDoc()
{
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;
}
int BSDoc::newBattle(QString name)
{
- m_Battles[name]["Friendly"]["Home Planet"];
- m_Battles[name]["Hostile"];
+ 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");
modified = true;
emit documentChanged();
/////////////////////////////////////////////////////////////////////////
//
-std::map<QString, std::map<QString, std::map<QString, Fleet> > >& BSDoc::Battles()
+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<QString, map<QString, Fleet*> >::const_iterator j = i->second.begin(); j != i->second.end(); j++)
+ {
+ if (j->first == group)
+ {
+ for (map<QString, Fleet*>::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<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();
+}