X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=bs%2Fbsdoc.cpp;h=9d3c21ba8c10323052bdd8a28be1282dadbbc8ea;hb=0913ab8150ff07822ec8e20466c8feead013cdc5;hp=5bf5f46863c6c28ec325cabca60f5b99703449e5;hpb=5940cfda3be2c7b4ecbd64c814948b29139177c0;p=hbs.git diff --git a/bs/bsdoc.cpp b/bs/bsdoc.cpp index 5bf5f46..9d3c21b 100644 --- a/bs/bsdoc.cpp +++ b/bs/bsdoc.cpp @@ -106,4 +106,62 @@ const Fleet* BSDoc::specificFleet(QString battle, QString group, QString fleet) 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(); +}