1 /***************************************************************************
2 fleet.cpp - description
4 begin : Tue Jan 22 2002
5 copyright : (C) 2002 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 ***************************************************************************/
24 map<string, vector<int> > Fleet::s_Races;
25 UnitList Fleet::s_Units;
36 //////////////////////////////////////////////////////////////////////////
38 void Fleet::setName(string sName)
43 //////////////////////////////////////////////////////////////////////////
45 string Fleet::name() const
50 //////////////////////////////////////////////////////////////////////////
52 /** This function first sets the race, then it iterates through the the
53 * s_Races and checks if it finds the race it returns true, if it reaches
54 * the end without finding it it returns false.
56 bool Fleet::setRace(string sRace)
59 for (map<string, vector<int> >::iterator i = s_Races.begin(); i != s_Races.end(); i++)
61 if (m_sRace == (*i).first)
67 //////////////////////////////////////////////////////////////////////////
69 string Fleet::race() const
74 //////////////////////////////////////////////////////////////////////////
76 /** This function iterates through m_Fleet and adds all numbers together to
79 int Fleet::numberOfShips() const
83 for (map<string, vector<int> >::const_iterator i = m_Fleet.begin(); i != m_Fleet.end(); ++i)
85 total += i->second[0];
91 //////////////////////////////////////////////////////////////////////////
93 void Fleet::setETA(int eta)
98 //////////////////////////////////////////////////////////////////////////
100 int Fleet::ETA() const
105 //////////////////////////////////////////////////////////////////////////
107 void Fleet::setRaces(map<string, vector<int> >& races)
112 //////////////////////////////////////////////////////////////////////////
114 void Fleet::setUnits(UnitList& units)
120 for (UnitList::iterator i = s_Units.begin(); i != s_Units.end(); i++)
122 cerr << s_Units[(*i).first].Name() << "\t\t"
123 << s_Units[(*i).first].race() <<"\t"
124 << s_Units[(*i).first].unitClass() << "\t"
125 << s_Units[(*i).first].target(0) << "\t"
126 << s_Units[(*i).first].target(1) << "\t"
127 << s_Units[(*i).first].target(2) << "\t"
128 << s_Units[(*i).first].initiative() << "\t"
129 << s_Units[(*i).first].agility() << "\t"
130 << s_Units[(*i).first].weaponSpeed() << "\t"
131 << s_Units[(*i).first].guns() << "\t"
132 << s_Units[(*i).first].power() << "\t"
133 << s_Units[(*i).first].armor() << "\t"
134 << s_Units[(*i).first].EMP() << "\t"
135 << s_Units[(*i).first].totRes() << "\t"
136 << s_Units[(*i).first].fuel() << "\t"
137 << s_Units[(*i).first].ETA() << "\t"
138 << s_Units[(*i).first].type() << endl;
143 //////////////////////////////////////////////////////////////////////////
145 const map<string, vector<int> >& Fleet::Races()
150 //////////////////////////////////////////////////////////////////////////
152 const UnitList& Fleet::Units()
157 //////////////////////////////////////////////////////////////////////////
159 vector<int> Fleet::RacesAllowed() const
161 return s_Races[m_sRace];
164 //////////////////////////////////////////////////////////////////////////
166 unsigned Fleet::score(int tick = 0) const
168 unsigned tot_score = 0;
170 for (FleetList::const_iterator i = m_Fleet.begin(); i != m_Fleet.end(); ++i)
172 tot_score += i->second[tick] * s_Units[i->first].totRes() / 10;
178 //////////////////////////////////////////////////////////////////////////
180 void Fleet::setFleet(string unittype, int number)
182 if (m_Fleet[unittype].size() == 0)
184 m_Fleet[unittype].push_back(number);
187 m_Fleet[unittype][0] = number;
190 //////////////////////////////////////////////////////////////////////////
192 int Fleet::fleet(string unittype, int tick = 0)
194 if (m_Fleet[unittype].size() == 0)
197 return m_Fleet[unittype][tick];