1 /***************************************************************************
2 bcdoc.cpp - description
4 begin : Sun May 27 22:13:58 CEST 2001
5 copyright : (C) 2001 by Michael Andreen
7 ***************************************************************************/
9 /***************************************************************************
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
16 ***************************************************************************/
42 bool BSDoc::saveAs(const QString &filename)
44 QString test = filename;
48 bool BSDoc::load(const QString &filename)
50 QString test = filename;
51 emit documentChanged();
55 bool BSDoc::isModified() const
60 ///////////////////////////////////////////////////////////////////////////
63 int BSDoc::newBattle(QString name)
65 m_Battles[name]["Friendly"]["Home Planet"] = new Planet();;
66 m_Battles[name]["Friendly"]["Home Fleet"] = new Fleet();
67 m_Battles[name]["Hostile"]["Evil guy"] = new Fleet();
69 m_Battles[name]["Friendly"]["Home Planet"]->setName("Home Planet");
70 m_Battles[name]["Friendly"]["Home Fleet"]->setName("Home Fleet");
71 m_Battles[name]["Friendly"]["Home Fleet"]->setRace("Terran");
72 m_Battles[name]["Hostile"]["Evil guy"]->setName("Evil guy");
73 m_Battles[name]["Hostile"]["Evil guy"]->setETA(1);
76 emit documentChanged();
80 /////////////////////////////////////////////////////////////////////////
83 const BattleList& BSDoc::battles() const
88 //////////////////////////////////////////////////////////////////////////
90 const Fleet* BSDoc::specificFleet(QString battle, QString group, QString fleet) const
92 for (BattleList::const_iterator i = m_Battles.begin(); i != m_Battles.end(); ++i)
94 if (i->first == battle)
96 for (map<QString, map<QString, Fleet*> >::const_iterator j = i->second.begin(); j != i->second.end(); j++)
98 if (j->first == group)
100 for (map<QString, Fleet*>::const_iterator k = j->second.begin(); k != j->second.end(); ++k)
102 if (k->first == fleet)
114 //////////////////////////////////////////////////////////////////////////
116 void BSDoc::changeFleet(QString battle, QString group, QString fleet, const Fleet* fl)
118 delete m_Battles[battle][group][fleet];
120 const Planet* planet = 0;
121 if((planet = dynamic_cast<const Planet*>(fl)))
123 m_Battles[battle][group][fleet] = new Planet(*planet);
127 m_Battles[battle][group][fleet] = new Fleet(*fl);
129 emit documentChanged();
133 //////////////////////////////////////////////////////////////////////////
135 void BSDoc::newFleet(QString battle, QString group, QString fleet, Fleet* fl)
137 m_Battles[battle][group][fleet] = fl;
138 emit documentChanged();
141 //////////////////////////////////////////////////////////////////////////
143 void BSDoc::removeFleet(QString battle, QString group, QString fleet)
145 delete m_Battles[battle][group][fleet];
146 m_Battles[battle][group].erase(fleet);
147 emit documentChanged();
150 //////////////////////////////////////////////////////////////////////////
152 void BSDoc::runBattleSimulation()
154 for(BattleList::iterator i = m_Battles.begin(); i != m_Battles.end(); ++i)
156 map<QString, vector<Fleet*> > battle;
157 for (map<QString, map<QString, Fleet*> >::iterator j = i->second.begin(); j != i->second.end(); ++j)
159 for (map<QString, Fleet*>::iterator k = j->second.begin(); k != j->second.end(); ++k)
160 battle[j->first].push_back(k->second);
163 Planet* pl = dynamic_cast<Planet*>(i->second["Friendly"]["Home Planet"]);
167 pl->runBattle(battle["Friendly"], battle["Hostile"]);
171 emit documentChanged();