Continue arguments
This commit is contained in:
parent
c57ede96c9
commit
bf06697917
2 changed files with 58 additions and 12 deletions
2
assets.h
2
assets.h
|
@ -44,6 +44,8 @@ static const char *LCR_texts[] =
|
||||||
"loading"
|
"loading"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TODO: define string for CLI arguments for frontends?
|
||||||
|
|
||||||
static const char *LCR_internalDataFile =
|
static const char *LCR_internalDataFile =
|
||||||
"Mtestmap;"
|
"Mtestmap;"
|
||||||
"52123 1 :*H1k0"
|
"52123 1 :*H1k0"
|
||||||
|
|
62
game.h
62
game.h
|
@ -576,6 +576,29 @@ char LCR_gameGetNextDataStrChar(void)
|
||||||
return c != LCR_RESOURCE_FILE_SEPARATOR ? c : 0;
|
return c != LCR_RESOURCE_FILE_SEPARATOR ? c : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int LCR_countData(char magicNumber)
|
||||||
|
{
|
||||||
|
unsigned int result = 0;
|
||||||
|
|
||||||
|
LCR_gameRewindDataFile();
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
char c = LCR_gameGetNextDataFileChar();
|
||||||
|
|
||||||
|
if (c == magicNumber)
|
||||||
|
result++;
|
||||||
|
|
||||||
|
while (c != 0 && c != LCR_RESOURCE_FILE_SEPARATOR)
|
||||||
|
c = LCR_gameGetNextDataFileChar();
|
||||||
|
|
||||||
|
if (c == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Seeks to the Nth data string in the global data file, after the magic number,
|
Seeks to the Nth data string in the global data file, after the magic number,
|
||||||
so that the name is now available for reading.
|
so that the name is now available for reading.
|
||||||
|
@ -761,9 +784,12 @@ void LCR_gameInit(int argc, const char **argv)
|
||||||
LCR_game.nextRenderFrameTime = 0;
|
LCR_game.nextRenderFrameTime = 0;
|
||||||
LCR_game.nextRacingTickTime = 0;
|
LCR_game.nextRacingTickTime = 0;
|
||||||
LCR_game.cameraMode = LCR_CAMERA_MODE_DRIVE;
|
LCR_game.cameraMode = LCR_CAMERA_MODE_DRIVE;
|
||||||
|
LCR_currentMap.blockCount = 0; // means no map loaded
|
||||||
|
|
||||||
LCR_LOG2("parsing arguments");
|
LCR_LOG2("parsing arguments");
|
||||||
|
|
||||||
|
uint8_t quickLoad = 0;
|
||||||
|
|
||||||
while (argc) // parse arguments
|
while (argc) // parse arguments
|
||||||
{
|
{
|
||||||
argc--;
|
argc--;
|
||||||
|
@ -774,6 +800,9 @@ void LCR_gameInit(int argc, const char **argv)
|
||||||
case 'c': LCR_game.cameraMode = (argv[argc][2] - '0') % 4; break;
|
case 'c': LCR_game.cameraMode = (argv[argc][2] - '0') % 4; break;
|
||||||
case 'm': LCR_game.musicOn = argv[argc][2] != '0'; break;
|
case 'm': LCR_game.musicOn = argv[argc][2] != '0'; break;
|
||||||
case 's': LCR_audio.on = argv[argc][2] != '0'; break;
|
case 's': LCR_audio.on = argv[argc][2] != '0'; break;
|
||||||
|
case 'M': quickLoad = 1; break;
|
||||||
|
case 'R': quickLoad = 2; break;
|
||||||
|
case 'P': quickLoad = 3; break;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
@ -783,9 +812,23 @@ void LCR_gameInit(int argc, const char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (quickLoad == 1)
|
||||||
|
{
|
||||||
|
LCR_gameLoadMap(LCR_countData('M') - 1);
|
||||||
|
LCR_gameSetState(LCR_GAME_STATE_LOADING);
|
||||||
|
LCR_game.menu.selectedTab = 1;
|
||||||
|
}
|
||||||
|
else if (quickLoad == 2 || quickLoad == 3)
|
||||||
|
{
|
||||||
|
LCR_gameLoadReplay(LCR_countData('R') - 1);
|
||||||
|
LCR_gameSetState(LCR_GAME_STATE_LOADING);
|
||||||
|
LCR_game.menu.selectedTab = quickLoad;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
LCR_gameLoadMainMenuItems();
|
LCR_gameLoadMainMenuItems();
|
||||||
LCR_gameSetState(LCR_GAME_STATE_MENU);
|
LCR_gameSetState(LCR_GAME_STATE_MENU);
|
||||||
LCR_currentMap.blockCount = 0; // means no map loaded
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1151,14 +1194,14 @@ void LCR_gameHandleInput(void)
|
||||||
LCR_gameLoadMainMenuItems();
|
LCR_gameLoadMainMenuItems();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1: // maps
|
||||||
LCR_gameLoadMap(LCR_game.dataFile.firstItemIndex +
|
LCR_gameLoadMap(LCR_game.dataFile.firstItemIndex +
|
||||||
LCR_game.menu.selectedItem);
|
LCR_game.menu.selectedItem);
|
||||||
LCR_gameSetState(LCR_GAME_STATE_LOADING);
|
LCR_gameSetState(LCR_GAME_STATE_LOADING);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2: // view replay
|
||||||
case 3:
|
case 3: // play against replay
|
||||||
{
|
{
|
||||||
int mapIndex = LCR_gameLoadReplay(LCR_game.dataFile.firstItemIndex +
|
int mapIndex = LCR_gameLoadReplay(LCR_game.dataFile.firstItemIndex +
|
||||||
LCR_game.menu.selectedItem);
|
LCR_game.menu.selectedItem);
|
||||||
|
@ -1258,12 +1301,12 @@ void LCR_gameHandleInput(void)
|
||||||
|
|
||||||
uint8_t LCR_gameStep(uint32_t time)
|
uint8_t LCR_gameStep(uint32_t time)
|
||||||
{
|
{
|
||||||
|
LCR_LOG2("game step (start)");
|
||||||
|
|
||||||
uint32_t sleep = 0;
|
uint32_t sleep = 0;
|
||||||
int paused = LCR_game.state == LCR_GAME_STATE_MENU ||
|
int paused = LCR_game.state == LCR_GAME_STATE_MENU ||
|
||||||
LCR_game.state == LCR_GAME_STATE_RUN_STARTING;
|
LCR_game.state == LCR_GAME_STATE_RUN_STARTING;
|
||||||
|
|
||||||
LCR_LOG2("game step (start)");
|
|
||||||
|
|
||||||
LCR_game.time = time;
|
LCR_game.time = time;
|
||||||
|
|
||||||
for (int i = 0; i < LCR_KEYS_TOTAL; ++i)
|
for (int i = 0; i < LCR_KEYS_TOTAL; ++i)
|
||||||
|
@ -1321,12 +1364,12 @@ LCR_replayOutputStr(_LCR_gameDataCharWrite);
|
||||||
if (events & LCR_RACING_EVENT_CRASH_SMALL)
|
if (events & LCR_RACING_EVENT_CRASH_SMALL)
|
||||||
{
|
{
|
||||||
LCR_audioPlaySound(LCR_SOUND_CRASH_SMALL);
|
LCR_audioPlaySound(LCR_SOUND_CRASH_SMALL);
|
||||||
LCR_LOG1("crash (small)");
|
LCR_LOG2("crash (small)");
|
||||||
}
|
}
|
||||||
else if (events & LCR_RACING_EVENT_CRASH_BIG)
|
else if (events & LCR_RACING_EVENT_CRASH_BIG)
|
||||||
{
|
{
|
||||||
LCR_audioPlaySound(LCR_SOUND_CRASH_BIG);
|
LCR_audioPlaySound(LCR_SOUND_CRASH_BIG);
|
||||||
LCR_LOG1("crash (big)");
|
LCR_LOG2("crash (big)");
|
||||||
}
|
}
|
||||||
|
|
||||||
int engineIntensity = LCR_carSpeedKMH() * 2;
|
int engineIntensity = LCR_carSpeedKMH() * 2;
|
||||||
|
@ -1343,7 +1386,8 @@ LCR_replayOutputStr(_LCR_gameDataCharWrite);
|
||||||
sleep = (3 * (LCR_game.nextRacingTickTime - time)) / 4;
|
sleep = (3 * (LCR_game.nextRacingTickTime - time)) / 4;
|
||||||
|
|
||||||
// handle rendering:
|
// handle rendering:
|
||||||
if (time >= LCR_game.nextRenderFrameTime)
|
if (time >= LCR_game.nextRenderFrameTime ||
|
||||||
|
LCR_game.state == LCR_GAME_STATE_LOADING)
|
||||||
{
|
{
|
||||||
LCR_LOG2("rendering next frame");
|
LCR_LOG2("rendering next frame");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue