game_status == GAME_MODE_LOADING ?
&init_last.busy :
&init_last.busy_playfield);
- static unsigned int action_delay = 0;
- unsigned int action_delay_value = GameFrameDelay;
+ static DelayCounter action_delay = { 0 };
int sync_frame = FrameCounter;
int x, y;
+ action_delay.value = GameFrameDelay;
+
// prevent OS (Windows) from complaining about program not responding
CheckQuitEvent();
if (image_initial[graphic].bitmap == NULL || window == NULL)
return;
- if (!DelayReached(&action_delay, action_delay_value))
+ if (!DelayReached(&action_delay))
return;
if (busy->x == -1)
// special compatibility handling for "Jue" graphics sets (2007 and 2019)
boolean supports_score_info = (menu.draw_xoffset[GAME_MODE_SCOREINFO] != 0);
- if (strPrefix(leveldir_current->graphics_set, "jue") && !supports_score_info)
+ if (strPrefix(artwork.gfx_current_identifier, "jue") && !supports_score_info)
{
int font_title[] =
{
{
for (j = 0; j < 2; j++)
{
- boolean jue0 = strEqual(leveldir_current->graphics_set, "jue0");
+ boolean jue0 = strEqual(artwork.gfx_current_identifier, "jue0");
int font_nr = (j == 0 ? font_text[i] : FONT_ACTIVE(font_text[i]));
int font_bitmap_id = font_info[font_nr].special_bitmap_id[mode_old];
int font_yoffset = (jue0 ? 10 : 5);
#endif
}
-static char *getNewArtworkIdentifier(int type)
+static char *setNewArtworkIdentifier(int type)
{
static char *last_leveldir_identifier[3] = { NULL, NULL, NULL };
static char *last_artwork_identifier[3] = { NULL, NULL, NULL };
// (we cannot compare string pointers here, so copy string content itself)
setString(&last_artwork_identifier[type], artwork_current_identifier);
+ // ---------- set new artwork identifier ----------
*(ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type)) = artwork_current_identifier;
// ---------- do not reload directly after starting -------------------------
return artwork_new_identifier;
}
+static void InitArtworkIdentifier(void)
+{
+ setNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS);
+ setNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS);
+ setNewArtworkIdentifier(ARTWORK_TYPE_MUSIC);
+}
+
void ReloadCustomArtwork(int force_reload)
{
int last_game_status = game_status; // save current game status
AdjustGraphicsForEMC();
AdjustSoundsForEMC();
- gfx_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS);
- snd_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS);
- mus_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_MUSIC);
+ gfx_new_identifier = setNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS);
+ snd_new_identifier = setNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS);
+ mus_new_identifier = setNewArtworkIdentifier(ARTWORK_TYPE_MUSIC);
reload_needed = (gfx_new_identifier != NULL || force_reload_gfx ||
snd_new_identifier != NULL || force_reload_snd ||
UPDATE_BUSY_STATE();
+ InitMissingFileHash();
+
if (gfx_new_identifier != NULL || force_reload_gfx)
{
#if 0
InitSimpleRandom(NEW_RANDOMIZE);
InitBetterRandom(NEW_RANDOMIZE);
+ InitMissingFileHash();
+
print_timestamp_time("[init global stuff]");
InitSetup();
InitOverrideArtwork(); // needs to know current level directory
print_timestamp_time("InitOverrideArtwork");
+ InitArtworkIdentifier(); // needs to know current level directory
+ print_timestamp_time("InitArtworkIdentifier");
+
InitImages(); // needs to know current level directory
print_timestamp_time("InitImages");
static boolean WaitForApiThreads(void)
{
- unsigned int thread_delay = 0;
- unsigned int thread_delay_value = 10000;
+ DelayCounter thread_delay = { 10000 };
if (program.api_thread_count == 0)
return TRUE;
// wait for threads to finish (and fail on timeout)
while (program.api_thread_count > 0)
{
- if (DelayReached(&thread_delay, thread_delay_value))
+ if (DelayReached(&thread_delay))
{
Error("failed waiting for threads - TIMEOUT");