mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-04-28 20:58:07 +03:00
tr1/savegame: support setting save slots to 0
This commit is contained in:
parent
0ff682b352
commit
efbabb44eb
5 changed files with 37 additions and 29 deletions
|
@ -1,4 +1,5 @@
|
|||
## [Unreleased](https://github.com/LostArtefacts/TRX/compare/tr1-4.6...develop) - ××××-××-××
|
||||
- added ability to disable saves completely by setting the save slot to 0 (#1954)
|
||||
- fixed invisible walls being present in front of some doors (#1948, regression from 4.6)
|
||||
- fixed big font scale causing text overlaps in the graphics options (#1946)
|
||||
- fixed missing FMVs causing the game to go silent (#1931, regression from 4.6)
|
||||
|
|
|
@ -212,7 +212,7 @@ void Config_Sanitize(void)
|
|||
CLAMP(
|
||||
g_Config.rendering.turbo_speed, CLOCK_TURBO_SPEED_MIN,
|
||||
CLOCK_TURBO_SPEED_MAX);
|
||||
CLAMPL(g_Config.maximum_save_slots, 1);
|
||||
CLAMPL(g_Config.maximum_save_slots, 0);
|
||||
CLAMPL(g_Config.rendering.anisotropy_filter, 1.0);
|
||||
CLAMP(g_Config.rendering.wireframe_width, 1.0, 100.0);
|
||||
|
||||
|
|
|
@ -173,7 +173,8 @@ static void M_DeterminePages(void)
|
|||
switch (g_InvMode) {
|
||||
case INV_TITLE_MODE:
|
||||
m_PassportStatus.mode = PASSPORT_MODE_BROWSE;
|
||||
m_PassportStatus.page_available[PAGE_1] = g_SavedGamesCount > 0;
|
||||
m_PassportStatus.page_available[PAGE_1] =
|
||||
g_SavedGamesCount > 0 && Savegame_GetSlotCount() > 0;
|
||||
m_PassportStatus.page_available[PAGE_2] = true;
|
||||
m_PassportStatus.page_available[PAGE_3] = true;
|
||||
m_PassportStatus.page_role[PAGE_1] = PASSPORT_MODE_LOAD_GAME;
|
||||
|
@ -183,13 +184,15 @@ static void M_DeterminePages(void)
|
|||
|
||||
case INV_GAME_MODE:
|
||||
m_PassportStatus.mode = PASSPORT_MODE_BROWSE;
|
||||
m_PassportStatus.page_available[PAGE_1] = g_SavedGamesCount > 0;
|
||||
m_PassportStatus.page_available[PAGE_1] =
|
||||
g_SavedGamesCount > 0 && Savegame_GetSlotCount() > 0;
|
||||
m_PassportStatus.page_available[PAGE_2] = true;
|
||||
m_PassportStatus.page_available[PAGE_3] = true;
|
||||
m_PassportStatus.page_role[PAGE_1] = PASSPORT_MODE_LOAD_GAME;
|
||||
m_PassportStatus.page_role[PAGE_2] = PASSPORT_MODE_SAVE_GAME;
|
||||
m_PassportStatus.page_role[PAGE_3] = PASSPORT_MODE_EXIT_TITLE;
|
||||
if (g_CurrentLevel == g_GameFlow.gym_level_num) {
|
||||
if (g_CurrentLevel == g_GameFlow.gym_level_num
|
||||
|| Savegame_GetSlotCount() <= 0) {
|
||||
m_PassportStatus.page_role[PAGE_2] = PASSPORT_MODE_NEW_GAME;
|
||||
} else if (g_Config.enable_save_crystals) {
|
||||
m_PassportStatus.page_role[PAGE_2] = PASSPORT_MODE_RESTART;
|
||||
|
@ -197,14 +200,20 @@ static void M_DeterminePages(void)
|
|||
break;
|
||||
|
||||
case INV_LOAD_MODE:
|
||||
m_PassportStatus.mode = PASSPORT_MODE_LOAD_GAME;
|
||||
m_PassportStatus.mode = Savegame_GetSlotCount() > 0
|
||||
? PASSPORT_MODE_LOAD_GAME
|
||||
: PASSPORT_MODE_RESTART;
|
||||
m_PassportStatus.page_available[PAGE_1] = true;
|
||||
m_PassportStatus.page_available[PAGE_2] = false;
|
||||
m_PassportStatus.page_available[PAGE_3] = false;
|
||||
m_PassportStatus.page_role[PAGE_1] = PASSPORT_MODE_LOAD_GAME;
|
||||
m_PassportStatus.page_role[PAGE_1] = m_PassportStatus.mode;
|
||||
m_PassportStatus.page_role[PAGE_2] = PASSPORT_MODE_UNAVAILABLE;
|
||||
m_PassportStatus.page_role[PAGE_3] = PASSPORT_MODE_UNAVAILABLE;
|
||||
M_InitSaveRequester(PAGE_1);
|
||||
if (m_PassportStatus.mode == PASSPORT_MODE_RESTART) {
|
||||
M_InitNewGameRequester();
|
||||
} else {
|
||||
M_InitSaveRequester(PAGE_1);
|
||||
}
|
||||
break;
|
||||
|
||||
case INV_SAVE_MODE:
|
||||
|
@ -215,7 +224,8 @@ static void M_DeterminePages(void)
|
|||
m_PassportStatus.page_role[PAGE_1] = PASSPORT_MODE_UNAVAILABLE;
|
||||
m_PassportStatus.page_role[PAGE_2] = PASSPORT_MODE_SAVE_GAME;
|
||||
m_PassportStatus.page_role[PAGE_3] = PASSPORT_MODE_UNAVAILABLE;
|
||||
if (g_CurrentLevel == g_GameFlow.gym_level_num) {
|
||||
if (g_CurrentLevel == g_GameFlow.gym_level_num
|
||||
|| Savegame_GetSlotCount() <= 0) {
|
||||
m_PassportStatus.mode = PASSPORT_MODE_BROWSE;
|
||||
m_PassportStatus.page_role[PAGE_2] = PASSPORT_MODE_NEW_GAME;
|
||||
} else if (g_Config.enable_save_crystals) {
|
||||
|
@ -240,7 +250,8 @@ static void M_DeterminePages(void)
|
|||
|
||||
case INV_DEATH_MODE:
|
||||
m_PassportStatus.mode = PASSPORT_MODE_BROWSE;
|
||||
m_PassportStatus.page_available[PAGE_1] = g_SavedGamesCount > 0;
|
||||
m_PassportStatus.page_available[PAGE_1] =
|
||||
g_SavedGamesCount > 0 && Savegame_GetSlotCount() > 0;
|
||||
m_PassportStatus.page_available[PAGE_2] = true;
|
||||
m_PassportStatus.page_available[PAGE_3] = true;
|
||||
m_PassportStatus.page_role[PAGE_1] = PASSPORT_MODE_LOAD_GAME;
|
||||
|
@ -250,7 +261,8 @@ static void M_DeterminePages(void)
|
|||
|
||||
default:
|
||||
m_PassportStatus.mode = PASSPORT_MODE_BROWSE;
|
||||
m_PassportStatus.page_available[PAGE_1] = g_SavedGamesCount > 0;
|
||||
m_PassportStatus.page_available[PAGE_1] =
|
||||
g_SavedGamesCount > 0 && Savegame_GetSlotCount() > 0;
|
||||
m_PassportStatus.page_available[PAGE_2] = true;
|
||||
m_PassportStatus.page_available[PAGE_3] = true;
|
||||
m_PassportStatus.page_role[PAGE_1] = PASSPORT_MODE_LOAD_GAME;
|
||||
|
@ -293,14 +305,7 @@ static void M_InitSaveRequester(int16_t page_num)
|
|||
|
||||
static void M_RestoreSaveRequester(void)
|
||||
{
|
||||
// Reload the savegame requester items in case something cleared them in
|
||||
// the meantime (for example the player changed the save slot count with a
|
||||
// console command.)
|
||||
if (g_SavegameRequester.items_used == 0) {
|
||||
M_InitSaveRequester(m_PassportStatus.page);
|
||||
}
|
||||
|
||||
CLAMPG(g_SavegameRequester.requested, g_SavegameRequester.items_used - 1);
|
||||
CLAMP(g_SavegameRequester.requested, 0, g_SavegameRequester.items_used - 1);
|
||||
}
|
||||
|
||||
static void M_InitSelectLevelRequester(void)
|
||||
|
@ -429,14 +434,16 @@ static void M_LoadGame(void)
|
|||
} else {
|
||||
M_ShowSaves(PASSPORT_MODE_LOAD_GAME);
|
||||
if (m_PassportStatus.mode == PASSPORT_MODE_LOAD_GAME) {
|
||||
Text_SetPos(
|
||||
m_Text[TEXT_LEVEL_ARROW_RIGHT], 130,
|
||||
g_SavegameRequester
|
||||
.items
|
||||
[g_SavegameRequester.requested
|
||||
- g_SavegameRequester.line_offset]
|
||||
.content->pos.y);
|
||||
Text_Hide(m_Text[TEXT_LEVEL_ARROW_RIGHT], false);
|
||||
const REQUESTER_ITEM *const row_item =
|
||||
&g_SavegameRequester.items
|
||||
[g_SavegameRequester.requested
|
||||
- g_SavegameRequester.line_offset];
|
||||
if (row_item->content != NULL) {
|
||||
Text_SetPos(
|
||||
m_Text[TEXT_LEVEL_ARROW_RIGHT], 130,
|
||||
row_item->content->pos.y);
|
||||
Text_Hide(m_Text[TEXT_LEVEL_ARROW_RIGHT], false);
|
||||
}
|
||||
} else {
|
||||
Text_Hide(m_Text[TEXT_LEVEL_ARROW_RIGHT], true);
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ int32_t Requester_Display(REQUEST_INFO *req)
|
|||
}
|
||||
}
|
||||
|
||||
if (req->line_offset) {
|
||||
if (req->line_offset > 0) {
|
||||
if (!req->moreup) {
|
||||
req->moreup = Text_Create(
|
||||
req->x, line_one_off - req->line_height + 2, "\\{arrow up}");
|
||||
|
|
|
@ -743,8 +743,8 @@ typedef struct {
|
|||
uint16_t max_items;
|
||||
uint16_t requested;
|
||||
uint16_t vis_lines;
|
||||
uint16_t line_offset;
|
||||
uint16_t line_old_offset;
|
||||
int16_t line_offset;
|
||||
int16_t line_old_offset;
|
||||
uint16_t pix_width;
|
||||
uint16_t line_height;
|
||||
bool is_blockable;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue