1 /** @file api_gameexport.h  Data structures for the engine/plugin interfaces.
2  *
3  * @authors Copyright © 2003-2017 Jaakko Keränen <jaakko.keranen@iki.fi>
4  * @authors Copyright © 2006-2015 Daniel Swanson <danij@dengine.net>
5  *
6  * @par License
7  * GPL: http://www.gnu.org/licenses/gpl.html
8  *
9  * <small>This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by the
11  * Free Software Foundation; either version 2 of the License, or (at your
12  * option) any later version. This program is distributed in the hope that it
13  * will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
15  * Public License for more details. You should have received a copy of the GNU
16  * General Public License along with this program; if not, write to the Free
17  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18  * 02110-1301 USA</small>
19  */
20 
21 #ifndef LIBDOOMSDAY_GAME_API_H
22 #define LIBDOOMSDAY_GAME_API_H
23 
24 #include <de/types.h>
25 #include <de/rect.h>
26 #include "world/valuetype.h"
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 struct event_s;
33 
34 /// General constants.
35 enum {
36     DD_DISABLE = 0,
37     DD_ENABLE = 1,
38     DD_YES = 2,
39     DD_NO = 3,
40     DD_PRE = 4,
41     DD_POST = 5,
42 
43     DD_GAME_CONFIG = 0x100,         ///< String: dm/co-op, jumping, etc.
44     DD_GAME_RECOMMENDS_SAVING,      ///< engine asks whether game should be saved (e.g., when upgrading) (game's GetInteger)
45 
46     DD_NOTIFY_GAME_SAVED = 0x200,   ///< savegame was written
47     DD_NOTIFY_PLAYER_WEAPON_CHANGED, ///< a player's weapon changed (including powerups)
48     DD_NOTIFY_PSPRITE_STATE_CHANGED, ///< a player's psprite state has changed
49 
50     DD_PLUGIN_NAME = 0x300,         ///< (e.g., jdoom, jheretic etc..., suitable for use with filepaths)
51     DD_PLUGIN_NICENAME,             ///< (e.g., jDoom, MyGame:Episode2 etc..., fancy name)
52     DD_PLUGIN_VERSION_SHORT,
53     DD_PLUGIN_VERSION_LONG,
54     DD_PLUGIN_HOMEURL,
55     DD_PLUGIN_DOCSURL,
56 
57     DD_DEF_SOUND = 0x400,
58     DD_DEF_LINE_TYPE,
59     DD_DEF_SECTOR_TYPE,
60     DD_DEF_SOUND_LUMPNAME,
61     DD_DEF_ACTION,
62     DD_LUMP,
63 
64     DD_ACTION_LINK = 0x500,         ///< State action routine addresses.
65     DD_XGFUNC_LINK,                 ///< XG line classes
66     DD_MOBJ_SIZE,
67     DD_POLYOBJ_SIZE,
68 
69     DD_TM_FLOOR_Z = 0x600,          ///< output from P_CheckPosition
70     DD_TM_CEILING_Z,                ///< output from P_CheckPosition
71 
72     DD_PSPRITE_BOB_X = 0x700,
73     DD_PSPRITE_BOB_Y,
74     DD_RENDER_RESTART_PRE,
75     DD_RENDER_RESTART_POST
76 };
77 
78 #ifdef __cplusplus
79 }  // extern "C"
80 #endif
81 
82 #endif  // LIBDOOMSDAY_GAME_API_H
83