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 / environment.h < prev    next >
C/C++ Source or Header  |  2010-09-05  |  4KB  |  173 lines

  1. #ifndef    ENVIRONMENT_DEFINE
  2. #define    ENVIRONMENT_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 "main.h"
  25.  
  26. enum landscapeTypes
  27. {
  28.   LANDTYPE_RANDOM,
  29.   LANDTYPE_CANYONS,
  30.   LANDTYPE_MOUNTAINS,
  31.   LANDTYPE_VALLEYS,
  32.   LANDTYPE_HILLS,
  33.   LANDTYPE_FOOTHILLS,
  34.   LANDTYPE_PLAIN,
  35.   LANDTYPE_NONE
  36. };
  37.  
  38. enum landSlideTypes
  39. {
  40.   LANDSLIDE_NONE,       // gravity does not exist
  41.   LANDSLIDE_TANK_ONLY,  // dirt falls, tank does not
  42.   LANDSLIDE_INSTANT,    // dirt falls without you seeing it
  43.   LANDSLIDE_GRAVITY,    // normal
  44.   LANDSLIDE_CARTOON     // gravity is delayed
  45. };
  46.  
  47. #ifndef MAX_GRAVITY_DELAY
  48. #define GRAVITY_DELAY 200
  49. #define MAX_GRAVITY_DELAY 3
  50. #endif
  51.  
  52. enum wallTypes
  53. {
  54.   WALL_RUBBER,
  55.   WALL_STEEL,
  56.   WALL_SPRING,
  57.   WALL_WRAP,
  58.   WALL_RANDOM
  59. };
  60.  
  61.  
  62. // stages
  63. #define STAGE_AIM 0
  64. #define STAGE_FIRE 1
  65. #define STAGE_ENDGAME 3
  66.  
  67.  
  68. #define SPRING_CHANGE 1.25
  69.  
  70. // size of satellite laser
  71. #define LASER_NONE 0.0
  72. #define LASER_WEAK 1.0
  73. #define LASER_STRONG 2.0
  74. #define LASER_SUPER 3.0
  75.  
  76. #define _GET_R(x) ((x & 0xff0000) >> 16)
  77. #define _GET_G(x) ((x & 0x00ff00) >> 8)
  78. #define _GET_B(x) (x & 0x0000ff)
  79.  
  80. #include "tank.h"
  81. //class TANK;
  82. //class MISSILE;
  83. //class FLOATTEXT;
  84. //class GLOBALDATA;
  85. //class VIRTUAL_OBJECT;
  86. class ENVIRONMENT
  87.   {
  88.   public:
  89.     GLOBALDATA    *_global;
  90.     TANK    *order[MAXPLAYERS * 3];
  91.     VIRTUAL_OBJECT    *objects[MAX_OBJECTS];
  92.     int    availableItems[THINGS];
  93.     int    numAvailable;
  94.     int    realm, am;
  95.     double    wind, lastwind;
  96.     double    windstrength, windvariation;
  97.     double    viscosity;
  98.     double    gravity;
  99.     double    weapontechLevel, itemtechLevel;
  100.     double    meteors;
  101.     double    lightning;
  102.     double  falling_dirt_balls;
  103.     double    fog;
  104.     // int    oldFogX, oldFogY;
  105.     double    landType;
  106.     double    landSlideType;
  107.     double  landSlideDelay;
  108.     char    *done;
  109.     int    *fp;
  110.     int    *h;
  111.     int    *surface;
  112.     int    *dropTo;
  113.     double    *velocity;
  114.     double    *dropIncr;
  115.     double    *height;
  116.     BITMAP    *db, *terrain, *sky;
  117.     BITMAP *waiting_sky, *waiting_terrain;     // sky saved in background
  118.     const gradient **my_sky_gradients, **my_land_gradients;
  119.     int    pclock, mouseclock;
  120.     int    stage;
  121.     int    combineUpdates;
  122.     double  wallType;
  123.     double    dBoxedMode;            // Can be 0.0 = off, 1.0 = on, 2.0 = random
  124.     double    dFadingText;        // 0.0 = off, 1.0 = on
  125.     double    dShadowedText;    // 0.0 = off, 1.0 = on
  126.     int     current_wallType, wallColour;
  127.     int     time_to_fall;    // amount of time dirt will hover
  128.     double  satellite;
  129.     int     naturals_since_last_shot;
  130.     double custom_background;
  131.     char **bitmap_filenames;
  132.     int number_of_bitmaps;
  133.     int current_drawing_mode;
  134.     int global_tank_index;
  135.  
  136.     ENVIRONMENT (GLOBALDATA *global);
  137.     ~ENVIRONMENT ();
  138.     void initialise ();
  139.     void setGlobaldata (GLOBALDATA *global)
  140.     {
  141.       _global = global;
  142.     }
  143.     GLOBALDATA *Get_Globaldata()
  144.     {
  145.          return _global;
  146.     }
  147.     void generateAvailableItemsList ();
  148.     int isItemAvailable (int itemNum);
  149.     int addObject (VIRTUAL_OBJECT *object);
  150.     int removeObject (VIRTUAL_OBJECT *object);
  151.     VIRTUAL_OBJECT *getNextOfClass (int classNum, int *index);
  152.     void newRound ();
  153.     int ingamemenu ();
  154.     void make_fullUpdate();
  155.     int getAvgBgColor(int, int, int, int, double, double); 
  156.     void do_updates ();
  157.     void replaceCanvas ();
  158.     void make_update (int x, int y, int w, int h);
  159.     void make_bgupdate (int x, int y, int w, int h);
  160.  
  161.     int saveToFile_Text (FILE *file);
  162.     int loadFromFile_Text (FILE *file);
  163.     int loadFromFile (ifstream &ifsFile);
  164.  
  165.     void Reset_Options();
  166.     void Set_Wall_Colour();
  167.     bool Get_Boxed_Mode(GLOBALDATA *global);
  168.     TANK *Get_Next_Tank(int *wrapped_around);
  169.   };
  170.  
  171. #endif
  172.  
  173.