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]["Friendly"]["Home Fleet"]->setStays(-1);
73 m_Battles[name]["Hostile"]["Evil guy"]->setName("Evil guy");
74 m_Battles[name]["Hostile"]["Evil guy"]->setETA(1);
77 emit documentChanged();
81 /////////////////////////////////////////////////////////////////////////
84 const BattleList& BSDoc::battles() const
89 //////////////////////////////////////////////////////////////////////////
91 const Fleet* BSDoc::specificFleet(QString battle, QString group, QString fleet) const
93 for (BattleList::const_iterator i = m_Battles.begin(); i != m_Battles.end(); ++i)
95 if (i->first == battle)
97 for (map<QString, map<QString, Fleet*> >::const_iterator j = i->second.begin(); j != i->second.end(); j++)
99 if (j->first == group)
101 for (map<QString, Fleet*>::const_iterator k = j->second.begin(); k != j->second.end(); ++k)
103 if (k->first == fleet)
115 //////////////////////////////////////////////////////////////////////////
117 void BSDoc::changeFleet(QString battle, QString group, QString fleet, const Fleet* fl)
119 delete m_Battles[battle][group][fleet];
121 const Planet* planet = 0;
122 if((planet = dynamic_cast<const Planet*>(fl)))
124 m_Battles[battle][group][fleet] = new Planet(*planet);
128 m_Battles[battle][group][fleet] = new Fleet(*fl);
130 emit documentChanged();
134 //////////////////////////////////////////////////////////////////////////
136 void BSDoc::newFleet(QString battle, QString group, QString fleet, Fleet* fl)
138 m_Battles[battle][group][fleet] = fl;
139 emit documentChanged();
142 //////////////////////////////////////////////////////////////////////////
144 void BSDoc::removeFleet(QString battle, QString group, QString fleet)
146 delete m_Battles[battle][group][fleet];
147 m_Battles[battle][group].erase(fleet);
148 emit documentChanged();
151 //////////////////////////////////////////////////////////////////////////
153 void BSDoc::runBattleSimulation()
155 for(BattleList::iterator i = m_Battles.begin(); i != m_Battles.end(); ++i)
157 map<QString, vector<Fleet*> > battle;
158 for (map<QString, map<QString, Fleet*> >::iterator j = i->second.begin(); j != i->second.end(); ++j)
160 for (map<QString, Fleet*>::iterator k = j->second.begin(); k != j->second.end(); ++k)
161 battle[j->first].push_back(k->second);
164 Planet* pl = dynamic_cast<Planet*>(i->second["Friendly"]["Home Planet"]);
168 pl->runBattle(battle["Friendly"], battle["Hostile"]);
172 emit documentChanged();