DrawText(DX_DYNAMITE, DY_DYNAMITE, int2str(value, 3), FONT_TEXT_2);
}
-inline void DrawGameValue_Keys(struct PlayerInfo *player)
+inline void DrawGameValue_Keys(int key[4])
{
int i;
for (i = 0; i < MAX_KEYS; i++)
- if (player->key[i])
+ if (key[i])
DrawMiniGraphicExt(drawto, DX_KEYS + i * MINI_TILEX, DY_KEYS,
el2edimg(EL_KEY_1 + i));
}
}
}
+void DrawAllGameValues(int emeralds, int dynamite, int score, int time,
+ int key_bits)
+{
+ int key[4];
+ int i;
+
+ for (i = 0; i < MAX_KEYS; i++)
+ key[i] = key_bits & (1 << i);
+
+ DrawGameValue_Emeralds(emeralds);
+ DrawGameValue_Dynamite(dynamite);
+ DrawGameValue_Score(score);
+ DrawGameValue_Time(time);
+
+ DrawGameValue_Keys(key);
+}
+
void DrawGameDoorValues()
{
int i;
- DrawGameValue_Level(level_nr);
+ if (level.game_engine_type == GAME_ENGINE_TYPE_EM)
+ {
+ DrawGameDoorValues_EM();
- for (i = 0; i < MAX_PLAYERS; i++)
- DrawGameValue_Keys(&stored_player[i]);
+ return;
+ }
+
+ DrawGameValue_Level(level_nr);
DrawGameValue_Emeralds(local_player->gems_still_needed);
DrawGameValue_Dynamite(local_player->inventory_size);
DrawGameValue_Score(local_player->score);
DrawGameValue_Time(TimeLeft);
-}
-void DrawGameDoorValues_EM(int emeralds, int dynamite, int score, int time)
-{
- DrawGameValue_Emeralds(emeralds);
- DrawGameValue_Dynamite(dynamite);
- DrawGameValue_Score(score);
- DrawGameValue_Time(time);
+ for (i = 0; i < MAX_PLAYERS; i++)
+ DrawGameValue_Keys(stored_player[i].key);
}
static void resolve_group_element(int group_element, int recursion_depth)
#endif
ZX = ZY = -1;
+ ExitX = ExitY = -1;
FrameCounter = 0;
TimeFrames = 0;
}
/* close exit door after last player */
- if ((Feld[ExitX][ExitY] == EL_EXIT_OPEN ||
- Feld[ExitX][ExitY] == EL_SP_EXIT_OPEN) && AllPlayersGone)
+ if (AllPlayersGone && ExitX >= 0 && ExitY >= 0 &&
+ (Feld[ExitX][ExitY] == EL_EXIT_OPEN ||
+ Feld[ExitX][ExitY] == EL_SP_EXIT_OPEN))
{
int element = Feld[ExitX][ExitY];
}
/* Hero disappears */
- DrawLevelField(ExitX, ExitY);
+ if (ExitX >= 0 && ExitY >= 0)
+ DrawLevelField(ExitX, ExitY);
+
BackToFront();
if (tape.playing)
player->key[key_nr] = TRUE;
- DrawGameValue_Keys(player);
+ DrawGameValue_Keys(player->key);
redraw_mask |= REDRAW_DOOR_1;
}
break;
case SAMPLE_slurp:
- PlayLevelSoundElementAction(x, y, element, ACTION_DYING);
+ PlayLevelSoundElementAction(x, y, element, ACTION_SLURPED_BY_SPRING);
break;
case SAMPLE_eater:
break;
case SAMPLE_squash:
- PlayLevelSoundElementAction(x, y, element, ACTION_BREAKING);
+ PlayLevelSoundElementAction(x, y, element, ACTION_SMASHED_BY_ROCK);
break;
case SAMPLE_wonderfall:
break;
case SAMPLE_wheel:
- PlaySoundStereo(SND_MAGIC_WALL_ACTIVE, SOUND_MIDDLE);
+ PlayLevelSound(x, y, SND_ROBOT_WHEEL_ACTIVE);
break;
case SAMPLE_boom: