]> ruin.nu Git - hbs.git/commitdiff
added the possibility to add new fleets..
authorMichael Andreen <harv@ruin.nu>
Sun, 7 Apr 2002 18:28:38 +0000 (18:28 +0000)
committerMichael Andreen <harv@ruin.nu>
Sun, 7 Apr 2002 18:28:38 +0000 (18:28 +0000)
bs/bsdoc.cpp
bs/bsdoc.h
bs/bsview.cpp
bs/bsview.h
bs/fleet.cpp
bs/ui/infoview.ui

index 07b02fc097251174ec41511f552813d17fb36d12..70cfd899ba4459461f10ea3cc9e3ed7ebea0f420 100644 (file)
@@ -125,4 +125,11 @@ void BSDoc::changeFleet(QString battle, QString group, QString fleet, const Flee
 }
 
 
+//////////////////////////////////////////////////////////////////////////
+//
+void BSDoc::newFleet(QString battle, QString group, QString fleet, Fleet* fl)
+{
+       m_Battles[battle][group][fleet] = fl;
+       emit documentChanged();
+}
 
index 1477409cee63b4e18cd4c16f9cbd8ec3d93a7ef6..6d6375aff7ef4b20491d899234751fe2df110a50 100644 (file)
@@ -71,6 +71,8 @@ class BSDoc : public QObject
 
        void changeFleet(QString battle, QString group, QString fleet, const Fleet* fl);
 
+       void newFleet(QString battle, QString group, QString fleet, Fleet* fl);
+
   signals:
     void documentChanged();
 
index 6f0bf311fd01af1d5b219282107a996d38f1faf8..f5e74bc82324a8f93440976d6b9bddad7cc388b9 100644 (file)
@@ -62,6 +62,11 @@ BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
        
        m_InfoView = new InfoView(m_LeftSplit);
 
+       connect(m_InfoView,SIGNAL(add()),SLOT(slotInfoNew()));
+       connect(m_InfoView,SIGNAL(apply()),SLOT(slotInfoApply()));
+       connect(m_InfoView,SIGNAL(cancel()),SLOT(slotInfoCancel()));
+       connect(m_InfoView,SIGNAL(remove()),SLOT(slotInfoRemove()));
+
        vector<QString> raceNames;
        const map<string, vector<int> >& races = Fleet::Races();
        for(map<string, vector<int> >::const_iterator i = races.begin(); i != races.end(); ++i)
@@ -154,16 +159,14 @@ void BSView::slotDocumentChanged()
                }
        }
        m_InfoView->setBattles(battlenames);
+       updateInfoView();
+       updateFleetView();
 }
 
 //////////////////////////////////////////////////////////////////////////////
 //
 void BSView::slotFleetSelection(QListViewItem *lvi)
 {
-       //cout << lvi->parent()->text(2).toLocal8bit() << endl;
-//     for (int i = 0; i < 5; i++)
-//             cout << lvi->text(i).local8Bit() << endl;
-       
 
        if (lvi->parent() == '\0')
        {
@@ -171,7 +174,6 @@ void BSView::slotFleetSelection(QListViewItem *lvi)
        }
        else if (lvi->parent()->parent() == '\0')
        {
-//                     m_FleetView->slotHomePlanet(false);
                if (lvi->text(0) == tr("Friendly"))
                {
 //                     m_FleetView->slotAttacker(false);
@@ -185,50 +187,12 @@ void BSView::slotFleetSelection(QListViewItem *lvi)
        }
        else
        {
-               bool friendly = false;
-               bool home       = false;
                m_sFleet = lvi->text(0);
                m_sGroup = lvi->parent()->text(0);
                m_sBattle = lvi->parent()->parent()->text(0);
 
-               if ( m_sGroup == tr("Friendly"))
-               {
-                       friendly = true;
-                       if(m_sFleet == tr("Home Planet"))
-                               home=true;
-               }
-
-               const Fleet* fl = m_doc->specificFleet(m_sBattle, m_sGroup, m_sFleet);
-
-               m_InfoView->setRace(fl->race().c_str());
-               m_InfoView->setFleetName(m_sFleet);
-               m_InfoView->setEta(fl->ETA());
-               m_InfoView->setGroup(m_sGroup);
-               m_InfoView->setBattle(m_sBattle);
-
-               if (fl->race() == tr("Generic").latin1())
-               {
-                       m_GenericFleetView->viewFleet(fl, friendly);
-                       m_FleetViews->raiseWidget(2);
-
-               }
-               else 
-               {
-                       if (fl->race() == m_FleetView->fleet()->race() &&
-                       m_FleetView->isHome() == home)
-                       {
-                               m_FleetView->viewFleet(fl, friendly);
-                       }
-                       else
-                       {
-                               m_FleetViews->removeWidget(m_FleetView);
-                               delete m_FleetView;
-                               m_FleetView = new FleetView(fl, friendly);
-                               connect(m_FleetView, SIGNAL(fleetChanged(const Fleet*)), SLOT(slotFleetChanged(const Fleet*)));
-                               m_FleetViews->addWidget(m_FleetView, 1);
-                       }
-                       m_FleetViews->raiseWidget(1);
-               }
+               updateInfoView();
+               updateFleetView();
        }
 }
 
@@ -267,3 +231,121 @@ void BSView::slotFleetChanged(const Fleet* fleet)
        m_doc->changeFleet(m_sBattle, m_sGroup, m_sFleet, fleet);
 }
 
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotInfoApply()
+{
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotInfoCancel()
+{
+       updateInfoView();
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotInfoNew()
+{
+       Fleet* fl = new Fleet();
+
+       m_sBattle = m_InfoView->battle();
+       m_sGroup = m_InfoView->group();
+       m_sFleet = m_InfoView->fleetName();
+
+       fl->setETA(m_InfoView->eta());
+       fl->setName(m_sFleet.latin1());
+       fl->setRace(m_InfoView->race().latin1());
+
+       m_doc->newFleet(m_sBattle, m_sGroup, m_sFleet, fl);
+
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotInfoRemove()
+{
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::updateInfoView()
+{
+       const Fleet* fl = m_doc->specificFleet(m_sBattle, m_sGroup, m_sFleet);
+
+       if(!fl)
+       {
+               m_InfoView->setRace("");
+               m_InfoView->setFleetName("");
+               m_InfoView->setEta(0);
+               m_InfoView->setGroup("");
+               m_InfoView->setBattle("");              
+               m_InfoView->enableNameChange(true);
+               m_InfoView->enableRemove(false);
+               return;
+       }
+
+       if(m_sFleet == tr("Home Planet"))
+       {
+               m_InfoView->enableNameChange(false);
+               m_InfoView->enableRemove(false);
+       }
+       else
+       {
+               m_InfoView->enableNameChange(true);
+               m_InfoView->enableRemove(true);
+       }
+
+       m_InfoView->setRace(fl->race().c_str());
+       m_InfoView->setFleetName(m_sFleet);
+       m_InfoView->setEta(fl->ETA());
+       m_InfoView->setGroup(m_sGroup);
+       m_InfoView->setBattle(m_sBattle);
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::updateFleetView()
+{
+       bool friendly = false;
+       bool home       = false;
+
+       const Fleet* fl = m_doc->specificFleet(m_sBattle, m_sGroup, m_sFleet);
+
+       if (!fl)
+       {
+               m_FleetViews->raiseWidget(2);
+               return;
+       }
+
+       if ( m_sGroup == tr("Friendly"))
+       {
+                       friendly = true;
+                       if(m_sFleet == tr("Home Planet"))
+                               home=true;
+       }
+       if (fl->race() == tr("Generic").latin1())
+       {
+               m_GenericFleetView->viewFleet(fl, friendly);
+               m_FleetViews->raiseWidget(2);
+
+       }
+       else 
+       {
+               if (fl->race() == m_FleetView->fleet()->race() &&
+               m_FleetView->isHome() == home)
+               {
+                       m_FleetView->viewFleet(fl, friendly);
+               }
+               else
+               {
+                       m_FleetViews->removeWidget(m_FleetView);
+                       delete m_FleetView;
+                       m_FleetView = new FleetView(fl, friendly);
+                       connect(m_FleetView, SIGNAL(fleetChanged(const Fleet*)), SLOT(slotFleetChanged(const Fleet*)));
+                       m_FleetViews->addWidget(m_FleetView, 1);
+               }
+               m_FleetViews->raiseWidget(1);
+       }
+}
index 789a6d4e4260071f3d28dc954bf62a4e5bd4f172..8707e0bc6cd677c036e55787e03214abba52090c 100644 (file)
@@ -50,13 +50,22 @@ class BSView : public QSplitter
     BSView(QWidget *parent=0, BSDoc* doc=0);
     ~BSView();
                
-               void addBattle(QString name);
+       void addBattle(QString name);
 
   protected slots:
     void slotDocumentChanged();
        void slotFleetChanged(const Fleet*);
+       void slotInfoApply();
+       void slotInfoCancel();
+       void slotInfoNew();
+       void slotInfoRemove();
 
   protected:
+
+       void updateInfoView();
+       void updateFleetView();
+
+
        BattleSum       *m_BattleSum;
        QListView               *m_NumberView;
        QSplitter               *m_RightSplit;  
index 00fb66b7e7005e1d590644d139f6624d4804c63d..ee22ae7a2759f58b97e35a98b8dffc8dfd4e8728 100644 (file)
@@ -170,7 +170,9 @@ unsigned Fleet::score(int tick = 0) const
 
        for (FleetList::const_iterator i = m_Fleet.begin(); i != m_Fleet.end(); ++i)
        {
-               tot_score += i->second[tick] * s_Units[i->first].totRes() / 10;
+                 if (i->second.size() >= tick)
+                               break;
+                       tot_score += i->second[tick] * s_Units[i->first].totRes() / 10;
        }
 
        return tot_score;
index b34ef8a5428debf100bce165bbef7a9f41b1db2e..411daeb40f27cebea0c743f69ea820dfcdee65e9 100644 (file)
         <receiver>InfoView</receiver>
         <slot>RemoveButton_clicked()</slot>
     </connection>
+    <connection>
+        <sender>ApplyButton</sender>
+        <signal>clicked()</signal>
+        <receiver>InfoView</receiver>
+        <slot>ApplyButton_clicked()</slot>
+    </connection>
 </connections>
 <tabstops>
     <tabstop>NameLine</tabstop>
     <signal>add()</signal>
 </signals>
 <slots>
-    <slot access="protected">init()</slot>
-    <slot access="protected">destroy()</slot>
+    <slot>init()</slot>
+    <slot>destroy()</slot>
     <slot>setRaces( std::vector&lt;QString&gt; races )</slot>
     <slot>setEta( int eta )</slot>
     <slot>setFleetName( QString name )</slot>
     <slot>setGroup( QString s )</slot>
     <slot>setBattles( std::vector&lt;QString&gt; battles )</slot>
     <slot>setBattle( QString s )</slot>
+    <slot>enableNameChange( bool b )</slot>
+    <slot>enableRemove( bool b )</slot>
+    <slot>ApplyButton_clicked()</slot>
+    <slot returnType="QString">battle()</slot>
+    <slot returnType="int">eta()</slot>
+    <slot returnType="QString">fleetName()</slot>
+    <slot returnType="QString">group()</slot>
+    <slot returnType="QString">race()</slot>
 </slots>
 <layoutdefaults spacing="0" margin="0"/>
 </UI>