home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 February / maximum-cd-2009-02.iso / DiscContents / SMC_1.6_win32.exe / src / core / global_game.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-09-25  |  8.2 KB  |  381 lines

  1. /***************************************************************************
  2.  * global_game.h  -  global header
  3.  *
  4.  * Copyright (C) 2003 - 2008 Florian Richter
  5.  ***************************************************************************/
  6. /*
  7.    This program is free software; you can redistribute it and/or modify
  8.    it under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 3 of the License, or
  10.    (at your option) any later version.
  11.    
  12.    You should have received a copy of the GNU General Public License
  13.    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  14. */
  15.  
  16. #ifndef SMC_GLOBAL_GAME_H
  17. #define SMC_GLOBAL_GAME_H
  18.  
  19. /* *** *** *** *** *** *** *** Secret Maryo ! *** *** *** *** *** *** *** *** *** *** */
  20.  
  21. // For non-Windows platforms
  22. #ifdef HAVE_CONFIG_H
  23.     #include "config.h"
  24. #endif
  25.  
  26. // Caption
  27. #define CAPTION "Secret Maryo Chronicles"
  28. // Version
  29. static const float smc_version = 1.6f;
  30.  
  31. /* *** *** *** *** *** *** *** Object Direction *** *** *** *** *** *** *** *** *** *** */
  32.  
  33. enum ObjectDirection
  34. {
  35.     // undefined
  36.     DIR_UNDEFINED    = -1,
  37.  
  38.     // default
  39.     DIR_LEFT    = 0,
  40.     DIR_RIGHT    = 1,
  41.     DIR_UP        = 2,
  42.     DIR_DOWN    = 3,
  43.  
  44.     DIR_TOP        = 2,
  45.     DIR_BOTTOM    = 3,
  46.  
  47.     // multi
  48.     DIR_TOP_LEFT = 4,
  49.     DIR_TOP_RIGHT = 5,
  50.     DIR_BOTTOM_LEFT = 6,
  51.     DIR_BOTTOM_RIGHT = 7,
  52.     DIR_LEFT_TOP = 21,
  53.     DIR_LEFT_BOTTOM = 22,
  54.     DIR_RIGHT_TOP = 23,
  55.     DIR_RIGHT_BOTTOM = 24,
  56.  
  57.     DIR_UP_LEFT = 4,
  58.     DIR_UP_RIGHT = 5,
  59.     DIR_DOWN_LEFT = 6,
  60.     DIR_DOWN_RIGHT = 7,
  61.     DIR_LEFT_UP = 21,
  62.     DIR_LEFT_DOWN = 22,
  63.     DIR_RIGHT_UP = 23,
  64.     DIR_RIGHT_DOWN = 24,
  65.  
  66.     // extra
  67.     DIR_HORIZONTAL    = 10,    // left or right
  68.     DIR_VERTICAL    = 11,    // up or down
  69.     DIR_ALL            = 20,    // all directions
  70.  
  71.     // special
  72.     DIR_FIRST        = 100,    // Overworld first waypoint
  73.     DIR_LAST        = 101    // Overworld last waypoint
  74. };
  75.  
  76. /* *** *** *** *** *** *** *** Default Color *** *** *** *** *** *** *** *** *** *** */
  77.  
  78. enum DefaultColor
  79. {
  80.     COL_DEFAULT    = -1,
  81.     COL_WHITE    = 0,
  82.     COL_BLACK    = 1,
  83.     COL_RED        = 2,
  84.     COL_ORANGE    = 3,
  85.     COL_YELLOW    = 4,
  86.     COL_GREEN    = 5,
  87.     COL_BLUE    = 6,
  88.     COL_BROWN    = 7,
  89.     COL_GREY    = 8
  90. };
  91.  
  92. /* *** *** *** *** *** *** *** Game Mode *** *** *** *** *** *** *** *** *** *** */
  93.  
  94. enum GameMode
  95. {
  96.     MODE_NOTHING        = 0,
  97.     MODE_LEVEL            = 1,
  98.     MODE_OVERWORLD        = 2,
  99.     MODE_MENU            = 3,
  100.     MODE_LEVEL_SETTINGS    = 4
  101. };
  102.  
  103. enum GameModeType
  104. {
  105.     MODE_TYPE_DEFAULT        = 0,
  106.     MODE_TYPE_LEVEL_CUSTOM    = 1,
  107.     MODE_TYPE_LEVEL_CUSTOM_EDITOR    = 2
  108. };
  109.  
  110. /* *** *** *** *** *** *** *** Game Action *** *** *** *** *** *** *** *** *** *** */
  111.  
  112. enum GameAction
  113. {
  114.     GA_NONE                = 0,
  115.     GA_DOWNGRADE_PLAYER    = 1,
  116.     GA_ENTER_MENU        = 2,
  117.     GA_ENTER_MENU_CREDITS = 3,
  118.     GA_ENTER_WORLD        = 4,
  119.     GA_ENTER_LEVEL        = 5,
  120.     GA_ACTIVATE_LEVEL_EXIT    = 6,
  121.     GA_ENTER_LEVEL_SETTINGS    = 7
  122. };
  123.  
  124. /* *** *** *** *** *** Level draw type *** *** *** *** *** *** *** *** *** *** *** *** */
  125.  
  126. enum LevelDrawType
  127. {
  128.     LVL_DRAW        = 0,    // only draw
  129.     LVL_DRAW_NO_BG    = 1,    // only draws and without background gradient and image
  130.     LVL_DRAW_BG        = 2        // only draws the background gradient and image
  131. };
  132.  
  133. /* *** *** *** *** *** *** *** Paths *** *** *** *** *** *** *** *** *** *** */
  134.  
  135. #ifdef __APPLE__
  136.     // always undefine data path to allow dynamic datapath detection
  137.     #ifdef DATA_DIR
  138.         #undef DATA_DIR
  139.     #endif
  140.     #define DATA_DIR "."
  141. #else
  142.     #ifndef DATA_DIR
  143.         #define DATA_DIR "data"
  144.     #endif
  145. #endif
  146.  
  147. // Core
  148. #define GAME_OVERWORLD_DIR "world"
  149. #define GAME_LEVEL_DIR "levels"
  150. #define GAME_PIXMAPS_DIR "pixmaps"
  151. #define GAME_SOUNDS_DIR "sounds"
  152. #define GAME_MUSIC_DIR "music"
  153. #define GAME_EDITOR_DIR "editor"
  154. #define GAME_ICON_DIR "icon"
  155. #define GAME_SCHEMA_DIR "schema"
  156. #define GAME_TRANSLATION_DIR "translations"
  157. // GUI
  158. #define GUI_SCHEME_DIR "gui/schemes"
  159. #define GUI_IMAGESET_DIR "gui/imagesets"
  160. #define GUI_FONT_DIR "gui/font"
  161. #define GUI_LAYOUT_DIR "gui/layout"
  162. #define GUI_LOOKNFEEL_DIR "gui/looknfeel"
  163. // User
  164. #define USER_SAVEGAME_DIR "savegames"
  165. #define USER_SCREENSHOT_DIR "screenshots"
  166. #define USER_LEVEL_DIR "levels"
  167. #define USER_WORLD_DIR "worlds"
  168. #define USER_IMGCACHE_DIR "cache"
  169.  
  170. /* *** *** *** *** *** *** *** Pre-declare *** *** *** *** *** *** *** *** *** *** */
  171.  
  172. // Allows use of pointers in header files without including individual headers
  173. // and decreases dependencies between files
  174.  
  175. /* *** speedfactor framerate *** */
  176. static const int speedfactor_fps = 32;
  177.  
  178. /* *** level engine version *** */
  179. static const float level_engine_version = 2.8f;
  180.  
  181. /* *** Sprite Types *** */
  182.  
  183. enum SpriteType
  184. {
  185.     TYPE_UNDEFINED = 0,
  186.     // global
  187.     TYPE_SPRITE = 1,
  188.     TYPE_PASSIVE = 44,
  189.     TYPE_FRONT_PASSIVE = 45,
  190.     TYPE_MASSIVE = 46,
  191.     TYPE_HALFMASSIVE = 5,
  192.     TYPE_CLIMBABLE = 47,
  193.     TYPE_ENEMY = 2,
  194.     TYPE_PLAYER = 3,
  195.     TYPE_ACTIVESPRITE = 4,
  196.     // game
  197.     TYPE_MOUSECURSOR = 100,
  198.     // overworld
  199.     TYPE_OW_WAYPOINT = 55,
  200.     TYPE_OW_LINE_START = 57,
  201.     TYPE_OW_LINE_END = 58,
  202.     // level
  203.     TYPE_LEVEL_EXIT = 18,
  204.     TYPE_LEVEL_ENTRY = 54,
  205.     TYPE_ENEMY_STOPPER = 20,
  206.     TYPE_BONUSBOX = 26,
  207.     TYPE_SPINBOX = 27,
  208.     TYPE_TEXT_BOX = 59,
  209.     TYPE_MOVING_PLATFORM = 38,
  210.     // enemy
  211.     TYPE_FURBALL = 10,
  212.     TYPE_TURTLE = 19,
  213.     TYPE_TURTLE_BOSS = 56,
  214.     TYPE_JPIRANHA = 29,
  215.     TYPE_ROKKO = 30,
  216.     TYPE_KRUSH = 36,
  217.     TYPE_THROMP = 41,
  218.     TYPE_EATO = 42,
  219.     TYPE_GEE = 43,
  220.     TYPE_SPIKA = 31,
  221.     TYPE_STATIC_ENEMY = 50,
  222.     // items
  223.     TYPE_POWERUP = 23,
  224.     TYPE_MUSHROOM_DEFAULT = 25,
  225.     TYPE_MUSHROOM_LIVE_1 = 35,
  226.     TYPE_MUSHROOM_POISON = 49,
  227.     TYPE_MUSHROOM_BLUE = 51,
  228.     TYPE_MUSHROOM_GHOST = 52,
  229.     TYPE_FIREPLANT = 24,
  230.     TYPE_JGOLDPIECE = 22, // Jumping Goldpiece
  231.     TYPE_FGOLDPIECE = 48, // Falling Goldpiece
  232.     TYPE_GOLDPIECE = 8,
  233.     TYPE_MOON = 37,
  234.     TYPE_JSTAR = 39, // Jumping Star
  235.     // special
  236.     TYPE_BALL = 28,
  237.     TYPE_SOUND = 60,
  238.     TYPE_ANIMATION = 61,
  239.     // HUD
  240.     TYPE_STATUSTEXT = 9,
  241.     TYPE_POINTDISPLAY = 12,
  242.     TYPE_GAMETIMEDISPLAY = 13,
  243.     TYPE_DEBUGDISPLAY = 14,
  244.     TYPE_LIFEDISPLAY = 15,
  245.     TYPE_GOLDDISPLAY = 16,
  246.     TYPE_MENUBG = 17,
  247.     TYPE_ITEMBOXDISPLAY = 32
  248. };
  249.  
  250. /* *** Massive Types *** */
  251.  
  252. enum MassiveType
  253. {
  254.     MASS_PASSIVE = 0,
  255.     MASS_MASSIVE = 1,
  256.     MASS_HALFMASSIVE = 2,
  257.     MASS_CLIMBABLE = 3
  258. };
  259.  
  260. /* *** Ground Types *** */
  261.  
  262. enum GroundType
  263. {
  264.     GROUND_NORMAL = 0,
  265.     GROUND_EARTH = 1,
  266.     GROUND_ICE = 2,
  267.     GROUND_SAND = 3,
  268.     GROUND_STONE = 4,
  269.     GROUND_PLASTIC = 5
  270. };
  271.  
  272. /* *** Array Types *** */
  273.  
  274. enum ArrayType
  275. {
  276.     ARRAY_UNDEFINED = 0,
  277.     // level default
  278.     ARRAY_MASSIVE = 1,
  279.     ARRAY_PASSIVE = 2,
  280.     ARRAY_FRONT_PASSIVE = 8,
  281.     ARRAY_ENEMY = 3,
  282.     ARRAY_ACTIVE = 4,
  283.     // hud
  284.     ARRAY_HUD = 5,
  285.     // animation
  286.     ARRAY_ANIM = 6
  287. };
  288.  
  289. /* *** Input identifier ***  */
  290.  
  291. enum input_identifier
  292. {
  293.     INP_UNKNOWN = 0,
  294.     INP_UP = 1,
  295.     INP_DOWN = 2,
  296.     INP_LEFT = 3,
  297.     INP_RIGHT = 4,
  298.     INP_JUMP = 5,
  299.     INP_SHOOT = 6,
  300.     INP_ACTION = 7,
  301.     // Request Item
  302.     INP_ITEM = 8,
  303.     // General Exit/Leave/Cancel
  304.     INP_EXIT = 9
  305. };
  306.  
  307. /* *** Ball Effect types ***  */
  308.  
  309. enum ball_effect
  310. {
  311.     FIREBALL_DEFAULT = 1,
  312.     FIREBALL_EXPLOSION = 2,
  313.     ICEBALL_DEFAULT = 3,
  314.     ICEBALL_EXPLOSION = 4
  315. };
  316.  
  317. /* *** Performance timer types ***  */
  318.  
  319. enum performance_timer_type
  320. {
  321.     // update
  322.     PERF_UPDATE_PROCESS_INPUT = 0,
  323.     PERF_UPDATE_LEVEL = 1,
  324.     PERF_UPDATE_LEVEL_EDITOR = 2,
  325.     PERF_UPDATE_HUD = 3,
  326.     PERF_UPDATE_PLAYER = 4,
  327.     PERF_UPDATE_COLLISIONS = 5,
  328.     PERF_UPDATE_CAMERA = 6,
  329.     // update overworld
  330.     PERF_UPDATE_OVERWORLD = 17,
  331.     // update menu
  332.     PERF_UPDATE_MENU = 18,
  333.     // update level settings
  334.     PERF_UPDATE_LEVEL_SETTINGS = 19,
  335.     // draw level
  336.     PERF_DRAW_LEVEL_LAYER1 = 7,
  337.     PERF_DRAW_LEVEL_PLAYER = 8,
  338.     PERF_DRAW_LEVEL_LAYER2 = 9,
  339.     PERF_DRAW_LEVEL_HUD = 10,
  340.     PERF_DRAW_LEVEL_EDITOR = 11,
  341.     // draw overworld
  342.     PERF_DRAW_OVERWORLD = 16,
  343.     // draw menu
  344.     PERF_DRAW_MENU = 14,
  345.     // draw level settings
  346.     PERF_DRAW_LEVEL_SETTINGS = 15,
  347.     // draw
  348.     PERF_DRAW_MOUSE = 12,
  349.     // rendering
  350.     PERF_RENDERING = 13
  351. };
  352.  
  353. /* *** Classes ***  */
  354.  
  355. class cCamera;
  356. class cCircleRequest;
  357. class cGradientRequest;
  358. class cImage_settings_data;
  359. class cLevel;
  360. class cLineRequest;
  361. class cLevel_Settings;
  362. class cMenu_Base;
  363. class cObjectCollisionType;
  364. class cObjectCollision;
  365. class cParticle_Emitter;
  366. class cRectRequest;
  367. class cSave_Level_Object;
  368. class cSaved_Texture;
  369. class cSize_Float;
  370. class cSize_Int;
  371. class cSprite_Manager;
  372. class cSurfaceRequest;
  373. class cSprite;
  374. class Color;
  375. class GL_rect;
  376. class GL_Surface;
  377. class GL_line;
  378. class GL_point;
  379.  
  380. #endif
  381.