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"];
69 //Planet* pl = dynamic_cast<Planet*>(m_Battles[name]["Friendly"]["Home Planet"]);
71 emit documentChanged();
75 /////////////////////////////////////////////////////////////////////////
78 const BattleList& BSDoc::battles() const
83 //////////////////////////////////////////////////////////////////////////
85 const Fleet* BSDoc::specificFleet(QString battle, QString group, QString fleet) const
87 for (BattleList::const_iterator i = m_Battles.begin(); i != m_Battles.end(); ++i)
89 if (i->first == battle)
91 for (map<QString, map<QString, Fleet*> >::const_iterator j = i->second.begin(); j != i->second.end(); j++)
93 if (j->first == group)
95 for (map<QString, Fleet*>::const_iterator k = j->second.begin(); k != j->second.end(); ++k)
97 if (k->first == fleet)
109 //////////////////////////////////////////////////////////////////////////
111 void BSDoc::changeFleet(QString battle, QString group, QString fleet, const Fleet* fl)
113 delete m_Battles[battle][group][fleet];
115 const Planet* planet = 0;
116 if((planet = dynamic_cast<const Planet*>(fl)))
118 m_Battles[battle][group][fleet] = new Planet(*planet);
122 m_Battles[battle][group][fleet] = new Fleet(*fl);
124 emit documentChanged();
128 //////////////////////////////////////////////////////////////////////////
130 void BSDoc::newFleet(QString battle, QString group, QString fleet, Fleet* fl)
132 m_Battles[battle][group][fleet] = fl;
133 emit documentChanged();
136 //////////////////////////////////////////////////////////////////////////
138 void BSDoc::removeFleet(QString battle, QString group, QString fleet)
140 delete m_Battles[battle][group][fleet];
141 m_Battles[battle][group].erase(fleet);
142 emit documentChanged();
145 //////////////////////////////////////////////////////////////////////////
147 void BSDoc::runBattleSimulation()
149 for(BattleList::iterator i = m_Battles.begin(); i != m_Battles.end(); ++i)
151 map<QString, vector<Fleet*> > battle;
152 for (map<QString, map<QString, Fleet*> >::iterator j = i->second.begin(); j != i->second.end(); ++j)
154 for (map<QString, Fleet*>::iterator k = j->second.begin(); k != j->second.end(); ++k)
155 battle[j->first].push_back(k->second);
158 Planet* pl = dynamic_cast<Planet*>(i->second["Friendly"]["Home Planet"]);
162 pl->runBattle(battle["Friendly"], battle["Hostile"]);
166 emit documentChanged();