replaced preprocessor constants with enum values
authorHolger Schemel <info@artsoft.org>
Sat, 17 Nov 2018 01:16:33 +0000 (02:16 +0100)
committerHolger Schemel <info@artsoft.org>
Mon, 19 Nov 2018 18:41:54 +0000 (19:41 +0100)
build-scripts/create_element_defs.pl
src/libgame/text.h
src/main.h

index 896d672..91ea130 100755 (executable)
@@ -1074,7 +1074,7 @@ sub get_known_action_definitions
        chomp;                          # cut trailing newline
 
        # process line with action definition
-       if (/^\#define ACTION_([A-Z0-9_]+)\s/)
+       if (/^  ACTION_([A-Z0-9_]+)[, ]/)
        {
            $known_action{$1} = 1;
 
@@ -1101,7 +1101,7 @@ sub get_known_special_arg_definitions
        chomp;                          # cut trailing newline
 
        # process line with special arg definition
-       if (/^\#define GFX_SPECIAL_ARG_([A-Z0-9_]+)\s/)
+       if (/^  GFX_SPECIAL_ARG_([A-Z0-9_]+)[, ]/)
        {
            if ($1 eq 'CRUMBLED')
            {
@@ -1160,7 +1160,7 @@ sub get_known_font_definitions
        chomp;                          # cut trailing newline
 
        # process line with font definition
-       if (/^\#define (FONT_[A-Z0-9_]+)\s/)
+       if (/^  (FONT_[A-Z0-9_]+)[, ]/)
        {
            $known_font{$1} = 1;
 
index 24c1fd1..701213f 100644 (file)
 
 
 // default fonts
-#define FONT_INITIAL_1         0
-#define FONT_INITIAL_2         1
-#define FONT_INITIAL_3         2
-#define FONT_INITIAL_4         3
+#define MAIN_FONT_INITIAL_1    0
+#define MAIN_FONT_INITIAL_2    1
+#define MAIN_FONT_INITIAL_3    2
+#define MAIN_FONT_INITIAL_4    3
 
 // font colors
-#define FC_RED                 FONT_INITIAL_1
-#define FC_BLUE                        FONT_INITIAL_2
-#define FC_GREEN               FONT_INITIAL_3
-#define FC_YELLOW              FONT_INITIAL_4
+#define FC_RED                 MAIN_FONT_INITIAL_1
+#define FC_BLUE                        MAIN_FONT_INITIAL_2
+#define FC_GREEN               MAIN_FONT_INITIAL_3
+#define FC_YELLOW              MAIN_FONT_INITIAL_4
 
 // text output definitions
 #define MAX_OUTPUT_LINESIZE    1024
index 9b6ffec..13cec3f 100644 (file)
 
 
 // values for graphics/sounds action types
-#define ACTION_DEFAULT                 0
-#define ACTION_WAITING                 1
-#define ACTION_FALLING                 2
-#define ACTION_MOVING                  3
-#define ACTION_DIGGING                 4
-#define ACTION_SNAPPING                        5
-#define ACTION_COLLECTING              6
-#define ACTION_DROPPING                        7
-#define ACTION_PUSHING                 8
-#define ACTION_WALKING                 9
-#define ACTION_PASSING                 10
-#define ACTION_IMPACT                  11
-#define ACTION_BREAKING                        12
-#define ACTION_ACTIVATING              13
-#define ACTION_DEACTIVATING            14
-#define ACTION_OPENING                 15
-#define ACTION_CLOSING                 16
-#define ACTION_ATTACKING               17
-#define ACTION_GROWING                 18
-#define ACTION_SHRINKING               19
-#define ACTION_ACTIVE                  20
-#define ACTION_FILLING                 21
-#define ACTION_EMPTYING                        22
-#define ACTION_CHANGING                        23
-#define ACTION_EXPLODING               24
-#define ACTION_BORING                  25
-#define ACTION_BORING_1                        26
-#define ACTION_BORING_2                        27
-#define ACTION_BORING_3                        28
-#define ACTION_BORING_4                        29
-#define ACTION_BORING_5                        30
-#define ACTION_BORING_6                        31
-#define ACTION_BORING_7                        32
-#define ACTION_BORING_8                        33
-#define ACTION_BORING_9                        34
-#define ACTION_BORING_10               35
-#define ACTION_SLEEPING                        36
-#define ACTION_SLEEPING_1              37
-#define ACTION_SLEEPING_2              38
-#define ACTION_SLEEPING_3              39
-#define ACTION_AWAKENING               40
-#define ACTION_DYING                   41
-#define ACTION_TURNING                 42
-#define ACTION_TURNING_FROM_LEFT       43
-#define ACTION_TURNING_FROM_RIGHT      44
-#define ACTION_TURNING_FROM_UP         45
-#define ACTION_TURNING_FROM_DOWN       46
-#define ACTION_SMASHED_BY_ROCK         47
-#define ACTION_SMASHED_BY_SPRING       48
-#define ACTION_EATING                  49
-#define ACTION_TWINKLING               50
-#define ACTION_SPLASHING               51
-#define ACTION_HITTING                 52
-#define ACTION_PAGE_1                  53
-#define ACTION_PAGE_2                  54
-#define ACTION_PAGE_3                  55
-#define ACTION_PAGE_4                  56
-#define ACTION_PAGE_5                  57
-#define ACTION_PAGE_6                  58
-#define ACTION_PAGE_7                  59
-#define ACTION_PAGE_8                  60
-#define ACTION_PAGE_9                  61
-#define ACTION_PAGE_10                 62
-#define ACTION_PAGE_11                 63
-#define ACTION_PAGE_12                 64
-#define ACTION_PAGE_13                 65
-#define ACTION_PAGE_14                 66
-#define ACTION_PAGE_15                 67
-#define ACTION_PAGE_16                 68
-#define ACTION_PAGE_17                 69
-#define ACTION_PAGE_18                 70
-#define ACTION_PAGE_19                 71
-#define ACTION_PAGE_20                 72
-#define ACTION_PAGE_21                 73
-#define ACTION_PAGE_22                 74
-#define ACTION_PAGE_23                 75
-#define ACTION_PAGE_24                 76
-#define ACTION_PAGE_25                 77
-#define ACTION_PAGE_26                 78
-#define ACTION_PAGE_27                 79
-#define ACTION_PAGE_28                 80
-#define ACTION_PAGE_29                 81
-#define ACTION_PAGE_30                 82
-#define ACTION_PAGE_31                 83
-#define ACTION_PAGE_32                 84
-#define ACTION_PART_1                  85
-#define ACTION_PART_2                  86
-#define ACTION_PART_3                  87
-#define ACTION_PART_4                  88
-#define ACTION_PART_5                  89
-#define ACTION_PART_6                  90
-#define ACTION_PART_7                  91
-#define ACTION_PART_8                  92
-#define ACTION_PART_9                  93
-#define ACTION_PART_10                 94
-#define ACTION_PART_11                 95
-#define ACTION_PART_12                 96
-#define ACTION_PART_13                 97
-#define ACTION_PART_14                 98
-#define ACTION_PART_15                 99
-#define ACTION_PART_16                 100
-#define ACTION_PART_17                 101
-#define ACTION_PART_18                 102
-#define ACTION_PART_19                 103
-#define ACTION_PART_20                 104
-#define ACTION_PART_21                 105
-#define ACTION_PART_22                 106
-#define ACTION_PART_23                 107
-#define ACTION_PART_24                 108
-#define ACTION_PART_25                 109
-#define ACTION_PART_26                 110
-#define ACTION_PART_27                 111
-#define ACTION_PART_28                 112
-#define ACTION_PART_29                 113
-#define ACTION_PART_30                 114
-#define ACTION_PART_31                 115
-#define ACTION_PART_32                 116
-#define ACTION_OTHER                   117
-
-#define NUM_ACTIONS                    118
+enum
+{
+  ACTION_DEFAULT = 0,
+  ACTION_WAITING,
+  ACTION_FALLING,
+  ACTION_MOVING,
+  ACTION_DIGGING,
+  ACTION_SNAPPING,
+  ACTION_COLLECTING,
+  ACTION_DROPPING,
+  ACTION_PUSHING,
+  ACTION_WALKING,
+  ACTION_PASSING,
+  ACTION_IMPACT,
+  ACTION_BREAKING,
+  ACTION_ACTIVATING,
+  ACTION_DEACTIVATING,
+  ACTION_OPENING,
+  ACTION_CLOSING,
+  ACTION_ATTACKING,
+  ACTION_GROWING,
+  ACTION_SHRINKING,
+  ACTION_ACTIVE,
+  ACTION_FILLING,
+  ACTION_EMPTYING,
+  ACTION_CHANGING,
+  ACTION_EXPLODING,
+  ACTION_BORING,
+  ACTION_BORING_1,
+  ACTION_BORING_2,
+  ACTION_BORING_3,
+  ACTION_BORING_4,
+  ACTION_BORING_5,
+  ACTION_BORING_6,
+  ACTION_BORING_7,
+  ACTION_BORING_8,
+  ACTION_BORING_9,
+  ACTION_BORING_10,
+  ACTION_SLEEPING,
+  ACTION_SLEEPING_1,
+  ACTION_SLEEPING_2,
+  ACTION_SLEEPING_3,
+  ACTION_AWAKENING,
+  ACTION_DYING,
+  ACTION_TURNING,
+  ACTION_TURNING_FROM_LEFT,
+  ACTION_TURNING_FROM_RIGHT,
+  ACTION_TURNING_FROM_UP,
+  ACTION_TURNING_FROM_DOWN,
+  ACTION_SMASHED_BY_ROCK,
+  ACTION_SMASHED_BY_SPRING,
+  ACTION_EATING,
+  ACTION_TWINKLING,
+  ACTION_SPLASHING,
+  ACTION_HITTING,
+  ACTION_PAGE_1,
+  ACTION_PAGE_2,
+  ACTION_PAGE_3,
+  ACTION_PAGE_4,
+  ACTION_PAGE_5,
+  ACTION_PAGE_6,
+  ACTION_PAGE_7,
+  ACTION_PAGE_8,
+  ACTION_PAGE_9,
+  ACTION_PAGE_10,
+  ACTION_PAGE_11,
+  ACTION_PAGE_12,
+  ACTION_PAGE_13,
+  ACTION_PAGE_14,
+  ACTION_PAGE_15,
+  ACTION_PAGE_16,
+  ACTION_PAGE_17,
+  ACTION_PAGE_18,
+  ACTION_PAGE_19,
+  ACTION_PAGE_20,
+  ACTION_PAGE_21,
+  ACTION_PAGE_22,
+  ACTION_PAGE_23,
+  ACTION_PAGE_24,
+  ACTION_PAGE_25,
+  ACTION_PAGE_26,
+  ACTION_PAGE_27,
+  ACTION_PAGE_28,
+  ACTION_PAGE_29,
+  ACTION_PAGE_30,
+  ACTION_PAGE_31,
+  ACTION_PAGE_32,
+  ACTION_PART_1,
+  ACTION_PART_2,
+  ACTION_PART_3,
+  ACTION_PART_4,
+  ACTION_PART_5,
+  ACTION_PART_6,
+  ACTION_PART_7,
+  ACTION_PART_8,
+  ACTION_PART_9,
+  ACTION_PART_10,
+  ACTION_PART_11,
+  ACTION_PART_12,
+  ACTION_PART_13,
+  ACTION_PART_14,
+  ACTION_PART_15,
+  ACTION_PART_16,
+  ACTION_PART_17,
+  ACTION_PART_18,
+  ACTION_PART_19,
+  ACTION_PART_20,
+  ACTION_PART_21,
+  ACTION_PART_22,
+  ACTION_PART_23,
+  ACTION_PART_24,
+  ACTION_PART_25,
+  ACTION_PART_26,
+  ACTION_PART_27,
+  ACTION_PART_28,
+  ACTION_PART_29,
+  ACTION_PART_30,
+  ACTION_PART_31,
+  ACTION_PART_32,
+  ACTION_OTHER,
+
+  NUM_ACTIONS
+};
 
 #define ACTION_BORING_LAST             ACTION_BORING_10
 #define ACTION_SLEEPING_LAST           ACTION_SLEEPING_3
 
 
 // values for special image configuration suffixes (must match game mode)
-#define GFX_SPECIAL_ARG_DEFAULT                0
-#define GFX_SPECIAL_ARG_LOADING                1
-#define GFX_SPECIAL_ARG_TITLE_INITIAL  2
-#define GFX_SPECIAL_ARG_TITLE_INITIAL_1        3
-#define GFX_SPECIAL_ARG_TITLE_INITIAL_2        4
-#define GFX_SPECIAL_ARG_TITLE_INITIAL_3        5
-#define GFX_SPECIAL_ARG_TITLE_INITIAL_4        6
-#define GFX_SPECIAL_ARG_TITLE_INITIAL_5        7
-#define GFX_SPECIAL_ARG_TITLE          8
-#define GFX_SPECIAL_ARG_TITLE_1                9
-#define GFX_SPECIAL_ARG_TITLE_2                10
-#define GFX_SPECIAL_ARG_TITLE_3                11
-#define GFX_SPECIAL_ARG_TITLE_4                12
-#define GFX_SPECIAL_ARG_TITLE_5                13
-#define GFX_SPECIAL_ARG_MAIN           14
-#define GFX_SPECIAL_ARG_LEVELS         15
-#define GFX_SPECIAL_ARG_LEVELNR                16
-#define GFX_SPECIAL_ARG_SCORES         17
-#define GFX_SPECIAL_ARG_EDITOR         18
-#define GFX_SPECIAL_ARG_INFO           19
-#define GFX_SPECIAL_ARG_SETUP          20
-#define GFX_SPECIAL_ARG_PLAYING                21
-#define GFX_SPECIAL_ARG_DOOR           22
-#define GFX_SPECIAL_ARG_TAPE           23
-#define GFX_SPECIAL_ARG_PANEL          24
-#define GFX_SPECIAL_ARG_PREVIEW                25
-#define GFX_SPECIAL_ARG_CRUMBLED       26
-#define GFX_SPECIAL_ARG_MAINONLY       27
-#define GFX_SPECIAL_ARG_TYPENAME       28
-#define GFX_SPECIAL_ARG_SUBMENU                29
-#define GFX_SPECIAL_ARG_MENU           30
-#define GFX_SPECIAL_ARG_TOONS          31
-#define GFX_SPECIAL_ARG_SCORESOLD      32
-#define GFX_SPECIAL_ARG_SCORESNEW      33
-#define GFX_SPECIAL_ARG_NO_TITLE       34
-#define GFX_SPECIAL_ARG_FADING         35
-#define GFX_SPECIAL_ARG_QUIT           36
-
-#define NUM_SPECIAL_GFX_ARGS           37
+enum
+{
+  GFX_SPECIAL_ARG_DEFAULT = 0,
+  GFX_SPECIAL_ARG_LOADING,
+  GFX_SPECIAL_ARG_TITLE_INITIAL,
+  GFX_SPECIAL_ARG_TITLE_INITIAL_1,
+  GFX_SPECIAL_ARG_TITLE_INITIAL_2,
+  GFX_SPECIAL_ARG_TITLE_INITIAL_3,
+  GFX_SPECIAL_ARG_TITLE_INITIAL_4,
+  GFX_SPECIAL_ARG_TITLE_INITIAL_5,
+  GFX_SPECIAL_ARG_TITLE,
+  GFX_SPECIAL_ARG_TITLE_1,
+  GFX_SPECIAL_ARG_TITLE_2,
+  GFX_SPECIAL_ARG_TITLE_3,
+  GFX_SPECIAL_ARG_TITLE_4,
+  GFX_SPECIAL_ARG_TITLE_5,
+  GFX_SPECIAL_ARG_MAIN,
+  GFX_SPECIAL_ARG_LEVELS,
+  GFX_SPECIAL_ARG_LEVELNR,
+  GFX_SPECIAL_ARG_SCORES,
+  GFX_SPECIAL_ARG_EDITOR,
+  GFX_SPECIAL_ARG_INFO,
+  GFX_SPECIAL_ARG_SETUP,
+  GFX_SPECIAL_ARG_PLAYING,
+  GFX_SPECIAL_ARG_DOOR,
+  GFX_SPECIAL_ARG_TAPE,
+  GFX_SPECIAL_ARG_PANEL,
+  GFX_SPECIAL_ARG_PREVIEW,
+  GFX_SPECIAL_ARG_CRUMBLED,
+  GFX_SPECIAL_ARG_MAINONLY,
+  GFX_SPECIAL_ARG_TYPENAME,
+  GFX_SPECIAL_ARG_SUBMENU,
+  GFX_SPECIAL_ARG_MENU,
+  GFX_SPECIAL_ARG_TOONS,
+  GFX_SPECIAL_ARG_SCORESOLD,
+  GFX_SPECIAL_ARG_SCORESNEW,
+  GFX_SPECIAL_ARG_NO_TITLE,
+  GFX_SPECIAL_ARG_FADING,
+  GFX_SPECIAL_ARG_QUIT,
+
+  NUM_SPECIAL_GFX_ARGS
+};
 
 // these additional definitions are currently only used for draw offsets
-#define GFX_SPECIAL_ARG_INFO_MAIN      0
-#define GFX_SPECIAL_ARG_INFO_TITLE     1
-#define GFX_SPECIAL_ARG_INFO_ELEMENTS  2
-#define GFX_SPECIAL_ARG_INFO_MUSIC     3
-#define GFX_SPECIAL_ARG_INFO_CREDITS   4
-#define GFX_SPECIAL_ARG_INFO_PROGRAM   5
-#define GFX_SPECIAL_ARG_INFO_VERSION   6
-#define GFX_SPECIAL_ARG_INFO_LEVELSET  7
-
-#define NUM_SPECIAL_GFX_INFO_ARGS      8
+enum
+{
+  GFX_SPECIAL_ARG_INFO_MAIN = 0,
+  GFX_SPECIAL_ARG_INFO_TITLE,
+  GFX_SPECIAL_ARG_INFO_ELEMENTS,
+  GFX_SPECIAL_ARG_INFO_MUSIC,
+  GFX_SPECIAL_ARG_INFO_CREDITS,
+  GFX_SPECIAL_ARG_INFO_PROGRAM,
+  GFX_SPECIAL_ARG_INFO_VERSION,
+  GFX_SPECIAL_ARG_INFO_LEVELSET,
+
+  NUM_SPECIAL_GFX_INFO_ARGS
+};
 
 // these additional definitions are currently only used for draw offsets
 // (must match SETUP_MODE_* values as defined in src/screens.c)
 // (should also match corresponding entries in src/conf_gfx.c)
-#define GFX_SPECIAL_ARG_SETUP_MAIN             0
-#define GFX_SPECIAL_ARG_SETUP_GAME             1
-#define GFX_SPECIAL_ARG_SETUP_EDITOR           2
-#define GFX_SPECIAL_ARG_SETUP_GRAPHICS         3
-#define GFX_SPECIAL_ARG_SETUP_SOUND            4
-#define GFX_SPECIAL_ARG_SETUP_ARTWORK          5
-#define GFX_SPECIAL_ARG_SETUP_INPUT            6
-#define GFX_SPECIAL_ARG_SETUP_TOUCH            7
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS                8
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_1      9
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_2      10
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_3      11
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_4      12
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_5      13
-#define GFX_SPECIAL_ARG_SETUP_CHOOSE_ARTWORK   14
-#define GFX_SPECIAL_ARG_SETUP_CHOOSE_OTHER     15
-
-#define NUM_SPECIAL_GFX_SETUP_ARGS             16
-
+enum
+{
+  GFX_SPECIAL_ARG_SETUP_MAIN = 0,
+  GFX_SPECIAL_ARG_SETUP_GAME,
+  GFX_SPECIAL_ARG_SETUP_EDITOR,
+  GFX_SPECIAL_ARG_SETUP_GRAPHICS,
+  GFX_SPECIAL_ARG_SETUP_SOUND,
+  GFX_SPECIAL_ARG_SETUP_ARTWORK,
+  GFX_SPECIAL_ARG_SETUP_INPUT,
+  GFX_SPECIAL_ARG_SETUP_TOUCH,
+  GFX_SPECIAL_ARG_SETUP_SHORTCUTS,
+  GFX_SPECIAL_ARG_SETUP_SHORTCUTS_1,
+  GFX_SPECIAL_ARG_SETUP_SHORTCUTS_2,
+  GFX_SPECIAL_ARG_SETUP_SHORTCUTS_3,
+  GFX_SPECIAL_ARG_SETUP_SHORTCUTS_4,
+  GFX_SPECIAL_ARG_SETUP_SHORTCUTS_5,
+  GFX_SPECIAL_ARG_SETUP_CHOOSE_ARTWORK,
+  GFX_SPECIAL_ARG_SETUP_CHOOSE_OTHER,
+
+  NUM_SPECIAL_GFX_SETUP_ARGS
+};
 
 // values for image configuration suffixes
-#define GFX_ARG_X                      0
-#define GFX_ARG_Y                      1
-#define GFX_ARG_XPOS                   2
-#define GFX_ARG_YPOS                   3
-#define GFX_ARG_WIDTH                  4
-#define GFX_ARG_HEIGHT                 5
-#define GFX_ARG_VERTICAL               6
-#define GFX_ARG_OFFSET                 7
-#define GFX_ARG_XOFFSET                        8
-#define GFX_ARG_YOFFSET                        9
-#define GFX_ARG_2ND_MOVEMENT_TILE      10
-#define GFX_ARG_2ND_VERTICAL           11
-#define GFX_ARG_2ND_OFFSET             12
-#define GFX_ARG_2ND_XOFFSET            13
-#define GFX_ARG_2ND_YOFFSET            14
-#define GFX_ARG_2ND_SWAP_TILES         15      
-#define GFX_ARG_FRAMES                 16
-#define GFX_ARG_FRAMES_PER_LINE                17
-#define GFX_ARG_START_FRAME            18
-#define GFX_ARG_DELAY                  19
-#define GFX_ARG_ANIM_MODE              20
-#define GFX_ARG_GLOBAL_SYNC            21
-#define GFX_ARG_CRUMBLED_LIKE          22
-#define GFX_ARG_DIGGABLE_LIKE          23
-#define GFX_ARG_BORDER_SIZE            24
-#define GFX_ARG_STEP_OFFSET            25
-#define GFX_ARG_STEP_XOFFSET           26
-#define GFX_ARG_STEP_YOFFSET           27
-#define GFX_ARG_STEP_DELAY             28
-#define GFX_ARG_DIRECTION              29
-#define GFX_ARG_POSITION               30
-#define GFX_ARG_DRAW_XOFFSET           31
-#define GFX_ARG_DRAW_YOFFSET           32
-#define GFX_ARG_DRAW_MASKED            33
-#define GFX_ARG_DRAW_ORDER             34
-#define GFX_ARG_INIT_DELAY_FIXED       35
-#define GFX_ARG_INIT_DELAY_RANDOM      36
-#define GFX_ARG_ANIM_DELAY_FIXED       37
-#define GFX_ARG_ANIM_DELAY_RANDOM      38
-#define GFX_ARG_POST_DELAY_FIXED       39
-#define GFX_ARG_POST_DELAY_RANDOM      40
-#define GFX_ARG_INIT_EVENT             41
-#define GFX_ARG_INIT_EVENT_ACTION      42
-#define GFX_ARG_ANIM_EVENT             43
-#define GFX_ARG_ANIM_EVENT_ACTION      44
-#define GFX_ARG_NAME                   45
-#define GFX_ARG_SCALE_UP_FACTOR                46
-#define GFX_ARG_TILE_SIZE              47
-#define GFX_ARG_CLONE_FROM             48
-#define GFX_ARG_FADE_MODE              49
-#define GFX_ARG_FADE_DELAY             50
-#define GFX_ARG_POST_DELAY             51
-#define GFX_ARG_AUTO_DELAY             52
-#define GFX_ARG_ALIGN                  53
-#define GFX_ARG_VALIGN                 54
-#define GFX_ARG_SORT_PRIORITY          55
-#define GFX_ARG_CLASS                  56
-#define GFX_ARG_STYLE                  57
-#define GFX_ARG_ACTIVE_XOFFSET         58
-#define GFX_ARG_ACTIVE_YOFFSET         59
-#define GFX_ARG_PRESSED_XOFFSET                60
-#define GFX_ARG_PRESSED_YOFFSET                61
-
-#define NUM_GFX_ARGS                   62
-
+enum
+{
+  GFX_ARG_X = 0,
+  GFX_ARG_Y,
+  GFX_ARG_XPOS,
+  GFX_ARG_YPOS,
+  GFX_ARG_WIDTH,
+  GFX_ARG_HEIGHT,
+  GFX_ARG_VERTICAL,
+  GFX_ARG_OFFSET,
+  GFX_ARG_XOFFSET,
+  GFX_ARG_YOFFSET,
+  GFX_ARG_2ND_MOVEMENT_TILE,
+  GFX_ARG_2ND_VERTICAL,
+  GFX_ARG_2ND_OFFSET,
+  GFX_ARG_2ND_XOFFSET,
+  GFX_ARG_2ND_YOFFSET,
+  GFX_ARG_2ND_SWAP_TILES,
+  GFX_ARG_FRAMES,
+  GFX_ARG_FRAMES_PER_LINE,
+  GFX_ARG_START_FRAME,
+  GFX_ARG_DELAY,
+  GFX_ARG_ANIM_MODE,
+  GFX_ARG_GLOBAL_SYNC,
+  GFX_ARG_CRUMBLED_LIKE,
+  GFX_ARG_DIGGABLE_LIKE,
+  GFX_ARG_BORDER_SIZE,
+  GFX_ARG_STEP_OFFSET,
+  GFX_ARG_STEP_XOFFSET,
+  GFX_ARG_STEP_YOFFSET,
+  GFX_ARG_STEP_DELAY,
+  GFX_ARG_DIRECTION,
+  GFX_ARG_POSITION,
+  GFX_ARG_DRAW_XOFFSET,
+  GFX_ARG_DRAW_YOFFSET,
+  GFX_ARG_DRAW_MASKED,
+  GFX_ARG_DRAW_ORDER,
+  GFX_ARG_INIT_DELAY_FIXED,
+  GFX_ARG_INIT_DELAY_RANDOM,
+  GFX_ARG_ANIM_DELAY_FIXED,
+  GFX_ARG_ANIM_DELAY_RANDOM,
+  GFX_ARG_POST_DELAY_FIXED,
+  GFX_ARG_POST_DELAY_RANDOM,
+  GFX_ARG_INIT_EVENT,
+  GFX_ARG_INIT_EVENT_ACTION,
+  GFX_ARG_ANIM_EVENT,
+  GFX_ARG_ANIM_EVENT_ACTION,
+  GFX_ARG_NAME,
+  GFX_ARG_SCALE_UP_FACTOR,
+  GFX_ARG_TILE_SIZE,
+  GFX_ARG_CLONE_FROM,
+  GFX_ARG_FADE_MODE,
+  GFX_ARG_FADE_DELAY,
+  GFX_ARG_POST_DELAY,
+  GFX_ARG_AUTO_DELAY,
+  GFX_ARG_ALIGN,
+  GFX_ARG_VALIGN,
+  GFX_ARG_SORT_PRIORITY,
+  GFX_ARG_CLASS,
+  GFX_ARG_STYLE,
+  GFX_ARG_ACTIVE_XOFFSET,
+  GFX_ARG_ACTIVE_YOFFSET,
+  GFX_ARG_PRESSED_XOFFSET,
+  GFX_ARG_PRESSED_YOFFSET,
+
+  NUM_GFX_ARGS
+};
 
 // values for sound configuration suffixes
-#define SND_ARG_MODE_LOOP              0
-#define SND_ARG_VOLUME                 1
-#define SND_ARG_PRIORITY               2
-
-#define NUM_SND_ARGS                   3
+enum
+{
+  SND_ARG_MODE_LOOP = 0,
+  SND_ARG_VOLUME,
+  SND_ARG_PRIORITY,
 
+  NUM_SND_ARGS
+};
 
 // values for music configuration suffixes
-#define MUS_ARG_MODE_LOOP              0
-
-#define NUM_MUS_ARGS                   1
+enum
+{
+  MUS_ARG_MODE_LOOP = 0,
 
+  NUM_MUS_ARGS
+};
 
 // values for font configuration (definitions must match those from main.c)
-#define FONT_INITIAL_1                 0
-#define FONT_INITIAL_2                 1
-#define FONT_INITIAL_3                 2
-#define FONT_INITIAL_4                 3
-#define FONT_TITLE_1                   4
-#define FONT_TITLE_2                   5
-#define FONT_MENU_1_ACTIVE             6
-#define FONT_MENU_2_ACTIVE             7
-#define FONT_MENU_1                    8
-#define FONT_MENU_2                    9
-#define FONT_TEXT_1_ACTIVE             10
-#define FONT_TEXT_2_ACTIVE             11
-#define FONT_TEXT_3_ACTIVE             12
-#define FONT_TEXT_4_ACTIVE             13
-#define FONT_TEXT_1                    14
-#define FONT_TEXT_2                    15
-#define FONT_TEXT_3                    16
-#define FONT_TEXT_4                    17
-#define FONT_ENVELOPE_1                        18
-#define FONT_ENVELOPE_2                        19
-#define FONT_ENVELOPE_3                        20
-#define FONT_ENVELOPE_4                        21
-#define FONT_REQUEST                   22
-#define FONT_INPUT_1_ACTIVE            23
-#define FONT_INPUT_2_ACTIVE            24
-#define FONT_INPUT_1                   25
-#define FONT_INPUT_2                   26
-#define FONT_OPTION_OFF_NARROW         27
-#define FONT_OPTION_OFF                        28
-#define FONT_OPTION_ON_NARROW          29
-#define FONT_OPTION_ON                 30
-#define FONT_VALUE_1                   31
-#define FONT_VALUE_2                   32
-#define FONT_VALUE_OLD_NARROW          33
-#define FONT_VALUE_OLD                 34
-#define FONT_VALUE_NARROW              35
-#define FONT_LEVEL_NUMBER_ACTIVE       36
-#define FONT_LEVEL_NUMBER              37
-#define FONT_TAPE_RECORDER             38
-#define FONT_GAME_INFO                 39
-#define FONT_INFO_ELEMENTS             40
-#define FONT_INFO_LEVELSET             41
-#define FONT_MAIN_NETWORK_PLAYERS      42
-
-#define NUM_FONTS                      43
+enum
+{
+  FONT_INITIAL_1 = MAIN_FONT_INITIAL_1,
+  FONT_INITIAL_2 = MAIN_FONT_INITIAL_2,
+  FONT_INITIAL_3 = MAIN_FONT_INITIAL_3,
+  FONT_INITIAL_4 = MAIN_FONT_INITIAL_4,
+  FONT_TITLE_1,
+  FONT_TITLE_2,
+  FONT_MENU_1_ACTIVE,
+  FONT_MENU_2_ACTIVE,
+  FONT_MENU_1,
+  FONT_MENU_2,
+  FONT_TEXT_1_ACTIVE,
+  FONT_TEXT_2_ACTIVE,
+  FONT_TEXT_3_ACTIVE,
+  FONT_TEXT_4_ACTIVE,
+  FONT_TEXT_1,
+  FONT_TEXT_2,
+  FONT_TEXT_3,
+  FONT_TEXT_4,
+  FONT_ENVELOPE_1,
+  FONT_ENVELOPE_2,
+  FONT_ENVELOPE_3,
+  FONT_ENVELOPE_4,
+  FONT_REQUEST,
+  FONT_INPUT_1_ACTIVE,
+  FONT_INPUT_2_ACTIVE,
+  FONT_INPUT_1,
+  FONT_INPUT_2,
+  FONT_OPTION_OFF_NARROW,
+  FONT_OPTION_OFF,
+  FONT_OPTION_ON_NARROW,
+  FONT_OPTION_ON,
+  FONT_VALUE_1,
+  FONT_VALUE_2,
+  FONT_VALUE_OLD_NARROW,
+  FONT_VALUE_OLD,
+  FONT_VALUE_NARROW,
+  FONT_LEVEL_NUMBER_ACTIVE,
+  FONT_LEVEL_NUMBER,
+  FONT_TAPE_RECORDER,
+  FONT_GAME_INFO,
+  FONT_INFO_ELEMENTS,
+  FONT_INFO_LEVELSET,
+  FONT_MAIN_NETWORK_PLAYERS,
+
+  NUM_FONTS
+};
+
 #define NUM_INITIAL_FONTS              4
 
 // values for toon animation configuration
 #define IMG_GLOBAL_BORDER_LAST         IMG_GLOBAL_BORDER_PLAYING
 
 // values for game_status (must match special image configuration suffixes)
-#define GAME_MODE_DEFAULT              0
-#define GAME_MODE_LOADING              1
-#define GAME_MODE_TITLE_INITIAL                2
-#define GAME_MODE_TITLE_INITIAL_1      3
-#define GAME_MODE_TITLE_INITIAL_2      4
-#define GAME_MODE_TITLE_INITIAL_3      5
-#define GAME_MODE_TITLE_INITIAL_4      6
-#define GAME_MODE_TITLE_INITIAL_5      7
-#define GAME_MODE_TITLE                        8
-#define GAME_MODE_TITLE_1              9
-#define GAME_MODE_TITLE_2              10
-#define GAME_MODE_TITLE_3              11
-#define GAME_MODE_TITLE_4              12
-#define GAME_MODE_TITLE_5              13
-#define GAME_MODE_MAIN                 14
-#define GAME_MODE_LEVELS               15
-#define GAME_MODE_LEVELNR              16
-#define GAME_MODE_SCORES               17
-#define GAME_MODE_EDITOR               18
-#define GAME_MODE_INFO                 19
-#define GAME_MODE_SETUP                        20
-#define GAME_MODE_PLAYING              21
-#define GAME_MODE_PSEUDO_DOOR          22
-#define GAME_MODE_PSEUDO_TAPE          23
-#define GAME_MODE_PSEUDO_PANEL         24
-#define GAME_MODE_PSEUDO_PREVIEW       25
-#define GAME_MODE_PSEUDO_CRUMBLED      26
-#define GAME_MODE_PSEUDO_MAINONLY      27
-#define GAME_MODE_PSEUDO_TYPENAME      28
-#define GAME_MODE_PSEUDO_SUBMENU       29
-#define GAME_MODE_PSEUDO_MENU          30
-#define GAME_MODE_PSEUDO_TOONS         31
-#define GAME_MODE_PSEUDO_SCORESOLD     32
-#define GAME_MODE_PSEUDO_SCORESNEW     33
-#define GAME_MODE_PSEUDO_NO_TITLE      34
-#define GAME_MODE_PSEUDO_FADING                35
-#define GAME_MODE_QUIT                 36
-
-#define NUM_GAME_MODES                 37
+#define GAME_MODE_DEFAULT              GFX_SPECIAL_ARG_DEFAULT
+#define GAME_MODE_LOADING              GFX_SPECIAL_ARG_LOADING
+#define GAME_MODE_TITLE_INITIAL                GFX_SPECIAL_ARG_TITLE_INITIAL
+#define GAME_MODE_TITLE_INITIAL_1      GFX_SPECIAL_ARG_TITLE_INITIAL_1
+#define GAME_MODE_TITLE_INITIAL_2      GFX_SPECIAL_ARG_TITLE_INITIAL_2
+#define GAME_MODE_TITLE_INITIAL_3      GFX_SPECIAL_ARG_TITLE_INITIAL_3
+#define GAME_MODE_TITLE_INITIAL_4      GFX_SPECIAL_ARG_TITLE_INITIAL_4
+#define GAME_MODE_TITLE_INITIAL_5      GFX_SPECIAL_ARG_TITLE_INITIAL_5
+#define GAME_MODE_TITLE                        GFX_SPECIAL_ARG_TITLE
+#define GAME_MODE_TITLE_1              GFX_SPECIAL_ARG_TITLE_1
+#define GAME_MODE_TITLE_2              GFX_SPECIAL_ARG_TITLE_2
+#define GAME_MODE_TITLE_3              GFX_SPECIAL_ARG_TITLE_3
+#define GAME_MODE_TITLE_4              GFX_SPECIAL_ARG_TITLE_4
+#define GAME_MODE_TITLE_5              GFX_SPECIAL_ARG_TITLE_5
+#define GAME_MODE_MAIN                 GFX_SPECIAL_ARG_MAIN
+#define GAME_MODE_LEVELS               GFX_SPECIAL_ARG_LEVELS
+#define GAME_MODE_LEVELNR              GFX_SPECIAL_ARG_LEVELNR
+#define GAME_MODE_SCORES               GFX_SPECIAL_ARG_SCORES
+#define GAME_MODE_EDITOR               GFX_SPECIAL_ARG_EDITOR
+#define GAME_MODE_INFO                 GFX_SPECIAL_ARG_INFO
+#define GAME_MODE_SETUP                        GFX_SPECIAL_ARG_SETUP
+#define GAME_MODE_PLAYING              GFX_SPECIAL_ARG_PLAYING
+#define GAME_MODE_PSEUDO_DOOR          GFX_SPECIAL_ARG_DOOR
+#define GAME_MODE_PSEUDO_TAPE          GFX_SPECIAL_ARG_TAPE
+#define GAME_MODE_PSEUDO_PANEL         GFX_SPECIAL_ARG_PANEL
+#define GAME_MODE_PSEUDO_PREVIEW       GFX_SPECIAL_ARG_PREVIEW
+#define GAME_MODE_PSEUDO_CRUMBLED      GFX_SPECIAL_ARG_CRUMBLED
+#define GAME_MODE_PSEUDO_MAINONLY      GFX_SPECIAL_ARG_MAINONLY
+#define GAME_MODE_PSEUDO_TYPENAME      GFX_SPECIAL_ARG_TYPENAME
+#define GAME_MODE_PSEUDO_SUBMENU       GFX_SPECIAL_ARG_SUBMENU
+#define GAME_MODE_PSEUDO_MENU          GFX_SPECIAL_ARG_MENU
+#define GAME_MODE_PSEUDO_TOONS         GFX_SPECIAL_ARG_TOONS
+#define GAME_MODE_PSEUDO_SCORESOLD     GFX_SPECIAL_ARG_SCORESOLD
+#define GAME_MODE_PSEUDO_SCORESNEW     GFX_SPECIAL_ARG_SCORESNEW
+#define GAME_MODE_PSEUDO_NO_TITLE      GFX_SPECIAL_ARG_NO_TITLE
+#define GAME_MODE_PSEUDO_FADING                GFX_SPECIAL_ARG_FADING
+#define GAME_MODE_QUIT                 GFX_SPECIAL_ARG_QUIT
+
+#define NUM_GAME_MODES                 NUM_SPECIAL_GFX_ARGS
 
 // special definitions currently only used for custom artwork configuration
 #define MUSIC_PREFIX_BACKGROUND                0