Fix replay and ghost

This commit is contained in:
Miloslav Ciz 2025-01-31 15:55:01 +01:00
parent 2ff43a0d1a
commit 1f0d3587f6
4 changed files with 39 additions and 30 deletions

41
game.h
View file

@ -1013,14 +1013,14 @@ void LCR_gameDraw3DView(void)
LCR_rendererSetCarTransform(carTransform,carTransform + 3);
if (LCR_game.ghost.active)
{
LCR_rendererSetGhostVisibility(1);
LCR_gameGhostGetTransform(LCR_racing.tick,carTransform,carTransform + 3);
LCR_rendererSetGhostTransform(carTransform,carTransform + 3);
}
else
LCR_rendererSetGhostVisibility(0);
if (LCR_game.ghost.active)
{
LCR_rendererSetGhostVisibility(1);
LCR_gameGhostGetTransform(LCR_racing.tick,carTransform,carTransform + 3);
LCR_rendererSetGhostTransform(carTransform,carTransform + 3);
}
else
LCR_rendererSetGhostVisibility(0);
if (LCR_game.cameraMode != LCR_CAMERA_MODE_FREE &&
LCR_game.state != LCR_GAME_STATE_RUN_FINISHED)
@ -1054,7 +1054,8 @@ else
LCR_rendererDrawText(str,
(LCR_EFFECTIVE_RESOLUTION_X - LCR_rendererComputeTextWidth(str,8)) / 2,
LCR_EFFECTIVE_RESOLUTION_Y / 2,0x0707,8);
LCR_EFFECTIVE_RESOLUTION_Y / 2
,0x0707,8);
break;
default:
@ -1069,18 +1070,23 @@ else
str[2] = '0' + val % 10;
str[3] = 0;
LCR_rendererDrawText(str,
LCR_EFFECTIVE_RESOLUTION_X -
LCR_rendererDrawText(str,LCR_EFFECTIVE_RESOLUTION_X -
LCR_rendererComputeTextWidth(str,2) - 20,
LCR_EFFECTIVE_RESOLUTION_Y -
LCR_rendererComputeTextHeight(2) - 20,0,2);
LCR_EFFECTIVE_RESOLUTION_Y - LCR_rendererComputeTextHeight(2) - 20,0,2);
LCR_gameTimeToStr(LCR_game.runTimeMS,str);
LCR_rendererDrawText(str,20,LCR_EFFECTIVE_RESOLUTION_Y -
LCR_rendererComputeTextHeight(2) - 45,0,2);
if (LCR_game.state != LCR_GAME_STATE_RUN_FINISHED)
LCR_rendererDrawText(str,20,LCR_EFFECTIVE_RESOLUTION_Y -
LCR_rendererComputeTextHeight(2) - 45,0,2);
else
LCR_rendererDrawText(str,((LCR_EFFECTIVE_RESOLUTION_X -
LCR_rendererComputeTextWidth(str,4)) / 2),
LCR_EFFECTIVE_RESOLUTION_Y / 2,
LCR_game.runTimeMS <= LCR_currentMap.targetTime * LCR_RACING_TICK_MS ?
0x0700 : 0x4208,4);
LCR_gameTimeToStr(LCR_currentMap.targetTime,str);
LCR_gameTimeToStr(LCR_currentMap.targetTime * LCR_RACING_TICK_MS,str);
LCR_rendererDrawText(str,20,LCR_EFFECTIVE_RESOLUTION_Y -
LCR_rendererComputeTextHeight(2) - 20,0x4208,2);
@ -1333,7 +1339,10 @@ uint8_t LCR_gameStep(uint32_t time)
LCR_rendererLoadMap();
if (LCR_game.menu.selectedTab == 3)
{
_LCR_gamePrepareGhost();
LCR_currentMap.targetTime = LCR_racing.replay.achievedTime;
}
LCR_gameResetRun(
LCR_game.menu.selectedTab == 2,