Continue menu

This commit is contained in:
Miloslav Ciz 2025-01-07 12:56:40 +01:00
parent c017297e06
commit 6e8badf4b1
4 changed files with 53 additions and 54 deletions

74
game.h
View file

@ -173,6 +173,7 @@ uint8_t LCR_gameGetNextAudioSample(void);
#define LCR_GAME_STATE_RUN_STARTING 0x01
#define LCR_GAME_STATE_RUN 0x02
#define LCR_GAME_STATE_RUN_FINISHED 0x03
#define LCR_GAME_STATE_LOADING_MAP 0x04
#define LCR_GAME_STATE_END 0xff
// TODO: move to consts?
@ -384,8 +385,7 @@ void LCR_gameStartRun(unsigned int mapIndex)
{
LCR_seekResourceByIndex(mapIndex,'M');
LCR_mapLoadFromStr(LCR_gameGetNextResourceStrChar);
LCR_rendererLoadMap();
LCR_gameResetRun();
LCR_gameSetState(LCR_GAME_STATE_LOADING_MAP);
}
void LCR_gameEraseMenuItemNames(void)
@ -410,10 +410,10 @@ void LCR_gameSetMenuItemStr(uint8_t item, const char *str)
void LCR_gameLoadMainMenuItems(void)
{
for (int i = 0; i < 5; ++i)
LCR_gameSetMenuItemStr(i,LCR_texts[4 + i]);
for (int i = 0; i < 5; ++i)
LCR_gameSetMenuItemStr(i,LCR_texts[4 + i]);
LCR_game.menuItemCount = 5;
LCR_game.menuItemCount = 4;
}
void LCR_gameInit(void)
@ -449,8 +449,6 @@ void LCR_gameInit(void)
LCR_currentMap.blockCount = 0; // means no map loaded
}
/**
Loads up to LCR_RESOURCE_ITEM_CHUNK items of given type, starting at given
index (among items of the same type). This will also load the menu item
@ -458,10 +456,10 @@ void LCR_gameInit(void)
*/
void LCR_gameLoadResourceFileChunk(unsigned int startIndex, char magicNumber)
{
char c;
unsigned char state = 0;
char c;
unsigned char state = 0;
LCR_gameEraseMenuItemNames();
LCR_gameEraseMenuItemNames();
LCR_game.resourceFile.firstItemIndex = startIndex;
LCR_game.resourceFile.itemsTotal = 0;
@ -527,9 +525,6 @@ void LCR_gameEnd(void)
LCR_LOG0("ending");
}
void LCR_gameDraw3DView(void)
{
LCR_GameUnit carTransform[6];
@ -745,6 +740,12 @@ uint8_t LCR_gameStep(uint32_t time)
for (int i = 0; i < LCR_KEYS_TOTAL; ++i)
LCR_game.keyStates[i] = LCR_keyPressed(i) ?
(LCR_game.keyStates[i] < 255 ? LCR_game.keyStates[i] + 1 : 255) : 0;
if (LCR_game.state == LCR_GAME_STATE_LOADING_MAP)
{
LCR_rendererLoadMap();
LCR_gameResetRun();
}
LCR_gameHandleInput();
@ -824,7 +825,8 @@ uint8_t LCR_gameStep(uint32_t time)
}
int engineIntensity = LCR_carSpeedKMH() * 2;
LCR_audioSetEngineIntensity(engineIntensity < 256 ? engineIntensity : 255);
LCR_audioSetEngineIntensity(paused ? 0 :
(engineIntensity < 256 ? engineIntensity : 255));
LCR_game.nextRacingTickTime += LCR_RACING_TICK_MS;
}
@ -839,35 +841,11 @@ uint8_t LCR_gameStep(uint32_t time)
while (time >= LCR_game.nextRenderFrameTime)
LCR_game.nextRenderFrameTime += 1000 / LCR_SETTING_FPS;
if (LCR_game.state == LCR_GAME_STATE_MENU)
{
/*
const char *items[LCR_MENU_MAX_ITEMS];
uint8_t itemCount = 1;
items[0] = LCR_texts[LCR_game.menuSelectedTab];
if (LCR_game.menuSelectedTab == 0)
{
for (int i = 0; i < 5; ++i)
items[1 + i] = LCR_texts[4 + i];
itemCount = 6;
}
else
{
for (int i = 0; i < LCR_game.resourceFile.loadedItemCount; ++i)
items[i + 1] = LCR_game.menuItemNames + i * LCR_MENU_STRING_SIZE;
itemCount = LCR_game.resourceFile.loadedItemCount + 1;
}
*/
if (LCR_game.state == LCR_GAME_STATE_MENU ||
LCR_game.state == LCR_GAME_STATE_LOADING_MAP)
LCR_rendererDrawMenu(LCR_texts[LCR_game.menuSelectedTab],
LCR_game.menuItemNamePointers,LCR_game.menuItemCount + 1,
LCR_game.menuSelectedItem);
}
else
LCR_gameDraw3DView();
}
@ -877,6 +855,22 @@ else
sleep = tmp < sleep ? tmp : sleep;
}
if (LCR_game.state == LCR_GAME_STATE_LOADING_MAP)
{
LCR_rendererDrawRect(
LCR_EFFECTIVE_RESOLUTION_X / 8,
LCR_EFFECTIVE_RESOLUTION_Y / 8,
LCR_EFFECTIVE_RESOLUTION_X - LCR_EFFECTIVE_RESOLUTION_X / 4,
LCR_EFFECTIVE_RESOLUTION_Y - LCR_EFFECTIVE_RESOLUTION_Y / 4,
0xffff,0);
LCR_rendererDrawText(LCR_texts[9],
(LCR_EFFECTIVE_RESOLUTION_X -
LCR_rendererComputeTextWidth(LCR_texts[9],4)) / 2,
(LCR_EFFECTIVE_RESOLUTION_Y -
LCR_rendererComputeTextHeight(4)) / 2,0x0000,4);
}
if (sleep)
LCR_sleep(sleep);
else