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 / globaldata.h < prev    next >
C/C++ Source or Header  |  2011-03-23  |  6KB  |  225 lines

  1. #ifndef GLOBALDATA_DEFINE
  2. #define GLOBALDATA_DEFINE
  3. /*
  4.  * atanks - obliterate each other with oversize weapons
  5.  * Copyright (C) 2003  Thomas Hudson
  6.  *
  7.  * This program is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU General Public License
  9.  * as published by the Free Software Foundation; either version 2
  10.  * of the License, or (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20.  * */
  21.  
  22. #include <sys/types.h>
  23. #include <dirent.h>
  24.  
  25. #include "main.h"
  26. #include "text.h"
  27.  
  28. #define DEFAULT_SCREEN_WIDTH 800
  29. #define DEFAULT_SCREEN_HEIGHT 600
  30.  
  31. #define LANGUAGE_ENGLISH 0.0
  32. #define LANGUAGE_PORTUGUESE 1.0
  33. #define LANGUAGE_FRENCH 2.0
  34. #define LANGUAGE_GERMAN 3.0
  35. #define LANGUAGE_SLOVAK 4.0
  36. #define LANGUAGE_RUSSIAN 5.0
  37. #define LANGUAGE_SPANISH 6.0
  38. #define LANGUAGE_ITALIAN 7.0
  39.  
  40. #define COLOUR_THEME_REGULAR 0.0
  41. #define COLOUR_THEME_CRISPY 1.0
  42.  
  43. #define GAME_NAME_LENGTH 64
  44.  
  45. #define VIOLENT_DEATH_OFF 0
  46. #define VIOLENT_DEATH_LIGHT 1
  47. #define VIOLENT_DEATH_MEDIUM 2
  48. #define VIOLENT_DEATH_HEAVY 3
  49.  
  50. #define MAX_INTEREST_AMOUNT 100000
  51. #define MAX_TEAM_AMOUNT 500000
  52.  
  53. #define DEMO_WAIT_TIME 60
  54.  
  55. #define SOUND_AUTODETECT 0
  56. #define SOUND_OSS 1
  57. #define SOUND_ESD 2
  58. #define SOUND_ARTS 3
  59. #define SOUND_ALSA 4
  60. #define SOUND_JACK 5
  61.  
  62. #define FULL_SCREEN_EITHER 10.0
  63. #define FULL_SCREEN_TRUE  1.0
  64. #define FULL_SCREEN_FALSE 0.0
  65.  
  66. #define MAX_AI_TIME 10
  67.  
  68. #define ALL_SOCKETS -1
  69.  
  70.  
  71. enum skipComputerPlayType
  72. {
  73.   SKIP_NONE, SKIP_HUMANS_DEAD// , SKIP_AUTOPLAY
  74. };
  75.  
  76. class PLAYER;
  77. class TANK;
  78. class GLOBALDATA
  79.   {
  80.   private:
  81.   DIR *music_dir;
  82.   public:
  83.     ~GLOBALDATA();
  84.     int    WHITE, BLACK, PINK;
  85.     double    slope[360][2];
  86.  
  87.     char    *dataDir;
  88.     char    *configDir;
  89.     BOX    *updates, *lastUpdates, window;
  90.     int    updateCount, lastUpdatesCount;
  91.     int    stopwindow;
  92.     int    command;
  93.     double  frames_per_second;
  94.  
  95.     PLAYER    **allPlayers;
  96.     int    numPermanentPlayers;
  97.     PLAYER    **players;
  98.     int    numPlayers;
  99.     int    numHumanPlayers;
  100.     int    computerPlayersOnly;
  101.     double    skipComputerPlay;    /* options requires doubles - grr */
  102.     /* It's a lot simpler than having
  103.      * special cases for each type */
  104.     int    numTanks;
  105.     int    maxNumTanks;
  106.     TANK    *currTank;
  107.  
  108.     int    updateMenu;
  109.  
  110.     int    curland, cursky;
  111.  
  112.     int    colourDepth;
  113.     int    screenWidth, screenHeight;
  114.     int menuBeginY, menuEndY;
  115.     int    halfWidth, halfHeight;
  116.     int     width_override, height_override;
  117.     double  temp_screenWidth, temp_screenHeight;
  118.     PLAYER *client_player;     // the index we use to know which one is the player on the client side
  119.     gfxDataStruct    gfxData;
  120.     // DATAFILE    *SOUND;
  121.     ENVIRONMENT *env;
  122.  
  123.     // bool            full_screen;
  124.     // int        cacheCirclesBG ;    // This is just a flag, so it need only be
  125.                         //         an integer, not a double 
  126.     void Reset_Options();
  127.  
  128.     /* Logically, these three variables should be ints.  However, converting
  129.     them to ints (or even an enumerated type) would require some rewritting
  130.     of the options function - and that's a lot of work. 2003.09.05 */
  131.     /* Hence being double. 2004.01.05 */
  132.     double ditherGradients;
  133.     double detailedLandscape;
  134.     double detailedSky;
  135.     double os_mouse;          // whether we should use the OS or custom mouse
  136.     double colour_theme;     // land and sky gradiant theme
  137.     double sound_driver;
  138.  
  139.     /* All this money data; couldn't it be moved into some separate data
  140.     structure or object */
  141.     /* It could, but it's not a problem */
  142.     double    startmoney;
  143.     double    interest;
  144.     double    scoreHitUnit;
  145.     double    scoreSelfHit;
  146.     double    scoreUnitDestroyBonus;
  147.     double    scoreUnitSelfDestroy;
  148.     double    scoreRoundWinBonus;
  149.     double  sellpercent;
  150.     double  divide_money;
  151.     double  play_music;
  152.     double full_screen;
  153.     char server_name[128], server_port[128];
  154.  
  155.     /* double? */
  156.     /* double for options() reasons, no messing about with casting or
  157.      * special cases. */
  158.     double    turntype;
  159.     double    rounds;
  160.     int     currentround;
  161.     double  sound;
  162.     double  language;
  163.     int     name_above_tank;
  164.     int     tank_status_colour;
  165.     char   *tank_status;
  166.     char    game_name[GAME_NAME_LENGTH];
  167.     double  load_game;
  168.     double  campaign_mode;
  169.     double  violent_death;
  170.     double  saved_game_index;
  171.     char    **saved_game_list;
  172.     double  max_fire_time;
  173.     bool close_button_pressed;
  174.     char *update_string;
  175.     double check_for_updates;
  176.     bool demo_mode;
  177.     double enable_network, listen_port;
  178.     int draw_background;
  179.     BITMAP **button, **misc, **missile, **stock, **tank, **tankgun, **title;
  180.     SAMPLE **sounds;
  181.     SAMPLE *background_music;
  182.     FONT *unicode, *regular_font;
  183.     TEXTBLOCK *war_quotes, *instructions, *ingame;
  184.     TEXTBLOCK *gloat, *revenge, *retaliation, *suicide, *kamikaze;
  185.     char *client_message;   // message sent from client to main menu
  186.  
  187.  
  188.     GLOBALDATA ();
  189.     void    initialise ();
  190.     int     saveToFile_Text (FILE *file);
  191.     int     loadFromFile_Text (FILE *file);
  192.     int     loadFromFile(ifstream &my_file);
  193.     void    addPlayer (PLAYER *player);
  194.     void    removePlayer (PLAYER *player);
  195.     PLAYER    *getNextPlayer (int *playerCount);
  196.     PLAYER    *createNewPlayer (ENVIRONMENT *env);
  197.     void    destroyPlayer (PLAYER *player);
  198.     char    *Get_Config_Path();
  199.     bool    Check_Time_Changed();      // check to see if one second has passed
  200.     bool        bIsGameLoaded;
  201.     bool        bIsBoxed;
  202.     int            iHumanLessRounds;
  203.     double    dMaxVelocity;
  204.     int Load_Sounds();
  205.     int Load_Bitmaps();
  206.     SAMPLE *Load_Background_Music();
  207.     int Load_Fonts();
  208.     void Change_Font();
  209.     void Update_Player_Menu();
  210.     int Load_Text_Files();
  211.     #ifdef NETWORK
  212.     int Send_To_Clients(char *message);        // send a short message to all network clients
  213.     #endif
  214. #ifdef DEBUG_AIM_SHOW
  215.     bool bASD;
  216. #endif
  217.     int Find_Data_Dir();
  218.     double Calc_Max_Velocity();
  219.     int Count_Humans();
  220.     int Check_For_Winner();    // returns winner index or -1 for no winner
  221.     void Credit_Winners(int winner);
  222.   };
  223.  
  224. #endif
  225.