]> ruin.nu Git - hbs.git/blob - bs/unittype.h
Some fixes..
[hbs.git] / bs / unittype.h
1 /***************************************************************************
2                           unittype.h  -  description
3                              -------------------
4     begin                : Tue Jan 22 2002
5     copyright            : (C) 2002 by Michael Andreen
6     email                : whale@linux.nu
7  ***************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
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.                                   *
15  *                                                                         *
16  ***************************************************************************/
17
18 #ifndef UNITTYPE_H
19 #define UNITTYPE_H
20
21 #include <map>
22 #include <vector>
23 #include <string>
24
25 //!This class contains a unittype, with all it's attributes + the number you got.
26 //
27 /**This class contains a unittype, with all it's attributes + the number you got.
28  * Maybe this actually should be a struct, since this class doen't have much to do, since i want it to be as generic as possible.  
29  * It got some data need need to be taken care of which makes me put it as a class. 
30   *@author Michael Andreen <whale@linux.nu>
31   *@see Fleet
32   */
33
34 class UnitType 
35 {
36 public: 
37         UnitType();
38         ~UnitType();
39         
40         /*! This function sets the name for this unittype (ie. interceptor) */
41         void setName(std::string sName);
42         /** Returns the name of this unittype */
43         std::string Name();
44
45         /** This functions sets which race this unittype is, the race is represented with a integer. */
46         void setRace(int iRace);
47         /** Returns the race this unittype belongs to*/
48         int Race();
49
50         /** Sets the class for the unittype, it's represented as a integer */
51         void setClass(int iClass);
52         int iClass();
53
54         /** Sets the classes that this unittype targets. a vector is used. */
55         void setTarget(std::vector<int> Target);
56         /** This function adds a target class to the end of the target list. */
57         void addTarget(int iTarget);
58         /** This function inserts a target class into the target list. The default is in the beginning.
59          * \param iTarget an integer that represents the target's class. 
60          * \param index where to place the target. 0 being the default and first place. */
61         void insTarget(int iTarget, int index = 0);
62         /** Returns all targets from the target list */
63         std::vector<int> Target();
64         /** Returns a specific target 
65          * \param index An index value that represents the target. 0 being the first*/
66         int     Target(int index);
67
68         /** Sets the initiatve, the lower it is the earlier the unit shots */
69         void setInitiative(int iInit);
70         int      Initiative();
71
72         /** Sets the agility, the higher it is the harder it is to hit the unit */
73         void setAgility (int iAgil);
74         int  Agility();
75
76         /** Sets the weaponspeed.. just a simple integer that shows how good it is at hitting things */
77         void setWeaponSpeed(int iWPSP);
78         int  WeaponSpeed();
79
80         /** Sets the number of guns. */
81         void setGuns(int iGuns);
82         int Guns();
83
84         /** Sets the how much power the guns have.. or in other words: the damage they do. */
85         void setPower(int iPower);
86         int  Power();
87
88         /** Sets the armor, this is how much damage the unittype can take before it's destroyed */
89         void setArmor(int iArmor);
90         int  Armor();
91
92         /** Sets the emp resistance, the lower value the easier it is to block it */
93         void setEMP(int iEMP);
94         int  EMP();
95
96         /** Sets the resource cost for this unittype. Used for example for score calculation and so on. */
97         void setTotalResources(int iTR);
98         /** Returns the number of total resources this unittype cost. */
99         int TotRes();
100
101         /** Sets the fuelcost for this unittype */
102         void setFuel(int iFuel);
103         /** Returns the fuelcost */
104         int  Fuel();
105
106         /** Sets the ETA, the speed in a sort of inverted form.. the lower ETA, the faster is the unit */
107         void setETA(int iETA);
108         int  ETA(); 
109
110         /** Sets the type of the unit. What the types do must be specified in the real battle engine (Fleet) though.
111          * \param iType An integer to symbolise the type. */
112         void setType(int iType);
113         /** What type of ship this is. */
114         int  Type();    
115 protected:
116         std::string             m_sName;
117         int                     m_iRace;            //!< Not really the race, but an indiaction on what race can use it.. 
118         int                     m_iClass;
119         std::vector<int>        m_vTarget;
120         int                     m_iInitiative;
121         int                     m_iAgility;
122         int                     m_iWeaponSpeed;
123         int                     m_iGuns;
124         int                     m_iPower;
125         int                     m_iArmor;
126         int                     m_iEMP;
127         int                     m_iTotalResources;
128         int                     m_iType;            //!< normal,emp,cloak,steal,pod
129         int                     m_iETA;
130         int                     m_iFuel;
131 };
132
133 #endif