From a84bd00a438ff458c2d74d1d1784deefe12bf84a Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Sat, 5 Oct 2002 03:02:13 +0200 Subject: [PATCH] rnd-20021005-1-src --- src/conf_e2g.c | 68 ++++- src/conf_gfx.h | 715 +++++++++++++++++++++++---------------------- src/conftime.h | 2 +- src/game.c | 182 ++++++++++-- src/libgame/misc.c | 15 +- src/main.c | 110 +++++-- src/main.h | 38 +-- src/tools.c | 34 ++- 8 files changed, 736 insertions(+), 428 deletions(-) diff --git a/src/conf_e2g.c b/src/conf_e2g.c index 332a0a00..de7c8a11 100644 --- a/src/conf_e2g.c +++ b/src/conf_e2g.c @@ -709,20 +709,72 @@ element_to_graphic[] = IMG_AMOEBA_CREATING }, { - EL_AMOEBA_PART1, -1, -1, - IMG_AMOEBA_PART1 + EL_AMOEBA_SHRINKING, -1, -1, + IMG_AMOEBA_SHRINKING }, { - EL_AMOEBA_PART2, -1, -1, - IMG_AMOEBA_PART2 + EL_AMOEBA_WET, -1, -1, + IMG_AMOEBA_WET }, { - EL_AMOEBA_PART3, -1, -1, - IMG_AMOEBA_PART3 + EL_AMOEBA_WET_PART1, -1, -1, + IMG_AMOEBA_WET_PART1 }, { - EL_AMOEBA_PART4, -1, -1, - IMG_AMOEBA_PART4 + EL_AMOEBA_WET_PART2, -1, -1, + IMG_AMOEBA_WET_PART2 + }, + { + EL_AMOEBA_WET_PART3, -1, -1, + IMG_AMOEBA_WET_PART3 + }, + { + EL_AMOEBA_WET_PART4, -1, -1, + IMG_AMOEBA_WET_PART4 + }, + { + EL_AMOEBA_DRY, -1, -1, + IMG_AMOEBA_DRY + }, + { + EL_AMOEBA_DRY_PART1, -1, -1, + IMG_AMOEBA_DRY_PART1 + }, + { + EL_AMOEBA_DRY_PART2, -1, -1, + IMG_AMOEBA_DRY_PART2 + }, + { + EL_AMOEBA_DRY_PART3, -1, -1, + IMG_AMOEBA_DRY_PART3 + }, + { + EL_AMOEBA_DRY_PART4, -1, -1, + IMG_AMOEBA_DRY_PART4 + }, + { + EL_AMOEBA_FULL, -1, -1, + IMG_AMOEBA_FULL + }, + { + EL_AMOEBA_FULL, -1, GFX_ACTION_OTHER, + IMG_AMOEBA_FULL_PART1 + }, + { + EL_AMOEBA_FULL, -1, GFX_ACTION_OTHER, + IMG_AMOEBA_FULL_PART2 + }, + { + EL_AMOEBA_FULL, -1, GFX_ACTION_OTHER, + IMG_AMOEBA_FULL_PART3 + }, + { + EL_AMOEBA_FULL, -1, GFX_ACTION_OTHER, + IMG_AMOEBA_FULL_PART4 + }, + { + EL_AMOEBA_DEAD, -1, -1, + IMG_AMOEBA_DEAD }, { EL_AMOEBA_DEAD_PART1, -1, -1, diff --git a/src/conf_gfx.h b/src/conf_gfx.h index 83388cbb..82a4878a 100644 --- a/src/conf_gfx.h +++ b/src/conf_gfx.h @@ -174,357 +174,370 @@ #define IMG_ACID_SPLASHING_RIGHT 153 #define IMG_AMOEBA_DROP 154 #define IMG_AMOEBA_CREATING 155 -#define IMG_AMOEBA_PART1 156 -#define IMG_AMOEBA_PART2 157 -#define IMG_AMOEBA_PART3 158 -#define IMG_AMOEBA_PART4 159 -#define IMG_AMOEBA_DEAD_PART1 160 -#define IMG_AMOEBA_DEAD_PART2 161 -#define IMG_AMOEBA_DEAD_PART3 162 -#define IMG_AMOEBA_DEAD_PART4 163 -#define IMG_EM_KEY1 164 -#define IMG_EM_KEY2 165 -#define IMG_EM_KEY3 166 -#define IMG_EM_KEY4 167 -#define IMG_EM_GATE1 168 -#define IMG_EM_GATE2 169 -#define IMG_EM_GATE3 170 -#define IMG_EM_GATE4 171 -#define IMG_EM_GATE1_GRAY 172 -#define IMG_EM_GATE2_GRAY 173 -#define IMG_EM_GATE3_GRAY 174 -#define IMG_EM_GATE4_GRAY 175 -#define IMG_EXIT_CLOSED 176 -#define IMG_EXIT_OPENING 177 -#define IMG_EXIT_OPEN 178 -#define IMG_BALLOON 179 -#define IMG_BALLOON_MOVING 180 -#define IMG_BALLOON_SEND_LEFT 181 -#define IMG_BALLOON_SEND_RIGHT 182 -#define IMG_BALLOON_SEND_UP 183 -#define IMG_BALLOON_SEND_DOWN 184 -#define IMG_BALLOON_SEND_ANY_DIRECTION 185 -#define IMG_SPRING 186 -#define IMG_SPRING_MOVING 187 -#define IMG_EMC_STEELWALL1 188 -#define IMG_EMC_STEELWALL2 189 -#define IMG_EMC_STEELWALL3 190 -#define IMG_EMC_STEELWALL4 191 -#define IMG_EMC_WALL_PILLAR_UPPER 192 -#define IMG_EMC_WALL_PILLAR_MIDDLE 193 -#define IMG_EMC_WALL_PILLAR_LOWER 194 -#define IMG_EMC_WALL4 195 -#define IMG_EMC_WALL5 196 -#define IMG_EMC_WALL6 197 -#define IMG_EMC_WALL7 198 -#define IMG_EMC_WALL8 199 -#define IMG_INVISIBLE_STEELWALL 200 -#define IMG_INVISIBLE_STEELWALL_ACTIVE 201 -#define IMG_INVISIBLE_WALL 202 -#define IMG_INVISIBLE_WALL_ACTIVE 203 -#define IMG_INVISIBLE_SAND 204 -#define IMG_INVISIBLE_SAND_ACTIVE 205 -#define IMG_CONVEYOR_BELT1_MIDDLE 206 -#define IMG_CONVEYOR_BELT1_MIDDLE_ACTIVE 207 -#define IMG_CONVEYOR_BELT1_LEFT 208 -#define IMG_CONVEYOR_BELT1_LEFT_ACTIVE 209 -#define IMG_CONVEYOR_BELT1_RIGHT 210 -#define IMG_CONVEYOR_BELT1_RIGHT_ACTIVE 211 -#define IMG_CONVEYOR_BELT1_SWITCH_LEFT 212 -#define IMG_CONVEYOR_BELT1_SWITCH_MIDDLE 213 -#define IMG_CONVEYOR_BELT1_SWITCH_RIGHT 214 -#define IMG_CONVEYOR_BELT2_MIDDLE 215 -#define IMG_CONVEYOR_BELT2_MIDDLE_ACTIVE 216 -#define IMG_CONVEYOR_BELT2_LEFT 217 -#define IMG_CONVEYOR_BELT2_LEFT_ACTIVE 218 -#define IMG_CONVEYOR_BELT2_RIGHT 219 -#define IMG_CONVEYOR_BELT2_RIGHT_ACTIVE 220 -#define IMG_CONVEYOR_BELT2_SWITCH_LEFT 221 -#define IMG_CONVEYOR_BELT2_SWITCH_MIDDLE 222 -#define IMG_CONVEYOR_BELT2_SWITCH_RIGHT 223 -#define IMG_CONVEYOR_BELT3_MIDDLE 224 -#define IMG_CONVEYOR_BELT3_MIDDLE_ACTIVE 225 -#define IMG_CONVEYOR_BELT3_LEFT 226 -#define IMG_CONVEYOR_BELT3_LEFT_ACTIVE 227 -#define IMG_CONVEYOR_BELT3_RIGHT 228 -#define IMG_CONVEYOR_BELT3_RIGHT_ACTIVE 229 -#define IMG_CONVEYOR_BELT3_SWITCH_LEFT 230 -#define IMG_CONVEYOR_BELT3_SWITCH_MIDDLE 231 -#define IMG_CONVEYOR_BELT3_SWITCH_RIGHT 232 -#define IMG_CONVEYOR_BELT4_MIDDLE 233 -#define IMG_CONVEYOR_BELT4_MIDDLE_ACTIVE 234 -#define IMG_CONVEYOR_BELT4_LEFT 235 -#define IMG_CONVEYOR_BELT4_LEFT_ACTIVE 236 -#define IMG_CONVEYOR_BELT4_RIGHT 237 -#define IMG_CONVEYOR_BELT4_RIGHT_ACTIVE 238 -#define IMG_CONVEYOR_BELT4_SWITCH_LEFT 239 -#define IMG_CONVEYOR_BELT4_SWITCH_MIDDLE 240 -#define IMG_CONVEYOR_BELT4_SWITCH_RIGHT 241 -#define IMG_SWITCHGATE_SWITCH_UP 242 -#define IMG_SWITCHGATE_SWITCH_DOWN 243 -#define IMG_LIGHT_SWITCH 244 -#define IMG_LIGHT_SWITCH_ACTIVE 245 -#define IMG_TIMEGATE_SWITCH 246 -#define IMG_TIMEGATE_SWITCH_ACTIVE 247 -#define IMG_ENVELOPE 248 -#define IMG_SIGN_EXCLAMATION 249 -#define IMG_SIGN_STOP 250 -#define IMG_LANDMINE 251 -#define IMG_STEELWALL_SLANTED 252 -#define IMG_EXTRA_TIME 253 -#define IMG_SHIELD_NORMAL 254 -#define IMG_SHIELD_DEADLY 255 -#define IMG_SHIELD_NORMAL_ACTIVE 256 -#define IMG_SHIELD_DEADLY_ACTIVE 257 -#define IMG_SWITCHGATE_CLOSED 258 -#define IMG_SWITCHGATE_OPENING 259 -#define IMG_SWITCHGATE_OPEN 260 -#define IMG_SWITCHGATE_CLOSING 261 -#define IMG_TIMEGATE_CLOSED 262 -#define IMG_TIMEGATE_OPENING 263 -#define IMG_TIMEGATE_OPEN 264 -#define IMG_TIMEGATE_CLOSING 265 -#define IMG_PEARL 266 -#define IMG_PEARL_BREAKING 267 -#define IMG_CRYSTAL 268 -#define IMG_WALL_PEARL 269 -#define IMG_WALL_CRYSTAL 270 -#define IMG_TUBE_RIGHT_DOWN 271 -#define IMG_TUBE_HORIZONTAL_DOWN 272 -#define IMG_TUBE_LEFT_DOWN 273 -#define IMG_TUBE_HORIZONTAL 274 -#define IMG_TUBE_VERTICAL_RIGHT 275 -#define IMG_TUBE_ALL 276 -#define IMG_TUBE_VERTICAL_LEFT 277 -#define IMG_TUBE_VERTICAL 278 -#define IMG_TUBE_RIGHT_UP 279 -#define IMG_TUBE_HORIZONTAL_UP 280 -#define IMG_TUBE_LEFT_UP 281 -#define IMG_TRAP 282 -#define IMG_TRAP_ACTIVE 283 -#define IMG_DX_SUPABOMB 284 -#define IMG_KEY1 285 -#define IMG_KEY2 286 -#define IMG_KEY3 287 -#define IMG_KEY4 288 -#define IMG_GATE1 289 -#define IMG_GATE2 290 -#define IMG_GATE3 291 -#define IMG_GATE4 292 -#define IMG_GATE1_GRAY 293 -#define IMG_GATE2_GRAY 294 -#define IMG_GATE3_GRAY 295 -#define IMG_GATE4_GRAY 296 -#define IMG_GAMEOFLIFE 297 -#define IMG_BIOMAZE 298 -#define IMG_PACMAN_RIGHT 299 -#define IMG_PACMAN_UP 300 -#define IMG_PACMAN_LEFT 301 -#define IMG_PACMAN_DOWN 302 -#define IMG_LAMP 303 -#define IMG_LAMP_ACTIVE 304 -#define IMG_TIME_ORB_FULL 305 -#define IMG_TIME_ORB_EMPTY 306 -#define IMG_EMERALD_YELLOW 307 -#define IMG_EMERALD_YELLOW_FALLING 308 -#define IMG_EMERALD_RED 309 -#define IMG_EMERALD_RED_FALLING 310 -#define IMG_EMERALD_PURPLE 311 -#define IMG_EMERALD_PURPLE_FALLING 312 -#define IMG_WALL_EMERALD_YELLOW 313 -#define IMG_WALL_EMERALD_RED 314 -#define IMG_WALL_EMERALD_PURPLE 315 -#define IMG_WALL_BD_DIAMOND 316 -#define IMG_WALL_GROWING_XY 317 -#define IMG_WALL_GROWING_X 318 -#define IMG_WALL_GROWING_Y 319 -#define IMG_WALL_GROWING_ACTIVE_LEFT 320 -#define IMG_WALL_GROWING_ACTIVE_RIGHT 321 -#define IMG_WALL_GROWING_ACTIVE_UP 322 -#define IMG_WALL_GROWING_ACTIVE_DOWN 323 -#define IMG_BLACK_ORB 324 -#define IMG_SPEED_PILL 325 -#define IMG_DARK_YAMYAM 326 -#define IMG_DYNABOMB_ACTIVE 327 -#define IMG_DYNABOMB_PLAYER1_ACTIVE 328 -#define IMG_DYNABOMB_PLAYER2_ACTIVE 329 -#define IMG_DYNABOMB_PLAYER3_ACTIVE 330 -#define IMG_DYNABOMB_PLAYER4_ACTIVE 331 -#define IMG_DYNABOMB_NR 332 -#define IMG_DYNABOMB_SZ 333 -#define IMG_DYNABOMB_XL 334 -#define IMG_PIG_DOWN 335 -#define IMG_PIG_DOWN_MOVING 336 -#define IMG_PIG_DOWN_EATING 337 -#define IMG_PIG_UP 338 -#define IMG_PIG_UP_MOVING 339 -#define IMG_PIG_UP_EATING 340 -#define IMG_PIG_LEFT 341 -#define IMG_PIG_LEFT_MOVING 342 -#define IMG_PIG_LEFT_EATING 343 -#define IMG_PIG_RIGHT 344 -#define IMG_PIG_RIGHT_MOVING 345 -#define IMG_PIG_RIGHT_EATING 346 -#define IMG_DRAGON_DOWN 347 -#define IMG_DRAGON_DOWN_MOVING 348 -#define IMG_DRAGON_DOWN_ATTACKING 349 -#define IMG_DRAGON_UP 350 -#define IMG_DRAGON_UP_MOVING 351 -#define IMG_DRAGON_UP_ATTACKING 352 -#define IMG_DRAGON_LEFT 353 -#define IMG_DRAGON_LEFT_MOVING 354 -#define IMG_DRAGON_LEFT_ATTACKING 355 -#define IMG_DRAGON_RIGHT 356 -#define IMG_DRAGON_RIGHT_MOVING 357 -#define IMG_DRAGON_RIGHT_ATTACKING 358 -#define IMG_MOLE_DOWN 359 -#define IMG_MOLE_DOWN_MOVING 360 -#define IMG_MOLE_DOWN_DIGGING 361 -#define IMG_MOLE_UP 362 -#define IMG_MOLE_UP_MOVING 363 -#define IMG_MOLE_UP_DIGGING 364 -#define IMG_MOLE_LEFT 365 -#define IMG_MOLE_LEFT_MOVING 366 -#define IMG_MOLE_LEFT_DIGGING 367 -#define IMG_MOLE_RIGHT 368 -#define IMG_MOLE_RIGHT_MOVING 369 -#define IMG_MOLE_RIGHT_DIGGING 370 -#define IMG_PENGUIN_DOWN 371 -#define IMG_PENGUIN_DOWN_MOVING 372 -#define IMG_PENGUIN_UP 373 -#define IMG_PENGUIN_UP_MOVING 374 -#define IMG_PENGUIN_LEFT 375 -#define IMG_PENGUIN_LEFT_MOVING 376 -#define IMG_PENGUIN_RIGHT 377 -#define IMG_PENGUIN_RIGHT_MOVING 378 -#define IMG_SATELLITE 379 -#define IMG_SATELLITE_MOVING 380 -#define IMG_FLAMES_LEFT1 381 -#define IMG_FLAMES_LEFT2 382 -#define IMG_FLAMES_LEFT3 383 -#define IMG_FLAMES_RIGHT1 384 -#define IMG_FLAMES_RIGHT2 385 -#define IMG_FLAMES_RIGHT3 386 -#define IMG_FLAMES_UP1 387 -#define IMG_FLAMES_UP2 388 -#define IMG_FLAMES_UP3 389 -#define IMG_FLAMES_DOWN1 390 -#define IMG_FLAMES_DOWN2 391 -#define IMG_FLAMES_DOWN3 392 -#define IMG_STONEBLOCK 393 -#define IMG_PLAYER1 394 -#define IMG_PLAYER1_DOWN 395 -#define IMG_PLAYER1_DOWN_MOVING 396 -#define IMG_PLAYER1_DOWN_DIGGING 397 -#define IMG_PLAYER1_DOWN_PUSHING 398 -#define IMG_PLAYER1_DOWN_SNAPPING 399 -#define IMG_PLAYER1_UP 400 -#define IMG_PLAYER1_UP_MOVING 401 -#define IMG_PLAYER1_UP_DIGGING 402 -#define IMG_PLAYER1_UP_PUSHING 403 -#define IMG_PLAYER1_UP_SNAPPING 404 -#define IMG_PLAYER1_LEFT 405 -#define IMG_PLAYER1_LEFT_MOVING 406 -#define IMG_PLAYER1_LEFT_DIGGING 407 -#define IMG_PLAYER1_LEFT_PUSHING 408 -#define IMG_PLAYER1_LEFT_SNAPPING 409 -#define IMG_PLAYER1_RIGHT 410 -#define IMG_PLAYER1_RIGHT_MOVING 411 -#define IMG_PLAYER1_RIGHT_DIGGING 412 -#define IMG_PLAYER1_RIGHT_PUSHING 413 -#define IMG_PLAYER1_RIGHT_SNAPPING 414 -#define IMG_PLAYER2 415 -#define IMG_PLAYER2_DOWN 416 -#define IMG_PLAYER2_DOWN_MOVING 417 -#define IMG_PLAYER2_DOWN_DIGGING 418 -#define IMG_PLAYER2_DOWN_PUSHING 419 -#define IMG_PLAYER2_DOWN_SNAPPING 420 -#define IMG_PLAYER2_UP 421 -#define IMG_PLAYER2_UP_MOVING 422 -#define IMG_PLAYER2_UP_DIGGING 423 -#define IMG_PLAYER2_UP_PUSHING 424 -#define IMG_PLAYER2_UP_SNAPPING 425 -#define IMG_PLAYER2_LEFT 426 -#define IMG_PLAYER2_LEFT_MOVING 427 -#define IMG_PLAYER2_LEFT_DIGGING 428 -#define IMG_PLAYER2_LEFT_PUSHING 429 -#define IMG_PLAYER2_LEFT_SNAPPING 430 -#define IMG_PLAYER2_RIGHT 431 -#define IMG_PLAYER2_RIGHT_MOVING 432 -#define IMG_PLAYER2_RIGHT_DIGGING 433 -#define IMG_PLAYER2_RIGHT_PUSHING 434 -#define IMG_PLAYER2_RIGHT_SNAPPING 435 -#define IMG_PLAYER3 436 -#define IMG_PLAYER3_DOWN 437 -#define IMG_PLAYER3_DOWN_MOVING 438 -#define IMG_PLAYER3_DOWN_DIGGING 439 -#define IMG_PLAYER3_DOWN_PUSHING 440 -#define IMG_PLAYER3_DOWN_SNAPPING 441 -#define IMG_PLAYER3_UP 442 -#define IMG_PLAYER3_UP_MOVING 443 -#define IMG_PLAYER3_UP_DIGGING 444 -#define IMG_PLAYER3_UP_PUSHING 445 -#define IMG_PLAYER3_UP_SNAPPING 446 -#define IMG_PLAYER3_LEFT 447 -#define IMG_PLAYER3_LEFT_MOVING 448 -#define IMG_PLAYER3_LEFT_DIGGING 449 -#define IMG_PLAYER3_LEFT_PUSHING 450 -#define IMG_PLAYER3_LEFT_SNAPPING 451 -#define IMG_PLAYER3_RIGHT 452 -#define IMG_PLAYER3_RIGHT_MOVING 453 -#define IMG_PLAYER3_RIGHT_DIGGING 454 -#define IMG_PLAYER3_RIGHT_PUSHING 455 -#define IMG_PLAYER3_RIGHT_SNAPPING 456 -#define IMG_PLAYER4 457 -#define IMG_PLAYER4_DOWN 458 -#define IMG_PLAYER4_DOWN_MOVING 459 -#define IMG_PLAYER4_DOWN_DIGGING 460 -#define IMG_PLAYER4_DOWN_PUSHING 461 -#define IMG_PLAYER4_DOWN_SNAPPING 462 -#define IMG_PLAYER4_UP 463 -#define IMG_PLAYER4_UP_MOVING 464 -#define IMG_PLAYER4_UP_DIGGING 465 -#define IMG_PLAYER4_UP_PUSHING 466 -#define IMG_PLAYER4_UP_SNAPPING 467 -#define IMG_PLAYER4_LEFT 468 -#define IMG_PLAYER4_LEFT_MOVING 469 -#define IMG_PLAYER4_LEFT_DIGGING 470 -#define IMG_PLAYER4_LEFT_PUSHING 471 -#define IMG_PLAYER4_LEFT_SNAPPING 472 -#define IMG_PLAYER4_RIGHT 473 -#define IMG_PLAYER4_RIGHT_MOVING 474 -#define IMG_PLAYER4_RIGHT_DIGGING 475 -#define IMG_PLAYER4_RIGHT_PUSHING 476 -#define IMG_PLAYER4_RIGHT_SNAPPING 477 -#define IMG_EXPLOSION 478 -#define IMG_TWINKLE_BLUE 479 -#define IMG_TWINKLE_WHITE 480 -#define IMG_STEELWALL_TOPLEFT 481 -#define IMG_STEELWALL_TOPRIGHT 482 -#define IMG_STEELWALL_BOTTOMLEFT 483 -#define IMG_STEELWALL_BOTTOMRIGHT 484 -#define IMG_STEELWALL_HORIZONTAL 485 -#define IMG_STEELWALL_VERTICAL 486 -#define IMG_INVISIBLE_STEELWALL_TOPLEFT 487 -#define IMG_INVISIBLE_STEELWALL_TOPRIGHT 488 -#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT 489 -#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT 490 -#define IMG_INVISIBLE_STEELWALL_HORIZONTAL 491 -#define IMG_INVISIBLE_STEELWALL_VERTICAL 492 -#define IMG_ARROW_BLUE_LEFT 493 -#define IMG_ARROW_BLUE_RIGHT 494 -#define IMG_ARROW_BLUE_UP 495 -#define IMG_ARROW_BLUE_DOWN 496 -#define IMG_ARROW_RED_LEFT 497 -#define IMG_ARROW_RED_RIGHT 498 -#define IMG_ARROW_RED_UP 499 -#define IMG_ARROW_RED_DOWN 500 -#define IMG_SCROLLBAR_BLUE 501 -#define IMG_SCROLLBAR_RED 502 -#define IMG_SCROLLBAR_GREEN 503 -#define IMG_SCROLLBAR_YELLOW 504 -#define IMG_CHAR_QUESTION 505 +#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_XY 330 +#define IMG_WALL_GROWING_X 331 +#define IMG_WALL_GROWING_Y 332 +#define IMG_WALL_GROWING_ACTIVE_LEFT 333 +#define IMG_WALL_GROWING_ACTIVE_RIGHT 334 +#define IMG_WALL_GROWING_ACTIVE_UP 335 +#define IMG_WALL_GROWING_ACTIVE_DOWN 336 +#define IMG_BLACK_ORB 337 +#define IMG_SPEED_PILL 338 +#define IMG_DARK_YAMYAM 339 +#define IMG_DYNABOMB_ACTIVE 340 +#define IMG_DYNABOMB_PLAYER1_ACTIVE 341 +#define IMG_DYNABOMB_PLAYER2_ACTIVE 342 +#define IMG_DYNABOMB_PLAYER3_ACTIVE 343 +#define IMG_DYNABOMB_PLAYER4_ACTIVE 344 +#define IMG_DYNABOMB_NR 345 +#define IMG_DYNABOMB_SZ 346 +#define IMG_DYNABOMB_XL 347 +#define IMG_PIG_DOWN 348 +#define IMG_PIG_DOWN_MOVING 349 +#define IMG_PIG_DOWN_EATING 350 +#define IMG_PIG_UP 351 +#define IMG_PIG_UP_MOVING 352 +#define IMG_PIG_UP_EATING 353 +#define IMG_PIG_LEFT 354 +#define IMG_PIG_LEFT_MOVING 355 +#define IMG_PIG_LEFT_EATING 356 +#define IMG_PIG_RIGHT 357 +#define IMG_PIG_RIGHT_MOVING 358 +#define IMG_PIG_RIGHT_EATING 359 +#define IMG_DRAGON_DOWN 360 +#define IMG_DRAGON_DOWN_MOVING 361 +#define IMG_DRAGON_DOWN_ATTACKING 362 +#define IMG_DRAGON_UP 363 +#define IMG_DRAGON_UP_MOVING 364 +#define IMG_DRAGON_UP_ATTACKING 365 +#define IMG_DRAGON_LEFT 366 +#define IMG_DRAGON_LEFT_MOVING 367 +#define IMG_DRAGON_LEFT_ATTACKING 368 +#define IMG_DRAGON_RIGHT 369 +#define IMG_DRAGON_RIGHT_MOVING 370 +#define IMG_DRAGON_RIGHT_ATTACKING 371 +#define IMG_MOLE_DOWN 372 +#define IMG_MOLE_DOWN_MOVING 373 +#define IMG_MOLE_DOWN_DIGGING 374 +#define IMG_MOLE_UP 375 +#define IMG_MOLE_UP_MOVING 376 +#define IMG_MOLE_UP_DIGGING 377 +#define IMG_MOLE_LEFT 378 +#define IMG_MOLE_LEFT_MOVING 379 +#define IMG_MOLE_LEFT_DIGGING 380 +#define IMG_MOLE_RIGHT 381 +#define IMG_MOLE_RIGHT_MOVING 382 +#define IMG_MOLE_RIGHT_DIGGING 383 +#define IMG_PENGUIN_DOWN 384 +#define IMG_PENGUIN_DOWN_MOVING 385 +#define IMG_PENGUIN_UP 386 +#define IMG_PENGUIN_UP_MOVING 387 +#define IMG_PENGUIN_LEFT 388 +#define IMG_PENGUIN_LEFT_MOVING 389 +#define IMG_PENGUIN_RIGHT 390 +#define IMG_PENGUIN_RIGHT_MOVING 391 +#define IMG_SATELLITE 392 +#define IMG_SATELLITE_MOVING 393 +#define IMG_FLAMES_LEFT1 394 +#define IMG_FLAMES_LEFT2 395 +#define IMG_FLAMES_LEFT3 396 +#define IMG_FLAMES_RIGHT1 397 +#define IMG_FLAMES_RIGHT2 398 +#define IMG_FLAMES_RIGHT3 399 +#define IMG_FLAMES_UP1 400 +#define IMG_FLAMES_UP2 401 +#define IMG_FLAMES_UP3 402 +#define IMG_FLAMES_DOWN1 403 +#define IMG_FLAMES_DOWN2 404 +#define IMG_FLAMES_DOWN3 405 +#define IMG_STONEBLOCK 406 +#define IMG_PLAYER1 407 +#define IMG_PLAYER1_DOWN 408 +#define IMG_PLAYER1_DOWN_MOVING 409 +#define IMG_PLAYER1_DOWN_DIGGING 410 +#define IMG_PLAYER1_DOWN_PUSHING 411 +#define IMG_PLAYER1_DOWN_SNAPPING 412 +#define IMG_PLAYER1_UP 413 +#define IMG_PLAYER1_UP_MOVING 414 +#define IMG_PLAYER1_UP_DIGGING 415 +#define IMG_PLAYER1_UP_PUSHING 416 +#define IMG_PLAYER1_UP_SNAPPING 417 +#define IMG_PLAYER1_LEFT 418 +#define IMG_PLAYER1_LEFT_MOVING 419 +#define IMG_PLAYER1_LEFT_DIGGING 420 +#define IMG_PLAYER1_LEFT_PUSHING 421 +#define IMG_PLAYER1_LEFT_SNAPPING 422 +#define IMG_PLAYER1_RIGHT 423 +#define IMG_PLAYER1_RIGHT_MOVING 424 +#define IMG_PLAYER1_RIGHT_DIGGING 425 +#define IMG_PLAYER1_RIGHT_PUSHING 426 +#define IMG_PLAYER1_RIGHT_SNAPPING 427 +#define IMG_PLAYER2 428 +#define IMG_PLAYER2_DOWN 429 +#define IMG_PLAYER2_DOWN_MOVING 430 +#define IMG_PLAYER2_DOWN_DIGGING 431 +#define IMG_PLAYER2_DOWN_PUSHING 432 +#define IMG_PLAYER2_DOWN_SNAPPING 433 +#define IMG_PLAYER2_UP 434 +#define IMG_PLAYER2_UP_MOVING 435 +#define IMG_PLAYER2_UP_DIGGING 436 +#define IMG_PLAYER2_UP_PUSHING 437 +#define IMG_PLAYER2_UP_SNAPPING 438 +#define IMG_PLAYER2_LEFT 439 +#define IMG_PLAYER2_LEFT_MOVING 440 +#define IMG_PLAYER2_LEFT_DIGGING 441 +#define IMG_PLAYER2_LEFT_PUSHING 442 +#define IMG_PLAYER2_LEFT_SNAPPING 443 +#define IMG_PLAYER2_RIGHT 444 +#define IMG_PLAYER2_RIGHT_MOVING 445 +#define IMG_PLAYER2_RIGHT_DIGGING 446 +#define IMG_PLAYER2_RIGHT_PUSHING 447 +#define IMG_PLAYER2_RIGHT_SNAPPING 448 +#define IMG_PLAYER3 449 +#define IMG_PLAYER3_DOWN 450 +#define IMG_PLAYER3_DOWN_MOVING 451 +#define IMG_PLAYER3_DOWN_DIGGING 452 +#define IMG_PLAYER3_DOWN_PUSHING 453 +#define IMG_PLAYER3_DOWN_SNAPPING 454 +#define IMG_PLAYER3_UP 455 +#define IMG_PLAYER3_UP_MOVING 456 +#define IMG_PLAYER3_UP_DIGGING 457 +#define IMG_PLAYER3_UP_PUSHING 458 +#define IMG_PLAYER3_UP_SNAPPING 459 +#define IMG_PLAYER3_LEFT 460 +#define IMG_PLAYER3_LEFT_MOVING 461 +#define IMG_PLAYER3_LEFT_DIGGING 462 +#define IMG_PLAYER3_LEFT_PUSHING 463 +#define IMG_PLAYER3_LEFT_SNAPPING 464 +#define IMG_PLAYER3_RIGHT 465 +#define IMG_PLAYER3_RIGHT_MOVING 466 +#define IMG_PLAYER3_RIGHT_DIGGING 467 +#define IMG_PLAYER3_RIGHT_PUSHING 468 +#define IMG_PLAYER3_RIGHT_SNAPPING 469 +#define IMG_PLAYER4 470 +#define IMG_PLAYER4_DOWN 471 +#define IMG_PLAYER4_DOWN_MOVING 472 +#define IMG_PLAYER4_DOWN_DIGGING 473 +#define IMG_PLAYER4_DOWN_PUSHING 474 +#define IMG_PLAYER4_DOWN_SNAPPING 475 +#define IMG_PLAYER4_UP 476 +#define IMG_PLAYER4_UP_MOVING 477 +#define IMG_PLAYER4_UP_DIGGING 478 +#define IMG_PLAYER4_UP_PUSHING 479 +#define IMG_PLAYER4_UP_SNAPPING 480 +#define IMG_PLAYER4_LEFT 481 +#define IMG_PLAYER4_LEFT_MOVING 482 +#define IMG_PLAYER4_LEFT_DIGGING 483 +#define IMG_PLAYER4_LEFT_PUSHING 484 +#define IMG_PLAYER4_LEFT_SNAPPING 485 +#define IMG_PLAYER4_RIGHT 486 +#define IMG_PLAYER4_RIGHT_MOVING 487 +#define IMG_PLAYER4_RIGHT_DIGGING 488 +#define IMG_PLAYER4_RIGHT_PUSHING 489 +#define IMG_PLAYER4_RIGHT_SNAPPING 490 +#define IMG_EXPLOSION 491 +#define IMG_TWINKLE_BLUE 492 +#define IMG_TWINKLE_WHITE 493 +#define IMG_STEELWALL_TOPLEFT 494 +#define IMG_STEELWALL_TOPRIGHT 495 +#define IMG_STEELWALL_BOTTOMLEFT 496 +#define IMG_STEELWALL_BOTTOMRIGHT 497 +#define IMG_STEELWALL_HORIZONTAL 498 +#define IMG_STEELWALL_VERTICAL 499 +#define IMG_INVISIBLE_STEELWALL_TOPLEFT 500 +#define IMG_INVISIBLE_STEELWALL_TOPRIGHT 501 +#define IMG_INVISIBLE_STEELWALL_BOTTOMLEFT 502 +#define IMG_INVISIBLE_STEELWALL_BOTTOMRIGHT 503 +#define IMG_INVISIBLE_STEELWALL_HORIZONTAL 504 +#define IMG_INVISIBLE_STEELWALL_VERTICAL 505 +#define IMG_ARROW_BLUE_LEFT 506 +#define IMG_ARROW_BLUE_RIGHT 507 +#define IMG_ARROW_BLUE_UP 508 +#define IMG_ARROW_BLUE_DOWN 509 +#define IMG_ARROW_RED_LEFT 510 +#define IMG_ARROW_RED_RIGHT 511 +#define IMG_ARROW_RED_UP 512 +#define IMG_ARROW_RED_DOWN 513 +#define IMG_SCROLLBAR_BLUE 514 +#define IMG_SCROLLBAR_RED 515 +#define IMG_SCROLLBAR_GREEN 516 +#define IMG_SCROLLBAR_YELLOW 517 +#define IMG_CHAR_QUESTION 518 -#define NUM_IMAGE_FILES 506 +#define NUM_IMAGE_FILES 519 #endif /* GFX_DEFS_H */ diff --git a/src/conftime.h b/src/conftime.h index fff6362f..641100c5 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "[2002-10-04 19:34]" +#define COMPILE_DATE_STRING "[2002-10-05 03:01]" diff --git a/src/game.c b/src/game.c index 05e83995..203149bc 100644 --- a/src/game.c +++ b/src/game.c @@ -3122,7 +3122,12 @@ void StartMoving(int x, int y) PlaySoundLevel(newx, newy, SND_PENGUIN_PASSING_EXIT); if (IN_SCR_FIELD(SCREENX(newx), SCREENY(newy))) +#if 0 DrawGraphicThruMask(SCREENX(newx), SCREENY(newy), el2gfx(element)); +#else + DrawNewGraphicThruMask(SCREENX(newx), SCREENY(newy), el2img(element), + 0); +#endif local_player->friends_still_needed--; if (!local_player->friends_still_needed && @@ -3651,7 +3656,7 @@ void AmoebeUmwandelnBD(int ax, int ay, int new_element) AmoebaNr[x][y] = 0; Feld[x][y] = new_element; InitField(x, y, FALSE); - DrawLevelField(x, y); + DrawNewLevelField(x, y); done = TRUE; } } @@ -3686,13 +3691,22 @@ void AmoebeWaechst(int x, int y) { MovDelay[x][y]--; if (MovDelay[x][y]/2 && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_AMOEBING + 3 - MovDelay[x][y]/2); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_AMOEBA_CREATING, + 6 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_AMOEBA_CREATING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = Store[x][y]; Store[x][y] = 0; - DrawLevelField(x, y); + DrawNewLevelField(x, y); } } } @@ -3714,12 +3728,21 @@ void AmoebaDisappearing(int x, int y) { MovDelay[x][y]--; if (MovDelay[x][y]/2 && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_AMOEBING + MovDelay[x][y]/2); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_AMOEBA_SHRINKING, + 6 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_AMOEBA_SHRINKING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = EL_EMPTY; - DrawLevelField(x, y); + DrawNewLevelField(x, y); /* don't let mole enter this field in this cycle; (give priority to objects falling to this field from above) */ @@ -3744,7 +3767,7 @@ void AmoebeAbleger(int ax, int ay) if (!level.amoeba_speed) { Feld[ax][ay] = EL_AMOEBA_DEAD; - DrawLevelField(ax, ay); + DrawNewLevelField(ax, ay); return; } @@ -3807,7 +3830,7 @@ void AmoebeAbleger(int ax, int ay) if (i == 4 && (!waiting_for_player || game.emulation == EMU_BOULDERDASH)) { Feld[ax][ay] = EL_AMOEBA_DEAD; - DrawLevelField(ax, ay); + DrawNewLevelField(ax, ay); AmoebaCnt[AmoebaNr[ax][ay]]--; if (AmoebaCnt[AmoebaNr[ax][ay]] <= 0) /* amoeba is completely dead */ @@ -3870,7 +3893,7 @@ void AmoebeAbleger(int ax, int ay) return; } - DrawLevelField(newax, neway); + DrawNewLevelField(newax, neway); } void Life(int ax, int ay) @@ -3922,7 +3945,7 @@ void Life(int ax, int ay) { Feld[xx][yy] = EL_EMPTY; if (!Stop[xx][yy]) - DrawLevelField(xx, yy); + DrawNewLevelField(xx, yy); Stop[xx][yy] = TRUE; changed = TRUE; } @@ -3934,7 +3957,7 @@ void Life(int ax, int ay) Feld[xx][yy] = element; MovDelay[xx][yy] = (element == EL_GAMEOFLIFE ? 0 : life_time-1); if (!Stop[xx][yy]) - DrawLevelField(xx, yy); + DrawNewLevelField(xx, yy); Stop[xx][yy] = TRUE; changed = TRUE; } @@ -3957,7 +3980,15 @@ void RobotWheel(int x, int y) if (MovDelay[x][y]) { if (IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_ABLENK+MovDelay[x][y]%4); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_ROBOT_WHEEL_ACTIVE, -1); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_ROBOT_WHEEL_ACTIVE, frame); + } +#endif if (!(MovDelay[x][y]%4)) PlaySoundLevel(x, y, SND_ROBOT_WHEEL_ACTIVE); return; @@ -3965,7 +3996,7 @@ void RobotWheel(int x, int y) } Feld[x][y] = EL_ROBOT_WHEEL; - DrawLevelField(x, y); + DrawNewLevelField(x, y); if (ZX == x && ZY == y) ZX = ZY = -1; } @@ -3981,8 +4012,16 @@ void TimegateWheel(int x, int y) if (MovDelay[x][y]) { if (IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_TIMEGATE_SWITCH + MovDelay[x][y]%4); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_TIMEGATE_SWITCH_ACTIVE, -1); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_TIMEGATE_SWITCH_ACTIVE, frame); + } +#endif if (!(MovDelay[x][y]%4)) PlaySoundLevel(x, y, SND_TIMEGATE_SWITCH_ACTIVE); return; @@ -3990,17 +4029,21 @@ void TimegateWheel(int x, int y) } Feld[x][y] = EL_TIMEGATE_SWITCH; - DrawLevelField(x, y); + DrawNewLevelField(x, y); if (ZX == x && ZY == y) ZX = ZY = -1; } void Blubber(int x, int y) { - if (y > 0 && IS_MOVING(x, y-1) && MovDir[x][y-1] == MV_DOWN) - DrawLevelField(x, y-1); +#if 0 + if (y > 0 && IS_MOVING(x, y - 1) && MovDir[x][y - 1] == MV_DOWN) + DrawNewLevelField(x, y - 1); else DrawGraphicAnimation(x, y, GFX_GEBLUBBER, 4, 10, ANIM_LOOP); +#else + DrawNewGraphicAnimation(x, y, IMG_ACID); +#endif } void NussKnacken(int x, int y) @@ -4012,13 +4055,22 @@ void NussKnacken(int x, int y) { MovDelay[x][y]--; if (MovDelay[x][y]/2 && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_CRACKINGNUT + 3 - MovDelay[x][y]/2); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_NUT_CRACKING, + 6 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_NUT_CRACKING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = EL_EMERALD; - DrawLevelField(x, y); + DrawNewLevelField(x, y); } } } @@ -4032,22 +4084,37 @@ void BreakingPearl(int x, int y) { MovDelay[x][y]--; if (MovDelay[x][y]/2 && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_PEARL_BREAKING + 4 - MovDelay[x][y]/2); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_PEARL_BREAKING, + 8 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_PEARL_BREAKING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = EL_EMPTY; - DrawLevelField(x, y); + DrawNewLevelField(x, y); } } } -void SiebAktivieren(int x, int y, int typ) +void SiebAktivieren(int x, int y, int type) { - int graphic = (typ == 1 ? GFX_MAGIC_WALL_FULL : GFX_MAGIC_WALL_BD_FULL) + 3; +#if 0 + int graphic = (type == 1 ? GFX_MAGIC_WALL_FULL : GFX_MAGIC_WALL_BD_FULL) + 3; DrawGraphicAnimation(x, y, graphic, 4, 4, ANIM_REVERSE); +#else + int graphic = (type == 1 ? IMG_MAGIC_WALL_FULL : IMG_BD_MAGIC_WALL_FULL); + + DrawNewGraphicAnimation(x, y, graphic); +#endif } void AusgangstuerPruefen(int x, int y) @@ -4085,7 +4152,7 @@ void AusgangstuerOeffnen(int x, int y) int delay = 6; if (!MovDelay[x][y]) /* next animation frame */ - MovDelay[x][y] = 5*delay; + MovDelay[x][y] = 5 * delay; if (MovDelay[x][y]) /* wait some time before next frame */ { @@ -4094,19 +4161,32 @@ void AusgangstuerOeffnen(int x, int y) MovDelay[x][y]--; tuer = MovDelay[x][y]/delay; if (!(MovDelay[x][y]%delay) && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_AUSGANG_AUF-tuer); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_EXIT_OPENING, + 29 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_EXIT_OPENING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = EL_EXIT_OPEN; - DrawLevelField(x, y); + DrawNewLevelField(x, y); } } } void AusgangstuerBlinken(int x, int y) { +#if 0 DrawGraphicAnimation(x, y, GFX_AUSGANG_AUF, 4, 4, ANIM_PINGPONG); +#else + DrawNewGraphicAnimation(x, y, IMG_EXIT_OPEN); +#endif } void OpenSwitchgate(int x, int y) @@ -4123,12 +4203,21 @@ void OpenSwitchgate(int x, int y) MovDelay[x][y]--; phase = MovDelay[x][y] / delay; if (!(MovDelay[x][y] % delay) && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_SWITCHGATE_OPEN - phase); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_SWITCHGATE_OPENING, + 29 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_SWITCHGATE_OPENING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = EL_SWITCHGATE_OPEN; - DrawLevelField(x, y); + DrawNewLevelField(x, y); } } } @@ -4147,12 +4236,21 @@ void CloseSwitchgate(int x, int y) MovDelay[x][y]--; phase = MovDelay[x][y] / delay; if (!(MovDelay[x][y] % delay) && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_SWITCHGATE_CLOSED + phase); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_SWITCHGATE_CLOSING, + 29 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_SWITCHGATE_CLOSING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = EL_SWITCHGATE_CLOSED; - DrawLevelField(x, y); + DrawNewLevelField(x, y); } } } @@ -4171,12 +4269,21 @@ void OpenTimegate(int x, int y) MovDelay[x][y]--; phase = MovDelay[x][y] / delay; if (!(MovDelay[x][y] % delay) && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_TIMEGATE_OPEN - phase); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_TIMEGATE_OPENING, + 29 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_TIMEGATE_OPENING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = EL_TIMEGATE_OPEN; - DrawLevelField(x, y); + DrawNewLevelField(x, y); } } } @@ -4195,12 +4302,21 @@ void CloseTimegate(int x, int y) MovDelay[x][y]--; phase = MovDelay[x][y] / delay; if (!(MovDelay[x][y] % delay) && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), GFX_TIMEGATE_CLOSED + phase); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_TIMEGATE_CLOSING, + 29 - MovDelay[x][y]); + + DrawNewGraphic(SCREENX(x), SCREENY(y), IMG_TIMEGATE_CLOSING, frame); + } +#endif if (!MovDelay[x][y]) { Feld[x][y] = EL_TIMEGATE_CLOSED; - DrawLevelField(x, y); + DrawNewLevelField(x, y); } } } @@ -4230,7 +4346,11 @@ void EdelsteinFunkeln(int x, int y) return; if (Feld[x][y] == EL_BD_DIAMOND) +#if 0 DrawGraphicAnimation(x, y, GFX_EDELSTEIN_BD, 4, 4, ANIM_REVERSE); +#else + DrawNewGraphicAnimation(x, y, IMG_BD_DIAMOND); +#endif else { if (!MovDelay[x][y]) /* next animation frame */ @@ -4243,7 +4363,11 @@ void EdelsteinFunkeln(int x, int y) if (setup.direct_draw && MovDelay[x][y]) SetDrawtoField(DRAW_BUFFERED); +#if 0 DrawGraphic(SCREENX(x), SCREENY(y), el2gfx(Feld[x][y])); +#else + DrawNewGraphic(SCREENX(x), SCREENY(y), el2img(Feld[x][y]), 0); +#endif if (MovDelay[x][y]) { @@ -4252,14 +4376,24 @@ void EdelsteinFunkeln(int x, int y) if (phase > 2) phase = 4-phase; +#if 0 DrawGraphicThruMask(SCREENX(x), SCREENY(y), GFX_FUNKELN_WEISS + phase); +#else + { + int frame = getNewGraphicAnimationFrame(IMG_TWINKLE_WHITE, + 10 - MovDelay[x][y]); + + DrawNewGraphicThruMask(SCREENX(x), SCREENY(y), IMG_TWINKLE_WHITE, + frame); + } +#endif if (setup.direct_draw) { int dest_x, dest_y; - dest_x = FX + SCREENX(x)*TILEX; - dest_y = FY + SCREENY(y)*TILEY; + dest_x = FX + SCREENX(x) * TILEX; + dest_y = FY + SCREENY(y) * TILEY; BlitBitmap(drawto_field, window, dest_x, dest_y, TILEX, TILEY, dest_x, dest_y); diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 757872e8..811ef07e 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -1397,6 +1397,7 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, for (i=0; config_list[i].token != NULL; i++) { int len_config_token = strlen(config_list[i].token); + int len_config_value = strlen(config_list[i].value); boolean is_file_entry = TRUE; for (j=0; suffix_list[j].token != NULL; j++) @@ -1419,8 +1420,18 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, if (i > 0) list_pos++; - if (list_pos >= num_file_list_entries) - Error(ERR_EXIT, "inconsistant config list information -- please fix"); + if (list_pos > num_file_list_entries - 1) + break; + + /* simple sanity check if this is really a file definition */ + if (strcmp(&config_list[i].value[len_config_value - 4], ".pcx") != 0 && + strcmp(&config_list[i].value[len_config_value - 4], ".wav") != 0 && + strcmp(config_list[i].value, UNDEFINED_FILENAME) != 0) + { + Error(ERR_RETURN, "Configuration directive '%s' -> '%s':", + config_list[i].token, config_list[i].value); + Error(ERR_EXIT, "This seems to be no valid definition -- please fix"); + } file_list[list_pos].token = config_list[i].token; file_list[list_pos].default_filename = config_list[i].value; diff --git a/src/main.c b/src/main.c index ceb49648..ccd297a6 100644 --- a/src/main.c +++ b/src/main.c @@ -212,6 +212,8 @@ struct ConfigInfo image_config[] = { "bd_diamond.xpos", "0" }, { "bd_diamond.ypos", "10" }, { "bd_diamond.frames", "4" }, + { "bd_diamond.delay", "4" }, + { "bd_diamond.mode_reverse", "1" }, { "bd_diamond.falling", "RocksElements.pcx" }, { "bd_diamond.falling.xpos", "3" }, { "bd_diamond.falling.ypos", "10" }, @@ -738,6 +740,7 @@ struct ConfigInfo image_config[] = { "nut.cracking.xpos", "13" }, { "nut.cracking.ypos", "1" }, { "nut.cracking.frames", "3" }, + { "nut.cracking.delay", "2" }, { "nut.cracking.mode_linear", "1" }, { "dynamite", "RocksElements.pcx" }, @@ -924,22 +927,79 @@ struct ConfigInfo image_config[] = { "amoeba.creating.xpos", "5" }, { "amoeba.creating.ypos", "6" }, { "amoeba.creating.frames", "3" }, - { "amoeba.part1", "RocksElements.pcx" }, - { "amoeba.part1.xpos", "8" }, - { "amoeba.part1.ypos", "6" }, - { "amoeba.part1.frames", "1" }, - { "amoeba.part2", "RocksElements.pcx" }, - { "amoeba.part2.xpos", "9" }, - { "amoeba.part2.ypos", "6" }, - { "amoeba.part2.frames", "1" }, - { "amoeba.part3", "RocksElements.pcx" }, - { "amoeba.part3.xpos", "10" }, - { "amoeba.part3.ypos", "6" }, - { "amoeba.part3.frames", "1" }, - { "amoeba.part4", "RocksElements.pcx" }, - { "amoeba.part4.xpos", "11" }, - { "amoeba.part4.ypos", "6" }, - { "amoeba.part4.frames", "1" }, + { "amoeba.creating.delay", "2" }, + { "amoeba.creating.mode_linear", "1" }, + { "amoeba.shrinking", "RocksElements.pcx" }, + { "amoeba.shrinking.xpos", "5" }, + { "amoeba.shrinking.ypos", "6" }, + { "amoeba.shrinking.frames", "3" }, + { "amoeba.shrinking.delay", "2" }, + { "amoeba.shrinking.mode_linear", "1" }, + { "amoeba.shrinking.mode_reverse", "1" }, + { "amoeba_wet", "RocksElements.pcx" }, + { "amoeba_wet.xpos", "8" }, + { "amoeba_wet.ypos", "6" }, + { "amoeba_wet.frames", "1" }, + { "amoeba_wet.part1", "RocksElements.pcx" }, + { "amoeba_wet.part1.xpos", "8" }, + { "amoeba_wet.part1.ypos", "6" }, + { "amoeba_wet.part1.frames", "1" }, + { "amoeba_wet.part2", "RocksElements.pcx" }, + { "amoeba_wet.part2.xpos", "9" }, + { "amoeba_wet.part2.ypos", "6" }, + { "amoeba_wet.part2.frames", "1" }, + { "amoeba_wet.part3", "RocksElements.pcx" }, + { "amoeba_wet.part3.xpos", "10" }, + { "amoeba_wet.part3.ypos", "6" }, + { "amoeba_wet.part3.frames", "1" }, + { "amoeba_wet.part4", "RocksElements.pcx" }, + { "amoeba_wet.part4.xpos", "11" }, + { "amoeba_wet.part4.ypos", "6" }, + { "amoeba_wet.part4.frames", "1" }, + { "amoeba_dry", "RocksElements.pcx" }, + { "amoeba_dry.xpos", "8" }, + { "amoeba_dry.ypos", "6" }, + { "amoeba_dry.frames", "1" }, + { "amoeba_dry.part1", "RocksElements.pcx" }, + { "amoeba_dry.part1.xpos", "8" }, + { "amoeba_dry.part1.ypos", "6" }, + { "amoeba_dry.part1.frames", "1" }, + { "amoeba_dry.part2", "RocksElements.pcx" }, + { "amoeba_dry.part2.xpos", "9" }, + { "amoeba_dry.part2.ypos", "6" }, + { "amoeba_dry.part2.frames", "1" }, + { "amoeba_dry.part3", "RocksElements.pcx" }, + { "amoeba_dry.part3.xpos", "10" }, + { "amoeba_dry.part3.ypos", "6" }, + { "amoeba_dry.part3.frames", "1" }, + { "amoeba_dry.part4", "RocksElements.pcx" }, + { "amoeba_dry.part4.xpos", "11" }, + { "amoeba_dry.part4.ypos", "6" }, + { "amoeba_dry.part4.frames", "1" }, + { "amoeba_full", "RocksElements.pcx" }, + { "amoeba_full.xpos", "8" }, + { "amoeba_full.ypos", "6" }, + { "amoeba_full.frames", "1" }, + { "amoeba_full.part1", "RocksElements.pcx" }, + { "amoeba_full.part1.xpos", "8" }, + { "amoeba_full.part1.ypos", "6" }, + { "amoeba_full.part1.frames", "1" }, + { "amoeba_full.part2", "RocksElements.pcx" }, + { "amoeba_full.part2.xpos", "9" }, + { "amoeba_full.part2.ypos", "6" }, + { "amoeba_full.part2.frames", "1" }, + { "amoeba_full.part3", "RocksElements.pcx" }, + { "amoeba_full.part3.xpos", "10" }, + { "amoeba_full.part3.ypos", "6" }, + { "amoeba_full.part3.frames", "1" }, + { "amoeba_full.part4", "RocksElements.pcx" }, + { "amoeba_full.part4.xpos", "11" }, + { "amoeba_full.part4.ypos", "6" }, + { "amoeba_full.part4.frames", "1" }, + { "amoeba_dead", "RocksElements.pcx" }, + { "amoeba_dead.xpos", "12" }, + { "amoeba_dead.ypos", "6" }, + { "amoeba_dead.frames", "1" }, { "amoeba_dead.part1", "RocksElements.pcx" }, { "amoeba_dead.part1.xpos", "12" }, { "amoeba_dead.part1.ypos", "6" }, @@ -1012,13 +1072,16 @@ struct ConfigInfo image_config[] = { "exit_closed.ypos", "11" }, { "exit_closed.frames", "1" }, { "exit.opening", "RocksElements.pcx" }, - { "exit.opening.xpos", "1" }, + { "exit.opening.xpos", "0" }, { "exit.opening.ypos", "11" }, - { "exit.opening.frames", "4" }, + { "exit.opening.frames", "5" }, + { "exit.opening.delay", "6" }, + { "exit.opening.mode_linear", "1" }, { "exit_open", "RocksElements.pcx" }, { "exit_open.xpos", "4" }, { "exit_open.ypos", "11" }, { "exit_open.frames", "4" }, + { "exit_open.delay", "4" }, { "exit_open.mode_pingpong", "1" }, /* images for Emerald Mine Club style elements and actions */ @@ -1379,6 +1442,7 @@ struct ConfigInfo image_config[] = { "switchgate.opening.xpos", "8" }, { "switchgate.opening.ypos", "5" }, { "switchgate.opening.frames", "5" }, + { "switchgate.opening.delay", "6" }, { "switchgate_open", "RocksDC.pcx" }, { "switchgate_open.xpos", "12" }, { "switchgate_open.ypos", "5" }, @@ -1387,6 +1451,7 @@ struct ConfigInfo image_config[] = { "switchgate.closing.xpos", "8" }, { "switchgate.closing.ypos", "5" }, { "switchgate.closing.frames", "5" }, + { "switchgate.closing.delay", "6" }, { "switchgate.closing.mode_reverse", "1" }, { "timegate_closed", "RocksDC.pcx" }, @@ -1397,6 +1462,7 @@ struct ConfigInfo image_config[] = { "timegate.opening.xpos", "8" }, { "timegate.opening.ypos", "6" }, { "timegate.opening.frames", "5" }, + { "timegate.opening.delay", "6" }, { "timegate_open", "RocksDC.pcx" }, { "timegate_open.xpos", "12" }, { "timegate_open.ypos", "6" }, @@ -1405,6 +1471,7 @@ struct ConfigInfo image_config[] = { "timegate.closing.xpos", "8" }, { "timegate.closing.ypos", "6" }, { "timegate.closing.frames", "5" }, + { "timegate.closing.delay", "6" }, { "timegate.closing.mode_reverse", "1" }, { "pearl", "RocksMore.pcx" }, @@ -1415,6 +1482,7 @@ struct ConfigInfo image_config[] = { "pearl.breaking.xpos", "0" }, { "pearl.breaking.ypos", "4" }, { "pearl.breaking.frames", "4" }, + { "pearl.breaking.delay", "2" }, { "pearl.breaking.mode_linear", "4" }, { "crystal", "RocksMore.pcx" }, @@ -2371,14 +2439,16 @@ struct ConfigInfo image_config[] = { "explosion.frames", "8" }, { "twinkle_blue", "RocksHeroes.pcx" }, - { "twinkle_blue.xpos", "8" }, + { "twinkle_blue.xpos", "9" }, { "twinkle_blue.ypos", "11" }, { "twinkle_blue.frames", "3" }, + { "twinkle_blue.delay", "2" }, { "twinkle_blue.mode_pingpong", "1" }, { "twinkle_white", "RocksHeroes.pcx" }, - { "twinkle_white.xpos", "8" }, + { "twinkle_white.xpos", "13" }, { "twinkle_white.ypos", "11" }, { "twinkle_white.frames", "3" }, + { "twinkle_white.delay", "2" }, { "twinkle_white.mode_pingpong", "1" }, { "steelwall_topleft", "RocksElements.pcx" }, diff --git a/src/main.h b/src/main.h index 0afb5dbb..b3b27379 100644 --- a/src/main.h +++ b/src/main.h @@ -725,23 +725,27 @@ #define EL_BD_AMOEBA_PART2 (EL_FIRST_DUMMY + 14) #define EL_BD_AMOEBA_PART3 (EL_FIRST_DUMMY + 15) #define EL_BD_AMOEBA_PART4 (EL_FIRST_DUMMY + 16) -#define EL_AMOEBA_PART1 (EL_FIRST_DUMMY + 17) -#define EL_AMOEBA_PART2 (EL_FIRST_DUMMY + 18) -#define EL_AMOEBA_PART3 (EL_FIRST_DUMMY + 19) -#define EL_AMOEBA_PART4 (EL_FIRST_DUMMY + 20) -#define EL_AMOEBA_DEAD_PART1 (EL_FIRST_DUMMY + 21) -#define EL_AMOEBA_DEAD_PART2 (EL_FIRST_DUMMY + 22) -#define EL_AMOEBA_DEAD_PART3 (EL_FIRST_DUMMY + 23) -#define EL_AMOEBA_DEAD_PART4 (EL_FIRST_DUMMY + 24) -#define EL_DYNABOMB_ACTIVE (EL_FIRST_DUMMY + 25) -#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 26) -#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 27) -#define EL_ARROW_RED_LEFT (EL_FIRST_DUMMY + 28) -#define EL_ARROW_RED_RIGHT (EL_FIRST_DUMMY + 29) -#define EL_ARROW_RED_UP (EL_FIRST_DUMMY + 30) -#define EL_ARROW_RED_DOWN (EL_FIRST_DUMMY + 31) - -#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 32) +#define EL_AMOEBA_WET_PART1 (EL_FIRST_DUMMY + 17) +#define EL_AMOEBA_WET_PART2 (EL_FIRST_DUMMY + 18) +#define EL_AMOEBA_WET_PART3 (EL_FIRST_DUMMY + 19) +#define EL_AMOEBA_WET_PART4 (EL_FIRST_DUMMY + 20) +#define EL_AMOEBA_DRY_PART1 (EL_FIRST_DUMMY + 21) +#define EL_AMOEBA_DRY_PART2 (EL_FIRST_DUMMY + 22) +#define EL_AMOEBA_DRY_PART3 (EL_FIRST_DUMMY + 23) +#define EL_AMOEBA_DRY_PART4 (EL_FIRST_DUMMY + 24) +#define EL_AMOEBA_DEAD_PART1 (EL_FIRST_DUMMY + 25) +#define EL_AMOEBA_DEAD_PART2 (EL_FIRST_DUMMY + 26) +#define EL_AMOEBA_DEAD_PART3 (EL_FIRST_DUMMY + 27) +#define EL_AMOEBA_DEAD_PART4 (EL_FIRST_DUMMY + 28) +#define EL_DYNABOMB_ACTIVE (EL_FIRST_DUMMY + 29) +#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 30) +#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 31) +#define EL_ARROW_RED_LEFT (EL_FIRST_DUMMY + 32) +#define EL_ARROW_RED_RIGHT (EL_FIRST_DUMMY + 33) +#define EL_ARROW_RED_UP (EL_FIRST_DUMMY + 34) +#define EL_ARROW_RED_DOWN (EL_FIRST_DUMMY + 35) + +#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 36) /* game graphics: diff --git a/src/tools.c b/src/tools.c index 37a01c4d..ebc8cb6d 100644 --- a/src/tools.c +++ b/src/tools.c @@ -767,7 +767,11 @@ void DrawNewGraphicAnimationExt(int x, int y, int graphic, int mask_mode) { int delay = new_graphic_info[graphic].anim_delay; +#if 0 if (!(FrameCounter % delay) && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#else + if (IN_SCR_FIELD(SCREENX(x), SCREENY(y))) +#endif { int frame = getNewGraphicAnimationFrame(graphic, -1); @@ -1468,6 +1472,21 @@ void DrawScreenElementExt(int x, int y, int dx, int dy, int element, DrawGraphic(x, y, graphic); } +inline static int getFramePosition(int x, int y) +{ + int element = Feld[x][y]; + int frame_pos = -1; + + if (element == EL_QUICKSAND_FULL || + element == EL_MAGIC_WALL_FULL || + element == EL_BD_MAGIC_WALL_FULL) + frame_pos = -1; + else if (IS_MOVING(x, y) || CAN_MOVE(element) || CAN_FALL(element)) + frame_pos = ABS(MovPos[x][y]) / (TILEX / 8); + + return frame_pos; +} + inline static int getGfxAction(int x, int y) { int gfx_action = GFX_ACTION_DEFAULT; @@ -1485,7 +1504,7 @@ void DrawNewScreenElementExt(int x, int y, int dx, int dy, int element, { int ux = LEVELX(x), uy = LEVELY(y); int move_dir = MovDir[ux][uy]; - int move_pos = ABS(MovPos[ux][uy]) / (TILEX / 8); + int move_pos = getFramePosition(ux, uy); int gfx_action = getGfxAction(ux, uy); int graphic = el_dir_act2img(element, move_dir, gfx_action); int frame = getNewGraphicAnimationFrame(graphic, move_pos); @@ -1494,9 +1513,9 @@ void DrawNewScreenElementExt(int x, int y, int dx, int dy, int element, { boolean left_stopped = FALSE, right_stopped = FALSE; - if (!IN_LEV_FIELD(ux-1, uy) || IS_MAUER(Feld[ux-1][uy])) + if (!IN_LEV_FIELD(ux - 1, uy) || IS_MAUER(Feld[ux - 1][uy])) left_stopped = TRUE; - if (!IN_LEV_FIELD(ux+1, uy) || IS_MAUER(Feld[ux+1][uy])) + if (!IN_LEV_FIELD(ux + 1, uy) || IS_MAUER(Feld[ux + 1][uy])) right_stopped = TRUE; if (left_stopped && right_stopped) @@ -1531,12 +1550,17 @@ void DrawNewScreenElementExt(int x, int y, int dx, int dy, int element, graphic += phase2; } } +#endif else if (IS_AMOEBOID(element) || element == EL_AMOEBA_DRIPPING) { - graphic = (element == EL_AMOEBA_DEAD ? GFX_AMOEBE_TOT : GFX_AMOEBE_LEBT); + graphic = (element == EL_BD_AMOEBA ? IMG_BD_AMOEBA_PART1 : + element == EL_AMOEBA_WET ? IMG_AMOEBA_WET_PART1 : + element == EL_AMOEBA_DRY ? IMG_AMOEBA_DRY_PART1 : + element == EL_AMOEBA_FULL ? IMG_AMOEBA_FULL_PART1 : + IMG_AMOEBA_DEAD_PART1); + graphic += (x + 2 * y + 4) % 4; } -#endif if (dx || dy) DrawNewGraphicShifted(x, y, dx, dy, graphic, frame, cut_mode, mask_mode); -- 2.34.1