X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=9f2a61f39bae0069976c9587c3d908289051250f;hb=328e3b0f53ca41e626fda33427f5c51325bc700b;hp=49f06aa32272c5f77c13e0de6584d78411a23561;hpb=9991027ba0e61f105a15d517461614fce184ba48;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index 49f06aa3..9f2a61f3 100644 --- a/src/tape.c +++ b/src/tape.c @@ -453,12 +453,16 @@ void TapeDeactivateDisplayOff(boolean redraw_display) /* tape control functions */ /* ========================================================================= */ -static void TapeSetDate() +void TapeSetDateFromEpochSeconds(time_t epoch_seconds) { - time_t epoch_seconds = time(NULL); - struct tm *now = localtime(&epoch_seconds); + struct tm *lt = localtime(&epoch_seconds); - tape.date = 10000 * (now->tm_year % 100) + 100 * now->tm_mon + now->tm_mday; + tape.date = 10000 * (lt->tm_year % 100) + 100 * lt->tm_mon + lt->tm_mday; +} + +void TapeSetDateFromNow() +{ + TapeSetDateFromEpochSeconds(time(NULL)); } void TapeErase() @@ -481,7 +485,7 @@ void TapeErase() tape.game_version = GAME_VERSION_ACTUAL; tape.engine_version = level.game_version; - TapeSetDate(); + TapeSetDateFromNow(); for (i = 0; i < MAX_PLAYERS; i++) tape.player_participates[i] = FALSE; @@ -562,7 +566,7 @@ static void TapeAppendRecording() tape.recording = TRUE; tape.changed = TRUE; - TapeSetDate(); + TapeSetDateFromNow(); DrawVideoDisplay(VIDEO_STATE_DATE_ON, tape.date); DrawVideoDisplay(VIDEO_STATE_PLAY_OFF | VIDEO_STATE_REC_ON, 0); @@ -1295,10 +1299,8 @@ void UnmapTapeButtons() UnmapGadget(tape_gadget[i]); } -static void HandleTapeButtons(struct GadgetInfo *gi) +static void HandleTapeButtonsExt(int id) { - int id = gi->custom_id; - if (game_status != GAME_MODE_MAIN && game_status != GAME_MODE_PLAYING) return; @@ -1403,3 +1405,24 @@ static void HandleTapeButtons(struct GadgetInfo *gi) break; } } + +static void HandleTapeButtons(struct GadgetInfo *gi) +{ + HandleTapeButtonsExt(gi->custom_id); +} + +void HandleTapeButtonKeys(Key key) +{ + boolean use_extra = (tape.recording || tape.playing); + + if (key == setup.shortcut.tape_eject) + HandleTapeButtonsExt(use_extra ? TAPE_CTRL_ID_EXTRA : TAPE_CTRL_ID_EJECT); + else if (key == setup.shortcut.tape_stop) + HandleTapeButtonsExt(TAPE_CTRL_ID_STOP); + else if (key == setup.shortcut.tape_pause) + HandleTapeButtonsExt(TAPE_CTRL_ID_PAUSE); + else if (key == setup.shortcut.tape_record) + HandleTapeButtonsExt(TAPE_CTRL_ID_RECORD); + else if (key == setup.shortcut.tape_play) + HandleTapeButtonsExt(TAPE_CTRL_ID_PLAY); +}