Advanced Strategic Command
typen.h
Go to the documentation of this file.
1 /*
2  This file is part of Advanced Strategic Command; http://www.asc-hq.de
3  Copyright (C) 1994-2010 Martin Bickel and Marc Schellenberger
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; see the file COPYING. If not, write to the
17  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18  Boston, MA 02111-1307 USA
19 */
20 
21 #ifndef typenH
22 #define typenH
23 
24 #include <time.h>
25 #include <list>
26 #include <bitset>
27 #include <map>
28 #include <SDL_types.h>
29 
30 #include "global.h"
31 
32 
33 #ifdef HAVE_LIMITS
34  #include <limits>
35 #else
36  #include <limits.h>
37 #endif
38 
39 #include "basictypes.h"
40 
41 #include "basestrm.h"
42 #include "util/messaginghub.h"
43 
44 
46 const int gamemapPixelSize = 4;
47 
54 const int playerNum = 9;
55 
56 
58 const int waffenanzahl = 8;
59 
61 const int cwettertypennum = 6;
62 
64 extern const char* cwettertypen[cwettertypennum];
65 
67 const int choehenstufennum = 8;
68 
70 const int maxbuildingpicnum = 8;
71 
73 const int maxunitexperience = 1000000;
74 
75 
77 const int resourceTypeNum = 3;
80 
81 class PropertyContainer;
82 
97 class Resources {
98  public:
99  int energy;
100  int material;
101  int fuel;
102 
103  static const int count = 3;
104 
105  int& resource ( int type ) {
106  switch ( type ) {
107  case 0: return energy;
108  case 1: return material;
109  case 2: return fuel;
110  default: throw OutOfRange();
111  }
112  };
113 
114  const int& resource ( int type ) const {
115  switch ( type ) {
116  case 0: return energy;
117  case 1: return material;
118  case 2: return fuel;
119  default: throw OutOfRange();
120  }
121  };
122 
123  Resources ( void ) : energy ( 0 ), material ( 0 ), fuel ( 0 ) {};
124  Resources ( int e, int m, int f ) : energy ( e ), material ( m ), fuel ( f ) {};
125  Resources& operator-= ( const Resources& res ) { energy-=res.energy; material-=res.material; fuel-=res.fuel; return *this;};
126  bool operator>= ( const Resources& res ) { return energy >= res.energy && material>=res.material && fuel>=res.fuel; };
127  bool operator< ( const Resources& res ) { return !(*this >= res); };
128 // Resources operator* ( double d );
129  bool operator== ( const Resources& res ) { return energy==res.energy && material==res.material && fuel==res.fuel; };
130  bool operator!= ( const Resources& res ) { return energy!=res.energy || material!=res.material || fuel!=res.fuel; };
131  Resources& operator+= ( const Resources& res ) { energy+=res.energy; material+=res.material; fuel+=res.fuel; return *this;};
132  enum { Energy, Material, Fuel };
133  void read ( tnstream& stream );
134  void write ( tnstream& stream ) const;
135  void runTextIO ( PropertyContainer& pc );
136  void runTextIO ( PropertyContainer& pc, const Resources& defaultValue );
137  static const char* name( int r );
138  ASCString toString() const;
139 
140  static const int materialColor = 0xff0000; // 0x8b3d1e;
141  static const int fuelColor = 0x00ff00; // 0x8b7800;
142  static const int energyColor = 0x3b2dd7;
143 };
144 
145 extern Resources operator- ( const Resources& res1, const Resources& res2 );
146 extern Resources operator- ( const Resources& res1 );
147 extern Resources operator+ ( const Resources& res1, const Resources& res2 );
148 extern Resources operator* ( const Resources& res1, float a );
149 extern Resources operator/ ( const Resources& res1, float a );
150 
152 extern const char* resourceNames[3];
153 
154 
155 
160  public:
161  ResourceMatrix ( );
162  ResourceMatrix ( const float* f );
163  Resources operator* ( const Resources& r ) const;
164 
165  void read ( tnstream& stream );
166  void write ( tnstream& stream ) const;
167  void runTextIO ( const ASCString& name, PropertyContainer& pc );
168  void runTextIO ( const ASCString& name, PropertyContainer& pc, const ResourceMatrix& defaultValue );
169 
170 };
171 
172 
173 
174 
175 
176 
178 struct GameTime {
179  GameTime() { abstime = 0; };
180  int move() const { return abstime % 0x10000; };
181  int turn() const { return abstime / 0x10000; };
182  static bool comp ( const GameTime& a, const GameTime& b ) { return a.abstime > b.abstime; };
183  void set ( int turn, int move ) { abstime = (turn * 0x10000) + move ; };
184  int abstime;
185 };
186 
187 
190  int dx;
191  int dy;
192  friend class MapCoordinate;
193 
194  public:
195  MapCoodinateVector( int dx, int dy ) {
196  this->dx = dx;
197  this->dy = dy;
198  }
199 };
200 
203  public:
204  int x;
205  int y;
206  MapCoordinate ( ) : x(-1), y(-1 ) {};
207  MapCoordinate ( int _x, int _y) : x(_x), y(_y) {};
208  bool operator< ( const MapCoordinate& mc ) const { return y < mc.y || ( y == mc.y && x < mc.x );};
209  bool operator== ( const MapCoordinate& mc ) const { return y == mc.y && x == mc.x;};
210  bool operator!= ( const MapCoordinate& mc ) const { return y != mc.y || x != mc.x;};
212  void write( tnstream& stream ) const { stream.writeInt ( 3000 ); stream.writeInt ( x ); stream.writeInt ( y); };
213  void read( tnstream& stream ) {
214  int vers = stream.readInt ( );
215  if ( vers == 3500 )
216  fatalError ( " MapCoordinate::read - data was written by MapCoordinate3D ");
217 
218  x = stream.readInt ( );
219  y = stream.readInt ( );
220  };
221  bool valid() const { return x >= 0 && y >= 0 ; } ;
222  void move(int width, int height);
223  ASCString toString(bool coordinates = false) const;
224  };
225 
227 {
228  return MapCoordinate(a.x - b.x, a.y - b.y );
229 }
230 
232 {
233  return MapCoordinate(a.x + b.x, a.y + b.y );
234 }
235 
236 
239  int z;
240  public:
241  int getBitmappedHeight ( ) const { if ( z >= 0 ) return 1<<z; else return 0;};
242  int getNumericalHeight ( ) const { return z; };
243  void setNumericalHeight ( int nh ) { z = nh; };
244  // MapCoordinate3D& operator= ( const MapCoordinate& mc ) { x = mc.x; y = mc.y; z = -1 );
245  MapCoordinate3D ( ) : MapCoordinate(), z(-1) {};
246  MapCoordinate3D ( int _x, int _y, int bitmappedz) : MapCoordinate ( _x, _y ), z ( getFirstBit(bitmappedz) ) {};
247  bool operator< ( const MapCoordinate3D& mc ) const { return y < mc.y || ( y == mc.y && x < mc.x ) || (y == mc.y && x == mc.x && z < mc.z);};
248  // MapCoordinate3D ( const MapCoordinate& mc ) : MapCoordinate ( mc ), z ( -2 ) {};
249  MapCoordinate3D ( const MapCoordinate& mc, int bitmappedHeight ) : MapCoordinate ( mc ), z ( getFirstBit(bitmappedHeight) ) {};
250  void setnum ( int _x, int _y, int numericalz ) { x = _x; y = _y; z = numericalz; };
251  bool operator== ( const MapCoordinate3D& mc ) const { return y == mc.y && x == mc.x && (z == mc.z || z == -2 || mc.z == -2);};
252  bool operator!= ( const MapCoordinate3D& mc ) const { return !operator==(mc) ; };
253  void write( tnstream& stream ) const { stream.writeInt ( 3500 ); stream.writeInt ( z ); MapCoordinate::write( stream ); };
254  void read( tnstream& stream ) {
255  stream.readInt ( );
256  z = stream.readInt ( );
257  MapCoordinate::read ( stream );
258  };
259  ASCString toString(bool coordinates = false) const;
260  };
261 
262 
269 extern int getheightdelta ( int height1, int height2 );
270 
271 
273 class Properties {
274  std::map<ASCString, ASCString> data;
275  public:
276  ASCString getValue( const ASCString& key );
277  void setValue( const ASCString& key, const ASCString& value );
278 
279  void write( tnstream& stream ) const;
280  void read( tnstream& stream );
281 };
282 
283 
288  public:
291 
297 
299 
301  virtual void read ( tnstream& stream ) = 0;
302 
304  virtual void write ( tnstream& stream ) const = 0;
305 
307  virtual void runTextIO ( PropertyContainer& pc ) = 0;
308  virtual ~LoadableItemType() {};
309 };
310 
311 
313 template< typename T>
314 class deallocating_vector : public vector<T> {
315  public:
317  for ( typename vector<T>::iterator i = vector<T>::begin(); i != vector<T>::end(); ++i )
318  delete *i;
319  };
320 };
321 
323 template< typename T, typename U>
324 class deallocating_map : public std::map<T,U> {
325  public:
327  for ( typename std::map<T,U>::iterator i = std::map<T,U>::begin(); i != std::map<T,U>::end(); ++i )
328  delete i->second;
329  };
330 };
331 
334 class IntRange {
335  public:
337  int from;
338 
340  int to;
341  IntRange(): from(-1), to(-1) {};
342  IntRange( int oneValue ): from(oneValue), to(oneValue) {};
343  IntRange( int from_, int to_ ): from(from_), to(to_) {};
344  void read ( tnstream& stream );
345  void write ( tnstream& stream ) const;
346 };
347 
351 extern vector<IntRange> String2IntRangeVector( const ASCString& t );
352 
353 
354 
362  public:
363  enum { deflt,
381  };
382 
384 const int cmovemalitypenum = 18;
385 
387 const int cmm_building = 11;
388 
390 const int cmm_trooper = 7;
391 
392 
394 extern const char* cmovemalitypes[cmovemalitypenum];
395 
397 extern const char* moveMaliTypeIcons[cmovemalitypenum];
398 
399 
400 
401 
404 
405 
406 
407 
409 extern const char* choehenstufen[8] ;
410  #define chtiefgetaucht 1
411  #define chgetaucht 2
412  #define chschwimmend 4
413  #define chfahrend 8
414  #define chtieffliegend 16
415  #define chfliegend 32
416  #define chhochfliegend 64
417  #define chsatellit 128
418 
419 extern ASCString heightToString( int bitmappedHeight );
420 
421 
427 
428 
429  #define maxmalq 10
430  #define minmalq 10
431  #define fieldxsize 48 /* Breite eines terrainbildes */
432  #define fieldysize 48
433  #define fielddistx 64
434  #define fielddisty 24
435  #define fielddisthalfx 32
436 
438  const int sidenum = 6;
439 
440 #define fieldsizex fieldxsize
441 #define fieldsizey fieldysize
442 
443  extern const int directionangle [ sidenum ];
444 
445 
446 #ifdef HAVE_LIMITS
447 
448  #ifdef max
449  #undef max
450  #endif
451  #ifdef min
452  #undef min
453  #endif
454 
455  #define maxint numeric_limits<int>::max()
456  #define minint numeric_limits<int>::min()
457 
458  #define maxfloat numeric_limits<float>::max()
459  #define minfloat numeric_limits<float>::min()
460 #else
461 
462  #define maxint INT_MAX
463  #define minint INT_MIN
464 
465  #define maxfloat FLT_MAX
466  #define minfloat FLT_MIN
467 #endif
468 
469 
470 
471 
477 
479 const int attackmovecost = 0;
480 
482 const int submarineMovement = 11;
483 
485 const int mineputmovedecrease = 10;
486 
488 const int mineremovemovedecrease = 10;
489 
493 
495 const int recyclingoutput = 90;
496 
498 const int destructoutput = 20;
499 
501 const int maxwindspeed = 60;
502 
505 
507 const int mine_movemalus_increase = 50;
508 
509 #define cnet_storeenergy 0x001 // es wird garantiert, dass material immer das 2 und fuel das 4 fache von energy ist
510 #define cnet_storematerial 0x002
511 #define cnet_storefuel 0x004
512 
513 #define cnet_moveenergyout 0x008
514 #define cnet_movematerialout 0x010
515 #define cnet_movefuelout 0x020
516 
517 #define cnet_stopenergyinput 0x040
518 #define cnet_stopmaterialinput 0x080
519 #define cnet_stopfuelinput 0x100
520 
521 #define cnet_stopenergyoutput 0x200
522 #define cnet_stopmaterialoutput 0x400
523 #define cnet_stopfueloutput 0x800
524 
528 const int resource_fuel_factor = 80;
529 const int resource_material_factor = 80;
530 
533 #define destruct_building_fuel_usage 10 // beim Abreissen wird 10 * fuelconsumption Fuel fuelconsumptiont
534 
535 
536 #define dissectunitresearchpointsplus 2 // Beim dissectn einer vehicle wird der sovielte Teil der Researchpoints jeder unbekannten Technologie gutgeschrieben
537 
538 #define dissectunitresearchpointsplus2 3 // Beim dissectn einer vehicle wird der sovielte Teil der Researchpoints jeder unbekannten Technologie gutgeschrieben.
539  // fuer die Technologie existieren aber bereits von einem anderen sezierten vehicletype gutschriften.
540 
542 const int maxminingrange = 10;
543 
546 
547 
548 extern const int csolarkraftwerkleistung[];
549 
551 const int cnetcontrolnum = 12;
552 
554 extern const char* cnetcontrol[cnetcontrolnum];
555 
556 extern const char* cgeneralnetcontrol[];
557 
558 const int maxViewRange = 255;
559 
560 #endif
the time in ASC, measured in turns and moves
Definition: typen.h:178
int fuel
Definition: typen.h:101
const double productionLineConstructionCostFactor
Definition: typen.h:544
GameTime()
Definition: typen.h:179
A mathematical matrix for transforming Resources instance (which is mathematically a vector) into a d...
Definition: typen.h:158
Resources(int e, int m, int f)
Definition: typen.h:124
ASCString filename
The name of the file from which the item was loaded.
Definition: typen.h:290
const int cnetcontrolnum
The number of netcontrol actions ; see cnetcontrol.
Definition: typen.h:551
const char * cwettertypen[cwettertypennum]
the names of the different weather
Definition: typen.cpp:78
~deallocating_map()
Definition: typen.h:326
const int cmm_building
The movemalus type for a building. It is used for SingleWeapon::targetingAccuracy ...
Definition: typen.h:387
void write(tnstream &stream) const
Definition: typen.cpp:146
virtual void write(tnstream &stream) const =0
write the binary representation of this item to the given stream
const int directionangle[sidenum]
Definition: typen.cpp:81
virtual void writeInt(int i)
Writes a 32 bit signed Integer. In the stream little-endian byte order is used and a translation is p...
Definition: basestrm.cpp:363
void read(tnstream &stream)
Definition: typen.cpp:384
bool operator<(const MapCoordinate &mc) const
Definition: typen.h:208
MapCoordinate3D()
Definition: typen.h:245
const int choehenstufennum
The number of levels of height.
Definition: typen.h:67
const int waffenanzahl
The number of different weapon types.
Definition: typen.h:58
int energy
Definition: typen.h:99
bool valid() const
Definition: typen.h:221
ASCString toString(bool coordinates=false) const
Definition: typen.cpp:314
void runTextIO(const ASCString &name, PropertyContainer &pc)
Definition: typen.cpp:154
bool operator<(const Resources &res)
Definition: typen.h:127
int abstime
Definition: typen.h:183
virtual int readInt(void)
Reads a 32 bit signed Integer. In the stream little-endian byte order is used and a translation is pe...
Definition: basestrm.cpp:284
void write(tnstream &stream) const
Definition: typen.cpp:374
void read(tnstream &stream)
Definition: typen.cpp:347
int getFirstBit(int zahl)
Count the number of zero bits on the LSB side of "zahl".
Definition: misc.cpp:45
ASCString toString() const
Definition: typen.cpp:268
const char * resourceNames[3]
the names of the different resources. Redundent, as we already have Resources::name ...
Definition: typen.cpp:79
static const int materialColor
Definition: typen.h:140
int turn() const
Definition: typen.h:181
const char * cmovemalitypes[cmovemalitypenum]
the names of the different MoveMalusTypes
Definition: typen.cpp:43
Resources & operator-=(const Resources &res)
Definition: typen.h:125
VisibilityStates
the different states that a player's view on a field can have
Definition: typen.h:403
virtual void runTextIO(PropertyContainer &pc)=0
registers the properties of this item for loading/writing into asctxt files
void runTextIO(PropertyContainer &pc)
Definition: typen.cpp:254
const int recyclingoutput
the percentage of a units production cost that is reclaimed when the unit is recycled ...
Definition: typen.h:495
int getNumericalHeight() const
Definition: typen.h:242
void read(tnstream &stream)
Definition: typen.h:213
const int & resource(int type) const
Definition: typen.h:114
const int mine_movemalus_increase
every mine on a field increases the field's movemalus by this amount (percent)
Definition: typen.h:507
void read(tnstream &stream)
Definition: typen.cpp:195
ASCString toString(bool coordinates=false) const
Definition: typen.cpp:304
Global platform dependant definitions. This file just branches to the platform specific files in thei...
The interface for all kinds of IO stream.
IntRange()
Definition: typen.h:341
void write(tnstream &stream) const
Definition: typen.h:253
static const char * name(int r)
Definition: typen.cpp:190
vector< IntRange > String2IntRangeVector(const ASCString &t)
parses a string repesenting a number of int ranges Example input: "10-20; 25 ; 30-125" ...
Definition: typen.cpp:326
const double productionLineRemovalCostFactor
Definition: typen.h:545
The ASCString class provides an abstract way to manipulate strings.
Definition: ascstring.h:14
void read(tnstream &stream)
Definition: typen.h:254
ASCString archive
Definition: typen.h:298
int from
the lower boundary.
Definition: typen.h:337
MapCoordinate()
Definition: typen.h:206
const char * cnetcontrol[cnetcontrolnum]
The actions that can be used to control a ResourceNet.
Definition: typen.cpp:71
void setNumericalHeight(int nh)
Definition: typen.h:243
const int mineputmovedecrease
the movement cost for putting mines on the map
Definition: typen.h:485
int move() const
Definition: typen.h:180
bool operator>=(const Resources &res)
Definition: typen.h:126
Resources & operator+=(const Resources &res)
Definition: typen.h:131
const int sidenum
the number of sides that a field has; is now fixed at 6;
Definition: typen.h:438
MapCoordinate3D(const MapCoordinate &mc, int bitmappedHeight)
Definition: typen.h:249
void read(tnstream &stream)
Definition: typen.cpp:138
const int mineremovemovedecrease
the movement cost for removing mines from the map
Definition: typen.h:488
Resources operator/(const Resources &res1, float a)
Definition: typen.cpp:236
const int maxbuildingpicnum
The maximum number of number of different images for a building and a weather. For example...
Definition: typen.h:70
const int maxminingrange
The maximum number of fields a mining station can extract mineral resources from; Counted from its en...
Definition: typen.h:542
const int minimumBuildingDamageForConquering
if a building has at least this amount of damage, then any unit can conquer the build (and not only u...
Definition: typen.h:492
const int resourceTypeNum
The number of different resources that ASC uses.
Definition: typen.h:77
IntRange(int from_, int to_)
Definition: typen.h:343
void write(tnstream &stream) const
Definition: typen.cpp:201
virtual void read(tnstream &stream)=0
read the binary representation of this item from the given stream
void write(tnstream &stream) const
Definition: typen.h:212
An abstract base class that provides the interface for all kinds of items that ASC loads from disk...
Definition: typen.h:287
const int destructoutput
the percentage of a units production cost that is reclaimed when the unit is salvaged ...
Definition: typen.h:498
Coordinate on the twodimensional map.
Definition: typen.h:202
ASCString getValue(const ASCString &key)
Definition: typen.cpp:364
Resources operator*(const Resources &r) const
Definition: typen.cpp:128
const int cmovemalitypenum
The number of vehicle categories; Each category has its own move malus.
Definition: typen.h:384
const int maxViewRange
Definition: typen.h:558
Resources operator-(const Resources &res1, const Resources &res2)
Definition: typen.cpp:208
const int destruct_building_material_get
when pulling down a building, this fraction of the buildings construction cost is reclaimed ...
Definition: typen.h:532
void setnum(int _x, int _y, int numericalz)
Definition: typen.h:250
Resources operator+(const Resources &res1, const Resources &res2)
Definition: typen.cpp:221
represents a change of a MapCoordinate
Definition: typen.h:189
The interface for the various streams that ASC offers, like file and memory streams.
const int attackmovecost
Constants that define the behaviour of units and buildings.
Definition: typen.h:479
int material
Definition: typen.h:100
void setValue(const ASCString &key, const ASCString &value)
Definition: typen.cpp:369
ASCString heightToString(int bitmappedHeight)
Definition: typen.cpp:396
const int csolarkraftwerkleistung[]
Definition: typen.cpp:87
bool operator!=(const MapCoordinate3D &mc) const
Definition: typen.h:252
Represents a range of numbers, with a lower and upper boundary.
Definition: typen.h:334
MapCoordinate3D(int _x, int _y, int bitmappedz)
Definition: typen.h:246
const char * moveMaliTypeIcons[cmovemalitypenum]
filenames of icons representing the varios movemalus types
Definition: typen.cpp:51
virtual ~LoadableItemType()
Definition: typen.h:308
const int resourceNum
The number of different resources that ASC uses.
Definition: typen.h:79
MapCoordinate & operator+=(const MapCoodinateVector &delta)
Definition: typen.cpp:292
Resources operator*(const Resources &res1, float a)
Definition: typen.cpp:228
const int resource_material_factor
Definition: typen.h:529
int getheightdelta(int height1, int height2)
calculate the height difference between two levels of height.
Definition: typen.cpp:92
const int generatortruckefficiency
the amount of fuel that a generator vehicle needs to produce one unit of energy
Definition: typen.h:504
MapCoodinateVector(int dx, int dy)
Definition: typen.h:195
const int maxunitexperience
The maximum experience value of a Vehicle.
Definition: typen.h:73
IntRange(int oneValue)
Definition: typen.h:342
int & resource(int type)
Definition: typen.h:105
int getBitmappedHeight() const
Definition: typen.h:241
bool operator!=(const MapCoordinate &mc) const
Definition: typen.h:210
const int gamemapPixelSize
the color depth of the gamemap
Definition: typen.h:46
int to
the upper boundary
Definition: typen.h:340
static const int fuelColor
Definition: typen.h:141
Coordinate on the map including height.
Definition: typen.h:238
static const int count
Definition: typen.h:103
a container that stores pointers and deletes the pointed-to objects on destruction ...
Definition: typen.h:314
bool operator==(const MapCoordinate &mc) const
Definition: typen.h:209
ASCString location
The filename and location on disk (including containerfiles) of the object.
Definition: typen.h:296
a class for storing general key/values pairs. Intended as a mechanism to persist data from Lua script...
Definition: typen.h:273
Resources are basically the currency of ASC.
Definition: typen.h:97
static bool comp(const GameTime &a, const GameTime &b)
Definition: typen.h:182
const int playerNum
the maximum number of players that ASC can manage.
Definition: typen.h:54
const char * choehenstufen[8]
the names of the different levels of height
Definition: typen.cpp:39
MapCoordinate(int _x, int _y)
Definition: typen.h:207
void fatalError(const ASCString &string)
void write(tnstream &stream) const
Definition: typen.cpp:354
void move(int width, int height)
Definition: typen.cpp:299
a map that stores pointers as values and deletes the pointed-to objects on destruction ...
Definition: typen.h:324
bool operator<(const MapCoordinate3D &mc) const
Definition: typen.h:247
const int cwettertypennum
The number of different weather.
Definition: typen.h:61
bool operator==(const Resources &res)
Definition: typen.h:129
const char * cgeneralnetcontrol[]
Definition: typen.cpp:75
Resources(void)
Definition: typen.h:123
const int cmm_trooper
the movemalus type of a trooper.
Definition: typen.h:390
bool operator!=(const Resources &res)
Definition: typen.h:130
bool operator==(const MapCoordinate3D &mc) const
Definition: typen.h:251
const int maxwindspeed
Wind with its maximum strength of 255 is moving this distance per turn.
Definition: typen.h:501
const int submarineMovement
the movemalus for all submerged units
Definition: typen.h:482
const int resource_fuel_factor
the conversion factor between mineral resources in the ground and the normal game Resources at nomina...
Definition: typen.h:528
static const int energyColor
Definition: typen.h:142
void set(int turn, int move)
Definition: typen.h:183
The MoveMalusType categorizes the different units (Vehicle) Originally, these types were only used to...
Definition: typen.h:361