home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Inne / Gry / Atomic_Tanks / Atomic-Tanks-5.1.exe / src / tank.h < prev    next >
C/C++ Source or Header  |  2010-05-01  |  3KB  |  101 lines

  1. #ifndef    TANK_DEFINE
  2. #define    TANK_DEFINE
  3.  
  4. /*
  5.  * atanks - obliterate each other with oversize weapons
  6.  * Copyright (C) 2003  Thomas Hudson
  7.  *
  8.  * This program is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU General Public License
  10.  * as published by the Free Software Foundation; either version 2
  11.  * of the License, or (at your option) any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  * GNU General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU General Public License
  19.  * along with this program; if not, write to the Free Software
  20.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  21.  * */
  22.  
  23.  
  24. #include "physobj.h"
  25.  
  26. #define    TELETIME    120
  27.  
  28. #define DIR_RIGHT 1
  29. #define DIR_LEFT 2
  30.  
  31. #define VIOLENT_CHANCE 6
  32.  
  33.  
  34. class PLAYER;
  35. class EXPLOSION;
  36. class FLOATTEXT;
  37. class TANK: public PHYSICAL_OBJECT
  38.   {
  39.   protected:
  40.     int    _targetX,_targetY;
  41.     int    _prevTargetX,_prevTargetY;
  42.     TANK    *_target;
  43.  
  44.   public:
  45.     int    bestPower, bestAngle;
  46.     int    smallestOvershoot;
  47.     int     t, a, p, cw, l, sh, sht, fs, ds, para, pen;
  48.     int    maxLife;    // amount awarded at beginning of round
  49.     double    damage;
  50.     int     repair_rate;
  51.     int    repulsion;
  52.     int    shieldColor, shieldThickness;
  53.     int    flashdamage, hit;
  54.     int    timer;
  55.     int    teleTimer;
  56.     int    teleXDest, teleYDest;
  57.     double    shPhase, delta_phase;
  58.     PLAYER    *creditTo;
  59.     FLOATTEXT    *healthText, *shieldText;//, *damageText;
  60.     FLOATTEXT       *nameText;
  61.     int use_tank_bitmap, use_turret_bitmap;
  62.     double turret_x, turret_y;
  63.     int delay_fall;         // time the tank will hover
  64.     int fire_another_shot;
  65.     int shots_fired;
  66.  
  67.     ~TANK ();
  68.     TANK (GLOBALDATA *global, ENVIRONMENT *env);
  69.     void    initialise ();
  70.     void Destroy();
  71.     int    get_heaviest_shield ();
  72.     void    boost_up_shield ();
  73.     void    reactivate_shield ();
  74.     void    draw (BITMAP *dest, int healthOffset);
  75.     void    printHealth (int offset);
  76.     void    update ();
  77.     void    requireUpdate ();
  78.     void    explode ();
  79.     void    simActivateCurrentSelection();
  80.     void    activateCurrentSelection ();
  81.     int    isSubClass (int classNum);
  82.     inline virtual int    getClass ()
  83.     {
  84.       return (TANK_CLASS);
  85.     }
  86.     virtual void setEnvironment(ENVIRONMENT *env);
  87.     void    applyDamage ();
  88.     int    applyPhysics (GLOBALDATA *global);
  89.     void    repulse (double xpos, double ypos, double *xaccel, double *yaccel, int aWeaponType);
  90.     int    howBuried ();
  91.     int    shootClearance (int targetAngle, int minimumClearance = MAX_OVERSHOOT);
  92.     void    newRound ();
  93.     void    framelyAccounting ();
  94.     int     tank_on_tank(GLOBALDATA *gd); //is this tank on top of another?
  95.     int     Get_Repair_Rate();    // how many units a tank will repair itself per round
  96.     int     Move_Tank(int direction);
  97.     void    Give_Credit(GLOBALDATA *global);  // give credit to killer
  98.   };
  99.  
  100. #endif
  101.