Fix a bug (probably)
This commit is contained in:
parent
ddc4f5b6ad
commit
ec084222f1
4 changed files with 14 additions and 19 deletions
4
TODO.txt
4
TODO.txt
|
@ -59,14 +59,14 @@
|
||||||
|
|
||||||
=========== BUGS =================
|
=========== BUGS =================
|
||||||
|
|
||||||
- sometimes getting a SLIGHTLY slower time counts as beating it (prolly
|
|
||||||
conversion fail)
|
|
||||||
- immediately after starting the map countdown seems to be lower
|
- immediately after starting the map countdown seems to be lower
|
||||||
- the pinch collision test seems to sometimes stop the car e.g. after falling
|
- the pinch collision test seems to sometimes stop the car e.g. after falling
|
||||||
from bigger height or when running into ramp at high speed (or not?) - FIX
|
from bigger height or when running into ramp at high speed (or not?) - FIX
|
||||||
|
|
||||||
=========== HANDLED ==============
|
=========== HANDLED ==============
|
||||||
|
|
||||||
|
- sometimes getting a SLIGHTLY slower time counts as beating it (prolly
|
||||||
|
conversion fail) (SEEMS FIXED NOW)
|
||||||
- replay format should probably record game version
|
- replay format should probably record game version
|
||||||
- also there should probably be some version system that says version of
|
- also there should probably be some version system that says version of
|
||||||
physics vs version of everything else; replay could only record physics
|
physics vs version of everything else; replay could only record physics
|
||||||
|
|
18
game.h
18
game.h
|
@ -279,7 +279,7 @@ struct
|
||||||
during a single frame, hold number of
|
during a single frame, hold number of
|
||||||
frames for which the key has been
|
frames for which the key has been
|
||||||
continuously held. */
|
continuously held. */
|
||||||
uint32_t runTimeMS; ///< Current time of the run
|
uint32_t runTime; ///< Current time of the run, in ticks.
|
||||||
|
|
||||||
char popupStr[LCR_POPUP_STR_SIZE];
|
char popupStr[LCR_POPUP_STR_SIZE];
|
||||||
uint8_t popupCountdown;
|
uint8_t popupCountdown;
|
||||||
|
@ -424,7 +424,7 @@ void LCR_gameResetRun(uint8_t replay, uint8_t ghost)
|
||||||
LCR_rendererLoadMapChunks();
|
LCR_rendererLoadMapChunks();
|
||||||
LCR_game.ghost.active = ghost;
|
LCR_game.ghost.active = ghost;
|
||||||
LCR_gameSetState(LCR_GAME_STATE_RUN_STARTING);
|
LCR_gameSetState(LCR_GAME_STATE_RUN_STARTING);
|
||||||
LCR_game.runTimeMS = 0;
|
LCR_game.runTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LCR_gameGetNthGhostSample(unsigned int n,
|
void LCR_gameGetNthGhostSample(unsigned int n,
|
||||||
|
@ -1129,7 +1129,7 @@ void LCR_gameDraw3DView(void)
|
||||||
LCR_rendererComputeTextWidth(str,2) - 20,
|
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_gameTimeToStr(LCR_timeTicksToMS(LCR_game.runTime),str);
|
||||||
|
|
||||||
if (LCR_game.state != LCR_GAME_STATE_RUN_FINISHED)
|
if (LCR_game.state != LCR_GAME_STATE_RUN_FINISHED)
|
||||||
LCR_rendererDrawText(str,20,LCR_EFFECTIVE_RESOLUTION_Y -
|
LCR_rendererDrawText(str,20,LCR_EFFECTIVE_RESOLUTION_Y -
|
||||||
|
@ -1138,7 +1138,7 @@ void LCR_gameDraw3DView(void)
|
||||||
LCR_rendererDrawText(str,((LCR_EFFECTIVE_RESOLUTION_X -
|
LCR_rendererDrawText(str,((LCR_EFFECTIVE_RESOLUTION_X -
|
||||||
LCR_rendererComputeTextWidth(str,4)) / 2),
|
LCR_rendererComputeTextWidth(str,4)) / 2),
|
||||||
LCR_EFFECTIVE_RESOLUTION_Y / 2,
|
LCR_EFFECTIVE_RESOLUTION_Y / 2,
|
||||||
LCR_game.runTimeMS <= LCR_currentMap.targetTime * LCR_RACING_TICK_MS ?
|
LCR_game.runTime <= LCR_currentMap.targetTime ?
|
||||||
0x0700 : 0x4208,4);
|
0x0700 : 0x4208,4);
|
||||||
|
|
||||||
LCR_gameTimeToStr(LCR_currentMap.targetTime * LCR_RACING_TICK_MS,str);
|
LCR_gameTimeToStr(LCR_currentMap.targetTime * LCR_RACING_TICK_MS,str);
|
||||||
|
@ -1178,11 +1178,11 @@ void LCR_gameHandleInput(void)
|
||||||
{
|
{
|
||||||
if (LCR_game.keyStates[LCR_KEY_A] == 1)
|
if (LCR_game.keyStates[LCR_KEY_A] == 1)
|
||||||
{
|
{
|
||||||
if (LCR_game.runTimeMS <= LCR_currentMap.targetTime * LCR_RACING_TICK_MS
|
if (LCR_game.runTime <= LCR_currentMap.targetTime
|
||||||
&& !LCR_game.ghost.active)
|
&& !LCR_game.ghost.active)
|
||||||
{
|
{
|
||||||
LCR_LOG1("setting new target time");
|
LCR_LOG1("setting new target time");
|
||||||
LCR_currentMap.targetTime = LCR_game.runTimeMS / LCR_RACING_TICK_MS;
|
LCR_currentMap.targetTime = LCR_game.runTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
LCR_gameResetRun(LCR_racing.playingReplay,LCR_game.ghost.active);
|
LCR_gameResetRun(LCR_racing.playingReplay,LCR_game.ghost.active);
|
||||||
|
@ -1456,7 +1456,7 @@ uint8_t LCR_gameStep(uint32_t time)
|
||||||
LCR_racingGetCarBlockCoords(carBlock);
|
LCR_racingGetCarBlockCoords(carBlock);
|
||||||
LCR_rendererMarkTakenCP(carBlock[0],carBlock[1],carBlock[2]);
|
LCR_rendererMarkTakenCP(carBlock[0],carBlock[1],carBlock[2]);
|
||||||
LCR_audioPlaySound(LCR_SOUND_CLICK);
|
LCR_audioPlaySound(LCR_SOUND_CLICK);
|
||||||
LCR_gameTimeToStr(LCR_game.runTimeMS,str);
|
LCR_gameTimeToStr(LCR_timeTicksToMS(LCR_game.runTime),str);
|
||||||
LCR_gamePopupMessage(str);
|
LCR_gamePopupMessage(str);
|
||||||
}
|
}
|
||||||
else if (events & LCR_RACING_EVENT_FINISHED &&
|
else if (events & LCR_RACING_EVENT_FINISHED &&
|
||||||
|
@ -1464,7 +1464,7 @@ uint8_t LCR_gameStep(uint32_t time)
|
||||||
{
|
{
|
||||||
LCR_LOG1("finished");
|
LCR_LOG1("finished");
|
||||||
|
|
||||||
if (LCR_game.runTimeMS <= LCR_currentMap.targetTime * LCR_RACING_TICK_MS)
|
if (LCR_game.runTime <= LCR_currentMap.targetTime)
|
||||||
LCR_gameSaveReplay();
|
LCR_gameSaveReplay();
|
||||||
|
|
||||||
LCR_audioPlaySound(LCR_SOUND_CLICK);
|
LCR_audioPlaySound(LCR_SOUND_CLICK);
|
||||||
|
@ -1492,7 +1492,7 @@ uint8_t LCR_gameStep(uint32_t time)
|
||||||
(engineIntensity < 256 ? engineIntensity : 255));
|
(engineIntensity < 256 ? engineIntensity : 255));
|
||||||
|
|
||||||
if (LCR_game.state != LCR_GAME_STATE_RUN_FINISHED)
|
if (LCR_game.state != LCR_GAME_STATE_RUN_FINISHED)
|
||||||
LCR_game.runTimeMS = LCR_racingGetRunTimeMS();
|
LCR_game.runTime = LCR_racing.tick;
|
||||||
|
|
||||||
LCR_game.nextRacingTickTime += LCR_RACING_TICK_MS;
|
LCR_game.nextRacingTickTime += LCR_RACING_TICK_MS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,9 +141,7 @@ and/or flipped. Additionally each block also has a material (concrete, grass,
|
||||||
...). The finish, checkpoints and car start position can also be seen as block.
|
...). The finish, checkpoints and car start position can also be seen as block.
|
||||||
|
|
||||||
The format of the map data string is described in the map.h file, refer to it
|
The format of the map data string is described in the map.h file, refer to it
|
||||||
for further detail. In short: TODO
|
for details. In short: TODO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Under the asset directory there is a helper file for Blender (a FOSS 3D editor)
|
Under the asset directory there is a helper file for Blender (a FOSS 3D editor)
|
||||||
with which a map layout can be comfortably created. But Blender is not required
|
with which a map layout can be comfortably created. But Blender is not required
|
||||||
|
|
7
racing.h
7
racing.h
|
@ -144,12 +144,9 @@ struct
|
||||||
} replay;
|
} replay;
|
||||||
} LCR_racing;
|
} LCR_racing;
|
||||||
|
|
||||||
/**
|
uint32_t LCR_timeTicksToMS(uint32_t ticks)
|
||||||
Gets times of the run in milliseconds.
|
|
||||||
*/
|
|
||||||
uint32_t LCR_racingGetRunTimeMS()
|
|
||||||
{
|
{
|
||||||
return LCR_racing.tick * LCR_RACING_TICK_MS;
|
return ticks * LCR_RACING_TICK_MS;
|
||||||
}
|
}
|
||||||
|
|
||||||
TPE_Vec3 _LCR_TPE_vec3DividePlain(TPE_Vec3 v, TPE_Unit d)
|
TPE_Vec3 _LCR_TPE_vec3DividePlain(TPE_Vec3 v, TPE_Unit d)
|
||||||
|
|
Loading…
Reference in a new issue