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 / virtobj.h < prev   
C/C++ Source or Header  |  2009-09-24  |  2KB  |  94 lines

  1. #ifndef    VIRTOBJ_DEFINE
  2. #define    VIRTOBJ_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. #ifndef _PURE
  24. #define _PURE =0
  25. #endif // _PURE
  26.  
  27. enum    alignType { CENTRE, LEFT, RIGHT };
  28.  
  29. #include "main.h"
  30.  
  31. #include "player.h"
  32.  
  33. class VIRTUAL_OBJECT
  34.   {
  35.   public:
  36.     BOX    _current, _old;
  37.     alignType    _align;
  38.     BITMAP    *_bitmap;
  39.     ENVIRONMENT    *_env;
  40.     GLOBALDATA    *_global;
  41.     int    _requireUpdate;
  42.     int    _index;
  43.     PLAYER *player;
  44.     double    x, y;
  45.     double    xv, yv;
  46.     int    angle;
  47.     int    destroy;
  48.     int    age, maxAge;
  49.     int    physics;    // Special physics processing?
  50.  
  51.     /* --- constructor --- */
  52.     VIRTUAL_OBJECT();
  53.  
  54.     /* --- destructor --- */
  55.     virtual    ~VIRTUAL_OBJECT ();
  56.  
  57.     /* --- non-inline methods --- */
  58.     void    update();
  59.  
  60.     /* --- pure virtual (abstract) methods --- */
  61.     virtual int      isSubClass (int classNum)_PURE;
  62.     virtual int      getClass ()_PURE;
  63.     virtual void  setEnvironment(ENVIRONMENT *env)_PURE; // This is virtual, so objects add themselves to _env!
  64.  
  65.     /* --- inline methods --- */
  66.     void    requireUpdate ()
  67.     {
  68.       _requireUpdate = TRUE;
  69.     }
  70.  
  71.     virtual void    initialise ();
  72.  
  73.     virtual int    applyPhysics ();
  74.  
  75.     inline void    setGlobalData (GLOBALDATA *global)
  76.     {
  77.       if (!_global || (_global != global))
  78.         _global = global;
  79.     }
  80.  
  81. virtual void    draw (BITMAP *dest);
  82.  
  83. void    setUpdateArea (int left, int top, int width, int height);
  84.  
  85. void    addUpdateArea (int left, int top, int width, int height);
  86.  
  87.     inline int    getIndex ()
  88.     {
  89.       return (_index);
  90.     }
  91.   };
  92.  
  93. #endif // VIRTOBJ_DEFINE
  94.