_________ __                 __
        /   _____//  |_____________ _/  |______     ____  __ __  ______
        \_____  \\   __\_  __ \__  \\   __\__  \   / ___\|  |  \/  ___/
        /        \|  |  |  | \// __ \|  |  / __ \_/ /_/  >  |  /\___ \
       /_______  /|__|  |__|  (____  /__| (____  /\___  /|____//____  >
               \/                  \/          \//_____/            \/
    ______________________                           ______________________
                          T H E   W A R   B E G I N S
                   Stratagus - A free fantasy real time strategy game engine

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
unittype.h
Go to the documentation of this file.
1 // _________ __ __
2 // / _____// |_____________ _/ |______ ____ __ __ ______
3 // \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
4 // / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
5 // /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
6 // \/ \/ \//_____/ \/
7 // ______________________ ______________________
8 // T H E W A R B E G I N S
9 // Stratagus - A free fantasy real time strategy game engine
10 //
12 //
13 // (c) Copyright 1998-2015 by Lutz Sammer, Jimmy Salmon and Andrettin
14 //
15 // This program is free software; you can redistribute it and/or modify
16 // it under the terms of the GNU General Public License as published by
17 // the Free Software Foundation; only version 2 of the License.
18 //
19 // This program is distributed in the hope that it will be useful,
20 // but WITHOUT ANY WARRANTY; without even the implied warranty of
21 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 // GNU General Public License for more details.
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with this program; if not, write to the Free Software
26 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
27 // 02111-1307, USA.
28 //
29 
30 #ifndef __UNITTYPE_H__
31 #define __UNITTYPE_H__
32 
34 
35 /*----------------------------------------------------------------------------
36 -- Includes
37 ----------------------------------------------------------------------------*/
38 
39 #ifndef __UPGRADE_STRUCTS_H__
40 #include "upgrade_structs.h"
41 #endif
42 
43 #ifndef __UNITSOUND_H__
44 #include "unitsound.h"
45 #endif
46 
47 #ifndef __ICONS_H__
48 #include "icons.h"
49 #endif
50 
51 #include "color.h"
52 #include "missileconfig.h"
53 #include "vec2i.h"
54 
55 #include <climits>
56 #include <vector>
57 #include <algorithm>
58 #include <map>
59 
60 /*----------------------------------------------------------------------------
61 -- Declarations
62 ----------------------------------------------------------------------------*/
63 
64 class CAnimations;
66 class CConstruction;
67 class MissileType;
68 class CFile;
69 struct lua_State;
70 #ifdef USE_MNG
71 class Mng;
72 #endif
73 class LuaCallback;
74 
75 #define UnitSides 8
76 #define MaxAttackPos 5
77 
78 CUnitType *UnitTypeByIdent(const std::string &ident);
79 
84 };
85 
87 {
88 public:
93  {}
94 
95  std::string FileWhenLoaded;
96  std::string FileWhenEmpty;
97  unsigned WaitAtResource;
98  unsigned ResourceStep;
100  unsigned WaitAtDepot;
101  unsigned ResourceId;
102  unsigned FinalResource;
103  unsigned char TerrainHarvester;
104  unsigned char LoseResources;
105  unsigned char HarvestFromOutside;
106  unsigned char RefineryHarvester;
107  // Runtime info:
110 };
111 
119 {
120 public:
121  CVariable() : Max(0), Value(0), Increase(0), Enable(0) {}
122 
123  bool operator ==(const CVariable &rhs) const
124  {
125  return this->Max == rhs.Max
126  && this->Value == rhs.Value
127  && this->Increase == rhs.Increase
128  && this->Enable == rhs.Enable;
129  }
130  bool operator !=(const CVariable &rhs) const { return !(*this == rhs); }
131 
132 public:
133  int Max;
134  int Value;
135  char Increase;
136  char Enable;
137 };
138 
139 // Index for boolflag already defined
140 enum {
175 };
176 
177 // Index for variable already defined.
178 enum {
179  HP_INDEX = 0,
220 };
221 
222 class CUnit;
223 class CUnitType;
224 class CFont;
225 
232 class CDecoVar
233 {
234 public:
235 
236  CDecoVar() {};
237  virtual ~CDecoVar()
238  {
239  };
240 
242  virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const = 0;
243 
244  unsigned int Index;
245 
246  int OffsetX;
247  int OffsetY;
248 
251 
254 
257  bool HideHalf;
258  bool ShowWhenMax;
260 
261  bool HideNeutral;
262  bool HideAllied;
264 };
265 
266 class CDecoVarBar : public CDecoVar
267 {
268 public:
270  virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const;
271 
272  bool IsVertical;
273  bool SEToNW;
274  int Height;
275  int Width;
277  char BorderSize;
278  // FIXME color depend of percent (red, Orange, Yellow, Green...)
281 };
282 
283 class CDecoVarText : public CDecoVar
284 {
285 public:
286  CDecoVarText() : Font(NULL) {};
288  virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const;
289 
291  // FIXME : Add Color, format
292 };
293 
296 {
297 public:
300  virtual void Draw(int x, int y,
301  const CUnitType &type, const CVariable &var) const;
302 
303  char NSprite;
304  // FIXME Sprite info. better way ?
305 };
306 
309 {
310 public:
313  virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const;
314 
315  // FIXME Sprite info. and Replace n with more appropriate var.
316  char NSprite;
317  int n;
318  int FadeValue;
319 };
320 
325 };
326 
334 };
335 
337 {
338 public:
339  virtual ~CBuildRestriction() {}
340  virtual void Init() {};
341  virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const = 0;
342 };
343 
345 {
346 public:
348  {
349  for (std::vector<CBuildRestriction *>::const_iterator i = _or_list.begin();
350  i != _or_list.end(); ++i) {
351  delete *i;
352  }
353  _or_list.clear();
354  }
355  virtual void Init()
356  {
357  for (std::vector<CBuildRestriction *>::const_iterator i = _or_list.begin();
358  i != _or_list.end(); ++i) {
359  (*i)->Init();
360  }
361  }
362  virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const;
363 
364  void push_back(CBuildRestriction *restriction) { _or_list.push_back(restriction); }
365 public:
366  std::vector<CBuildRestriction *> _or_list;
367 };
368 
370 {
371  class functor
372  {
373  public:
374  functor(const CUnitType *type, const Vec2i &_pos): Parent(type), pos(_pos) {}
375  inline bool operator()(const CUnit *const unit) const;
376  private:
377  const CUnitType *const Parent;
378  const Vec2i pos; //functor work position
379  };
380 public:
383  virtual void Init() {this->Parent = UnitTypeByIdent(this->ParentName);}
384  virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const;
385 
387  std::string ParentName;
389 };
390 
392 {
393  class functor
394  {
395  public:
396  functor(const CUnitType *type, const Vec2i &_pos): ontop(0), Parent(type), pos(_pos) {}
397  inline bool operator()(CUnit *const unit);
398  CUnit *ontop;
399  private:
400  const CUnitType *const Parent;
401  const Vec2i pos; //functor work position
402  };
403 public:
406  virtual void Init() {this->Parent = UnitTypeByIdent(this->ParentName);};
407  virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const;
408 
409  std::string ParentName;
411  int ReplaceOnDie: 1;
412  int ReplaceOnBuild: 1;
413 };
414 
416 {
417 public:
420  virtual void Init() {this->RestrictType = UnitTypeByIdent(this->RestrictTypeName);};
421  virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const;
422 
423  int Distance;
425  std::string RestrictTypeName;
426  std::string RestrictTypeOwner;
429  bool Diagonal;
430 };
431 
433 {
434 public:
437  virtual void Init() { this->RestrictType = UnitTypeByIdent(this->RestrictTypeName); };
438  virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const;
439 
440  int Count;
442  std::string RestrictTypeName;
444  std::string RestrictTypeOwner;
445 };
446 
448 {
449 public:
452  virtual void Init() { this->RestrictType = UnitTypeByIdent(this->RestrictTypeName); };
453  virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const;
454 
455  int Distance;
457  int Count;
459  std::string RestrictTypeName;
460  std::string RestrictTypeOwner;
463 };
464 
468 {
469 public:
470  CUnitType();
471  ~CUnitType();
472 
473  Vec2i GetHalfTileSize() const { return Vec2i(TileWidth / 2, TileHeight / 2); }
474  PixelSize GetPixelSize() const;
475 
476  bool CheckUserBoolFlags(const char *BoolFlags) const;
477  bool CanTransport() const { return MaxOnBoard > 0 && !GivesResource; }
478  bool CanMove() const;
479 
481 
482 public:
483  std::string Ident;
484  std::string Name;
485  int Slot;
486  std::string File;
487  std::string ShadowFile;
488 
489  int Width;
490  int Height;
491  int OffsetX;
492  int OffsetY;
493  int DrawLevel;
499 
502 
504 #ifdef USE_MNG
505  struct _portrait_ {
506  std::string *Files;
507  int Num;
509  mutable int CurrMng;
510  mutable int NumIterations;
511  } Portrait;
512 #endif
516 
522 
526 
527  mutable std::string DamageType;
528 
529  std::string CorpseName;
531 
533 
534  int RepairHP;
536 
537  int TileWidth;
539  int BoxWidth;
540  int BoxHeight;
550 #define InfiniteRepairRange INT_MAX
551  char *CanCastSpell;
558  int BoardSize;
563  int DecayRate;
564  // TODO: not used
568 #define MouseActionNone 0
569 #define MouseActionAttack 1
570 #define MouseActionMove 2
571 #define MouseActionHarvest 3
572 #define MouseActionSpellCast 5
573 #define MouseActionSail 6
574  int CanTarget;
575 #define CanTargetLand 1
576 #define CanTargetSea 2
577 #define CanTargetAir 4
578 
579  unsigned Flip : 1;
580  unsigned LandUnit : 1;
581  unsigned AirUnit : 1;
582  unsigned SeaUnit : 1;
583  unsigned ExplodeWhenKilled : 1;
584  unsigned Building : 1;
585  unsigned CanAttack : 1;
586  unsigned Neutral : 1;
587 
588  unsigned SideAttack : 1;
589 
592  struct BoolFlags {
593  bool value;
597  };
598  std::vector<BoolFlags> BoolFlag;
599 
603  std::vector<CBuildRestriction *> BuildingRules;
604  std::vector<CBuildRestriction *> AiBuildingRules;
606 
609 
611 
612  // --- FILLED UP ---
613 
614  unsigned FieldFlags;
615  unsigned MovementMask;
616 
619 
622 };
623 
624 /*----------------------------------------------------------------------------
625 -- Variables
626 ----------------------------------------------------------------------------*/
627 
628 extern std::vector<CUnitType *> UnitTypes;
629 
632 extern CUnitType *UnitTypeOrcWall;
633 
638 {
639 public:
640 
641  template <const unsigned int SIZE>
642  struct CKeys {
643 
644  struct DataKey {
645  static bool key_pred(const DataKey &lhs,
646  const DataKey &rhs)
647  {
648  return ((lhs.keylen == rhs.keylen) ?
649  (strcmp(lhs.key, rhs.key) < 0) : (lhs.keylen < rhs.keylen));
650  }
651  int offset;
652  unsigned int keylen;
653  const char *key;
654  };
655 
656  CKeys(): TotalKeys(SIZE) {}
657 
658  DataKey buildin[SIZE];
659  std::map<std::string, int> user;
660  unsigned int TotalKeys;
661 
662  void Init()
663  {
664  std::sort(buildin, buildin + SIZE, DataKey::key_pred);
665  }
666 
667  const char *operator[](int index)
668  {
669  for (unsigned int i = 0; i < SIZE; ++i) {
670  if (buildin[i].offset == index) {
671  return buildin[i].key;
672  }
673  }
674  for (std::map<std::string, int>::iterator
675  it(user.begin()), end(user.end());
676  it != end; ++it) {
677  if ((*it).second == index) {
678  return ((*it).first).c_str();
679  }
680  }
681  return NULL;
682  }
683 
691  int operator[](const char *const key)
692  {
693  DataKey k;
694  k.key = key;
695  k.keylen = strlen(key);
696  const DataKey *p = std::lower_bound(buildin, buildin + SIZE,
697  k, DataKey::key_pred);
698  if ((p != buildin + SIZE) && p->keylen == k.keylen &&
699  0 == strcmp(p->key, key)) {
700  return p->offset;
701  } else {
702  std::map<std::string, int>::iterator
703  ret(user.find(key));
704  if (ret != user.end()) {
705  return (*ret).second;
706  }
707  }
708  return -1;
709  }
710 
711  int AddKey(const char *const key)
712  {
713  int index = this->operator[](key);
714  if (index != -1) {
715  DebugPrint("Warning, Key '%s' already defined\n" _C_ key);
716  return index;
717  }
718  user[key] = TotalKeys++;
719  return TotalKeys - 1;
720  }
721 
722  };
723 
724  struct CBoolKeys : public CKeys<NBARALREADYDEFINED> {
725  CBoolKeys();
726  };
727 
728  struct CVariableKeys : public CKeys<NVARALREADYDEFINED> {
729  CVariableKeys();
730  };
731 
733 
734  void Init();
735  void Clear();
736 
739 
740  //EventType *Event; /// Array of functions sets to call when en event occurs.
741  std::vector<CVariable> Variable;
742  std::vector<CDecoVar *> DecoVar;
743 
744  unsigned int GetNumberBoolFlag() const
745  {
746  return BoolFlagNameLookup.TotalKeys;
747  }
748 
749  unsigned int GetNumberVariable() const
750  {
751  return VariableNameLookup.TotalKeys;
752  }
753 };
754 
756 
757 /*----------------------------------------------------------------------------
758 -- Functions
759 ----------------------------------------------------------------------------*/
760 extern CUnitType *CclGetUnitType(lua_State *l);
761 extern void UnitTypeCclRegister();
762 
763 extern void UpdateUnitStats(CUnitType &type, int reset_to_default);
764 extern void UpdateStats(int reset_to_default);
765 extern CUnitType *UnitTypeByIdent(const std::string &ident);
766 
767 extern void SaveUnitTypes(CFile &file);
768 extern CUnitType *NewUnitTypeSlot(const std::string &ident);
769 extern void DrawUnitType(const CUnitType &type, CPlayerColorGraphic *sprite,
771  int player, int frame, const PixelPos &screenPos);
772 
773 extern void InitUnitTypes(int reset_player_stats);
774 extern void LoadUnitTypeSprite(CUnitType &unittype);
775 extern void LoadUnitTypes();
776 extern void CleanUnitTypes();
777 
778 // in script_unittype.c
779 
781 extern void DefineVariableField(lua_State *l, CVariable *var, int lua_index);
782 
784 extern void UpdateUnitVariables(CUnit &unit);
785 
786 extern void SetMapStat(std::string ident, std::string variable_key, int value, std::string variable_type);
787 extern void SetMapSound(std::string ident, std::string sound, std::string sound_type, std::string sound_subtype = "");
789 
790 #endif // !__UNITTYPE_H__
Definition: unittype.h:144
CDecoVarSpriteBar()
Definition: unittype.h:298
Definition: unittype.h:215
Icon reference (used in config tables)
Definition: icons.h:139
Definition: unittype.h:724
void LoadUnitTypes()
Load the sprite for a unittype.
Definition: unittype.cpp:1049
int StartingResources
On which button level game will show units inside transporter.
Definition: unittype.h:560
int StillFrame
Animation scripts.
Definition: unittype.h:501
std::string * Files
Definition: unittype.h:506
int Value
Maximum for the variable. (Assume min is 0.)
Definition: unittype.h:134
Mng ** Mngs
Definition: unittype.h:508
bool ShowIfNotEnable
if true, use center of deco instead of upper border
Definition: unittype.h:255
use to show specific frame in a sprite.
Definition: unittype.h:308
virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const
Definition: build.cpp:305
virtual void Init()
Definition: unittype.h:340
Definition: unittype.h:180
int MinAttackRange
Number of directions unit can face.
Definition: unittype.h:544
Definition: unittype.h:82
Definition: unittype.h:283
CUnitType * RestrictType
Definition: unittype.h:461
Definition: unittype.h:200
int Slot
Pretty name shown from the engine.
Definition: unittype.h:485
unsigned ResourceId
Cycles the unit waits while returning.
Definition: unittype.h:101
virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const
Definition: build.cpp:348
Definition: unittype.h:148
void LoadUnitTypeSprite(CUnitType &unittype)
Init unit-type table.
Definition: unittype.cpp:987
virtual void Init()
Definition: unittype.h:383
Definition: unittype.h:330
IconConfig Icon
Still frame.
Definition: unittype.h:503
Unit is indestructible (take no damage).
Definition: unittype.h:165
int OffsetYPercent
Percent offset (TileWidth) in X coord.
Definition: unittype.h:250
Definition: animation.h:107
char AiPriorityTarget
Flag needed to target with missile.
Definition: unittype.h:596
IntColor BColor
Color of bar.
Definition: unittype.h:280
std::string RestrictTypeName
Definition: unittype.h:442
Definition: unittype.h:391
bool Diagonal
Definition: unittype.h:429
Definition: unittype.h:218
Definition: video.h:165
const char * operator[](int index)
Definition: unittype.h:667
Definition: unittype.h:188
unsigned ExplodeWhenKilled
Sea animated.
Definition: unittype.h:583
CBoolKeys BoolFlagNameLookup
Definition: unittype.h:737
Definition: unittype.h:118
virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const
Definition: build.cpp:113
Unit accepts friendly fire for splash attacks.
Definition: unittype.h:174
resource 6
Definition: upgrade_structs.h:70
unsigned char TerrainHarvester
Convert resource when delivered.
Definition: unittype.h:103
Definition: unittype.h:189
Definition: unittype.h:197
CUnitType * CorpseType
Corpse type name.
Definition: unittype.h:530
std::map< std::string, int > user
Definition: unittype.h:659
MissileConfig Explosion
Missile weapon.
Definition: unittype.h:514
void InitUnitTypes(int reset_player_stats)
Definition: unittype.cpp:949
int Max
Definition: unittype.h:133
Definition: unittype.h:141
void UpdateUnitVariables(CUnit &unit)
Update custom Variables with other variable (like Hp, ...)
Definition: script_unittype.cpp:1831
int ButtonLevelForTransporter
How much "cells" unit occupies inside transporter.
Definition: unittype.h:559
std::string FileWhenEmpty
Change the graphic when the unit is loaded.
Definition: unittype.h:96
int AddKey(const char *const key)
Definition: unittype.h:711
A platform independent color.
Definition: color.h:39
CBuildRestrictionOnTop()
Definition: unittype.h:404
Definition: unittype.h:322
Definition: unittype.h:216
Definition: unittype.h:212
std::vector< CUnitType * > UnitTypes
Definition: unittype.cpp:460
DistanceTypeType CountType
Definition: unittype.h:458
CAnimations * Animations
Attack offsets for missiles.
Definition: unittype.h:500
bool HideAllied
if true, don't show for neutral unit.
Definition: unittype.h:262
unsigned MovementMask
Unit map field flags.
Definition: unittype.h:615
Definition: unittype.h:146
virtual ~CBuildRestrictionAddOn()
Definition: unittype.h:382
Definition: unittype.h:198
int TileWidth
How much it costs to repair.
Definition: unittype.h:537
unsigned WaitAtDepot
Max amount of resources to carry.
Definition: unittype.h:100
unsigned LandUnit
Flip image when facing left.
Definition: unittype.h:580
~CUnitType()
Definition: unittype.cpp:555
virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const
Definition: build.cpp:100
void SaveUnitTypes(CFile &file)
Get unit-type by ident.
Definition: unittype.cpp:819
void DefineVariableField(lua_State *l, CVariable *var, int lua_index)
Cleanup unit-type module.
Definition: script_unittype.cpp:1569
int RandomMovementDistance
Probability to move randomly.
Definition: unittype.h:555
The builder stays outside during the construction.
Definition: unittype.h:158
virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const
function to draw the decorations.
Definition: unit_draw.cpp:437
virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const
function to draw the decorations.
Definition: unit_draw.cpp:456
Unit lives on land.
Definition: unittype.h:323
int CanStore[MaxCosts]
Definition: unittype.h:600
Definition: unittype.h:214
char * CanCastSpell
Definition: unittype.h:551
Definition: unittype.h:202
Definition: unittype.h:195
bool ShowOnlySelected
if false, don't show if var is to max. (Like mana)
Definition: unittype.h:259
bool HideHalf
if false, don't show if var is null (F.E poison)
Definition: unittype.h:257
Can attack from transporter.
Definition: unittype.h:153
Definition: unittype.h:184
CKeys()
Definition: unittype.h:656
void Clear()
Definition: unittype.cpp:1089
Definition: unittype.h:329
Don't use random frame rotation.
Definition: unittype.h:171
Corpses & destroyed places.
Definition: unittype.h:154
CBuildRestrictionHasUnit()
Definition: unittype.h:435
unsigned ResourceStep
Cycles the unit waits while mining.
Definition: unittype.h:98
int BoardSize
Number of Transporter slots.
Definition: unittype.h:558
Building must be built on coast.
Definition: unittype.h:156
std::vector< CBuildRestriction * > BuildingRules
Resource information.
Definition: unittype.h:603
bool IsVertical
Definition: unittype.h:272
std::string ShadowFile
Sprite files.
Definition: unittype.h:487
ResourceInfo()
Definition: unittype.h:89
Definition: unittype.h:232
int DrawLevel
Sprite vertical offset.
Definition: unittype.h:493
Definition: missileconfig.h:44
unsigned char RefineryHarvester
Unit harvests without entering the building.
Definition: unittype.h:106
std::vector< BoolFlags > BoolFlag
Definition: unittype.h:598
std::string RestrictTypeOwner
Definition: unittype.h:444
The big unit structure.
Definition: unit.h:119
unsigned Flip
Definition: unittype.h:579
#define PlayerMax
Definition: stratagus.h:157
int CurrMng
Definition: unittype.h:509
CVariableKeys()
Definition: script_unittype.cpp:165
std::string DamageType
lua function to create effects after teleportation
Definition: unittype.h:527
unsigned int GetNumberVariable() const
Definition: unittype.h:749
Definition: unittype.h:193
int NumIterations
Definition: unittype.h:510
MissileConfig Missile
Definition: unittype.h:513
int ReactRangePerson
Reacts on enemy for computer.
Definition: unittype.h:546
bool CheckUserBoolFlags(const char *BoolFlags) const
Definition: unittype.cpp:613
DistanceTypeType DistanceType
Definition: unittype.h:456
int BurnDamageRate
Burning percent.
Definition: unittype.h:548
virtual ~CBuildRestrictionDistance()
Definition: unittype.h:419
virtual ~CBuildRestrictionAnd()
Definition: unittype.h:347
unsigned int keylen
Definition: unittype.h:652
Vec2T< short int > Vec2i
Definition: vec2i.h:150
int TileHeight
Tile size on map width.
Definition: unittype.h:538
int ResourceCapacity
Resources the unit gains per mining cycle.
Definition: unittype.h:99
MissileConfig Impact[ANIMATIONS_DEATHTYPES+2]
Missile for unit explosion.
Definition: unittype.h:515
Definition: unittype.h:205
virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const =0
function to draw the decorations.
int RepairHP
What is shown in construction phase.
Definition: unittype.h:534
char Enable
Number to increase(decrease) Value by second.
Definition: unittype.h:136
std::vector< CVariable > Variable
Container of names of user defined variables.
Definition: unittype.h:741
UnitTypeType UnitType
originally only visual effect, we do more with this!
Definition: unittype.h:562
Unit will only attack if instructed.
Definition: unittype.h:142
unsigned FieldFlags
How much health is drained every second when poisoned.
Definition: unittype.h:614
int ShadowOffsetX
Shadow sprite height.
Definition: unittype.h:496
void push_back(CBuildRestriction *restriction)
Definition: unittype.h:364
unsigned Neutral
Unit can attack.
Definition: unittype.h:586
Unit unloads his passengers after death.
Definition: unittype.h:168
int ShadowWidth
Level to Draw UnitType at.
Definition: unittype.h:494
Unit is visible under fog of war.
Definition: unittype.h:150
int ShadowHeight
Shadow sprite width.
Definition: unittype.h:495
CUnitType * UnitTypeOrcWall
Human wall.
Definition: unittype.cpp:469
Definition: unittype.h:147
Unit can be entered by other units.
Definition: unittype.h:169
int Distance
Definition: unittype.h:423
bool HideNeutral
if true, show only for selected units.
Definition: unittype.h:261
unsigned WaitAtResource
Change the graphic when the unit is empty.
Definition: unittype.h:97
virtual ~CBuildRestrictionOnTop()
Definition: unittype.h:405
std::vector< CBuildRestriction * > _or_list
Definition: unittype.h:366
bool ShowFullBackground
Width of the bar.
Definition: unittype.h:276
bool IsCenteredInX
Percent offset (TileHeight) in Y coord.
Definition: unittype.h:252
unsigned int TotalKeys
Definition: unittype.h:660
Definition: unittype.h:210
CFont * Font
Definition: unittype.h:290
Icon to display for this unit.
Definition: unittype.h:505
Definition: unittype.h:173
bool SEToNW
if true, vertical bar, else horizontal.
Definition: unittype.h:273
int Num
Definition: unittype.h:507
bool operator==(const CVariable &rhs) const
Definition: unittype.h:123
CUnitType * RestrictType
Definition: unittype.h:443
Definition: unittype.h:204
int RepairCosts[MaxCosts]
Amount of HP per repair.
Definition: unittype.h:535
Orc wall.
Definition: unittype.h:637
int FadeValue
identifiant in SpellSprite
Definition: unittype.h:318
virtual ~CBuildRestrictionSurroundedBy()
Definition: unittype.h:451
bool CanTransport() const
Definition: unittype.h:477
int ReactRangeComputer
Minimal attack range.
Definition: unittype.h:545
IntColor Color
Size of the border, 0 for no border.
Definition: unittype.h:279
Definition: unittype.h:333
CColor NeutralMinimapColorRGB
Rules list for for AI to build a building.
Definition: unittype.h:605
unsigned char LoseResources
Unit will harvest terrain(wood only for now).
Definition: unittype.h:104
unsigned int GetNumberBoolFlag() const
Array to describe how showing variable.
Definition: unittype.h:744
Definition: unittype.h:728
int Distance
Definition: unittype.h:455
Definition: unittype.h:194
bool ShowWhenNull
if false, Show only if var is enable
Definition: unittype.h:256
Definition: video.h:64
char CanTargetFlag
Can transport units with this flag.
Definition: unittype.h:595
Definition: unittype.h:190
Definition: unittype.h:182
Definition: unittype.h:86
Definition: unittype.h:143
Definition: unittype.h:467
Definition: iolib.h:101
unsigned Building
Death explosion animated.
Definition: unittype.h:584
int PoisonDrain
Sounds for events, map-specific.
Definition: unittype.h:610
int offset
Definition: unittype.h:651
Definition: unittype.h:432
Font definition.
Definition: font.h:73
Definition: unittype.h:207
std::string Name
Identifier.
Definition: unittype.h:484
int OffsetX
Index of the variable.
Definition: unittype.h:246
virtual void Init()
Definition: unittype.h:406
bool ShowWhenMax
if true, don't show when 0 < var < max.
Definition: unittype.h:258
void UpdateUnitStats(CUnitType &type, int reset_to_default)
Register ccl features.
Definition: unittype.cpp:644
Definition: unittype.h:81
Can teleport other units.
Definition: unittype.h:166
Definition: unittype.h:219
Definition: unittype.h:209
Definition: unittype.h:211
std::vector< CBuildRestriction * > AiBuildingRules
Rules list for building a building.
Definition: unittype.h:604
virtual void Init()
Definition: unittype.h:437
Definition: unittype.h:369
Definition: unittype.h:163
unsigned FinalResource
Id of the resource harvested. Redundant.
Definition: unittype.h:102
virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const
function to draw the decorations.
Definition: unit_draw.cpp:487
Definition: unittype.h:336
Can do ground attack command.
Definition: unittype.h:155
int TeleportCost
lua function called on unit init
Definition: unittype.h:523
void UnitTypeCclRegister()
Access unit-type object.
Definition: script_unittype.cpp:2035
int Width
Shadow file.
Definition: unittype.h:489
Definition: unittype.h:206
The builder is lost after the construction.
Definition: unittype.h:159
Is only visible by CloakDetectors.
Definition: unittype.h:151
int Height
(SouthEastToNorthWest), if false value 0 is on the left or up of the bar.
Definition: unittype.h:274
CGraphic * ShadowSprite
Sprite images.
Definition: unittype.h:621
int BoxOffsetY
Selected box size horizontal offset.
Definition: unittype.h:542
void Init()
Definition: unittype.h:662
void SetMapStat(std::string ident, std::string variable_key, int value, std::string variable_type)
Definition: script_unittype.cpp:1935
CBuildRestrictionAddOn()
Definition: unittype.h:381
bool operator!=(const CVariable &rhs) const
Definition: unittype.h:130
CPlayerColorGraphic * Sprite
Unit status for each player.
Definition: unittype.h:620
Definition: unittype.h:185
GroupSelectionMode
Definition: unittype.h:80
ResourceInfo * ResInfo[MaxCosts]
The resource this unit gives.
Definition: unittype.h:602
CUnitType * Parent
building that is unit is an addon too.
Definition: unittype.h:410
CDecoVarText()
Definition: unittype.h:286
std::string RestrictTypeName
Definition: unittype.h:425
Definition: unittype.h:331
static bool key_pred(const DataKey &lhs, const DataKey &rhs)
Definition: unittype.h:645
bool value
Definition: unittype.h:593
bool CheckBuilder
Definition: unittype.h:428
char * AutoCastActive
Unit is able to use spells.
Definition: unittype.h:552
#define DebugPrint(args)
Definition: stratagus.h:125
std::string ParentName
Definition: unittype.h:409
Definition: unitsound.h:73
virtual ~CDecoVar()
Definition: unittype.h:237
int operator[](const char *const key)
Definition: unittype.h:691
int MaxOnBoard
Number of consecutive clicks until unit suicides.
Definition: unittype.h:557
LuaCallback * TeleportEffectIn
mana used for teleportation
Definition: unittype.h:524
Definition: unittype.h:332
virtual void Init()
Definition: unittype.h:355
DistanceTypeType CountType
Definition: unittype.h:441
Definition: unittype.h:447
CUnitType * CclGetUnitType(lua_State *l)
Definition: script_unittype.cpp:1229
unsigned SideAttack
Unit is neutral, used by the editor.
Definition: unittype.h:588
bool CanMove() const
Definition: unittype.cpp:624
int NumDirections
Selected box size vertical offset.
Definition: unittype.h:543
int BoxWidth
Tile size on map height.
Definition: unittype.h:539
LuaCallback * TeleportEffectOut
lua function to create effects before teleportation
Definition: unittype.h:525
CUnitType * NewUnitTypeSlot(const std::string &ident)
Save the unit-type table.
Definition: unittype.cpp:863
Definition: unittype.h:196
Definition: unittype.h:217
Sprite contains frame from full (left)to empty state (right).
Definition: unittype.h:295
int Height
Sprite width.
Definition: unittype.h:490
unsigned SeaUnit
Air animated.
Definition: unittype.h:582
int AutoBuildRate
Default value for autocast.
Definition: unittype.h:553
Definition: unittype.h:415
UnitTypeType
Definition: unittype.h:321
struct CUnitType::_portrait_ Portrait
std::string CorpseName
DamageType (used for extra death animations and impacts)
Definition: unittype.h:529
LuaCallback * OnHit
Definition: unittype.h:518
DataKey buildin[SIZE]
Definition: unittype.h:658
PixelPos MissileOffsets[UnitSides][MaxAttackPos]
Shadow vertical offset.
Definition: unittype.h:498
CVariableKeys VariableNameLookup
Container of name of user defined bool flag.
Definition: unittype.h:738
int OffsetY
Sprite horizontal offset.
Definition: unittype.h:492
int GivesResource
Resources that we can store here.
Definition: unittype.h:601
Definition: video.h:193
#define ANIMATIONS_DEATHTYPES
Definition: animation.h:39
Food supply.
Definition: unittype.h:191
CDecoVar()
Definition: unittype.h:236
CDecoVarStaticSprite()
Definition: unittype.h:311
LuaCallback * OnEachSecond
lua function called every cycle
Definition: unittype.h:520
Unit is a resource harvester.
Definition: unittype.h:161
CUnitType * RestrictType
Definition: unittype.h:427
int Width
Height of the bar.
Definition: unittype.h:275
Definition: unittype.h:183
virtual void Init()
Definition: unittype.h:420
Definition: unittype.h:187
std::string RestrictTypeOwner
Definition: unittype.h:460
int Count
Definition: unittype.h:457
int OffsetXPercent
Offset in Y coord.
Definition: unittype.h:249
CVariable()
Definition: unittype.h:121
CUnitStats Stats[PlayerMax]
Unit check this map flags for move.
Definition: unittype.h:618
Use special logic for Direction field.
Definition: unittype.h:170
std::vector< CDecoVar * > DecoVar
Array of user defined variables (default value for unittype).
Definition: unittype.h:742
CBuildRestrictionDistance()
Definition: unittype.h:418
Base structure of missile-types.
Definition: missile.h:343
Organic unit (used for death coil spell)
Definition: unittype.h:172
Vec2i GetHalfTileSize() const
Definition: unittype.h:473
void UpdateStats(int reset_to_default)
Update unit stats.
Definition: unittype.cpp:757
Definition: luacallback.h:38
Definition: unittype.h:157
Definition: unittype.h:201
int RepairRange
HP burn rate per sec.
Definition: unittype.h:549
Definition: unittype.h:642
CUnitStats MapDefaultStat
Definition: unittype.h:591
CUnitTypeVar()
Definition: unittype.h:732
Construction shown during construction of a building.
Definition: construct.h:125
int ShadowOffsetY
Shadow horizontal offset.
Definition: unittype.h:497
CBuildRestrictionSurroundedBy()
Definition: unittype.h:450
std::string File
Type as number.
Definition: unittype.h:486
DistanceTypeType DistanceType
distance to build (circle)
Definition: unittype.h:424
void SetMapSound(std::string ident, std::string sound, std::string sound_type, std::string sound_subtype="")
Definition: script_unittype.cpp:1992
Definition: unittype.h:266
CUnitType * UnitTypeHumanWall
All unit-types.
Definition: unittype.cpp:468
LuaCallback * OnInit
lua function called every second
Definition: unittype.h:521
Definition: unittype.h:179
LuaCallback * DeathExplosion
Missiles spawned if unit is hit(+shield)
Definition: unittype.h:517
char BorderSize
if true, show background like value equal to max.
Definition: unittype.h:277
std::string Ident
Definition: unittype.h:483
Vec2i Offset
Definition: unittype.h:386
int RandomMovementProbability
The rate at which the building builds itself.
Definition: unittype.h:554
int n
Index of sprite. (.
Definition: unittype.h:317
Definition: unittype.h:213
Selectable with mouse rectangle.
Definition: unittype.h:162
Definition: unittype.h:186
virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const
Definition: build.cpp:183
unsigned CanAttack
Building.
Definition: unittype.h:585
unsigned char HarvestFromOutside
The unit will lose it's resource when distracted.
Definition: unittype.h:105
DistanceTypeType
Definition: unittype.h:327
int BoxHeight
Selected box size width.
Definition: unittype.h:540
bool CanSelect(GroupSelectionMode mode=SELECTABLE_BY_RECTANGLE_ONLY) const
Definition: unittype.cpp:629
Definition: unittype.h:592
LuaCallback * OnEachCycle
lua function called when unit is hit
Definition: unittype.h:519
std::string RestrictTypeOwner
Definition: unittype.h:426
reveal the fog of war
Definition: unittype.h:145
int DecayRate
Land / fly / naval.
Definition: unittype.h:563
CUnitStats DefaultStat
Unit turns for attack (used for ships)
Definition: unittype.h:590
int BoxOffsetX
Selected box size height.
Definition: unittype.h:541
virtual ~CBuildRestrictionHasUnit()
Definition: unittype.h:436
Unit lives in air.
Definition: unittype.h:324
virtual void Draw(int x, int y, const CUnitType &type, const CVariable &var) const
function to draw the decorations.
Definition: unit_draw.cpp:375
Definition: unittype.h:83
int Count
Definition: unittype.h:440
Definition: unittype.h:644
char NSprite
Definition: unittype.h:303
unsigned int Index
Definition: unittype.h:244
Definition: vec2i.h:36
CUnitType * Parent
building that is unit is an addon too.
Definition: unittype.h:388
CConstruction * Construction
Corpse unit-type.
Definition: unittype.h:532
Food demand.
Definition: unittype.h:192
CBoolKeys()
Definition: script_unittype.cpp:144
#define UnitSides
Definition: unittype.h:75
#define _C_
Definition: stratagus.h:102
Definition: upgrade_structs.h:129
CPlayerColorGraphic * SpriteWhenEmpty
The graphic corresponding to FileWhenLoaded.
Definition: unittype.h:109
Definition: unittype.h:199
virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const =0
CUnitSound MapSound
Sounds for events.
Definition: unittype.h:608
bool ShowOpponent
if true, don't show for allied unit. (but show own units)
Definition: unittype.h:263
uint32_t IntColor
Definition: color.h:74
#define MaxAttackPos
Definition: unittype.h:76
int OffsetX
Sprite height.
Definition: unittype.h:491
std::string FileWhenLoaded
Definition: unittype.h:95
void CleanUnitTypes()
Load the unit-type data.
Definition: unittype.cpp:1103
int AiAdjacentRange
How much this annoys the computer.
Definition: unittype.h:566
bool IsCenteredInY
if true, use center of deco instead of left border
Definition: unittype.h:253
int ReplaceOnBuild
recreate the parent on destruction
Definition: unittype.h:412
int BurnPercent
Reacts on enemy for person player.
Definition: unittype.h:547
Definition: unittype.h:181
char Increase
Current (or initial) value of the variable (or initial value).
Definition: unittype.h:135
CUnitSound Sound
Minimap Color for Neutral Units.
Definition: unittype.h:607
const char * key
Definition: unittype.h:653
Definition: unittype.h:203
CUnitType * UnitTypeByIdent(const std::string &ident)
Update unit stats.
Definition: unittype.cpp:847
virtual bool Check(const CUnit *builder, const CUnitType &type, const Vec2i &pos, CUnit *&ontoptarget) const
Definition: build.cpp:224
CPlayerColorGraphic * SpriteWhenLoaded
Unit have to build Refinery buildings for harvesting.
Definition: unittype.h:108
char CanTransport
User defined flag. Used for (dis)allow target.
Definition: unittype.h:594
Definition: unittype.h:149
Definition: unittype.h:208
Definition: unittype.h:344
int MouseAction
Min radius for AI build surroundings checking.
Definition: unittype.h:567
bool CheckBuilder
Definition: unittype.h:462
std::string ParentName
offset from the main building to place this
Definition: unittype.h:387
void Init()
Definition: unittype.cpp:1079
Unit is a decoration (act as tile).
Definition: unittype.h:164
CUnitTypeVar UnitTypeVar
Definition: script_unittype.cpp:61
Definition: unittype.h:328
Can see Cloaked units.
Definition: unittype.h:152
int AnnoyComputerFactor
Decay rate in 1/6 seconds.
Definition: unittype.h:565
virtual void Init()
Definition: unittype.h:452
virtual ~CBuildRestriction()
Definition: unittype.h:339
PixelSize GetPixelSize() const
Definition: unittype.cpp:608
Resource can be harvested.
Definition: unittype.h:160
unsigned AirUnit
Land animated.
Definition: unittype.h:581
int ClicksToExplode
Quantity of tiles to move randomly.
Definition: unittype.h:556
std::string RestrictTypeName
Definition: unittype.h:459
char NSprite
Definition: unittype.h:316
int OffsetY
Offset in X coord.
Definition: unittype.h:247
int ReplaceOnDie
building that is unit is an addon too.
Definition: unittype.h:411
Definition: unittype.h:167
void DrawUnitType(const CUnitType &type, CPlayerColorGraphic *sprite, int player, int frame, const PixelPos &screenPos)
Draw the sprite frame of unit-type.
Definition: unittype.cpp:897
CUnitType()
Definition: unittype.cpp:524
(C) Copyright 1998-2012 by The Stratagus Project under the GNU General Public License.
All trademarks and copyrights on this page are owned by their respective owners.