rnd-20021023-1-src
authorHolger Schemel <info@artsoft.org>
Wed, 23 Oct 2002 21:48:48 +0000 (23:48 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:38:53 +0000 (10:38 +0200)
src/cartoons.c
src/conf_e2g.c
src/conf_gfx.h
src/conftime.h
src/game.c
src/init.c
src/main.c
src/main.h
src/screens.c
src/tools.c
src/tools.h

index fde4e0ca08fef0e879edee0b31b0772d536ce901..309d4ca4882deba2ca9a0262cc9b916206dc591e 100644 (file)
@@ -283,7 +283,7 @@ static void PrepareBackbuffer()
 
     for(xx=0; xx<SCR_FIELDX; xx++)
       for(yy=0; yy<SCR_FIELDY; yy++)
-       DrawScreenField(xx,yy);
+       DrawNewScreenField(xx,yy);
     DrawAllPlayers();
 
     SetDrawtoField(DRAW_DIRECT);
index f6b4874bf1ef93944ccb9978af23f3e3f24d77ef..d730e57adefd9c1b7183cedebf63f5117b16550f 100644 (file)
@@ -41,8 +41,12 @@ element_to_graphic[] =
     IMG_BD_ROCK_FALLING
   },
   {
-    EL_BD_ROCK,                                        -1, GFX_ACTION_PUSHING,
-    IMG_BD_ROCK_PUSHING
+    EL_BD_ROCK,                                        MV_LEFT, GFX_ACTION_MOVING,
+    IMG_BD_ROCK_MOVING_LEFT
+  },
+  {
+    EL_BD_ROCK,                                        MV_RIGHT, GFX_ACTION_MOVING,
+    IMG_BD_ROCK_MOVING_RIGHT
   },
   {
     EL_BD_DIAMOND,                             -1, -1,
@@ -189,8 +193,12 @@ element_to_graphic[] =
     IMG_SP_ZONK_FALLING
   },
   {
-    EL_SP_ZONK,                                        -1, GFX_ACTION_PUSHING,
-    IMG_SP_ZONK_PUSHING
+    EL_SP_ZONK,                                        MV_LEFT, GFX_ACTION_MOVING,
+    IMG_SP_ZONK_MOVING_LEFT
+  },
+  {
+    EL_SP_ZONK,                                        MV_RIGHT, GFX_ACTION_MOVING,
+    IMG_SP_ZONK_MOVING_RIGHT
   },
   {
     EL_SP_BASE,                                        -1, -1,
@@ -497,8 +505,12 @@ element_to_graphic[] =
     IMG_ROCK_FALLING
   },
   {
-    EL_ROCK,                                   -1, GFX_ACTION_PUSHING,
-    IMG_ROCK_PUSHING
+    EL_ROCK,                                   MV_LEFT, GFX_ACTION_MOVING,
+    IMG_ROCK_MOVING_LEFT
+  },
+  {
+    EL_ROCK,                                   MV_RIGHT, GFX_ACTION_MOVING,
+    IMG_ROCK_MOVING_RIGHT
   },
   {
     EL_EMERALD,                                        -1, -1,
@@ -525,7 +537,7 @@ element_to_graphic[] =
     IMG_NUT
   },
   {
-    EL_NUT,                                    -1, GFX_ACTION_CRACKING,
+    EL_NUT_CRACKING,                           -1, -1,
     IMG_NUT_CRACKING
   },
   {
@@ -693,12 +705,12 @@ element_to_graphic[] =
     IMG_ACID
   },
   {
-    EL_ACID_SPLASHING_LEFT,                    -1, -1,
-    IMG_ACID_SPLASHING_LEFT
+    EL_ACID_SPLASH_LEFT,                       -1, -1,
+    IMG_ACID_SPLASH_LEFT
   },
   {
-    EL_ACID_SPLASHING_RIGHT,                   -1, -1,
-    IMG_ACID_SPLASHING_RIGHT
+    EL_ACID_SPLASH_RIGHT,                      -1, -1,
+    IMG_ACID_SPLASH_RIGHT
   },
   {
     EL_AMOEBA_DROP,                            -1, -1,
index ed022516e42b9096fccfbaab3f72c8cea3510696..3fec85a9b5a0aafe7b1d8d8ad451dfe8a2174f0b 100644 (file)
 #define IMG_BD_WALL                            0
 #define IMG_BD_ROCK                            1
 #define IMG_BD_ROCK_FALLING                    2
-#define IMG_BD_ROCK_PUSHING                    3
-#define IMG_BD_DIAMOND                         4
-#define IMG_BD_DIAMOND_FALLING                 5
-#define IMG_BD_MAGIC_WALL                      6
-#define IMG_BD_MAGIC_WALL_ACTIVE               7
-#define IMG_BD_MAGIC_WALL_FILLING              8
-#define IMG_BD_MAGIC_WALL_FULL                 9
-#define IMG_BD_MAGIC_WALL_EMPTYING             10
-#define IMG_BD_MAGIC_WALL_DEAD                 11
-#define IMG_BD_AMOEBA                          12
-#define IMG_BD_AMOEBA_PART1                    13
-#define IMG_BD_AMOEBA_PART2                    14
-#define IMG_BD_AMOEBA_PART3                    15
-#define IMG_BD_AMOEBA_PART4                    16
-#define IMG_BD_BUTTERFLY                       17
-#define IMG_BD_BUTTERFLY_MOVING                        18
-#define IMG_BD_BUTTERFLY_RIGHT                 19
-#define IMG_BD_BUTTERFLY_UP                    20
-#define IMG_BD_BUTTERFLY_LEFT                  21
-#define IMG_BD_BUTTERFLY_DOWN                  22
-#define IMG_BD_FIREFLY                         23
-#define IMG_BD_FIREFLY_MOVING                  24
-#define IMG_BD_FIREFLY_RIGHT                   25
-#define IMG_BD_FIREFLY_UP                      26
-#define IMG_BD_FIREFLY_LEFT                    27
-#define IMG_BD_FIREFLY_DOWN                    28
-#define IMG_SP_EMPTY_SPACE                     29
-#define IMG_SP_ZONK                            30
-#define IMG_SP_ZONK_FALLING                    31
-#define IMG_SP_ZONK_PUSHING                    32
-#define IMG_SP_BASE                            33
-#define IMG_SP_MURPHY                          34
-#define IMG_SP_MURPHY_LEFT                     35
-#define IMG_SP_MURPHY_LEFT_MOVING              36
-#define IMG_SP_MURPHY_LEFT_DIGGING             37
-#define IMG_SP_MURPHY_LEFT_PUSHING             38
-#define IMG_SP_MURPHY_LEFT_SNAPPING            39
-#define IMG_SP_MURPHY_RIGHT                    40
-#define IMG_SP_MURPHY_RIGHT_MOVING             41
-#define IMG_SP_MURPHY_RIGHT_DIGGING            42
-#define IMG_SP_MURPHY_RIGHT_PUSHING            43
-#define IMG_SP_MURPHY_RIGHT_SNAPPING           44
-#define IMG_SP_MURPHY_UP                       45
-#define IMG_SP_MURPHY_UP_SNAPPING              46
-#define IMG_SP_MURPHY_DOWN                     47
-#define IMG_SP_MURPHY_DOWN_SNAPPING            48
-#define IMG_SP_MURPHY_CLONE                    49
-#define IMG_SP_INFOTRON                                50
-#define IMG_SP_INFOTRON_FALLING                        51
-#define IMG_SP_CHIP_SINGLE                     52
-#define IMG_SP_CHIP_LEFT                       53
-#define IMG_SP_CHIP_RIGHT                      54
-#define IMG_SP_CHIP_UPPER                      55
-#define IMG_SP_CHIP_LOWER                      56
-#define IMG_SP_HARD_GRAY                       57
-#define IMG_SP_HARD_GREEN                      58
-#define IMG_SP_HARD_BLUE                       59
-#define IMG_SP_HARD_RED                                60
-#define IMG_SP_HARD_YELLOW                     61
-#define IMG_SP_EXIT_CLOSED                     62
-#define IMG_SP_EXIT_OPEN                       63
-#define IMG_SP_DISK_ORANGE                     64
-#define IMG_SP_DISK_ORANGE_FALLING             65
-#define IMG_SP_DISK_ORANGE_PUSHING             66
-#define IMG_SP_DISK_YELLOW                     67
-#define IMG_SP_DISK_YELLOW_PUSHING             68
-#define IMG_SP_DISK_RED                                69
-#define IMG_SP_DISK_RED_COLLECTING             70
-#define IMG_SP_PORT1_RIGHT                     71
-#define IMG_SP_PORT1_DOWN                      72
-#define IMG_SP_PORT1_LEFT                      73
-#define IMG_SP_PORT1_UP                                74
-#define IMG_SP_PORT2_RIGHT                     75
-#define IMG_SP_PORT2_DOWN                      76
-#define IMG_SP_PORT2_LEFT                      77
-#define IMG_SP_PORT2_UP                                78
-#define IMG_SP_PORT_X                          79
-#define IMG_SP_PORT_Y                          80
-#define IMG_SP_PORT_XY                         81
-#define IMG_SP_SNIKSNAK                                82
-#define IMG_SP_SNIKSNAK_LEFT                   83
-#define IMG_SP_SNIKSNAK_RIGHT                  84
-#define IMG_SP_SNIKSNAK_UP                     85
-#define IMG_SP_SNIKSNAK_DOWN                   86
-#define IMG_SP_ELECTRON                                87
-#define IMG_SP_TERMINAL                                88
-#define IMG_SP_TERMINAL_ACTIVE                 89
-#define IMG_SP_BUGGY_BASE                      90
-#define IMG_SP_BUGGY_BASE_ACTIVE               91
-#define IMG_SP_HARD_BASE1                      92
-#define IMG_SP_HARD_BASE2                      93
-#define IMG_SP_HARD_BASE3                      94
-#define IMG_SP_HARD_BASE4                      95
-#define IMG_SP_HARD_BASE5                      96
-#define IMG_SP_HARD_BASE6                      97
-#define IMG_SP_EXPLOSION                       98
-#define IMG_SP_EXPLOSION_INFOTRON              99
-#define IMG_SOKOBAN_OBJECT                     100
-#define IMG_SOKOBAN_FIELD_EMPTY                        101
-#define IMG_SOKOBAN_FIELD_FULL                 102
-#define IMG_EMPTY_SPACE                                103
-#define IMG_SAND                               104
-#define IMG_SAND_CRUMBLED                      105
-#define IMG_WALL                               106
-#define IMG_WALL_CRUMBLED                      107
-#define IMG_STEELWALL                          108
-#define IMG_ROCK                               109
-#define IMG_ROCK_FALLING                       110
-#define IMG_ROCK_PUSHING                       111
-#define IMG_EMERALD                            112
-#define IMG_EMERALD_FALLING                    113
-#define IMG_DIAMOND                            114
-#define IMG_DIAMOND_FALLING                    115
-#define IMG_BOMB                               116
-#define IMG_NUT                                        117
-#define IMG_NUT_CRACKING                       118
-#define IMG_DYNAMITE                           119
-#define IMG_DYNAMITE_ACTIVE                    120
-#define IMG_WALL_EMERALD                       121
-#define IMG_WALL_DIAMOND                       122
-#define IMG_BUG_RIGHT                          123
-#define IMG_BUG_UP                             124
-#define IMG_BUG_LEFT                           125
-#define IMG_BUG_DOWN                           126
-#define IMG_SPACESHIP_RIGHT                    127
-#define IMG_SPACESHIP_UP                       128
-#define IMG_SPACESHIP_LEFT                     129
-#define IMG_SPACESHIP_DOWN                     130
-#define IMG_YAMYAM                             131
-#define IMG_YAMYAM_MOVING                      132
-#define IMG_ROBOT                              133
-#define IMG_ROBOT_WHEEL                                134
-#define IMG_ROBOT_WHEEL_ACTIVE                 135
-#define IMG_MAGIC_WALL                         136
-#define IMG_MAGIC_WALL_ACTIVE                  137
-#define IMG_MAGIC_WALL_FILLING                 138
-#define IMG_MAGIC_WALL_FULL                    139
-#define IMG_MAGIC_WALL_EMPTYING                        140
-#define IMG_MAGIC_WALL_DEAD                    141
-#define IMG_QUICKSAND_EMPTY                    142
-#define IMG_QUICKSAND_FILLING                  143
-#define IMG_QUICKSAND_FULL                     144
-#define IMG_QUICKSAND_EMPTYING                 145
-#define IMG_ACIDPOOL_TOPLEFT                   146
-#define IMG_ACIDPOOL_TOPRIGHT                  147
-#define IMG_ACIDPOOL_BOTTOMLEFT                        148
-#define IMG_ACIDPOOL_BOTTOM                    149
-#define IMG_ACIDPOOL_BOTTOMRIGHT               150
-#define IMG_ACID                               151
-#define IMG_ACID_SPLASHING_LEFT                        152
-#define IMG_ACID_SPLASHING_RIGHT               153
-#define IMG_AMOEBA_DROP                                154
-#define IMG_AMOEBA_CREATING                    155
-#define IMG_AMOEBA_SHRINKING                   156
-#define IMG_AMOEBA_WET                         157
-#define IMG_AMOEBA_WET_PART1                   158
-#define IMG_AMOEBA_WET_PART2                   159
-#define IMG_AMOEBA_WET_PART3                   160
-#define IMG_AMOEBA_WET_PART4                   161
-#define IMG_AMOEBA_DRY                         162
-#define IMG_AMOEBA_DRY_PART1                   163
-#define IMG_AMOEBA_DRY_PART2                   164
-#define IMG_AMOEBA_DRY_PART3                   165
-#define IMG_AMOEBA_DRY_PART4                   166
-#define IMG_AMOEBA_FULL                                167
-#define IMG_AMOEBA_FULL_PART1                  168
-#define IMG_AMOEBA_FULL_PART2                  169
-#define IMG_AMOEBA_FULL_PART3                  170
-#define IMG_AMOEBA_FULL_PART4                  171
-#define IMG_AMOEBA_DEAD                                172
-#define IMG_AMOEBA_DEAD_PART1                  173
-#define IMG_AMOEBA_DEAD_PART2                  174
-#define IMG_AMOEBA_DEAD_PART3                  175
-#define IMG_AMOEBA_DEAD_PART4                  176
-#define IMG_EM_KEY1                            177
-#define IMG_EM_KEY2                            178
-#define IMG_EM_KEY3                            179
-#define IMG_EM_KEY4                            180
-#define IMG_EM_GATE1                           181
-#define IMG_EM_GATE2                           182
-#define IMG_EM_GATE3                           183
-#define IMG_EM_GATE4                           184
-#define IMG_EM_GATE1_GRAY                      185
-#define IMG_EM_GATE2_GRAY                      186
-#define IMG_EM_GATE3_GRAY                      187
-#define IMG_EM_GATE4_GRAY                      188
-#define IMG_EXIT_CLOSED                                189
-#define IMG_EXIT_OPENING                       190
-#define IMG_EXIT_OPEN                          191
-#define IMG_BALLOON                            192
-#define IMG_BALLOON_MOVING                     193
-#define IMG_BALLOON_SEND_LEFT                  194
-#define IMG_BALLOON_SEND_RIGHT                 195
-#define IMG_BALLOON_SEND_UP                    196
-#define IMG_BALLOON_SEND_DOWN                  197
-#define IMG_BALLOON_SEND_ANY_DIRECTION         198
-#define IMG_SPRING                             199
-#define IMG_SPRING_MOVING                      200
-#define IMG_EMC_STEELWALL1                     201
-#define IMG_EMC_STEELWALL2                     202
-#define IMG_EMC_STEELWALL3                     203
-#define IMG_EMC_STEELWALL4                     204
-#define IMG_EMC_WALL_PILLAR_UPPER              205
-#define IMG_EMC_WALL_PILLAR_MIDDLE             206
-#define IMG_EMC_WALL_PILLAR_LOWER              207
-#define IMG_EMC_WALL4                          208
-#define IMG_EMC_WALL5                          209
-#define IMG_EMC_WALL6                          210
-#define IMG_EMC_WALL7                          211
-#define IMG_EMC_WALL8                          212
-#define IMG_INVISIBLE_STEELWALL                        213
-#define IMG_INVISIBLE_STEELWALL_ACTIVE         214
-#define IMG_INVISIBLE_WALL                     215
-#define IMG_INVISIBLE_WALL_ACTIVE              216
-#define IMG_INVISIBLE_SAND                     217
-#define IMG_INVISIBLE_SAND_ACTIVE              218
-#define IMG_CONVEYOR_BELT1_MIDDLE              219
-#define IMG_CONVEYOR_BELT1_MIDDLE_ACTIVE       220
-#define IMG_CONVEYOR_BELT1_LEFT                        221
-#define IMG_CONVEYOR_BELT1_LEFT_ACTIVE         222
-#define IMG_CONVEYOR_BELT1_RIGHT               223
-#define IMG_CONVEYOR_BELT1_RIGHT_ACTIVE                224
-#define IMG_CONVEYOR_BELT1_SWITCH_LEFT         225
-#define IMG_CONVEYOR_BELT1_SWITCH_MIDDLE       226
-#define IMG_CONVEYOR_BELT1_SWITCH_RIGHT                227
-#define IMG_CONVEYOR_BELT2_MIDDLE              228
-#define IMG_CONVEYOR_BELT2_MIDDLE_ACTIVE       229
-#define IMG_CONVEYOR_BELT2_LEFT                        230
-#define IMG_CONVEYOR_BELT2_LEFT_ACTIVE         231
-#define IMG_CONVEYOR_BELT2_RIGHT               232
-#define IMG_CONVEYOR_BELT2_RIGHT_ACTIVE                233
-#define IMG_CONVEYOR_BELT2_SWITCH_LEFT         234
-#define IMG_CONVEYOR_BELT2_SWITCH_MIDDLE       235
-#define IMG_CONVEYOR_BELT2_SWITCH_RIGHT                236
-#define IMG_CONVEYOR_BELT3_MIDDLE              237
-#define IMG_CONVEYOR_BELT3_MIDDLE_ACTIVE       238
-#define IMG_CONVEYOR_BELT3_LEFT                        239
-#define IMG_CONVEYOR_BELT3_LEFT_ACTIVE         240
-#define IMG_CONVEYOR_BELT3_RIGHT               241
-#define IMG_CONVEYOR_BELT3_RIGHT_ACTIVE                242
-#define IMG_CONVEYOR_BELT3_SWITCH_LEFT         243
-#define IMG_CONVEYOR_BELT3_SWITCH_MIDDLE       244
-#define IMG_CONVEYOR_BELT3_SWITCH_RIGHT                245
-#define IMG_CONVEYOR_BELT4_MIDDLE              246
-#define IMG_CONVEYOR_BELT4_MIDDLE_ACTIVE       247
-#define IMG_CONVEYOR_BELT4_LEFT                        248
-#define IMG_CONVEYOR_BELT4_LEFT_ACTIVE         249
-#define IMG_CONVEYOR_BELT4_RIGHT               250
-#define IMG_CONVEYOR_BELT4_RIGHT_ACTIVE                251
-#define IMG_CONVEYOR_BELT4_SWITCH_LEFT         252
-#define IMG_CONVEYOR_BELT4_SWITCH_MIDDLE       253
-#define IMG_CONVEYOR_BELT4_SWITCH_RIGHT                254
-#define IMG_SWITCHGATE_SWITCH_UP               255
-#define IMG_SWITCHGATE_SWITCH_DOWN             256
-#define IMG_LIGHT_SWITCH                       257
-#define IMG_LIGHT_SWITCH_ACTIVE                        258
-#define IMG_TIMEGATE_SWITCH                    259
-#define IMG_TIMEGATE_SWITCH_ACTIVE             260
-#define IMG_ENVELOPE                           261
-#define IMG_SIGN_EXCLAMATION                   262
-#define IMG_SIGN_STOP                          263
-#define IMG_LANDMINE                           264
-#define IMG_STEELWALL_SLANTED                  265
-#define IMG_EXTRA_TIME                         266
-#define IMG_SHIELD_NORMAL                      267
-#define IMG_SHIELD_DEADLY                      268
-#define IMG_SHIELD_NORMAL_ACTIVE               269
-#define IMG_SHIELD_DEADLY_ACTIVE               270
-#define IMG_SWITCHGATE_CLOSED                  271
-#define IMG_SWITCHGATE_OPENING                 272
-#define IMG_SWITCHGATE_OPEN                    273
-#define IMG_SWITCHGATE_CLOSING                 274
-#define IMG_TIMEGATE_CLOSED                    275
-#define IMG_TIMEGATE_OPENING                   276
-#define IMG_TIMEGATE_OPEN                      277
-#define IMG_TIMEGATE_CLOSING                   278
-#define IMG_PEARL                              279
-#define IMG_PEARL_BREAKING                     280
-#define IMG_CRYSTAL                            281
-#define IMG_WALL_PEARL                         282
-#define IMG_WALL_CRYSTAL                       283
-#define IMG_TUBE_RIGHT_DOWN                    284
-#define IMG_TUBE_HORIZONTAL_DOWN               285
-#define IMG_TUBE_LEFT_DOWN                     286
-#define IMG_TUBE_HORIZONTAL                    287
-#define IMG_TUBE_VERTICAL_RIGHT                        288
-#define IMG_TUBE_ALL                           289
-#define IMG_TUBE_VERTICAL_LEFT                 290
-#define IMG_TUBE_VERTICAL                      291
-#define IMG_TUBE_RIGHT_UP                      292
-#define IMG_TUBE_HORIZONTAL_UP                 293
-#define IMG_TUBE_LEFT_UP                       294
-#define IMG_TRAP                               295
-#define IMG_TRAP_ACTIVE                                296
-#define IMG_DX_SUPABOMB                                297
-#define IMG_KEY1                               298
-#define IMG_KEY2                               299
-#define IMG_KEY3                               300
-#define IMG_KEY4                               301
-#define IMG_GATE1                              302
-#define IMG_GATE2                              303
-#define IMG_GATE3                              304
-#define IMG_GATE4                              305
-#define IMG_GATE1_GRAY                         306
-#define IMG_GATE2_GRAY                         307
-#define IMG_GATE3_GRAY                         308
-#define IMG_GATE4_GRAY                         309
-#define IMG_GAMEOFLIFE                         310
-#define IMG_BIOMAZE                            311
-#define IMG_PACMAN_RIGHT                       312
-#define IMG_PACMAN_UP                          313
-#define IMG_PACMAN_LEFT                                314
-#define IMG_PACMAN_DOWN                                315
-#define IMG_LAMP                               316
-#define IMG_LAMP_ACTIVE                                317
-#define IMG_TIME_ORB_FULL                      318
-#define IMG_TIME_ORB_EMPTY                     319
-#define IMG_EMERALD_YELLOW                     320
-#define IMG_EMERALD_YELLOW_FALLING             321
-#define IMG_EMERALD_RED                                322
-#define IMG_EMERALD_RED_FALLING                        323
-#define IMG_EMERALD_PURPLE                     324
-#define IMG_EMERALD_PURPLE_FALLING             325
-#define IMG_WALL_EMERALD_YELLOW                        326
-#define IMG_WALL_EMERALD_RED                   327
-#define IMG_WALL_EMERALD_PURPLE                        328
-#define IMG_WALL_BD_DIAMOND                    329
-#define IMG_WALL_GROWING                       330
-#define IMG_WALL_GROWING_XY                    331
-#define IMG_WALL_GROWING_X                     332
-#define IMG_WALL_GROWING_Y                     333
-#define IMG_WALL_GROWING_ACTIVE_LEFT           334
-#define IMG_WALL_GROWING_ACTIVE_RIGHT          335
-#define IMG_WALL_GROWING_ACTIVE_UP             336
-#define IMG_WALL_GROWING_ACTIVE_DOWN           337
-#define IMG_BLACK_ORB                          338
-#define IMG_SPEED_PILL                         339
-#define IMG_DARK_YAMYAM                                340
-#define IMG_DYNABOMB_ACTIVE                    341
-#define IMG_DYNABOMB_PLAYER1_ACTIVE            342
-#define IMG_DYNABOMB_PLAYER2_ACTIVE            343
-#define IMG_DYNABOMB_PLAYER3_ACTIVE            344
-#define IMG_DYNABOMB_PLAYER4_ACTIVE            345
-#define IMG_DYNABOMB_NR                                346
-#define IMG_DYNABOMB_SZ                                347
-#define IMG_DYNABOMB_XL                                348
-#define IMG_PIG                                        349
-#define IMG_PIG_DOWN                           350
-#define IMG_PIG_DOWN_MOVING                    351
-#define IMG_PIG_DOWN_EATING                    352
-#define IMG_PIG_UP                             353
-#define IMG_PIG_UP_MOVING                      354
-#define IMG_PIG_UP_EATING                      355
-#define IMG_PIG_LEFT                           356
-#define IMG_PIG_LEFT_MOVING                    357
-#define IMG_PIG_LEFT_EATING                    358
-#define IMG_PIG_RIGHT                          359
-#define IMG_PIG_RIGHT_MOVING                   360
-#define IMG_PIG_RIGHT_EATING                   361
-#define IMG_DRAGON                             362
-#define IMG_DRAGON_DOWN                                363
-#define IMG_DRAGON_DOWN_MOVING                 364
-#define IMG_DRAGON_DOWN_ATTACKING              365
-#define IMG_DRAGON_UP                          366
-#define IMG_DRAGON_UP_MOVING                   367
-#define IMG_DRAGON_UP_ATTACKING                        368
-#define IMG_DRAGON_LEFT                                369
-#define IMG_DRAGON_LEFT_MOVING                 370
-#define IMG_DRAGON_LEFT_ATTACKING              371
-#define IMG_DRAGON_RIGHT                       372
-#define IMG_DRAGON_RIGHT_MOVING                        373
-#define IMG_DRAGON_RIGHT_ATTACKING             374
-#define IMG_MOLE                               375
-#define IMG_MOLE_DOWN                          376
-#define IMG_MOLE_DOWN_MOVING                   377
-#define IMG_MOLE_DOWN_DIGGING                  378
-#define IMG_MOLE_UP                            379
-#define IMG_MOLE_UP_MOVING                     380
-#define IMG_MOLE_UP_DIGGING                    381
-#define IMG_MOLE_LEFT                          382
-#define IMG_MOLE_LEFT_MOVING                   383
-#define IMG_MOLE_LEFT_DIGGING                  384
-#define IMG_MOLE_RIGHT                         385
-#define IMG_MOLE_RIGHT_MOVING                  386
-#define IMG_MOLE_RIGHT_DIGGING                 387
-#define IMG_PENGUIN                            388
-#define IMG_PENGUIN_DOWN                       389
-#define IMG_PENGUIN_DOWN_MOVING                        390
-#define IMG_PENGUIN_UP                         391
-#define IMG_PENGUIN_UP_MOVING                  392
-#define IMG_PENGUIN_LEFT                       393
-#define IMG_PENGUIN_LEFT_MOVING                        394
-#define IMG_PENGUIN_RIGHT                      395
-#define IMG_PENGUIN_RIGHT_MOVING               396
-#define IMG_SATELLITE                          397
-#define IMG_SATELLITE_MOVING                   398
-#define IMG_FLAMES_LEFT1                       399
-#define IMG_FLAMES_LEFT2                       400
-#define IMG_FLAMES_LEFT3                       401
-#define IMG_FLAMES_RIGHT1                      402
-#define IMG_FLAMES_RIGHT2                      403
-#define IMG_FLAMES_RIGHT3                      404
-#define IMG_FLAMES_UP1                         405
-#define IMG_FLAMES_UP2                         406
-#define IMG_FLAMES_UP3                         407
-#define IMG_FLAMES_DOWN1                       408
-#define IMG_FLAMES_DOWN2                       409
-#define IMG_FLAMES_DOWN3                       410
-#define IMG_STONEBLOCK                         411
-#define IMG_PLAYER1                            412
-#define IMG_PLAYER1_DOWN                       413
-#define IMG_PLAYER1_DOWN_MOVING                        414
-#define IMG_PLAYER1_DOWN_DIGGING               415
-#define IMG_PLAYER1_DOWN_PUSHING               416
-#define IMG_PLAYER1_DOWN_SNAPPING              417
-#define IMG_PLAYER1_UP                         418
-#define IMG_PLAYER1_UP_MOVING                  419
-#define IMG_PLAYER1_UP_DIGGING                 420
-#define IMG_PLAYER1_UP_PUSHING                 421
-#define IMG_PLAYER1_UP_SNAPPING                        422
-#define IMG_PLAYER1_LEFT                       423
-#define IMG_PLAYER1_LEFT_MOVING                        424
-#define IMG_PLAYER1_LEFT_DIGGING               425
-#define IMG_PLAYER1_LEFT_PUSHING               426
-#define IMG_PLAYER1_LEFT_SNAPPING              427
-#define IMG_PLAYER1_RIGHT                      428
-#define IMG_PLAYER1_RIGHT_MOVING               429
-#define IMG_PLAYER1_RIGHT_DIGGING              430
-#define IMG_PLAYER1_RIGHT_PUSHING              431
-#define IMG_PLAYER1_RIGHT_SNAPPING             432
-#define IMG_PLAYER2                            433
-#define IMG_PLAYER2_DOWN                       434
-#define IMG_PLAYER2_DOWN_MOVING                        435
-#define IMG_PLAYER2_DOWN_DIGGING               436
-#define IMG_PLAYER2_DOWN_PUSHING               437
-#define IMG_PLAYER2_DOWN_SNAPPING              438
-#define IMG_PLAYER2_UP                         439
-#define IMG_PLAYER2_UP_MOVING                  440
-#define IMG_PLAYER2_UP_DIGGING                 441
-#define IMG_PLAYER2_UP_PUSHING                 442
-#define IMG_PLAYER2_UP_SNAPPING                        443
-#define IMG_PLAYER2_LEFT                       444
-#define IMG_PLAYER2_LEFT_MOVING                        445
-#define IMG_PLAYER2_LEFT_DIGGING               446
-#define IMG_PLAYER2_LEFT_PUSHING               447
-#define IMG_PLAYER2_LEFT_SNAPPING              448
-#define IMG_PLAYER2_RIGHT                      449
-#define IMG_PLAYER2_RIGHT_MOVING               450
-#define IMG_PLAYER2_RIGHT_DIGGING              451
-#define IMG_PLAYER2_RIGHT_PUSHING              452
-#define IMG_PLAYER2_RIGHT_SNAPPING             453
-#define IMG_PLAYER3                            454
-#define IMG_PLAYER3_DOWN                       455
-#define IMG_PLAYER3_DOWN_MOVING                        456
-#define IMG_PLAYER3_DOWN_DIGGING               457
-#define IMG_PLAYER3_DOWN_PUSHING               458
-#define IMG_PLAYER3_DOWN_SNAPPING              459
-#define IMG_PLAYER3_UP                         460
-#define IMG_PLAYER3_UP_MOVING                  461
-#define IMG_PLAYER3_UP_DIGGING                 462
-#define IMG_PLAYER3_UP_PUSHING                 463
-#define IMG_PLAYER3_UP_SNAPPING                        464
-#define IMG_PLAYER3_LEFT                       465
-#define IMG_PLAYER3_LEFT_MOVING                        466
-#define IMG_PLAYER3_LEFT_DIGGING               467
-#define IMG_PLAYER3_LEFT_PUSHING               468
-#define IMG_PLAYER3_LEFT_SNAPPING              469
-#define IMG_PLAYER3_RIGHT                      470
-#define IMG_PLAYER3_RIGHT_MOVING               471
-#define IMG_PLAYER3_RIGHT_DIGGING              472
-#define IMG_PLAYER3_RIGHT_PUSHING              473
-#define IMG_PLAYER3_RIGHT_SNAPPING             474
-#define IMG_PLAYER4                            475
-#define IMG_PLAYER4_DOWN                       476
-#define IMG_PLAYER4_DOWN_MOVING                        477
-#define IMG_PLAYER4_DOWN_DIGGING               478
-#define IMG_PLAYER4_DOWN_PUSHING               479
-#define IMG_PLAYER4_DOWN_SNAPPING              480
-#define IMG_PLAYER4_UP                         481
-#define IMG_PLAYER4_UP_MOVING                  482
-#define IMG_PLAYER4_UP_DIGGING                 483
-#define IMG_PLAYER4_UP_PUSHING                 484
-#define IMG_PLAYER4_UP_SNAPPING                        485
-#define IMG_PLAYER4_LEFT                       486
-#define IMG_PLAYER4_LEFT_MOVING                        487
-#define IMG_PLAYER4_LEFT_DIGGING               488
-#define IMG_PLAYER4_LEFT_PUSHING               489
-#define IMG_PLAYER4_LEFT_SNAPPING              490
-#define IMG_PLAYER4_RIGHT                      491
-#define IMG_PLAYER4_RIGHT_MOVING               492
-#define IMG_PLAYER4_RIGHT_DIGGING              493
-#define IMG_PLAYER4_RIGHT_PUSHING              494
-#define IMG_PLAYER4_RIGHT_SNAPPING             495
-#define IMG_EXPLOSION                          496
-#define IMG_TWINKLE_BLUE                       497
-#define IMG_TWINKLE_WHITE                      498
-#define IMG_STEELWALL_TOPLEFT                  499
-#define IMG_STEELWALL_TOPRIGHT                 500
-#define IMG_STEELWALL_BOTTOMLEFT               501
-#define IMG_STEELWALL_BOTTOMRIGHT              502
-#define IMG_STEELWALL_HORIZONTAL               503
-#define IMG_STEELWALL_VERTICAL                 504
-#define IMG_INVISIBLE_STEELWALL_TOPLEFT                505
-#define IMG_INVISIBLE_STEELWALL_TOPRIGHT       506
-#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT     507
-#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT    508
-#define IMG_INVISIBLE_STEELWALL_HORIZONTAL     509
-#define IMG_INVISIBLE_STEELWALL_VERTICAL       510
-#define IMG_ARROW_BLUE_LEFT                    511
-#define IMG_ARROW_BLUE_RIGHT                   512
-#define IMG_ARROW_BLUE_UP                      513
-#define IMG_ARROW_BLUE_DOWN                    514
-#define IMG_ARROW_RED_LEFT                     515
-#define IMG_ARROW_RED_RIGHT                    516
-#define IMG_ARROW_RED_UP                       517
-#define IMG_ARROW_RED_DOWN                     518
-#define IMG_SCROLLBAR_BLUE                     519
-#define IMG_SCROLLBAR_RED                      520
-#define IMG_SCROLLBAR_GREEN                    521
-#define IMG_SCROLLBAR_YELLOW                   522
-#define IMG_CHAR_SPACE                         523
-#define IMG_CHAR_EXCLAM                                524
-#define IMG_CHAR_QUOTEDBL                      525
-#define IMG_CHAR_NUMBERSIGN                    526
-#define IMG_CHAR_DOLLAR                                527
-#define IMG_CHAR_PROCENT                       528
-#define IMG_CHAR_AMPERSAND                     529
-#define IMG_CHAR_APOSTROPHE                    530
-#define IMG_CHAR_PARENLEFT                     531
-#define IMG_CHAR_PARENRIGHT                    532
-#define IMG_CHAR_ASTERISK                      533
-#define IMG_CHAR_PLUS                          534
-#define IMG_CHAR_COMMA                         535
-#define IMG_CHAR_MINUS                         536
-#define IMG_CHAR_PERIOD                                537
-#define IMG_CHAR_SLASH                         538
-#define IMG_CHAR_0                             539
-#define IMG_CHAR_1                             540
-#define IMG_CHAR_2                             541
-#define IMG_CHAR_3                             542
-#define IMG_CHAR_4                             543
-#define IMG_CHAR_5                             544
-#define IMG_CHAR_6                             545
-#define IMG_CHAR_7                             546
-#define IMG_CHAR_8                             547
-#define IMG_CHAR_9                             548
-#define IMG_CHAR_COLON                         549
-#define IMG_CHAR_SEMICOLON                     550
-#define IMG_CHAR_LESS                          551
-#define IMG_CHAR_EQUAL                         552
-#define IMG_CHAR_GREATER                       553
-#define IMG_CHAR_QUESTION                      554
-#define IMG_CHAR_AT                            555
-#define IMG_CHAR_A                             556
-#define IMG_CHAR_B                             557
-#define IMG_CHAR_C                             558
-#define IMG_CHAR_D                             559
-#define IMG_CHAR_E                             560
-#define IMG_CHAR_F                             561
-#define IMG_CHAR_G                             562
-#define IMG_CHAR_H                             563
-#define IMG_CHAR_I                             564
-#define IMG_CHAR_J                             565
-#define IMG_CHAR_K                             566
-#define IMG_CHAR_L                             567
-#define IMG_CHAR_M                             568
-#define IMG_CHAR_N                             569
-#define IMG_CHAR_O                             570
-#define IMG_CHAR_P                             571
-#define IMG_CHAR_Q                             572
-#define IMG_CHAR_R                             573
-#define IMG_CHAR_S                             574
-#define IMG_CHAR_T                             575
-#define IMG_CHAR_U                             576
-#define IMG_CHAR_V                             577
-#define IMG_CHAR_W                             578
-#define IMG_CHAR_X                             579
-#define IMG_CHAR_Y                             580
-#define IMG_CHAR_Z                             581
-#define IMG_CHAR_AE                            582
-#define IMG_CHAR_OE                            583
-#define IMG_CHAR_UE                            584
-#define IMG_CHAR_COPYRIGHT                     585
-#define IMG_CHAR_UNDERSCORE                    586
-#define IMG_CHAR_EMPTY                         587
-#define IMG_CHAR_DEGREE                                588
-#define IMG_CHAR_TM                            589
-#define IMG_CHAR_CURSOR                                590
+#define IMG_BD_ROCK_MOVING_LEFT                        3
+#define IMG_BD_ROCK_MOVING_RIGHT               4
+#define IMG_BD_DIAMOND                         5
+#define IMG_BD_DIAMOND_FALLING                 6
+#define IMG_BD_MAGIC_WALL                      7
+#define IMG_BD_MAGIC_WALL_ACTIVE               8
+#define IMG_BD_MAGIC_WALL_FILLING              9
+#define IMG_BD_MAGIC_WALL_FULL                 10
+#define IMG_BD_MAGIC_WALL_EMPTYING             11
+#define IMG_BD_MAGIC_WALL_DEAD                 12
+#define IMG_BD_AMOEBA                          13
+#define IMG_BD_AMOEBA_PART1                    14
+#define IMG_BD_AMOEBA_PART2                    15
+#define IMG_BD_AMOEBA_PART3                    16
+#define IMG_BD_AMOEBA_PART4                    17
+#define IMG_BD_BUTTERFLY                       18
+#define IMG_BD_BUTTERFLY_MOVING                        19
+#define IMG_BD_BUTTERFLY_RIGHT                 20
+#define IMG_BD_BUTTERFLY_UP                    21
+#define IMG_BD_BUTTERFLY_LEFT                  22
+#define IMG_BD_BUTTERFLY_DOWN                  23
+#define IMG_BD_FIREFLY                         24
+#define IMG_BD_FIREFLY_MOVING                  25
+#define IMG_BD_FIREFLY_RIGHT                   26
+#define IMG_BD_FIREFLY_UP                      27
+#define IMG_BD_FIREFLY_LEFT                    28
+#define IMG_BD_FIREFLY_DOWN                    29
+#define IMG_SP_EMPTY_SPACE                     30
+#define IMG_SP_ZONK                            31
+#define IMG_SP_ZONK_FALLING                    32
+#define IMG_SP_ZONK_MOVING_LEFT                        33
+#define IMG_SP_ZONK_MOVING_RIGHT               34
+#define IMG_SP_BASE                            35
+#define IMG_SP_MURPHY                          36
+#define IMG_SP_MURPHY_LEFT                     37
+#define IMG_SP_MURPHY_LEFT_MOVING              38
+#define IMG_SP_MURPHY_LEFT_DIGGING             39
+#define IMG_SP_MURPHY_LEFT_PUSHING             40
+#define IMG_SP_MURPHY_LEFT_SNAPPING            41
+#define IMG_SP_MURPHY_RIGHT                    42
+#define IMG_SP_MURPHY_RIGHT_MOVING             43
+#define IMG_SP_MURPHY_RIGHT_DIGGING            44
+#define IMG_SP_MURPHY_RIGHT_PUSHING            45
+#define IMG_SP_MURPHY_RIGHT_SNAPPING           46
+#define IMG_SP_MURPHY_UP                       47
+#define IMG_SP_MURPHY_UP_SNAPPING              48
+#define IMG_SP_MURPHY_DOWN                     49
+#define IMG_SP_MURPHY_DOWN_SNAPPING            50
+#define IMG_SP_MURPHY_CLONE                    51
+#define IMG_SP_INFOTRON                                52
+#define IMG_SP_INFOTRON_FALLING                        53
+#define IMG_SP_CHIP_SINGLE                     54
+#define IMG_SP_CHIP_LEFT                       55
+#define IMG_SP_CHIP_RIGHT                      56
+#define IMG_SP_CHIP_UPPER                      57
+#define IMG_SP_CHIP_LOWER                      58
+#define IMG_SP_HARD_GRAY                       59
+#define IMG_SP_HARD_GREEN                      60
+#define IMG_SP_HARD_BLUE                       61
+#define IMG_SP_HARD_RED                                62
+#define IMG_SP_HARD_YELLOW                     63
+#define IMG_SP_EXIT_CLOSED                     64
+#define IMG_SP_EXIT_OPEN                       65
+#define IMG_SP_DISK_ORANGE                     66
+#define IMG_SP_DISK_ORANGE_FALLING             67
+#define IMG_SP_DISK_ORANGE_PUSHING             68
+#define IMG_SP_DISK_YELLOW                     69
+#define IMG_SP_DISK_YELLOW_PUSHING             70
+#define IMG_SP_DISK_RED                                71
+#define IMG_SP_DISK_RED_COLLECTING             72
+#define IMG_SP_PORT1_RIGHT                     73
+#define IMG_SP_PORT1_DOWN                      74
+#define IMG_SP_PORT1_LEFT                      75
+#define IMG_SP_PORT1_UP                                76
+#define IMG_SP_PORT2_RIGHT                     77
+#define IMG_SP_PORT2_DOWN                      78
+#define IMG_SP_PORT2_LEFT                      79
+#define IMG_SP_PORT2_UP                                80
+#define IMG_SP_PORT_X                          81
+#define IMG_SP_PORT_Y                          82
+#define IMG_SP_PORT_XY                         83
+#define IMG_SP_SNIKSNAK                                84
+#define IMG_SP_SNIKSNAK_LEFT                   85
+#define IMG_SP_SNIKSNAK_RIGHT                  86
+#define IMG_SP_SNIKSNAK_UP                     87
+#define IMG_SP_SNIKSNAK_DOWN                   88
+#define IMG_SP_ELECTRON                                89
+#define IMG_SP_TERMINAL                                90
+#define IMG_SP_TERMINAL_ACTIVE                 91
+#define IMG_SP_BUGGY_BASE                      92
+#define IMG_SP_BUGGY_BASE_ACTIVE               93
+#define IMG_SP_HARD_BASE1                      94
+#define IMG_SP_HARD_BASE2                      95
+#define IMG_SP_HARD_BASE3                      96
+#define IMG_SP_HARD_BASE4                      97
+#define IMG_SP_HARD_BASE5                      98
+#define IMG_SP_HARD_BASE6                      99
+#define IMG_SP_EXPLOSION                       100
+#define IMG_SP_EXPLOSION_INFOTRON              101
+#define IMG_SOKOBAN_OBJECT                     102
+#define IMG_SOKOBAN_FIELD_EMPTY                        103
+#define IMG_SOKOBAN_FIELD_FULL                 104
+#define IMG_EMPTY_SPACE                                105
+#define IMG_SAND                               106
+#define IMG_SAND_CRUMBLED                      107
+#define IMG_WALL                               108
+#define IMG_WALL_CRUMBLED                      109
+#define IMG_STEELWALL                          110
+#define IMG_ROCK                               111
+#define IMG_ROCK_FALLING                       112
+#define IMG_ROCK_MOVING_LEFT                   113
+#define IMG_ROCK_MOVING_RIGHT                  114
+#define IMG_EMERALD                            115
+#define IMG_EMERALD_FALLING                    116
+#define IMG_DIAMOND                            117
+#define IMG_DIAMOND_FALLING                    118
+#define IMG_BOMB                               119
+#define IMG_NUT                                        120
+#define IMG_NUT_CRACKING                       121
+#define IMG_DYNAMITE                           122
+#define IMG_DYNAMITE_ACTIVE                    123
+#define IMG_WALL_EMERALD                       124
+#define IMG_WALL_DIAMOND                       125
+#define IMG_BUG_RIGHT                          126
+#define IMG_BUG_UP                             127
+#define IMG_BUG_LEFT                           128
+#define IMG_BUG_DOWN                           129
+#define IMG_SPACESHIP_RIGHT                    130
+#define IMG_SPACESHIP_UP                       131
+#define IMG_SPACESHIP_LEFT                     132
+#define IMG_SPACESHIP_DOWN                     133
+#define IMG_YAMYAM                             134
+#define IMG_YAMYAM_MOVING                      135
+#define IMG_ROBOT                              136
+#define IMG_ROBOT_WHEEL                                137
+#define IMG_ROBOT_WHEEL_ACTIVE                 138
+#define IMG_MAGIC_WALL                         139
+#define IMG_MAGIC_WALL_ACTIVE                  140
+#define IMG_MAGIC_WALL_FILLING                 141
+#define IMG_MAGIC_WALL_FULL                    142
+#define IMG_MAGIC_WALL_EMPTYING                        143
+#define IMG_MAGIC_WALL_DEAD                    144
+#define IMG_QUICKSAND_EMPTY                    145
+#define IMG_QUICKSAND_FILLING                  146
+#define IMG_QUICKSAND_FULL                     147
+#define IMG_QUICKSAND_EMPTYING                 148
+#define IMG_ACIDPOOL_TOPLEFT                   149
+#define IMG_ACIDPOOL_TOPRIGHT                  150
+#define IMG_ACIDPOOL_BOTTOMLEFT                        151
+#define IMG_ACIDPOOL_BOTTOM                    152
+#define IMG_ACIDPOOL_BOTTOMRIGHT               153
+#define IMG_ACID                               154
+#define IMG_ACID_SPLASH_LEFT                   155
+#define IMG_ACID_SPLASH_RIGHT                  156
+#define IMG_AMOEBA_DROP                                157
+#define IMG_AMOEBA_CREATING                    158
+#define IMG_AMOEBA_SHRINKING                   159
+#define IMG_AMOEBA_WET                         160
+#define IMG_AMOEBA_WET_PART1                   161
+#define IMG_AMOEBA_WET_PART2                   162
+#define IMG_AMOEBA_WET_PART3                   163
+#define IMG_AMOEBA_WET_PART4                   164
+#define IMG_AMOEBA_DRY                         165
+#define IMG_AMOEBA_DRY_PART1                   166
+#define IMG_AMOEBA_DRY_PART2                   167
+#define IMG_AMOEBA_DRY_PART3                   168
+#define IMG_AMOEBA_DRY_PART4                   169
+#define IMG_AMOEBA_FULL                                170
+#define IMG_AMOEBA_FULL_PART1                  171
+#define IMG_AMOEBA_FULL_PART2                  172
+#define IMG_AMOEBA_FULL_PART3                  173
+#define IMG_AMOEBA_FULL_PART4                  174
+#define IMG_AMOEBA_DEAD                                175
+#define IMG_AMOEBA_DEAD_PART1                  176
+#define IMG_AMOEBA_DEAD_PART2                  177
+#define IMG_AMOEBA_DEAD_PART3                  178
+#define IMG_AMOEBA_DEAD_PART4                  179
+#define IMG_EM_KEY1                            180
+#define IMG_EM_KEY2                            181
+#define IMG_EM_KEY3                            182
+#define IMG_EM_KEY4                            183
+#define IMG_EM_GATE1                           184
+#define IMG_EM_GATE2                           185
+#define IMG_EM_GATE3                           186
+#define IMG_EM_GATE4                           187
+#define IMG_EM_GATE1_GRAY                      188
+#define IMG_EM_GATE2_GRAY                      189
+#define IMG_EM_GATE3_GRAY                      190
+#define IMG_EM_GATE4_GRAY                      191
+#define IMG_EXIT_CLOSED                                192
+#define IMG_EXIT_OPENING                       193
+#define IMG_EXIT_OPEN                          194
+#define IMG_BALLOON                            195
+#define IMG_BALLOON_MOVING                     196
+#define IMG_BALLOON_SEND_LEFT                  197
+#define IMG_BALLOON_SEND_RIGHT                 198
+#define IMG_BALLOON_SEND_UP                    199
+#define IMG_BALLOON_SEND_DOWN                  200
+#define IMG_BALLOON_SEND_ANY_DIRECTION         201
+#define IMG_SPRING                             202
+#define IMG_SPRING_MOVING                      203
+#define IMG_EMC_STEELWALL1                     204
+#define IMG_EMC_STEELWALL2                     205
+#define IMG_EMC_STEELWALL3                     206
+#define IMG_EMC_STEELWALL4                     207
+#define IMG_EMC_WALL_PILLAR_UPPER              208
+#define IMG_EMC_WALL_PILLAR_MIDDLE             209
+#define IMG_EMC_WALL_PILLAR_LOWER              210
+#define IMG_EMC_WALL4                          211
+#define IMG_EMC_WALL5                          212
+#define IMG_EMC_WALL6                          213
+#define IMG_EMC_WALL7                          214
+#define IMG_EMC_WALL8                          215
+#define IMG_INVISIBLE_STEELWALL                        216
+#define IMG_INVISIBLE_STEELWALL_ACTIVE         217
+#define IMG_INVISIBLE_WALL                     218
+#define IMG_INVISIBLE_WALL_ACTIVE              219
+#define IMG_INVISIBLE_SAND                     220
+#define IMG_INVISIBLE_SAND_ACTIVE              221
+#define IMG_CONVEYOR_BELT1_MIDDLE              222
+#define IMG_CONVEYOR_BELT1_MIDDLE_ACTIVE       223
+#define IMG_CONVEYOR_BELT1_LEFT                        224
+#define IMG_CONVEYOR_BELT1_LEFT_ACTIVE         225
+#define IMG_CONVEYOR_BELT1_RIGHT               226
+#define IMG_CONVEYOR_BELT1_RIGHT_ACTIVE                227
+#define IMG_CONVEYOR_BELT1_SWITCH_LEFT         228
+#define IMG_CONVEYOR_BELT1_SWITCH_MIDDLE       229
+#define IMG_CONVEYOR_BELT1_SWITCH_RIGHT                230
+#define IMG_CONVEYOR_BELT2_MIDDLE              231
+#define IMG_CONVEYOR_BELT2_MIDDLE_ACTIVE       232
+#define IMG_CONVEYOR_BELT2_LEFT                        233
+#define IMG_CONVEYOR_BELT2_LEFT_ACTIVE         234
+#define IMG_CONVEYOR_BELT2_RIGHT               235
+#define IMG_CONVEYOR_BELT2_RIGHT_ACTIVE                236
+#define IMG_CONVEYOR_BELT2_SWITCH_LEFT         237
+#define IMG_CONVEYOR_BELT2_SWITCH_MIDDLE       238
+#define IMG_CONVEYOR_BELT2_SWITCH_RIGHT                239
+#define IMG_CONVEYOR_BELT3_MIDDLE              240
+#define IMG_CONVEYOR_BELT3_MIDDLE_ACTIVE       241
+#define IMG_CONVEYOR_BELT3_LEFT                        242
+#define IMG_CONVEYOR_BELT3_LEFT_ACTIVE         243
+#define IMG_CONVEYOR_BELT3_RIGHT               244
+#define IMG_CONVEYOR_BELT3_RIGHT_ACTIVE                245
+#define IMG_CONVEYOR_BELT3_SWITCH_LEFT         246
+#define IMG_CONVEYOR_BELT3_SWITCH_MIDDLE       247
+#define IMG_CONVEYOR_BELT3_SWITCH_RIGHT                248
+#define IMG_CONVEYOR_BELT4_MIDDLE              249
+#define IMG_CONVEYOR_BELT4_MIDDLE_ACTIVE       250
+#define IMG_CONVEYOR_BELT4_LEFT                        251
+#define IMG_CONVEYOR_BELT4_LEFT_ACTIVE         252
+#define IMG_CONVEYOR_BELT4_RIGHT               253
+#define IMG_CONVEYOR_BELT4_RIGHT_ACTIVE                254
+#define IMG_CONVEYOR_BELT4_SWITCH_LEFT         255
+#define IMG_CONVEYOR_BELT4_SWITCH_MIDDLE       256
+#define IMG_CONVEYOR_BELT4_SWITCH_RIGHT                257
+#define IMG_SWITCHGATE_SWITCH_UP               258
+#define IMG_SWITCHGATE_SWITCH_DOWN             259
+#define IMG_LIGHT_SWITCH                       260
+#define IMG_LIGHT_SWITCH_ACTIVE                        261
+#define IMG_TIMEGATE_SWITCH                    262
+#define IMG_TIMEGATE_SWITCH_ACTIVE             263
+#define IMG_ENVELOPE                           264
+#define IMG_SIGN_EXCLAMATION                   265
+#define IMG_SIGN_STOP                          266
+#define IMG_LANDMINE                           267
+#define IMG_STEELWALL_SLANTED                  268
+#define IMG_EXTRA_TIME                         269
+#define IMG_SHIELD_NORMAL                      270
+#define IMG_SHIELD_DEADLY                      271
+#define IMG_SHIELD_NORMAL_ACTIVE               272
+#define IMG_SHIELD_DEADLY_ACTIVE               273
+#define IMG_SWITCHGATE_CLOSED                  274
+#define IMG_SWITCHGATE_OPENING                 275
+#define IMG_SWITCHGATE_OPEN                    276
+#define IMG_SWITCHGATE_CLOSING                 277
+#define IMG_TIMEGATE_CLOSED                    278
+#define IMG_TIMEGATE_OPENING                   279
+#define IMG_TIMEGATE_OPEN                      280
+#define IMG_TIMEGATE_CLOSING                   281
+#define IMG_PEARL                              282
+#define IMG_PEARL_BREAKING                     283
+#define IMG_CRYSTAL                            284
+#define IMG_WALL_PEARL                         285
+#define IMG_WALL_CRYSTAL                       286
+#define IMG_TUBE_RIGHT_DOWN                    287
+#define IMG_TUBE_HORIZONTAL_DOWN               288
+#define IMG_TUBE_LEFT_DOWN                     289
+#define IMG_TUBE_HORIZONTAL                    290
+#define IMG_TUBE_VERTICAL_RIGHT                        291
+#define IMG_TUBE_ALL                           292
+#define IMG_TUBE_VERTICAL_LEFT                 293
+#define IMG_TUBE_VERTICAL                      294
+#define IMG_TUBE_RIGHT_UP                      295
+#define IMG_TUBE_HORIZONTAL_UP                 296
+#define IMG_TUBE_LEFT_UP                       297
+#define IMG_TRAP                               298
+#define IMG_TRAP_ACTIVE                                299
+#define IMG_DX_SUPABOMB                                300
+#define IMG_KEY1                               301
+#define IMG_KEY2                               302
+#define IMG_KEY3                               303
+#define IMG_KEY4                               304
+#define IMG_GATE1                              305
+#define IMG_GATE2                              306
+#define IMG_GATE3                              307
+#define IMG_GATE4                              308
+#define IMG_GATE1_GRAY                         309
+#define IMG_GATE2_GRAY                         310
+#define IMG_GATE3_GRAY                         311
+#define IMG_GATE4_GRAY                         312
+#define IMG_GAMEOFLIFE                         313
+#define IMG_BIOMAZE                            314
+#define IMG_PACMAN_RIGHT                       315
+#define IMG_PACMAN_UP                          316
+#define IMG_PACMAN_LEFT                                317
+#define IMG_PACMAN_DOWN                                318
+#define IMG_LAMP                               319
+#define IMG_LAMP_ACTIVE                                320
+#define IMG_TIME_ORB_FULL                      321
+#define IMG_TIME_ORB_EMPTY                     322
+#define IMG_EMERALD_YELLOW                     323
+#define IMG_EMERALD_YELLOW_FALLING             324
+#define IMG_EMERALD_RED                                325
+#define IMG_EMERALD_RED_FALLING                        326
+#define IMG_EMERALD_PURPLE                     327
+#define IMG_EMERALD_PURPLE_FALLING             328
+#define IMG_WALL_EMERALD_YELLOW                        329
+#define IMG_WALL_EMERALD_RED                   330
+#define IMG_WALL_EMERALD_PURPLE                        331
+#define IMG_WALL_BD_DIAMOND                    332
+#define IMG_WALL_GROWING                       333
+#define IMG_WALL_GROWING_XY                    334
+#define IMG_WALL_GROWING_X                     335
+#define IMG_WALL_GROWING_Y                     336
+#define IMG_WALL_GROWING_ACTIVE_LEFT           337
+#define IMG_WALL_GROWING_ACTIVE_RIGHT          338
+#define IMG_WALL_GROWING_ACTIVE_UP             339
+#define IMG_WALL_GROWING_ACTIVE_DOWN           340
+#define IMG_BLACK_ORB                          341
+#define IMG_SPEED_PILL                         342
+#define IMG_DARK_YAMYAM                                343
+#define IMG_DYNABOMB_ACTIVE                    344
+#define IMG_DYNABOMB_PLAYER1_ACTIVE            345
+#define IMG_DYNABOMB_PLAYER2_ACTIVE            346
+#define IMG_DYNABOMB_PLAYER3_ACTIVE            347
+#define IMG_DYNABOMB_PLAYER4_ACTIVE            348
+#define IMG_DYNABOMB_NR                                349
+#define IMG_DYNABOMB_SZ                                350
+#define IMG_DYNABOMB_XL                                351
+#define IMG_PIG                                        352
+#define IMG_PIG_DOWN                           353
+#define IMG_PIG_DOWN_MOVING                    354
+#define IMG_PIG_DOWN_EATING                    355
+#define IMG_PIG_UP                             356
+#define IMG_PIG_UP_MOVING                      357
+#define IMG_PIG_UP_EATING                      358
+#define IMG_PIG_LEFT                           359
+#define IMG_PIG_LEFT_MOVING                    360
+#define IMG_PIG_LEFT_EATING                    361
+#define IMG_PIG_RIGHT                          362
+#define IMG_PIG_RIGHT_MOVING                   363
+#define IMG_PIG_RIGHT_EATING                   364
+#define IMG_DRAGON                             365
+#define IMG_DRAGON_DOWN                                366
+#define IMG_DRAGON_DOWN_MOVING                 367
+#define IMG_DRAGON_DOWN_ATTACKING              368
+#define IMG_DRAGON_UP                          369
+#define IMG_DRAGON_UP_MOVING                   370
+#define IMG_DRAGON_UP_ATTACKING                        371
+#define IMG_DRAGON_LEFT                                372
+#define IMG_DRAGON_LEFT_MOVING                 373
+#define IMG_DRAGON_LEFT_ATTACKING              374
+#define IMG_DRAGON_RIGHT                       375
+#define IMG_DRAGON_RIGHT_MOVING                        376
+#define IMG_DRAGON_RIGHT_ATTACKING             377
+#define IMG_MOLE                               378
+#define IMG_MOLE_DOWN                          379
+#define IMG_MOLE_DOWN_MOVING                   380
+#define IMG_MOLE_DOWN_DIGGING                  381
+#define IMG_MOLE_UP                            382
+#define IMG_MOLE_UP_MOVING                     383
+#define IMG_MOLE_UP_DIGGING                    384
+#define IMG_MOLE_LEFT                          385
+#define IMG_MOLE_LEFT_MOVING                   386
+#define IMG_MOLE_LEFT_DIGGING                  387
+#define IMG_MOLE_RIGHT                         388
+#define IMG_MOLE_RIGHT_MOVING                  389
+#define IMG_MOLE_RIGHT_DIGGING                 390
+#define IMG_PENGUIN                            391
+#define IMG_PENGUIN_DOWN                       392
+#define IMG_PENGUIN_DOWN_MOVING                        393
+#define IMG_PENGUIN_UP                         394
+#define IMG_PENGUIN_UP_MOVING                  395
+#define IMG_PENGUIN_LEFT                       396
+#define IMG_PENGUIN_LEFT_MOVING                        397
+#define IMG_PENGUIN_RIGHT                      398
+#define IMG_PENGUIN_RIGHT_MOVING               399
+#define IMG_SATELLITE                          400
+#define IMG_SATELLITE_MOVING                   401
+#define IMG_FLAMES_LEFT1                       402
+#define IMG_FLAMES_LEFT2                       403
+#define IMG_FLAMES_LEFT3                       404
+#define IMG_FLAMES_RIGHT1                      405
+#define IMG_FLAMES_RIGHT2                      406
+#define IMG_FLAMES_RIGHT3                      407
+#define IMG_FLAMES_UP1                         408
+#define IMG_FLAMES_UP2                         409
+#define IMG_FLAMES_UP3                         410
+#define IMG_FLAMES_DOWN1                       411
+#define IMG_FLAMES_DOWN2                       412
+#define IMG_FLAMES_DOWN3                       413
+#define IMG_STONEBLOCK                         414
+#define IMG_PLAYER1                            415
+#define IMG_PLAYER1_DOWN                       416
+#define IMG_PLAYER1_DOWN_MOVING                        417
+#define IMG_PLAYER1_DOWN_DIGGING               418
+#define IMG_PLAYER1_DOWN_PUSHING               419
+#define IMG_PLAYER1_DOWN_SNAPPING              420
+#define IMG_PLAYER1_UP                         421
+#define IMG_PLAYER1_UP_MOVING                  422
+#define IMG_PLAYER1_UP_DIGGING                 423
+#define IMG_PLAYER1_UP_PUSHING                 424
+#define IMG_PLAYER1_UP_SNAPPING                        425
+#define IMG_PLAYER1_LEFT                       426
+#define IMG_PLAYER1_LEFT_MOVING                        427
+#define IMG_PLAYER1_LEFT_DIGGING               428
+#define IMG_PLAYER1_LEFT_PUSHING               429
+#define IMG_PLAYER1_LEFT_SNAPPING              430
+#define IMG_PLAYER1_RIGHT                      431
+#define IMG_PLAYER1_RIGHT_MOVING               432
+#define IMG_PLAYER1_RIGHT_DIGGING              433
+#define IMG_PLAYER1_RIGHT_PUSHING              434
+#define IMG_PLAYER1_RIGHT_SNAPPING             435
+#define IMG_PLAYER2                            436
+#define IMG_PLAYER2_DOWN                       437
+#define IMG_PLAYER2_DOWN_MOVING                        438
+#define IMG_PLAYER2_DOWN_DIGGING               439
+#define IMG_PLAYER2_DOWN_PUSHING               440
+#define IMG_PLAYER2_DOWN_SNAPPING              441
+#define IMG_PLAYER2_UP                         442
+#define IMG_PLAYER2_UP_MOVING                  443
+#define IMG_PLAYER2_UP_DIGGING                 444
+#define IMG_PLAYER2_UP_PUSHING                 445
+#define IMG_PLAYER2_UP_SNAPPING                        446
+#define IMG_PLAYER2_LEFT                       447
+#define IMG_PLAYER2_LEFT_MOVING                        448
+#define IMG_PLAYER2_LEFT_DIGGING               449
+#define IMG_PLAYER2_LEFT_PUSHING               450
+#define IMG_PLAYER2_LEFT_SNAPPING              451
+#define IMG_PLAYER2_RIGHT                      452
+#define IMG_PLAYER2_RIGHT_MOVING               453
+#define IMG_PLAYER2_RIGHT_DIGGING              454
+#define IMG_PLAYER2_RIGHT_PUSHING              455
+#define IMG_PLAYER2_RIGHT_SNAPPING             456
+#define IMG_PLAYER3                            457
+#define IMG_PLAYER3_DOWN                       458
+#define IMG_PLAYER3_DOWN_MOVING                        459
+#define IMG_PLAYER3_DOWN_DIGGING               460
+#define IMG_PLAYER3_DOWN_PUSHING               461
+#define IMG_PLAYER3_DOWN_SNAPPING              462
+#define IMG_PLAYER3_UP                         463
+#define IMG_PLAYER3_UP_MOVING                  464
+#define IMG_PLAYER3_UP_DIGGING                 465
+#define IMG_PLAYER3_UP_PUSHING                 466
+#define IMG_PLAYER3_UP_SNAPPING                        467
+#define IMG_PLAYER3_LEFT                       468
+#define IMG_PLAYER3_LEFT_MOVING                        469
+#define IMG_PLAYER3_LEFT_DIGGING               470
+#define IMG_PLAYER3_LEFT_PUSHING               471
+#define IMG_PLAYER3_LEFT_SNAPPING              472
+#define IMG_PLAYER3_RIGHT                      473
+#define IMG_PLAYER3_RIGHT_MOVING               474
+#define IMG_PLAYER3_RIGHT_DIGGING              475
+#define IMG_PLAYER3_RIGHT_PUSHING              476
+#define IMG_PLAYER3_RIGHT_SNAPPING             477
+#define IMG_PLAYER4                            478
+#define IMG_PLAYER4_DOWN                       479
+#define IMG_PLAYER4_DOWN_MOVING                        480
+#define IMG_PLAYER4_DOWN_DIGGING               481
+#define IMG_PLAYER4_DOWN_PUSHING               482
+#define IMG_PLAYER4_DOWN_SNAPPING              483
+#define IMG_PLAYER4_UP                         484
+#define IMG_PLAYER4_UP_MOVING                  485
+#define IMG_PLAYER4_UP_DIGGING                 486
+#define IMG_PLAYER4_UP_PUSHING                 487
+#define IMG_PLAYER4_UP_SNAPPING                        488
+#define IMG_PLAYER4_LEFT                       489
+#define IMG_PLAYER4_LEFT_MOVING                        490
+#define IMG_PLAYER4_LEFT_DIGGING               491
+#define IMG_PLAYER4_LEFT_PUSHING               492
+#define IMG_PLAYER4_LEFT_SNAPPING              493
+#define IMG_PLAYER4_RIGHT                      494
+#define IMG_PLAYER4_RIGHT_MOVING               495
+#define IMG_PLAYER4_RIGHT_DIGGING              496
+#define IMG_PLAYER4_RIGHT_PUSHING              497
+#define IMG_PLAYER4_RIGHT_SNAPPING             498
+#define IMG_EXPLOSION                          499
+#define IMG_TWINKLE_BLUE                       500
+#define IMG_TWINKLE_WHITE                      501
+#define IMG_STEELWALL_TOPLEFT                  502
+#define IMG_STEELWALL_TOPRIGHT                 503
+#define IMG_STEELWALL_BOTTOMLEFT               504
+#define IMG_STEELWALL_BOTTOMRIGHT              505
+#define IMG_STEELWALL_HORIZONTAL               506
+#define IMG_STEELWALL_VERTICAL                 507
+#define IMG_INVISIBLE_STEELWALL_TOPLEFT                508
+#define IMG_INVISIBLE_STEELWALL_TOPRIGHT       509
+#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT     510
+#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT    511
+#define IMG_INVISIBLE_STEELWALL_HORIZONTAL     512
+#define IMG_INVISIBLE_STEELWALL_VERTICAL       513
+#define IMG_ARROW_BLUE_LEFT                    514
+#define IMG_ARROW_BLUE_RIGHT                   515
+#define IMG_ARROW_BLUE_UP                      516
+#define IMG_ARROW_BLUE_DOWN                    517
+#define IMG_ARROW_RED_LEFT                     518
+#define IMG_ARROW_RED_RIGHT                    519
+#define IMG_ARROW_RED_UP                       520
+#define IMG_ARROW_RED_DOWN                     521
+#define IMG_BALL_RED                           522
+#define IMG_BALL_BLUE                          523
+#define IMG_BALL_YELLOW                                524
+#define IMG_BALL_GRAY                          525
+#define IMG_SCROLLBAR_BLUE                     526
+#define IMG_SCROLLBAR_RED                      527
+#define IMG_SCROLLBAR_GREEN                    528
+#define IMG_SCROLLBAR_YELLOW                   529
+#define IMG_CHAR_SPACE                         530
+#define IMG_CHAR_EXCLAM                                531
+#define IMG_CHAR_QUOTEDBL                      532
+#define IMG_CHAR_NUMBERSIGN                    533
+#define IMG_CHAR_DOLLAR                                534
+#define IMG_CHAR_PROCENT                       535
+#define IMG_CHAR_AMPERSAND                     536
+#define IMG_CHAR_APOSTROPHE                    537
+#define IMG_CHAR_PARENLEFT                     538
+#define IMG_CHAR_PARENRIGHT                    539
+#define IMG_CHAR_ASTERISK                      540
+#define IMG_CHAR_PLUS                          541
+#define IMG_CHAR_COMMA                         542
+#define IMG_CHAR_MINUS                         543
+#define IMG_CHAR_PERIOD                                544
+#define IMG_CHAR_SLASH                         545
+#define IMG_CHAR_0                             546
+#define IMG_CHAR_1                             547
+#define IMG_CHAR_2                             548
+#define IMG_CHAR_3                             549
+#define IMG_CHAR_4                             550
+#define IMG_CHAR_5                             551
+#define IMG_CHAR_6                             552
+#define IMG_CHAR_7                             553
+#define IMG_CHAR_8                             554
+#define IMG_CHAR_9                             555
+#define IMG_CHAR_COLON                         556
+#define IMG_CHAR_SEMICOLON                     557
+#define IMG_CHAR_LESS                          558
+#define IMG_CHAR_EQUAL                         559
+#define IMG_CHAR_GREATER                       560
+#define IMG_CHAR_QUESTION                      561
+#define IMG_CHAR_AT                            562
+#define IMG_CHAR_A                             563
+#define IMG_CHAR_B                             564
+#define IMG_CHAR_C                             565
+#define IMG_CHAR_D                             566
+#define IMG_CHAR_E                             567
+#define IMG_CHAR_F                             568
+#define IMG_CHAR_G                             569
+#define IMG_CHAR_H                             570
+#define IMG_CHAR_I                             571
+#define IMG_CHAR_J                             572
+#define IMG_CHAR_K                             573
+#define IMG_CHAR_L                             574
+#define IMG_CHAR_M                             575
+#define IMG_CHAR_N                             576
+#define IMG_CHAR_O                             577
+#define IMG_CHAR_P                             578
+#define IMG_CHAR_Q                             579
+#define IMG_CHAR_R                             580
+#define IMG_CHAR_S                             581
+#define IMG_CHAR_T                             582
+#define IMG_CHAR_U                             583
+#define IMG_CHAR_V                             584
+#define IMG_CHAR_W                             585
+#define IMG_CHAR_X                             586
+#define IMG_CHAR_Y                             587
+#define IMG_CHAR_Z                             588
+#define IMG_CHAR_AE                            589
+#define IMG_CHAR_OE                            590
+#define IMG_CHAR_UE                            591
+#define IMG_CHAR_COPYRIGHT                     592
+#define IMG_CHAR_UNDERSCORE                    593
+#define IMG_CHAR_EMPTY                         594
+#define IMG_CHAR_DEGREE                                595
+#define IMG_CHAR_TM                            596
+#define IMG_CHAR_CURSOR                                597
 
-#define NUM_IMAGE_FILES                                591
+#define NUM_IMAGE_FILES                                598
 
 #endif /* CONF_GFX_H */
index 00e74ea238c450d1938ddbb5e73b5d258070a5c6..0545b5c1459a1543e506cabbb228a7144cd146e5 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2002-10-19 21:00]"
+#define COMPILE_DATE_STRING "[2002-10-23 23:44]"
index d92acb70d86f7d3625a342cdaad72520f9a96a14..332da783035d540ce04ec1552087f136b78c67e3 100644 (file)
@@ -736,8 +736,8 @@ void InitGame()
     player->last_jx = player->last_jy = 0;
     player->jx = player->jy = 0;
 
-    player->shield_passive_time_left = 0;
-    player->shield_active_time_left = 0;
+    player->shield_normal_time_left = 0;
+    player->shield_deadly_time_left = 0;
 
     DigField(player, 0, 0, 0, 0, DF_NO_PUSH);
     SnapField(player, 0, 0);
@@ -1471,6 +1471,7 @@ void DrawDynamite(int x, int y)
     DrawNewGraphic(sx, sy, el2img(Store[x][y]), 0);
 #endif
 
+#if 0
   if (Feld[x][y] == EL_DYNAMITE_ACTIVE)
   {
     if ((frame = (96 - MovDelay[x][y]) / 12) > 6)
@@ -1481,8 +1482,7 @@ void DrawDynamite(int x, int y)
     if ((frame = ((96 - MovDelay[x][y]) / 6) % 8) > 3)
       frame = 7 - frame;
   }
-
-#if 1
+#else
   frame = getNewGraphicAnimationFrame(graphic, 96 - MovDelay[x][y]);
 #endif
 
@@ -1752,7 +1752,7 @@ void Explode(int ex, int ey, int phase, int mode)
 #endif
 
     if (phase == delay)
-      ErdreichAnbroeckeln(SCREENX(x), SCREENY(y));
+      DrawCrumbledSand(SCREENX(x), SCREENY(y));
 
     if (IS_PFORTE(Store[x][y]))
     {
@@ -1879,32 +1879,32 @@ void Blurb(int x, int y)
 {
   int element = Feld[x][y];
 
-  if (element != EL_ACID_SPLASHING_LEFT &&
-      element != EL_ACID_SPLASHING_RIGHT)      /* start */
+  if (element != EL_ACID_SPLASH_LEFT &&
+      element != EL_ACID_SPLASH_RIGHT) /* start */
   {
     PlaySoundLevel(x, y, SND_ACID_SPLASHING);
     if (IN_LEV_FIELD(x-1, y) && IS_FREE(x-1, y) &&
        (!IN_LEV_FIELD(x-1, y-1) ||
         !CAN_FALL(MovingOrBlocked2Element(x-1, y-1))))
     {
-      Feld[x-1][y] = EL_ACID_SPLASHING_LEFT;
+      Feld[x-1][y] = EL_ACID_SPLASH_LEFT;
     }
     if (IN_LEV_FIELD(x+1, y) && IS_FREE(x+1, y) &&
        (!IN_LEV_FIELD(x+1, y-1) ||
         !CAN_FALL(MovingOrBlocked2Element(x+1, y-1))))
     {
-      Feld[x+1][y] = EL_ACID_SPLASHING_RIGHT;
+      Feld[x+1][y] = EL_ACID_SPLASH_RIGHT;
     }
   }
   else                                                         /* go on */
   {
 #if 0
     int graphic =
-      (element == EL_ACID_SPLASHING_LEFT ? GFX_BLURB_LEFT : GFX_BLURB_RIGHT);
+      (element == EL_ACID_SPLASH_LEFT ? GFX_BLURB_LEFT : GFX_BLURB_RIGHT);
 #else
-    int graphic = (element == EL_ACID_SPLASHING_LEFT ?
-                  IMG_ACID_SPLASHING_LEFT :
-                  IMG_ACID_SPLASHING_RIGHT);
+    int graphic = (element == EL_ACID_SPLASH_LEFT ?
+                  IMG_ACID_SPLASH_LEFT :
+                  IMG_ACID_SPLASH_RIGHT);
 #endif
 
     if (!MovDelay[x][y])       /* initialize animation counter */
@@ -2296,7 +2296,7 @@ void Impact(int x, int y)
        }
        else if (smashed == EL_NUT)
        {
-         Feld[x][y+1] = EL_CRACKINGNUT;
+         Feld[x][y+1] = EL_NUT_CRACKING;
          PlaySoundLevel(x, y, SND_NUT_CRACKING);
          RaiseScoreElement(EL_NUT);
          return;
@@ -3411,7 +3411,7 @@ void ContinueMoving(int x, int y)
        yy = y + xy[i][1];
 
        if (IN_LEV_FIELD(xx, yy) && Feld[xx][yy] == EL_SAND)
-         DrawNewLevelField(xx, yy);    /* for "ErdreichAnbroeckeln()" */
+         DrawNewLevelField(xx, yy);    /* for "DrawCrumbledSand()" */
       }
     }
 
@@ -4768,7 +4768,7 @@ static void CheckTrap(int x, int y)
 
            DrawNewGraphic(SCREENX(x),SCREENY(y), graphic, frame);
 #endif
-           ErdreichAnbroeckeln(SCREENX(x), SCREENY(y));
+           DrawCrumbledSand(SCREENX(x), SCREENY(y));
          }
        }
 
@@ -5122,10 +5122,10 @@ void GameActions()
       TimegateWheel(x, y);
     else if (element == EL_ACID)
       Blubber(x, y);
-    else if (element == EL_ACID_SPLASHING_LEFT ||
-            element == EL_ACID_SPLASHING_RIGHT)
+    else if (element == EL_ACID_SPLASH_LEFT ||
+            element == EL_ACID_SPLASH_RIGHT)
       Blurb(x, y);
-    else if (element == EL_CRACKINGNUT)
+    else if (element == EL_NUT_CRACKING)
       NussKnacken(x, y);
     else if (element == EL_PEARL_BREAKING)
       BreakingPearl(x, y);
@@ -5266,8 +5266,8 @@ void GameActions()
          (element == EL_EMPTY ||
           element == EL_SAND ||
           element == EL_QUICKSAND_EMPTY ||
-          element == EL_ACID_SPLASHING_LEFT ||
-          element == EL_ACID_SPLASHING_RIGHT))
+          element == EL_ACID_SPLASH_LEFT ||
+          element == EL_ACID_SPLASH_RIGHT))
       {
        if ((IN_LEV_FIELD(x, y-1) && Feld[x][y-1] == EL_AMOEBA_WET) ||
            (IN_LEV_FIELD(x-1, y) && Feld[x-1][y] == EL_AMOEBA_WET) ||
@@ -5366,9 +5366,9 @@ void GameActions()
 
     if (SHIELD_ON(player))
     {
-      if (player->shield_active_time_left)
+      if (player->shield_deadly_time_left)
        PlaySoundLevel(player->jx, player->jy, SND_SHIELD_DEADLY_ACTIVE);
-      else if (player->shield_passive_time_left)
+      else if (player->shield_normal_time_left)
        PlaySoundLevel(player->jx, player->jy, SND_SHIELD_NORMAL_ACTIVE);
     }
   }
@@ -5384,10 +5384,10 @@ void GameActions()
 
       if (SHIELD_ON(player))
       {
-       player->shield_passive_time_left--;
+       player->shield_normal_time_left--;
 
-       if (player->shield_active_time_left > 0)
-         player->shield_active_time_left--;
+       if (player->shield_deadly_time_left > 0)
+         player->shield_deadly_time_left--;
       }
     }
 
@@ -5737,7 +5737,7 @@ boolean MoveFigure(struct PlayerInfo *player, int dx, int dy)
     else if (old_jx == jx && old_jy != jy)
       player->MovDir = (old_jy < jy ? MV_DOWN : MV_UP);
 
-    DrawNewLevelField(jx, jy); /* for "ErdreichAnbroeckeln()" */
+    DrawNewLevelField(jx, jy); /* for "DrawCrumbledSand()" */
 
     player->last_move_dir = player->MovDir;
     player->is_moving = TRUE;
@@ -5907,7 +5907,7 @@ void TestIfGoodThingHitsBadThing(int good_x, int good_y, int good_move_dir)
     {
       struct PlayerInfo *player = PLAYERINFO(good_x, good_y);
 
-      if (player->shield_active_time_left > 0)
+      if (player->shield_deadly_time_left > 0)
        Bang(kill_x, kill_y);
       else if (!PLAYER_PROTECTED(good_x, good_y))
        KillHero(player);
@@ -6004,7 +6004,7 @@ void TestIfBadThingHitsGoodThing(int bad_x, int bad_y, int bad_move_dir)
        ;
 #endif
 
-      if (player->shield_active_time_left > 0)
+      if (player->shield_deadly_time_left > 0)
        Bang(bad_x, bad_y);
       else if (!PLAYER_PROTECTED(kill_x, kill_y))
        KillHero(player);
@@ -6089,8 +6089,8 @@ void KillHero(struct PlayerInfo *player)
     Feld[jx][jy] = EL_EMPTY;
 
   /* deactivate shield (else Bang()/Explode() would not work right) */
-  player->shield_passive_time_left = 0;
-  player->shield_active_time_left = 0;
+  player->shield_normal_time_left = 0;
+  player->shield_deadly_time_left = 0;
 
   Bang(jx, jy);
   BuryHero(player);
@@ -6252,14 +6252,14 @@ int DigField(struct PlayerInfo *player,
 
     case EL_SHIELD_NORMAL:
       RemoveField(x, y);
-      player->shield_passive_time_left += 10;
+      player->shield_normal_time_left += 10;
       PlaySoundLevel(x, y, SND_SHIELD_NORMAL_COLLECTING);
       break;
 
     case EL_SHIELD_DEADLY:
       RemoveField(x, y);
-      player->shield_passive_time_left += 10;
-      player->shield_active_time_left += 10;
+      player->shield_normal_time_left += 10;
+      player->shield_deadly_time_left += 10;
       PlaySoundLevel(x, y, SND_SHIELD_DEADLY_COLLECTING);
       break;
 
index 55cfd3a208824003d38d39726655a64003ee3774..bd79cc787135c9e05e7e9692620ffc1fd31a8822 100644 (file)
 
 static char *image_filename[NUM_PICTURES] =
 {
+#if 0
+  "RocksScreen.pcx",
+  "RocksDoor.pcx",
+  "RocksToons.pcx",
+  "RocksFontBig.pcx",
+  "RocksFontSmall.pcx",
+  "RocksFontMedium.pcx",
+  "RocksFontEM.pcx"
+#else
   "RocksScreen.pcx",
   "RocksElements.pcx",
   "RocksDoor.pcx",
@@ -43,6 +52,7 @@ static char *image_filename[NUM_PICTURES] =
   "RocksFontSmall.pcx",
   "RocksFontMedium.pcx",
   "RocksFontEM.pcx"
+#endif
 }; 
 
 static void InitSetup(void);
@@ -214,6 +224,8 @@ static void InitTileClipmasks()
   unsigned long clip_gc_valuemask;
 
 #if defined(TARGET_X11_NATIVE)
+
+#if 0
   GC copy_clipmask_gc;
 
   static struct
@@ -267,6 +279,8 @@ static void InitTileClipmasks()
     { GFX2_SHIELD_ACTIVE, 3 },
     { -1, 0 }
   };
+#endif
+
 #endif /* TARGET_X11_NATIVE */
 #endif /* TARGET_X11 */
 
@@ -301,6 +315,7 @@ static void InitTileClipmasks()
 
 #if defined(TARGET_X11_NATIVE)
 
+#if 0
   /* create graphic context structures needed for clipping */
   clip_gc_values.graphics_exposures = False;
   clip_gc_valuemask = GCGraphicsExposures;
@@ -332,6 +347,7 @@ static void InitTileClipmasks()
   }
 
   XFreeGC(display, copy_clipmask_gc);
+#endif
 
 #endif /* TARGET_X11_NATIVE */
 #endif /* TARGET_X11 */
@@ -1066,6 +1082,7 @@ static void InitGraphicInfo()
 
   image_files = getCurrentImageList();
 
+#if 0
   for(i=0; i<MAX_GRAPHICS; i++)
   {
     /* always start with reliable default values */
@@ -1076,6 +1093,7 @@ static void InitGraphicInfo()
     getGraphicSource(i, &graphic_info[i].bitmap,
                     &graphic_info[i].src_x, &graphic_info[i].src_y);
   }
+#endif
 
   for(i=0; i<NUM_IMAGE_FILES; i++)
   {
index 23660fbd5f98dc942c7d28d4fb1bb8dd66252991..18547e320a43309b986593bf3f49da729555702b 100644 (file)
@@ -203,10 +203,17 @@ struct ConfigInfo image_config[] =
   { "bd_rock.falling.xpos",                    "4"                     },
   { "bd_rock.falling.ypos",                    "2"                     },
   { "bd_rock.falling.frames",                  "1"                     },
-  { "bd_rock.pushing",                         "RocksMore.pcx"         },
-  { "bd_rock.pushing.xpos",                    "4"                     },
-  { "bd_rock.pushing.ypos",                    "2"                     },
-  { "bd_rock.pushing.frames",                  "4"                     },
+  { "bd_rock.moving_left",                     "RocksMore.pcx"         },
+  { "bd_rock.moving_left.xpos",                        "4"                     },
+  { "bd_rock.moving_left.ypos",                        "2"                     },
+  { "bd_rock.moving_left.frames",              "4"                     },
+  { "bd_rock.moving_left.delay",               "2"                     },
+  { "bd_rock.moving_right",                    "RocksMore.pcx"         },
+  { "bd_rock.moving_right.xpos",               "4"                     },
+  { "bd_rock.moving_right.ypos",               "2"                     },
+  { "bd_rock.moving_right.frames",             "4"                     },
+  { "bd_rock.moving_right.delay",              "2"                     },
+  { "bd_rock.moving_right.mode_reverse",       "1"                     },
 
   { "bd_diamond",                              "RocksElements.pcx"     },
   { "bd_diamond.xpos",                         "0"                     },
@@ -346,10 +353,17 @@ struct ConfigInfo image_config[] =
   { "sp_zonk.falling.xpos",                    "1"                     },
   { "sp_zonk.falling.ypos",                    "0"                     },
   { "sp_zonk.falling.frames",                  "1"                     },
-  { "sp_zonk.pushing",                         "RocksSP.pcx"           },
-  { "sp_zonk.pushing.xpos",                    "0"                     },
-  { "sp_zonk.pushing.ypos",                    "6"                     },
-  { "sp_zonk.pushing.frames",                  "4"                     },
+  { "sp_zonk.moving_left",                     "RocksSP.pcx"           },
+  { "sp_zonk.moving_left.xpos",                        "0"                     },
+  { "sp_zonk.moving_left.ypos",                        "6"                     },
+  { "sp_zonk.moving_left.frames",              "4"                     },
+  { "sp_zonk.moving_left.delay",               "2"                     },
+  { "sp_zonk.moving_right",                    "RocksSP.pcx"           },
+  { "sp_zonk.moving_right.xpos",               "0"                     },
+  { "sp_zonk.moving_right.ypos",               "6"                     },
+  { "sp_zonk.moving_right.frames",             "4"                     },
+  { "sp_zonk.moving_right.delay",              "2"                     },
+  { "sp_zonk.moving_right.mode_reverse",       "1"                     },
 
   { "sp_base",                                 "RocksSP.pcx"           },
   { "sp_base.xpos",                            "2"                     },
@@ -369,11 +383,13 @@ struct ConfigInfo image_config[] =
   { "sp_murphy_left.moving.ypos",              "0"                     },
   { "sp_murphy_left.moving.frames",            "3"                     },
   { "sp_murphy_left.moving.mode_pingpong",     "1"                     },
+  { "sp_murphy_left.moving.delay",             "2"                     },
   { "sp_murphy_left.digging",                  "RocksSP.pcx"           },
   { "sp_murphy_left.digging.xpos",             "8"                     },
   { "sp_murphy_left.digging.ypos",             "0"                     },
   { "sp_murphy_left.digging.frames",           "3"                     },
   { "sp_murphy_left.digging.mode_pingpong",    "1"                     },
+  { "sp_murphy_left.digging.delay",            "2"                     },
   { "sp_murphy_left.pushing",                  "RocksSP.pcx"           },
   { "sp_murphy_left.pushing.xpos",             "11"                    },
   { "sp_murphy_left.pushing.ypos",             "1"                     },
@@ -392,11 +408,13 @@ struct ConfigInfo image_config[] =
   { "sp_murphy_right.moving.ypos",             "0"                     },
   { "sp_murphy_right.moving.frames",           "3"                     },
   { "sp_murphy_right.moving.mode_pingpong",    "1"                     },
+  { "sp_murphy_right.moving.delay",            "2"                     },
   { "sp_murphy_right.digging",                 "RocksSP.pcx"           },
   { "sp_murphy_right.digging.xpos",            "11"                    },
   { "sp_murphy_right.digging.ypos",            "0"                     },
   { "sp_murphy_right.digging.frames",          "3"                     },
   { "sp_murphy_right.digging.mode_pingpong",   "1"                     },
+  { "sp_murphy_right.digging.delay",           "2"                     },
   { "sp_murphy_right.pushing",                 "RocksSP.pcx"           },
   { "sp_murphy_right.pushing.xpos",            "10"                    },
   { "sp_murphy_right.pushing.ypos",            "1"                     },
@@ -706,10 +724,17 @@ struct ConfigInfo image_config[] =
   { "rock.falling.xpos",                       "12"                    },
   { "rock.falling.ypos",                       "0"                     },
   { "rock.falling.frames",                     "1"                     },
-  { "rock.pushing",                            "RocksElements.pcx"     },
-  { "rock.pushing.xpos",                       "12"                    },
-  { "rock.pushing.ypos",                       "0"                     },
-  { "rock.pushing.frames",                     "4"                     },
+  { "rock.moving_left",                                "RocksElements.pcx"     },
+  { "rock.moving_left.xpos",                   "12"                    },
+  { "rock.moving_left.ypos",                   "0"                     },
+  { "rock.moving_left.frames",                 "4"                     },
+  { "rock.moving_left.delay",                  "2"                     },
+  { "rock.moving_right",                       "RocksElements.pcx"     },
+  { "rock.moving_right.xpos",                  "12"                    },
+  { "rock.moving_right.ypos",                  "0"                     },
+  { "rock.moving_right.frames",                        "4"                     },
+  { "rock.moving_right.delay",                 "2"                     },
+  { "rock.moving_right.mode_reverse",          "1"                     },
 
   { "emerald",                                 "RocksElements.pcx"     },
   { "emerald.xpos",                            "8"                     },
@@ -910,16 +935,16 @@ struct ConfigInfo image_config[] =
   { "acid.frames",                             "4"                     },
   { "acid.delay",                              "10"                    },
 
-  { "acid.splashing_left",                     "RocksHeroes.pcx"       },
-  { "acid.splashing_left.xpos",                        "8"                     },
-  { "acid.splashing_left.ypos",                        "10"                    },
-  { "acid.splashing_left.frames",              "4"                     },
-  { "acid.splashing_left.delay",               "2"                     },
-  { "acid.splashing_right",                    "RocksHeroes.pcx"       },
-  { "acid.splashing_right.xpos",               "12"                    },
-  { "acid.splashing_right.ypos",               "10"                    },
-  { "acid.splashing_right.frames",             "4"                     },
-  { "acid.splashing_right.delay",              "2"                     },
+  { "acid_splash_left",                                "RocksHeroes.pcx"       },
+  { "acid_splash_left.xpos",                   "8"                     },
+  { "acid_splash_left.ypos",                   "10"                    },
+  { "acid_splash_left.frames",                 "4"                     },
+  { "acid_splash_left.delay",                  "2"                     },
+  { "acid_splash_right",                       "RocksHeroes.pcx"       },
+  { "acid_splash_right.xpos",                  "12"                    },
+  { "acid_splash_right.ypos",                  "10"                    },
+  { "acid_splash_right.frames",                        "4"                     },
+  { "acid_splash_right.delay",                 "2"                     },
 
   { "amoeba_drop",                             "RocksElements.pcx"     },
   { "amoeba_drop.xpos",                                "5"                     },
@@ -1446,12 +1471,14 @@ struct ConfigInfo image_config[] =
   { "shield_normal.active.xpos",               "1"                     },
   { "shield_normal.active.ypos",               "13"                    },
   { "shield_normal.active.frames",             "3"                     },
+  { "shield_normal.active.delay",              "8"                     },
   { "shield_normal.active.mode_pingpong",      "1"                     },
 
   { "shield_deadly.active",                    "RocksHeroes.pcx"       },
   { "shield_deadly.active.xpos",               "5"                     },
   { "shield_deadly.active.ypos",               "13"                    },
   { "shield_deadly.active.frames",             "3"                     },
+  { "shield_deadly.active.delay",              "8"                     },
   { "shield_deadly.active.mode_pingpong",      "1"                     },
 
   { "switchgate_closed",                       "RocksDC.pcx"           },
@@ -2581,6 +2608,23 @@ struct ConfigInfo image_config[] =
   { "arrow_red_down.ypos",                     "1"                     },
   { "arrow_red_down.frames",                   "1"                     },
 
+  { "ball_red",                                        "RocksElements.pcx"     },
+  { "ball_red.xpos",                           "12"                    },
+  { "ball_red.ypos",                           "8"                     },
+  { "ball_red.frames",                         "1"                     },
+  { "ball_blue",                               "RocksElements.pcx"     },
+  { "ball_blue.xpos",                          "13"                    },
+  { "ball_blue.ypos",                          "8"                     },
+  { "ball_blue.frames",                                "1"                     },
+  { "ball_yellow",                             "RocksElements.pcx"     },
+  { "ball_yellow.xpos",                                "14"                    },
+  { "ball_yellow.ypos",                                "8"                     },
+  { "ball_yellow.frames",                      "1"                     },
+  { "ball_gray",                               "RocksElements.pcx"     },
+  { "ball_gray.xpos",                          "15"                    },
+  { "ball_gray.ypos",                          "8"                     },
+  { "ball_gray.frames",                                "1"                     },
+
   { "scrollbar_blue",                          "RocksMore.pcx"         },
   { "scrollbar_blue.xpos",                     "0"                     },
   { "scrollbar_blue.ypos",                     "2"                     },
index 458c7e188ffbceec80a2506a81265b56a2f2fa80..a0f3ad8034a14971724d366844b7ca41afe7e83f 100644 (file)
 #define TAPE_IS_STOPPED(x)     (!(x).recording && !(x).playing)
 
 #define PLAYERINFO(x,y)                (&stored_player[StorePlayer[x][y]-EL_PLAYER1])
-#define SHIELD_ON(p)           ((p)->shield_passive_time_left > 0)
+#define SHIELD_ON(p)           ((p)->shield_normal_time_left > 0)
 #define PROTECTED_FIELD(x,y)   (IS_TUBE(Feld[x][y]))
 #define PLAYER_PROTECTED(x,y)  (SHIELD_ON(PLAYERINFO(x, y)) ||         \
                                 PROTECTED_FIELD(x, y))
 
+#define PLAYER_NR_GFX(g,i)     ((g) + i * (IMG_PLAYER2 - IMG_PLAYER1))
+
+
+#if 0
+
+/* Bitmaps with graphic file */
+#define PIX_BACK               0
+#define PIX_DOOR               1
+#define PIX_TOONS              2
+#define PIX_FONT_BIG           3
+#define PIX_FONT_SMALL         4
+#define PIX_FONT_MEDIUM                5
+#define PIX_FONT_EM            6
+/* Bitmaps without graphic file */
+#define PIX_DB_DOOR            7
+#define PIX_DB_FIELD           8
+
+#define NUM_PICTURES           7
+#define NUM_BITMAPS            9
+
+#else
+
 /* Bitmaps with graphic file */
 #define PIX_BACK               0
 #define PIX_ELEMENTS           1
 #define NUM_PICTURES           12
 #define NUM_BITMAPS            14
 
+#endif
+
 /* boundaries of arrays etc. */
 #define MAX_LEVEL_NAME_LEN     32
 #define MAX_LEVEL_AUTHOR_LEN   32
 
 #define EL_BLOCKED                     (EL_FIRST_RUNTIME_UNREAL + 0)
 #define EL_EXPLOSION                   (EL_FIRST_RUNTIME_UNREAL + 1)
-#define EL_CRACKINGNUT                 (EL_FIRST_RUNTIME_UNREAL + 2)
-#define EL_ACID_SPLASHING_LEFT         (EL_FIRST_RUNTIME_UNREAL + 3)
-#define EL_ACID_SPLASHING_RIGHT                (EL_FIRST_RUNTIME_UNREAL + 4)
+#define EL_NUT_CRACKING                        (EL_FIRST_RUNTIME_UNREAL + 2)
+#define EL_ACID_SPLASH_LEFT            (EL_FIRST_RUNTIME_UNREAL + 3)
+#define EL_ACID_SPLASH_RIGHT           (EL_FIRST_RUNTIME_UNREAL + 4)
 #define EL_AMOEBA_CREATING             (EL_FIRST_RUNTIME_UNREAL + 5)
 #define EL_AMOEBA_SHRINKING            (EL_FIRST_RUNTIME_UNREAL + 6)
 #define EL_WALL_GROWING_ACTIVE         (EL_FIRST_RUNTIME_UNREAL + 7)
@@ -1471,8 +1495,8 @@ struct PlayerInfo
   int key[4];
   int dynamite;
   int dynabomb_count, dynabomb_size, dynabombs_left, dynabomb_xl;
-  int shield_passive_time_left;
-  int shield_active_time_left;
+  int shield_normal_time_left;
+  int shield_deadly_time_left;
 };
 
 struct LevelInfo
index 8499f619bda35cd748456f3241a29c4c82f5e5e5..386094d46615c2a095d83a2b52e85b16c0eb3c78 100644 (file)
@@ -80,11 +80,11 @@ static void drawCursorExt(int pos, int color, int graphic)
   graphic = cursor_array[pos];
 
   if (color == FC_RED)
-    graphic = (graphic == GFX_ARROW_BLUE_LEFT  ? GFX_ARROW_RED_LEFT  :
-              graphic == GFX_ARROW_BLUE_RIGHT ? GFX_ARROW_RED_RIGHT :
-              GFX_KUGEL_ROT);
+    graphic = (graphic == IMG_ARROW_BLUE_LEFT  ? IMG_ARROW_RED_LEFT  :
+              graphic == IMG_ARROW_BLUE_RIGHT ? IMG_ARROW_RED_RIGHT :
+              IMG_BALL_RED);
 
-  DrawGraphic(0, MENU_SCREEN_START_YPOS + pos, graphic);
+  DrawNewGraphic(0, MENU_SCREEN_START_YPOS + pos, graphic, 0);
 }
 
 static void initCursor(int pos, int graphic)
@@ -206,10 +206,10 @@ void DrawMainMenu()
   }
 
   for(i=0; i<8; i++)
-    initCursor(i, (i == 1 || i == 6 ? GFX_ARROW_BLUE_RIGHT : GFX_KUGEL_BLAU));
+    initCursor(i, (i == 1 || i == 6 ? IMG_ARROW_BLUE_RIGHT : IMG_BALL_BLUE));
 
-  DrawGraphic(10, 3, GFX_ARROW_BLUE_LEFT);
-  DrawGraphic(14, 3, GFX_ARROW_BLUE_RIGHT);
+  DrawNewGraphic(10, 3, IMG_ARROW_BLUE_LEFT, 0);
+  DrawNewGraphic(14, 3, IMG_ARROW_BLUE_RIGHT, 0);
 
   DrawText(SX + 56, SY + 326, "A Game by Artsoft Entertainment",
           FS_SMALL, FC_RED);
@@ -674,7 +674,7 @@ void DrawHelpScreenElAction(int start)
     }
     j++;
 
-    DrawGraphicExt(drawto, xstart, ystart+(i-start)*ystep, graphic+frame);
+    DrawOldGraphicExt(drawto, xstart, ystart+(i-start)*ystep, graphic+frame);
     i++;
   }
 
@@ -892,7 +892,7 @@ void HandleTypeName(int newxpos, Key key)
   {
     xpos = newxpos;
     DrawText(SX + 6*32, SY + ypos*32, setup.player_name, FS_BIG, FC_YELLOW);
-    DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT);
+    DrawNewGraphic(xpos + 6, ypos, IMG_BALL_RED, 0);
     return;
   }
 
@@ -914,19 +914,19 @@ void HandleTypeName(int newxpos, Key key)
                setup.player_name, FS_BIG, FC_YELLOW);
     DrawTextExt(window, SX + 6*32, SY + ypos*32,
                setup.player_name, FS_BIG, FC_YELLOW);
-    DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT);
+    DrawNewGraphic(xpos + 6, ypos, IMG_BALL_RED, 0);
   }
   else if ((key == KSYM_Delete || key == KSYM_BackSpace) && xpos > 0)
   {
     xpos--;
     setup.player_name[xpos] = 0;
-    DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT);
-    DrawGraphic(xpos + 7, ypos, GFX_LEERRAUM);
+    DrawNewGraphic(xpos + 6, ypos, IMG_BALL_RED, 0);
+    DrawNewGraphic(xpos + 7, ypos, IMG_EMPTY, 0);
   }
   else if (key == KSYM_Return && xpos > 0)
   {
     DrawText(SX + 6*32, SY + ypos*32, setup.player_name, FS_BIG, FC_RED);
-    DrawGraphic(xpos + 6, ypos, GFX_LEERRAUM);
+    DrawNewGraphic(xpos + 6, ypos, IMG_EMPTY, 0);
 
     SaveSetup();
     game_status = MAINMENU;
@@ -1001,18 +1001,18 @@ static void drawChooseTreeList(int first_entry, int num_page_entries,
     DrawText(SX + 32, SY + ypos * 32, buffer, FS_MEDIUM, node->color);
 
     if (node->parent_link)
-      initCursor(i, GFX_ARROW_BLUE_LEFT);
+      initCursor(i, IMG_ARROW_BLUE_LEFT);
     else if (node->level_group)
-      initCursor(i, GFX_ARROW_BLUE_RIGHT);
+      initCursor(i, IMG_ARROW_BLUE_RIGHT);
     else
-      initCursor(i, GFX_KUGEL_BLAU);
+      initCursor(i, IMG_BALL_BLUE);
   }
 
   if (first_entry > 0)
-    DrawGraphic(0, 1, GFX_ARROW_BLUE_UP);
+    DrawNewGraphic(0, 1, IMG_ARROW_BLUE_UP, 0);
 
   if (first_entry + num_page_entries < num_entries)
-    DrawGraphic(0, MAX_MENU_ENTRIES_ON_SCREEN + 1, GFX_ARROW_BLUE_DOWN);
+    DrawNewGraphic(0, MAX_MENU_ENTRIES_ON_SCREEN + 1, IMG_ARROW_BLUE_DOWN, 0);
 }
 
 static void drawChooseTreeInfo(int entry_pos, TreeInfo *ti)
@@ -1708,11 +1708,11 @@ static void DrawSetupScreen_Generic()
     DrawText(SX + 32, SY + ypos * 32, setup_info[i].text, font_size, FC_GREEN);
 
     if (setup_info[i].type & TYPE_ENTER_MENU)
-      initCursor(i, GFX_ARROW_BLUE_RIGHT);
+      initCursor(i, IMG_ARROW_BLUE_RIGHT);
     else if (setup_info[i].type & TYPE_LEAVE_MENU)
-      initCursor(i, GFX_ARROW_BLUE_LEFT);
+      initCursor(i, IMG_ARROW_BLUE_LEFT);
     else if (setup_info[i].type & ~TYPE_SKIP_ENTRY)
-      initCursor(i, GFX_KUGEL_BLAU);
+      initCursor(i, IMG_BALL_BLUE);
 
     if (setup_info[i].type & TYPE_VALUE)
       drawSetupValue(i);
@@ -1820,13 +1820,13 @@ void DrawSetupScreen_Input()
   ClearWindow();
   DrawText(SX+16, SY+16, "Setup Input", FS_BIG, FC_YELLOW);
 
-  initCursor(0, GFX_KUGEL_BLAU);
-  initCursor(1, GFX_KUGEL_BLAU);
-  initCursor(2, GFX_ARROW_BLUE_RIGHT);
-  initCursor(13, GFX_ARROW_BLUE_LEFT);
+  initCursor(0, IMG_BALL_BLUE);
+  initCursor(1, IMG_BALL_BLUE);
+  initCursor(2, IMG_ARROW_BLUE_RIGHT);
+  initCursor(13, IMG_ARROW_BLUE_LEFT);
 
-  DrawGraphic(10, MENU_SCREEN_START_YPOS, GFX_ARROW_BLUE_LEFT);
-  DrawGraphic(12, MENU_SCREEN_START_YPOS, GFX_ARROW_BLUE_RIGHT);
+  DrawNewGraphic(10, MENU_SCREEN_START_YPOS, IMG_ARROW_BLUE_LEFT, 0);
+  DrawNewGraphic(12, MENU_SCREEN_START_YPOS, IMG_ARROW_BLUE_RIGHT, 0);
 
   DrawText(SX+32, SY+2*32, "Player:", FS_BIG, FC_GREEN);
   DrawText(SX+32, SY+3*32, "Device:", FS_BIG, FC_GREEN);
@@ -1892,7 +1892,7 @@ static void drawPlayerSetupInputInfo(int player_nr)
   custom_key = setup.input[player_nr].key;
 
   DrawText(SX+11*32, SY+2*32, int2str(player_nr + 1, 1), FS_BIG, FC_RED);
-  DrawGraphic(8, 2, GFX_SPIELER1 + player_nr);
+  DrawNewGraphic(8, 2, PLAYER_NR_GFX(IMG_PLAYER1, player_nr), 0);
 
   if (setup.input[player_nr].use_joystick)
   {
@@ -1910,10 +1910,10 @@ static void drawPlayerSetupInputInfo(int player_nr)
   }
 
   DrawText(SX+32, SY+5*32, "Actual Settings:", FS_BIG, FC_GREEN);
-  DrawGraphic(1, 6, GFX_ARROW_BLUE_LEFT);
-  DrawGraphic(1, 7, GFX_ARROW_BLUE_RIGHT);
-  DrawGraphic(1, 8, GFX_ARROW_BLUE_UP);
-  DrawGraphic(1, 9, GFX_ARROW_BLUE_DOWN);
+  DrawNewGraphic(1, 6, IMG_ARROW_BLUE_LEFT, 0);
+  DrawNewGraphic(1, 7, IMG_ARROW_BLUE_RIGHT, 0);
+  DrawNewGraphic(1, 8, IMG_ARROW_BLUE_UP, 0);
+  DrawNewGraphic(1, 9, IMG_ARROW_BLUE_DOWN, 0);
   DrawText(SX+2*32, SY+6*32, ":", FS_BIG, FC_BLUE);
   DrawText(SX+2*32, SY+7*32, ":", FS_BIG, FC_BLUE);
   DrawText(SX+2*32, SY+8*32, ":", FS_BIG, FC_BLUE);
@@ -2215,7 +2215,7 @@ static boolean CalibrateJoystickMain(int player_nr)
     for(x=0; x<3; x++)
     {
       check[x][y] = FALSE;
-      DrawGraphic(xpos + x - 1, ypos + y - 1, GFX_KUGEL_BLAU);
+      DrawNewGraphic(xpos + x - 1, ypos + y - 1, IMG_BALL_BLUE, 0);
     }
   }
 
@@ -2238,7 +2238,7 @@ static boolean CalibrateJoystickMain(int player_nr)
   new_joystick_xmiddle = joy_x;
   new_joystick_ymiddle = joy_y;
 
-  DrawGraphic(xpos + last_x, ypos + last_y, GFX_KUGEL_ROT);
+  DrawNewGraphic(xpos + last_x, ypos + last_y, IMG_BALL_RED, 0);
   BackToFront();
 
   while(Joystick(player_nr) & JOY_BUTTON);     /* wait for released button */
@@ -2308,8 +2308,8 @@ static boolean CalibrateJoystickMain(int player_nr)
 
     if (x != last_x || y != last_y)
     {
-      DrawGraphic(xpos + last_x, ypos + last_y, GFX_KUGEL_GELB);
-      DrawGraphic(xpos + x,      ypos + y,      GFX_KUGEL_ROT);
+      DrawNewGraphic(xpos + last_x, ypos + last_y, IMG_BALL_YELLOW, 0);
+      DrawNewGraphic(xpos + x,      ypos + y,      IMG_BALL_RED, 0);
 
       last_x = x;
       last_y = y;
index 63324e0a698788483c450aea5d0f51e56e5d42f2..eeebba4e517446d3eddc9e60a20f5a0bcb8e1807 100644 (file)
@@ -95,7 +95,7 @@ void RedrawPlayfield(boolean force_redraw, int x, int y, int width, int height)
       for(xx=BX1; xx<=BX2; xx++)
        for(yy=BY1; yy<=BY2; yy++)
          if (xx >= x1 && xx <= x2 && yy >= y1 && yy <= y2)
-           DrawScreenField(xx, yy);
+           DrawNewScreenField(xx, yy);
       DrawAllPlayers();
 
       if (setup.direct_draw)
@@ -434,6 +434,7 @@ void DrawPlayerField(int x, int y)
   DrawPlayer(PLAYERINFO(x, y));
 }
 
+#if 0
 void DrawPlayer(struct PlayerInfo *player)
 {
   int jx = player->jx, jy = player->jy;
@@ -594,7 +595,7 @@ void DrawPlayer(struct PlayerInfo *player)
 
   if (SHIELD_ON(player))
   {
-    int graphic = (player->shield_active_time_left ? GFX2_SHIELD_ACTIVE :
+    int graphic = (player->shield_deadly_time_left ? GFX2_SHIELD_ACTIVE :
                   GFX2_SHIELD_PASSIVE);
 
     DrawGraphicAnimationShiftedThruMask(sx, sy, sxx, syy, graphic,
@@ -686,6 +687,279 @@ void DrawPlayer(struct PlayerInfo *player)
   MarkTileDirty(sx,sy);
 }
 
+#else
+
+void DrawPlayer(struct PlayerInfo *player)
+{
+  int jx = player->jx, jy = player->jy;
+  int last_jx = player->last_jx, last_jy = player->last_jy;
+  int next_jx = jx + (jx - last_jx), next_jy = jy + (jy - last_jy);
+  int sx = SCREENX(jx), sy = SCREENY(jy);
+  int sxx = 0, syy = 0;
+  int element = Feld[jx][jy], last_element = Feld[last_jx][last_jy];
+  int graphic;
+  int frame = 0;
+  boolean player_is_moving = (last_jx != jx || last_jy != jy ? TRUE : FALSE);
+
+  if (!player->active || !IN_SCR_FIELD(SCREENX(last_jx), SCREENY(last_jy)))
+    return;
+
+#if DEBUG
+  if (!IN_LEV_FIELD(jx,jy))
+  {
+    printf("DrawPlayerField(): x = %d, y = %d\n",jx,jy);
+    printf("DrawPlayerField(): sx = %d, sy = %d\n",sx,sy);
+    printf("DrawPlayerField(): This should never happen!\n");
+    return;
+  }
+#endif
+
+  if (element == EL_EXPLOSION)
+    return;
+
+  /* draw things in the field the player is leaving, if needed */
+
+  if (player_is_moving)
+  {
+    if (Store[last_jx][last_jy] && IS_DRAWABLE(last_element))
+    {
+      DrawNewLevelElement(last_jx, last_jy, Store[last_jx][last_jy]);
+
+      if (last_element == EL_DYNAMITE_ACTIVE)
+       DrawDynamite(last_jx, last_jy);
+      else
+       DrawNewLevelFieldThruMask(last_jx, last_jy);
+    }
+    else if (last_element == EL_DYNAMITE_ACTIVE)
+      DrawDynamite(last_jx, last_jy);
+    else
+      DrawNewLevelField(last_jx, last_jy);
+
+    if (player->Pushing && IN_SCR_FIELD(SCREENX(next_jx), SCREENY(next_jy)))
+    {
+      if (player->GfxPos)
+      {
+       if (Feld[next_jx][next_jy] == EL_SOKOBAN_FIELD_FULL)
+         DrawNewLevelElement(next_jx, next_jy, EL_SOKOBAN_FIELD_EMPTY);
+       else
+         DrawNewLevelElement(next_jx, next_jy, EL_EMPTY);
+      }
+      else
+       DrawNewLevelField(next_jx, next_jy);
+    }
+  }
+
+  if (!IN_SCR_FIELD(sx, sy))
+    return;
+
+  if (setup.direct_draw)
+    SetDrawtoField(DRAW_BUFFERED);
+
+  /* draw things behind the player, if needed */
+
+  if (Store[jx][jy])
+    DrawNewLevelElement(jx, jy, Store[jx][jy]);
+  else if (!IS_ACTIVE_BOMB(element))
+    DrawNewLevelField(jx, jy);
+  else
+    DrawNewLevelElement(jx, jy, EL_EMPTY);
+
+  /* draw player himself */
+
+  if (game.emulation == EMU_SUPAPLEX)
+  {
+    static int last_dir = MV_LEFT;
+    int action = (player->programmed_action ? player->programmed_action :
+                 player->action);
+    boolean action_moving =
+      (player_is_moving ||
+       ((action & (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN)) &&
+       !(action & ~(MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN))));
+
+    graphic = IMG_SP_MURPHY;
+
+    if (player->Pushing)
+    {
+      if (player->MovDir == MV_LEFT)
+       graphic = IMG_SP_MURPHY_LEFT_PUSHING;
+      else if (player->MovDir == MV_RIGHT)
+       graphic = IMG_SP_MURPHY_RIGHT_PUSHING;
+      else if (player->MovDir & (MV_UP | MV_DOWN) && last_dir == MV_LEFT)
+       graphic = IMG_SP_MURPHY_LEFT_PUSHING;
+      else if (player->MovDir & (MV_UP | MV_DOWN) && last_dir == MV_RIGHT)
+       graphic = IMG_SP_MURPHY_RIGHT_PUSHING;
+    }
+    else if (player->snapped)
+    {
+      if (player->MovDir == MV_LEFT)
+       graphic = IMG_SP_MURPHY_LEFT_SNAPPING;
+      else if (player->MovDir == MV_RIGHT)
+       graphic = IMG_SP_MURPHY_RIGHT_SNAPPING;
+      else if (player->MovDir == MV_UP)
+       graphic = IMG_SP_MURPHY_UP_SNAPPING;
+      else if (player->MovDir == MV_DOWN)
+       graphic = IMG_SP_MURPHY_DOWN_SNAPPING;
+    }
+    else if (action_moving)
+    {
+      if (player->MovDir == MV_LEFT)
+       graphic = IMG_SP_MURPHY_LEFT_MOVING;
+      else if (player->MovDir == MV_RIGHT)
+       graphic = IMG_SP_MURPHY_RIGHT_MOVING;
+      else if (player->MovDir & (MV_UP | MV_DOWN) && last_dir == MV_LEFT)
+       graphic = IMG_SP_MURPHY_LEFT_MOVING;
+      else if (player->MovDir & (MV_UP | MV_DOWN) && last_dir == MV_RIGHT)
+       graphic = IMG_SP_MURPHY_RIGHT_MOVING;
+      else
+       graphic = IMG_SP_MURPHY_LEFT_MOVING;
+
+      frame = getNewGraphicAnimationFrame(graphic, -1);
+    }
+
+    if (player->MovDir == MV_LEFT || player->MovDir == MV_RIGHT)
+      last_dir = player->MovDir;
+  }
+  else
+  {
+    if (player->MovDir == MV_LEFT)
+      graphic = (player->Pushing ? IMG_PLAYER1_LEFT_PUSHING :
+                IMG_PLAYER1_LEFT_MOVING);
+    else if (player->MovDir == MV_RIGHT)
+      graphic = (player->Pushing ? IMG_PLAYER1_RIGHT_PUSHING :
+                IMG_PLAYER1_RIGHT_MOVING);
+    else if (player->MovDir == MV_UP)
+      graphic = (player->Pushing ? IMG_PLAYER1_UP_PUSHING :
+                IMG_PLAYER1_UP_MOVING);
+    else       /* MV_DOWN || MV_NO_MOVING */
+      graphic = (player->Pushing ? IMG_PLAYER1_DOWN_PUSHING :
+                IMG_PLAYER1_DOWN_MOVING);
+
+    graphic = PLAYER_NR_GFX(graphic, player->index_nr);
+
+    frame = player->Frame;
+  }
+
+  if (player->GfxPos)
+  {
+    if (player->MovDir == MV_LEFT || player->MovDir == MV_RIGHT)
+      sxx = player->GfxPos;
+    else
+      syy = player->GfxPos;
+  }
+
+  if (!setup.soft_scrolling && ScreenMovPos)
+    sxx = syy = 0;
+
+  DrawNewGraphicShiftedThruMask(sx, sy, sxx, syy, graphic, frame, NO_CUTTING);
+
+  if (SHIELD_ON(player))
+  {
+    int graphic = (player->shield_deadly_time_left ? IMG_SHIELD_DEADLY_ACTIVE :
+                  IMG_SHIELD_NORMAL_ACTIVE);
+    int frame = getNewGraphicAnimationFrame(graphic, -1);
+
+    DrawNewGraphicShiftedThruMask(sx, sy, sxx, syy, graphic, frame, NO_CUTTING);
+  }
+
+  if (player->Pushing && player->GfxPos)
+  {
+    int px = SCREENX(next_jx), py = SCREENY(next_jy);
+
+    if (element == EL_SOKOBAN_FIELD_EMPTY ||
+       Feld[next_jx][next_jy] == EL_SOKOBAN_FIELD_FULL)
+      DrawNewGraphicShiftedThruMask(px, py, sxx, syy, GFX_SOKOBAN_OBJEKT, 0,
+                                NO_CUTTING);
+    else
+    {
+      int element = Feld[next_jx][next_jy];
+      int graphic = el2img(element);
+      int frame = 0;
+
+      if ((element == EL_ROCK ||
+          element == EL_SP_ZONK ||
+          element == EL_BD_ROCK) && sxx)
+      {
+       graphic = el_dir_act2img(element, player->MovDir, GFX_ACTION_PUSHING);
+       frame = getNewGraphicAnimationFrame(graphic, player->GfxPos);
+
+       /* !!! FIX !!! */
+       if (player->MovDir == MV_LEFT)
+         frame = 3 - frame;
+
+#if 0
+       frame = (player->GfxPos / (TILEX / 4));
+
+       if (player->MovDir == MV_RIGHT)
+         frame = (frame + 4) % 4;
+#endif
+      }
+
+      DrawNewGraphicShifted(px, py, sxx, syy, graphic, frame,
+                           NO_CUTTING, NO_MASKING);
+    }
+  }
+
+  /* draw things in front of player (active dynamite or dynabombs) */
+
+  if (IS_ACTIVE_BOMB(element))
+  {
+    graphic = el2img(element);
+
+#if 0
+    if (element == EL_DYNAMITE_ACTIVE)
+    {
+      if ((frame = (96 - MovDelay[jx][jy]) / 12) > 6)
+       frame = 6;
+    }
+    else
+    {
+      if ((frame = ((96 - MovDelay[jx][jy]) / 6) % 8) > 3)
+       frame = 7 - frame;
+    }
+#else
+    frame = getNewGraphicAnimationFrame(graphic, 96 - MovDelay[jx][jy]);
+#endif
+
+    if (game.emulation == EMU_SUPAPLEX)
+      DrawNewGraphic(sx, sy, GFX_SP_DISK_RED, 0);
+    else
+      DrawNewGraphicThruMask(sx, sy, graphic, frame);
+  }
+
+  if (player_is_moving && last_element == EL_EXPLOSION)
+  {
+    int frame = Frame[last_jx][last_jy];
+    int delay = 2;
+
+    if (frame > 2)
+      DrawNewGraphicThruMask(SCREENX(last_jx), SCREENY(last_jy),
+                            GFX_EXPLOSION, ((frame - 1) / delay - 1));
+  }
+
+  /* draw elements that stay over the player */
+  /* handle the field the player is leaving ... */
+  if (player_is_moving && IS_OVER_PLAYER(last_element))
+    DrawNewLevelField(last_jx, last_jy);
+  /* ... and the field the player is entering */
+  if (IS_OVER_PLAYER(element))
+    DrawNewLevelField(jx, jy);
+
+  if (setup.direct_draw)
+  {
+    int dest_x = SX + SCREENX(MIN(jx, last_jx)) * TILEX;
+    int dest_y = SY + SCREENY(MIN(jy, last_jy)) * TILEY;
+    int x_size = TILEX * (1 + ABS(jx - last_jx));
+    int y_size = TILEY * (1 + ABS(jy - last_jy));
+
+    BlitBitmap(drawto_field, window,
+              dest_x, dest_y, x_size, y_size, dest_x, dest_y);
+    SetDrawtoField(DRAW_DIRECT);
+  }
+
+  MarkTileDirty(sx,sy);
+}
+#endif
+
 static int getGraphicAnimationPhase(int frames, int delay, int mode)
 {
   int phase;
@@ -749,6 +1023,7 @@ int getNewGraphicAnimationFrame(int graphic, int sync_frame)
   return frame;
 }
 
+#if 0
 void DrawGraphicAnimationExt(int x, int y, int graphic,
                             int frames, int delay, int mode, int mask_mode)
 {
@@ -762,6 +1037,7 @@ void DrawGraphicAnimationExt(int x, int y, int graphic,
       DrawGraphic(SCREENX(x), SCREENY(y), graphic + phase);
   }
 }
+#endif
 
 void DrawNewGraphicAnimationExt(int x, int y, int graphic, int mask_mode)
 {
@@ -782,22 +1058,26 @@ void DrawNewGraphicAnimationExt(int x, int y, int graphic, int mask_mode)
   }
 }
 
+#if 0
 void DrawGraphicAnimation(int x, int y, int graphic,
                          int frames, int delay, int mode)
 {
   DrawGraphicAnimationExt(x, y, graphic, frames, delay, mode, NO_MASKING);
 }
+#endif
 
 void DrawNewGraphicAnimation(int x, int y, int graphic)
 {
   DrawNewGraphicAnimationExt(x, y, graphic, NO_MASKING);
 }
 
+#if 0
 void DrawGraphicAnimationThruMask(int x, int y, int graphic,
                                  int frames, int delay, int mode)
 {
   DrawGraphicAnimationExt(x, y, graphic, frames, delay, mode, USE_MASKING);
 }
+#endif
 
 static void DrawGraphicAnimationShiftedThruMask(int sx, int sy,
                                                int sxx, int syy,
@@ -810,6 +1090,7 @@ static void DrawGraphicAnimationShiftedThruMask(int sx, int sy,
   DrawGraphicShiftedThruMask(sx, sy, sxx, syy, graphic + phase, NO_CUTTING);
 }
 
+#if 1
 void getGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
 {
   if (graphic >= 0 && graphic_info[graphic].bitmap != NULL)
@@ -868,7 +1149,9 @@ void getGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
     *y = 0;
   }
 }
+#endif
 
+#if 0
 void DrawGraphic(int x, int y, int graphic)
 {
 #if DEBUG
@@ -883,6 +1166,7 @@ void DrawGraphic(int x, int y, int graphic)
   DrawGraphicExt(drawto_field, FX + x * TILEX, FY + y * TILEY, graphic);
   MarkTileDirty(x, y);
 }
+#endif
 
 void DrawNewGraphic(int x, int y, int graphic, int frame)
 {
@@ -900,7 +1184,7 @@ void DrawNewGraphic(int x, int y, int graphic, int frame)
   MarkTileDirty(x, y);
 }
 
-void DrawGraphicExt(DrawBuffer *dst_bitmap, int x, int y, int graphic)
+void DrawOldGraphicExt(DrawBuffer *dst_bitmap, int x, int y, int graphic)
 {
   Bitmap *src_bitmap;
   int src_x, src_y;
@@ -1006,12 +1290,14 @@ void DrawNewGraphicThruMaskExt(DrawBuffer *d, int dest_x, int dest_y,
   BlitBitmapMasked(src_bitmap, d, src_x, src_y, TILEX, TILEY, dest_x, dest_y);
 }
 
+#if 0
 void DrawMiniGraphic(int x, int y, int graphic)
 {
   DrawMiniGraphicExt(drawto,
                     SX + x * MINI_TILEX, SY + y * MINI_TILEY, graphic);
   MarkTileDirty(x / 2, y / 2);
 }
+#endif
 
 void DrawNewMiniGraphic(int x, int y, int graphic)
 {
@@ -1020,6 +1306,7 @@ void DrawNewMiniGraphic(int x, int y, int graphic)
   MarkTileDirty(x / 2, y / 2);
 }
 
+#if 1
 void getMiniGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
 {
   if (graphic >= GFX_START_ROCKSELEMENTS && graphic <= GFX_END_ROCKSELEMENTS)
@@ -1077,7 +1364,9 @@ void getNewMiniGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
   *x = src_x;
   *y = src_y;
 }
+#endif
 
+#if 0
 void DrawMiniGraphicExt(DrawBuffer *d, int x, int y, int graphic)
 {
   Bitmap *bitmap;
@@ -1086,6 +1375,7 @@ void DrawMiniGraphicExt(DrawBuffer *d, int x, int y, int graphic)
   getMiniGraphicSource(graphic, &bitmap, &src_x, &src_y);
   BlitBitmap(bitmap, d, src_x, src_y, MINI_TILEX, MINI_TILEY, x, y);
 }
+#endif
 
 void DrawNewMiniGraphicExt(DrawBuffer *d, int x, int y, int graphic)
 {
@@ -1105,6 +1395,7 @@ void DrawNewMiniGraphicExt(DrawBuffer *d, int x, int y, int graphic)
   BlitBitmap(src_bitmap, d, src_x, src_y, MINI_TILEX, MINI_TILEY, x, y);
 }
 
+#if 0
 void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic,
                        int cut_mode, int mask_mode)
 {
@@ -1231,6 +1522,7 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic,
 
   MarkTileDirty(x,y);
 }
+#endif
 
 void DrawNewGraphicShifted(int x,int y, int dx,int dy, int graphic, int frame,
                        int cut_mode, int mask_mode)
@@ -1317,12 +1609,13 @@ void DrawNewGraphicShifted(int x,int y, int dx,int dy, int graphic, int frame,
   }
 
   src_bitmap = new_graphic_info[graphic].bitmap;
-  drawing_gc = src_bitmap->stored_clip_gc;
   src_x = new_graphic_info[graphic].src_x;
   src_y = new_graphic_info[graphic].src_y;
   offset_x = new_graphic_info[graphic].offset_x;
   offset_y = new_graphic_info[graphic].offset_y;
 
+  drawing_gc = src_bitmap->stored_clip_gc;
+
   src_x += frame * offset_x;
   src_y += frame * offset_y;
 
@@ -1342,19 +1635,25 @@ void DrawNewGraphicShifted(int x,int y, int dx,int dy, int graphic, int frame,
 #endif
 
   if (mask_mode == USE_MASKING)
+  {
     SetClipOrigin(src_bitmap, drawing_gc, dest_x - src_x, dest_y - src_y);
-
-  BlitBitmap(src_bitmap, drawto_field, src_x, src_y, width, height,
-            dest_x, dest_y);
+    BlitBitmapMasked(src_bitmap, drawto_field, src_x, src_y, width, height,
+                    dest_x, dest_y);
+  }
+  else
+    BlitBitmap(src_bitmap, drawto_field, src_x, src_y, width, height,
+              dest_x, dest_y);
 
   MarkTileDirty(x,y);
 }
 
+#if 0
 void DrawGraphicShiftedThruMask(int x,int y, int dx,int dy, int graphic,
                                int cut_mode)
 {
   DrawGraphicShifted(x,y, dx,dy, graphic, cut_mode, USE_MASKING);
 }
+#endif
 
 void DrawNewGraphicShiftedThruMask(int x,int y, int dx,int dy, int graphic,
                                   int frame, int cut_mode)
@@ -1362,6 +1661,7 @@ void DrawNewGraphicShiftedThruMask(int x,int y, int dx,int dy, int graphic,
   DrawNewGraphicShifted(x,y, dx,dy, graphic, frame, cut_mode, USE_MASKING);
 }
 
+#if 0
 void DrawScreenElementExt(int x, int y, int dx, int dy, int element,
                          int cut_mode, int mask_mode)
 {
@@ -1510,6 +1810,7 @@ void DrawScreenElementExt(int x, int y, int dx, int dy, int element,
   else
     DrawGraphic(x, y, graphic);
 }
+#endif
 
 inline static int getFramePosition(int x, int y)
 {
@@ -1615,6 +1916,7 @@ void DrawNewScreenElementExt(int x, int y, int dx, int dy, int element,
     DrawNewGraphic(x, y, graphic, frame);
 }
 
+#if 0
 void DrawLevelElementExt(int x, int y, int dx, int dy, int element,
                         int cut_mode, int mask_mode)
 {
@@ -1622,6 +1924,7 @@ void DrawLevelElementExt(int x, int y, int dx, int dy, int element,
     DrawScreenElementExt(SCREENX(x), SCREENY(y), dx, dy, element,
                         cut_mode, mask_mode);
 }
+#endif
 
 void DrawNewLevelElementExt(int x, int y, int dx, int dy, int element,
                         int cut_mode, int mask_mode)
@@ -1631,11 +1934,13 @@ void DrawNewLevelElementExt(int x, int y, int dx, int dy, int element,
                         cut_mode, mask_mode);
 }
 
+#if 0
 void DrawScreenElementShifted(int x, int y, int dx, int dy, int element,
                              int cut_mode)
 {
   DrawScreenElementExt(x, y, dx, dy, element, cut_mode, NO_MASKING);
 }
+#endif
 
 void DrawNewScreenElementShifted(int x, int y, int dx, int dy, int element,
                              int cut_mode)
@@ -1643,11 +1948,13 @@ void DrawNewScreenElementShifted(int x, int y, int dx, int dy, int element,
   DrawNewScreenElementExt(x, y, dx, dy, element, cut_mode, NO_MASKING);
 }
 
+#if 0
 void DrawLevelElementShifted(int x, int y, int dx, int dy, int element,
                             int cut_mode)
 {
   DrawLevelElementExt(x, y, dx, dy, element, cut_mode, NO_MASKING);
 }
+#endif
 
 void DrawNewLevelElementShifted(int x, int y, int dx, int dy, int element,
                             int cut_mode)
@@ -1655,6 +1962,7 @@ void DrawNewLevelElementShifted(int x, int y, int dx, int dy, int element,
   DrawNewLevelElementExt(x, y, dx, dy, element, cut_mode, NO_MASKING);
 }
 
+#if 0
 void DrawScreenElementThruMask(int x, int y, int element)
 {
   DrawScreenElementExt(x, y, 0, 0, element, NO_CUTTING, USE_MASKING);
@@ -1664,27 +1972,33 @@ void DrawNewScreenElementThruMask(int x, int y, int element)
 {
   DrawNewScreenElementExt(x, y, 0, 0, element, NO_CUTTING, USE_MASKING);
 }
+#endif
 
+#if 0
 void DrawLevelElementThruMask(int x, int y, int element)
 {
   DrawLevelElementExt(x, y, 0, 0, element, NO_CUTTING, USE_MASKING);
 }
+#endif
 
 void DrawNewLevelElementThruMask(int x, int y, int element)
 {
   DrawNewLevelElementExt(x, y, 0, 0, element, NO_CUTTING, USE_MASKING);
 }
 
+#if 0
 void DrawLevelFieldThruMask(int x, int y)
 {
   DrawLevelElementExt(x, y, 0, 0, Feld[x][y], NO_CUTTING, USE_MASKING);
 }
+#endif
 
 void DrawNewLevelFieldThruMask(int x, int y)
 {
   DrawNewLevelElementExt(x, y, 0, 0, Feld[x][y], NO_CUTTING, USE_MASKING);
 }
 
+#if 0
 void ErdreichAnbroeckeln(int x, int y)
 {
   Bitmap *src_bitmap;
@@ -1801,24 +2115,151 @@ void ErdreichAnbroeckeln(int x, int y)
     }
   }
 }
+#endif
+
+void DrawCrumbledSand(int x, int y)
+{
+  Bitmap *src_bitmap;
+  int src_x, src_y;
+  int i, width, height, cx,cy;
+  int ux = LEVELX(x), uy = LEVELY(y);
+  int element, graphic;
+  int snip = 4;
+  static int xy[4][2] =
+  {
+    { 0, -1 },
+    { -1, 0 },
+    { +1, 0 },
+    { 0, +1 }
+  };
+
+  if (!IN_LEV_FIELD(ux, uy))
+    return;
+
+  element = Feld[ux][uy];
+
+  if (element == EL_SAND ||
+      element == EL_LANDMINE ||
+      element == EL_TRAP ||
+      element == EL_TRAP_ACTIVE)
+  {
+    if (!IN_SCR_FIELD(x, y))
+      return;
+
+    graphic = IMG_SAND_CRUMBLED;
+
+    src_bitmap = new_graphic_info[graphic].bitmap;
+    src_x = new_graphic_info[graphic].src_x;
+    src_y = new_graphic_info[graphic].src_y;
+
+    for(i=0; i<4; i++)
+    {
+      int uxx, uyy;
 
+      uxx = ux + xy[i][0];
+      uyy = uy + xy[i][1];
+      if (!IN_LEV_FIELD(uxx, uyy))
+       element = EL_STEELWALL;
+      else
+       element = Feld[uxx][uyy];
+
+      if (element == EL_SAND ||
+         element == EL_LANDMINE ||
+         element == EL_TRAP ||
+         element == EL_TRAP_ACTIVE)
+       continue;
+
+      if (i == 1 || i == 2)
+      {
+       width = snip;
+       height = TILEY;
+       cx = (i == 2 ? TILEX - snip : 0);
+       cy = 0;
+      }
+      else
+      {
+       width = TILEX;
+       height = snip;
+       cx = 0;
+       cy = (i == 3 ? TILEY - snip : 0);
+      }
+
+      BlitBitmap(src_bitmap, drawto_field, src_x + cx, src_y + cy,
+                width, height, FX + x * TILEX + cx, FY + y * TILEY + cy);
+    }
+
+    MarkTileDirty(x, y);
+  }
+  else
+  {
+    graphic = IMG_SAND_CRUMBLED;
+
+    src_bitmap = new_graphic_info[graphic].bitmap;
+    src_x = new_graphic_info[graphic].src_x;
+    src_y = new_graphic_info[graphic].src_y;
+
+    for(i=0; i<4; i++)
+    {
+      int xx, yy, uxx, uyy;
+
+      xx = x + xy[i][0];
+      yy = y + xy[i][1];
+      uxx = ux + xy[i][0];
+      uyy = uy + xy[i][1];
+
+      if (!IN_LEV_FIELD(uxx, uyy) ||
+         (Feld[uxx][uyy] != EL_SAND &&
+          Feld[uxx][uyy] != EL_LANDMINE &&
+          Feld[uxx][uyy] != EL_TRAP &&
+          Feld[uxx][uyy] != EL_TRAP_ACTIVE) ||
+         !IN_SCR_FIELD(xx, yy))
+       continue;
+
+      if (i == 1 || i == 2)
+      {
+       width = snip;
+       height = TILEY;
+       cx = (i == 1 ? TILEX - snip : 0);
+       cy = 0;
+      }
+      else
+      {
+       width = TILEX;
+       height = snip;
+       cx = 0;
+       cy = (i==0 ? TILEY-snip : 0);
+      }
+
+      BlitBitmap(src_bitmap, drawto_field, src_x + cx, src_y + cy,
+                width, height, FX + xx * TILEX + cx, FY + yy * TILEY + cy);
+
+      MarkTileDirty(xx, yy);
+    }
+  }
+}
+
+#if 0
 void DrawScreenElement(int x, int y, int element)
 {
   DrawScreenElementExt(x, y, 0, 0, element, NO_CUTTING, NO_MASKING);
   ErdreichAnbroeckeln(x, y);
 }
+#endif
 
 void DrawNewScreenElement(int x, int y, int element)
 {
   DrawNewScreenElementExt(x, y, 0, 0, element, NO_CUTTING, NO_MASKING);
-  ErdreichAnbroeckeln(x, y);
+  DrawCrumbledSand(x, y);
 }
 
+
+#if 0
 void DrawLevelElement(int x, int y, int element)
 {
   if (IN_LEV_FIELD(x, y) && IN_SCR_FIELD(SCREENX(x), SCREENY(y)))
     DrawScreenElement(SCREENX(x), SCREENY(y), element);
 }
+#endif
 
 void DrawNewLevelElement(int x, int y, int element)
 {
@@ -1826,6 +2267,7 @@ void DrawNewLevelElement(int x, int y, int element)
     DrawNewScreenElement(SCREENX(x), SCREENY(y), element);
 }
 
+#if 0
 void DrawScreenField(int x, int y)
 {
   int ux = LEVELX(x), uy = LEVELY(y);
@@ -1915,6 +2357,7 @@ void DrawScreenField(int x, int y)
   else
     DrawScreenElement(x, y, EL_EMPTY);
 }
+#endif
 
 void DrawNewScreenField(int x, int y)
 {
@@ -2006,6 +2449,7 @@ void DrawNewScreenField(int x, int y)
     DrawNewScreenElement(x, y, EL_EMPTY);
 }
 
+#if 0
 void DrawLevelField(int x, int y)
 {
   if (IN_SCR_FIELD(SCREENX(x), SCREENY(y)))
@@ -2027,6 +2471,7 @@ void DrawLevelField(int x, int y)
       DrawScreenField(SCREENX(oldx), SCREENY(oldy));
   }
 }
+#endif
 
 void DrawNewLevelField(int x, int y)
 {
@@ -2050,6 +2495,7 @@ void DrawNewLevelField(int x, int y)
   }
 }
 
+#if 0
 void DrawMiniElement(int x, int y, int element)
 {
   int graphic;
@@ -2063,6 +2509,7 @@ void DrawMiniElement(int x, int y, int element)
   graphic = el2gfx(element);
   DrawMiniGraphic(x, y, graphic);
 }
+#endif
 
 void DrawNewMiniElement(int x, int y, int element)
 {
@@ -2080,6 +2527,7 @@ void DrawNewMiniElement(int x, int y, int element)
   DrawNewMiniGraphic(x, y, graphic);
 }
 
+#if 0
 void DrawMiniElementOrWall(int sx, int sy, int scroll_x, int scroll_y)
 {
   int x = sx + scroll_x, y = sy + scroll_y;
@@ -2113,6 +2561,7 @@ void DrawMiniElementOrWall(int sx, int sy, int scroll_x, int scroll_y)
       DrawMiniGraphic(sx, sy, border[steel_position][steel_type]);
   }
 }
+#endif
 
 void DrawNewMiniElementOrWall(int sx, int sy, int scroll_x, int scroll_y)
 {
@@ -2148,6 +2597,7 @@ void DrawNewMiniElementOrWall(int sx, int sy, int scroll_x, int scroll_y)
   }
 }
 
+#if 0
 void DrawMicroElement(int xpos, int ypos, int element)
 {
   int graphic;
@@ -2195,6 +2645,7 @@ void DrawMicroElement(int xpos, int ypos, int element)
               MICRO_GFX_STARTY + (graphic / MICRO_GFX_PER_LINE) * MICRO_TILEY,
               MICRO_TILEX, MICRO_TILEY, xpos, ypos);
 }
+#endif
 
 void getNewMicroGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
 {
@@ -2238,6 +2689,7 @@ void DrawLevel()
   redraw_mask |= REDRAW_FIELD;
 }
 
+#if 0
 void DrawMiniLevel(int size_x, int size_y, int scroll_x, int scroll_y)
 {
   int x,y;
@@ -2248,6 +2700,7 @@ void DrawMiniLevel(int size_x, int size_y, int scroll_x, int scroll_y)
 
   redraw_mask |= REDRAW_FIELD;
 }
+#endif
 
 void DrawNewMiniLevel(int size_x, int size_y, int scroll_x, int scroll_y)
 {
@@ -2260,6 +2713,7 @@ void DrawNewMiniLevel(int size_x, int size_y, int scroll_x, int scroll_y)
   redraw_mask |= REDRAW_FIELD;
 }
 
+#if 0
 static void DrawMicroLevelExt(int xpos, int ypos, int from_x, int from_y)
 {
   int x, y;
@@ -2291,6 +2745,7 @@ static void DrawMicroLevelExt(int xpos, int ypos, int from_x, int from_y)
 
   redraw_mask |= REDRAW_MICROLEVEL;
 }
+#endif
 
 static void DrawNewMicroLevelExt(int xpos, int ypos, int from_x, int from_y)
 {
@@ -2421,7 +2876,7 @@ void DrawMicroLevel(int xpos, int ypos, boolean restart)
        break;
     }
 
-    DrawMicroLevelExt(xpos, ypos, from_x, from_y);
+    DrawNewMicroLevelExt(xpos, ypos, from_x, from_y);
   }
 
   /* redraw micro level label, if needed */
index 50e13a24f39ff39fbbc270d09b0df0d3ed83f4cb..2ac299e5863d782814ecc6a843549eab0654ff8d 100644 (file)
@@ -78,7 +78,7 @@ void DrawGraphicAnimationThruMask(int, int, int, int, int, int);
 void getGraphicSource(int, Bitmap **, int *, int *);
 void DrawGraphic(int, int, int);
 void DrawNewGraphic(int, int, int, int);
-void DrawGraphicExt(DrawBuffer *, int, int, int);
+void DrawOldGraphicExt(DrawBuffer *, int, int, int);
 void DrawNewGraphicExt(DrawBuffer *, int, int, int, int);
 void DrawGraphicThruMask(int, int, int);
 void DrawNewGraphicThruMask(int, int, int, int);
@@ -109,6 +109,7 @@ void DrawNewLevelElementThruMask(int, int, int);
 void DrawLevelFieldThruMask(int, int);
 void DrawNewLevelFieldThruMask(int, int);
 void ErdreichAnbroeckeln(int, int);
+void DrawCrumbledSand(int, int);
 void DrawScreenElement(int, int, int);
 void DrawNewScreenElement(int, int, int);
 void DrawLevelElement(int, int, int);