From: Michael Andreen Date: Thu, 11 Apr 2002 13:40:55 +0000 (+0000) Subject: solved an evil bug in Fleet::distributeLossesGains and some other stuff X-Git-Tag: HBS_0_1_0~12 X-Git-Url: https://ruin.nu/git/?p=hbs.git;a=commitdiff_plain;h=d1b57a078d3edb148f8b6ec61944a0b852a4bf94 solved an evil bug in Fleet::distributeLossesGains and some other stuff --- diff --git a/bs/fleet.cpp b/bs/fleet.cpp index f0fb8e1..2daa5cf 100644 --- a/bs/fleet.cpp +++ b/bs/fleet.cpp @@ -118,7 +118,7 @@ void Fleet::setUnits(UnitList& units) s_Units = units; - +/* for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); i++) { cerr << s_Units[(*i).first].Name() << "\t\t" @@ -140,6 +140,7 @@ void Fleet::setUnits(UnitList& units) << s_Units[(*i).first].type() << endl; } + */ } ////////////////////////////////////////////////////////////////////////// @@ -235,16 +236,21 @@ void Fleet::distributeLossesGains(std::vector fleets, int tick = 0) for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); ++i) { string unittype = i->first; + + cerr << "Distributing type: " << unittype << endl; + if (m_Fleet[unittype].size() < 1) - break; - if (m_Fleet[unittype][0] == 0) - break; + continue; + if (m_Fleet[unittype][0] == 0) + continue; int totallost = m_Fleet[unittype][1] - m_Fleet[unittype][0]; + for (vector::iterator j = fleets.begin(); j != fleets.end(); ++j) { int lost = totallost * ( (*j)->fleet(unittype, tick - 1) / m_Fleet[unittype][0] ); + cerr << (*j)->name() << " gaining " << lost << " " << unittype << endl; (*j)->setFleet(unittype, (*j)->fleet(unittype, tick - 1) + lost, tick); } } @@ -258,7 +264,10 @@ std::vector Fleet::calculateSide(std::vector fleets, int stays = for (vector::iterator i = fleets.begin(); i != fleets.end(); ++i) { if (( tick - (*i)->ETA()) >= 0 && (tick - (*i)->ETA()) < stays) + { fl.push_back((*i)); + cerr << "Using fleet " << (*i)->name() << " for tick " << tick; + } else if ((*i)->name() == "Home Planet") fl.push_back((*i)); } @@ -442,3 +451,19 @@ int Fleet::resource(std::string type, int tick = 0) const return resource->at(tick); } +////////////////////////////////////////////////////////////////////////// +// +void Fleet::printFleet() +{ + for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); ++i) + { + for (int tick = 0; tick < 5 ;++tick) + { + int num = fleet(i->first, tick); + + if (num <= 0) + break; + cerr << num << " " << i->first << " during tick: " << tick << endl; + } + } +} diff --git a/bs/fleet.h b/bs/fleet.h index b706bbd..74e4e86 100644 --- a/bs/fleet.h +++ b/bs/fleet.h @@ -113,6 +113,8 @@ public: void takeShoot(std::string unittype, int number, std::map& hitunits); void takeEMP(std::string unittype, int number); + + void printFleet(); protected: diff --git a/bs/fleetview.cpp b/bs/fleetview.cpp index 3f2ff19..5cbed53 100644 --- a/bs/fleetview.cpp +++ b/bs/fleetview.cpp @@ -43,6 +43,7 @@ FleetView::FleetView(const Fleet* fleet, bool friendly, QWidget *parent, const c m_bHome = false; } + m_Fleet->printFleet(); m_bFriendly = friendly; //m_ChangesMapper = new QSignalMapper(this); @@ -90,6 +91,7 @@ void FleetView::viewFleet(const Fleet* fleet, bool friendly) { m_Fleet = new Fleet(*fleet); } + m_Fleet->printFleet(); fillTable(); } diff --git a/bs/main.cpp b/bs/main.cpp index 387e302..6f56e87 100644 --- a/bs/main.cpp +++ b/bs/main.cpp @@ -39,7 +39,7 @@ int main(int argc, char *argv[]) BSApp *bs=new BSApp(); a.setMainWidget(bs); - bs->setCaption("Harv's BattleSystem" VERSION); + bs->setCaption("Harv's BattleSystem " VERSION); //eonsl->showMaximized(); bs->resize(800,600); bs->show(); diff --git a/bs/ui/tickviewbase.ui.h b/bs/ui/tickviewbase.ui.h index 83c23f7..026be8c 100644 --- a/bs/ui/tickviewbase.ui.h +++ b/bs/ui/tickviewbase.ui.h @@ -28,7 +28,9 @@ void CTickViewBase::slotTickChanged(int i) if ( oneTickCheck->isChecked()) { maxTickSpin->setValue(i); - minTickSpin->setValue(i); + //minTickSpin->setValue(i-1); + emit ticksChanged( maxTickSpin->value() - 1, maxTickSpin->value()); + return; } emit ticksChanged( minTickSpin->value(), maxTickSpin->value()); } @@ -38,10 +40,12 @@ void CTickViewBase::slotOneTick( bool b ) if(b) { maxTickSpin->setMinValue(0); + minTickSpin->setDisabled(true); minTickSpin->setMaxValue(99); } else { + minTickSpin->setEnabled(true); maxTickSpin->setMinValue( minTickSpin->value()); minTickSpin->setMaxValue( maxTickSpin->value()); }