From: Michael Andreen Date: Wed, 17 Apr 2002 13:21:20 +0000 (+0000) Subject: added the possibility to watch blocked and survived fleet. X-Git-Tag: HBS_0_2_0~2 X-Git-Url: https://ruin.nu/git/?p=hbs.git;a=commitdiff_plain;h=1c8c7800411f2491d9be16c0f1515a91525f2e56 added the possibility to watch blocked and survived fleet. --- diff --git a/bs/bsdoc.cpp b/bs/bsdoc.cpp index 047248f..aa093e8 100644 --- a/bs/bsdoc.cpp +++ b/bs/bsdoc.cpp @@ -68,8 +68,9 @@ int BSDoc::newBattle(QString name) m_Battles[name]["Friendly"]["Home Planet"]->setName("Home Planet"); m_Battles[name]["Friendly"]["Home Fleet"]->setName("Home Fleet"); + m_Battles[name]["Friendly"]["Home Fleet"]->setRace("Terran"); m_Battles[name]["Hostile"]["Evil guy"]->setName("Evil guy"); - //Planet* pl = dynamic_cast(m_Battles[name]["Friendly"]["Home Planet"]); + modified = true; emit documentChanged(); return 0; diff --git a/bs/bsview.cpp b/bs/bsview.cpp index 54f7f48..7adc6db 100644 --- a/bs/bsview.cpp +++ b/bs/bsview.cpp @@ -85,7 +85,7 @@ BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent) //the right side //m_TickView = new TickView(m_RightSplit); m_FleetViews = new QWidgetStack(m_RightSplit); - m_ScanView = new ScanView(m_RightSplit); + //m_ScanView = new ScanView(m_RightSplit); Fleet fl1; //fl1.setRace(tr("Terran").latin1()); @@ -408,6 +408,7 @@ void BSView::updateFleetView() m_FleetView = new FleetView(fl, friendly); connect(m_FleetView, SIGNAL(fleetChanged(const Fleet*)), SLOT(slotFleetChanged(const Fleet*))); m_FleetView->slotViewTickRange(m_iMinTick, m_iMaxTick); + m_FleetView->slotSetResultMode(m_iResultMode); m_FleetViews->addWidget(m_FleetView, 1); } m_FleetViews->raiseWidget(2); @@ -430,9 +431,8 @@ void BSView::slotTickChanged(int min, int max) // void BSView::slotResultModeChanged( int i) { - //FIXME - /*m_FleetView->slotSetResultMode(i); + m_FleetView->slotSetResultMode(i); m_GenericFleetView->slotSetResultMode(i); - */ + m_iResultMode = i; } diff --git a/bs/fleet.cpp b/bs/fleet.cpp index 7070dae..1cdc04f 100644 --- a/bs/fleet.cpp +++ b/bs/fleet.cpp @@ -217,6 +217,38 @@ int Fleet::fleet(string unittype, int tick = 0) return m_Fleet[unittype][tick]; } +////////////////////////////////////////////////////////////////////////// +// +int Fleet::blockedFleet(std::string unittype, int tick = 0) +{ + int ticks = m_BlockedFleet[unittype].size(); + if (ticks == 0) + return 0; + + --ticks; + + if (ticks < tick) + return 0; + + return m_BlockedFleet[unittype][tick]; +} + +////////////////////////////////////////////////////////////////////////// +// +void Fleet::setBlockedFleet(std::string unittype, int number, int tick = 0) +{ + int ticks = m_BlockedFleet[unittype].size(); + + for (int i = ticks; i <= tick; ++i) + { + m_BlockedFleet[unittype].push_back(0); + } + m_BlockedFleet[unittype][tick] = number; + + cerr << "This fleet got " << m_BlockedFleet[unittype][tick] << " blocked units tick: " << tick << endl; + +} + ////////////////////////////////////////////////////////////////////////// //FIXME void Fleet::addToThis(std::vector fleets, int tick = 0) @@ -263,8 +295,15 @@ void Fleet::distributeLossesGains(std::vector fleets, int tick = 0) int fl1 = (*j)->fleet(unittype, tick - 1); float part = float(fl1) / fleet(unittype, 0) ; int lost = totallost * part; - cerr << (*j)->name() << " gaining " << lost << " " << unittype << " since it's " << part * 100 << "% of the whole fleet, and it had : " << fl1 << " units last tick.." << endl; (*j)->setFleet(unittype, (*j)->fleet(unittype, tick - 1) + lost, tick); + + cerr << (*j)->name() << " gaining " << lost << " " << unittype << " since it's " << part * 100 << "% of the whole fleet, and it had : " << fl1 << " units last tick.." << endl; + + lost = part * blockedFleet(unittype, 0); + + cerr << (*j)->name() << " got " << lost << " blocked " << unittype << ", the total number of blocked ships was: " << blockedFleet(unittype, 0) << endl; + + (*j)->setBlockedFleet(unittype, lost, tick); } } } @@ -635,7 +674,7 @@ void Fleet::distributeCappedRoids(std::vector fleets, int tick = 0) int lost = totcapped * part; cerr << (*j)->name() << " gaining " << lost << " " << res << " since it's " << part * 100 << "% of the whole score, and it had : " << fl1 << " score last tick.. compared to fleet total of: " << score(0) << endl; - (*j)->addResource(res, lost, tick); + (*j)->setResource(res, (*j)->resource(res,tick-1) + lost, tick); } } } diff --git a/bs/fleet.h b/bs/fleet.h index 0a0db41..770bf06 100644 --- a/bs/fleet.h +++ b/bs/fleet.h @@ -120,7 +120,17 @@ public: * \return returns the number of units that params specifies. */ int freeFleet(std:: string unittype, int tick = 0); + + /** This function is used to see how many ships of a specific type got + * blocked at a specific tick. + * \param unittype the name of the unittype + * \param tick what tick you want to look at + * \return the number of ships that got blocked at the specified tick. + */ + int blockedFleet(std::string unittype, int tick = 0); + void setBlockedFleet(std::string unittype, int number, int tick = 0); + /** This function takes the vector with fleets and adds all their units of the * specific tick to the current fleet's first tick. Main usage is for battle * calculations. @@ -247,6 +257,7 @@ public: void printFleet(); //static functions + // /** This function is used to set the different races used. * \param races a Simple RaceList which holds all the info */ diff --git a/bs/fleetview.cpp b/bs/fleetview.cpp index da07144..1144ca9 100644 --- a/bs/fleetview.cpp +++ b/bs/fleetview.cpp @@ -30,6 +30,10 @@ using namespace std; FleetView::FleetView(const Fleet* fleet, bool friendly, QWidget *parent, const char *name ) : QWidget(parent,name) { + m_iMinTick = 0; + m_iMaxTick = 0; + m_iResultMode = 0; + m_Modified = false; const Planet* planet = 0; if((planet = dynamic_cast(fleet))) @@ -68,7 +72,7 @@ FleetView::FleetView(const Fleet* fleet, bool friendly, QWidget *parent, const c } m_ResourceView = new ResourceView(this); m_MainLayout->addWidget(m_ResourceView); - fillTable(); + fillTable(); } FleetView::~FleetView(){ @@ -201,6 +205,7 @@ void FleetView::fillTable() m_RoidsEditView->setValue(tr("eonium"),pl->roids(tr("eonium").latin1())); m_RoidsEditView->setValue(tr("uninit"),pl->roids(tr("uninit").latin1())); } + slotViewTickRange(); } ///////////////////////////////////////////////////////////////////// @@ -228,17 +233,30 @@ void FleetView::slotViewTickRange(int min = -1, int max = -1) m_iMinTick = min; if (max > -1) m_iMaxTick = max; - + + int before = 0; + int after = 0; for(vector::iterator i = m_Names.begin(); i != m_Names.end(); ++i) { - int before = m_Fleet->fleet(i->latin1(), m_iMinTick); - int after = m_Fleet->fleet(i->latin1(), m_iMaxTick); - m_UnitsLostSurvivedView[(*i)]->setText(QString("%1").arg(after - before)); + int show; + if (m_iResultMode == 1) //Blocked + { + show = m_Fleet->blockedFleet(i->latin1(), m_iMaxTick); + } + else if (m_iResultMode == 2) //Survived + { + show = m_Fleet->fleet(i->latin1(), m_iMaxTick); + } + else + { + before = m_Fleet->fleet(i->latin1(), m_iMinTick); + after = m_Fleet->fleet(i->latin1(), m_iMaxTick); + show = after - before; + } + m_UnitsLostSurvivedView[(*i)]->setText(QString("%1").arg( show )); } int lost; - int before; - int after; int init = 0; @@ -300,3 +318,11 @@ void FleetView::slotViewTickRange(int min = -1, int max = -1) m_RoidsEditView->slotSetLost(tr("uninit"),lost); } } + +////////////////////////////////////////////////////////////////////////// +// +void FleetView::slotSetResultMode(int i) +{ + m_iResultMode = i; + slotViewTickRange(); +} diff --git a/bs/fleetview.h b/bs/fleetview.h index e0f81e0..2bd232b 100644 --- a/bs/fleetview.h +++ b/bs/fleetview.h @@ -52,6 +52,7 @@ public: public slots: void slotViewTickRange(int min = -1 , int max = -1); + void slotSetResultMode(int i); signals: void fleetChanged(const Fleet*); @@ -80,6 +81,7 @@ protected: int m_iMinTick; int m_iMaxTick; + int m_iResultMode; std::vector m_Names; std::map m_UnitsLabel; diff --git a/bs/ui/bsappbase.ui b/bs/ui/bsappbase.ui index 651e4d3..5175ef0 100644 --- a/bs/ui/bsappbase.ui +++ b/bs/ui/bsappbase.ui @@ -98,11 +98,6 @@ Survived unts - - - New (stolen) untis - -