Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update loadsave.cc to 100 slots #470

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

cambragol
Copy link

Increases Load/Save slots to 100 - sFall?

Adds pagination and controls to move between slots - previous scrolling/key functions work as normal, and move between pages

Increases Load/Save slots to 100

Adds pagination and controls to move between slots - previous scrolling/key functions work as normal, and move between pages
@cambragol cambragol mentioned this pull request Mar 5, 2025
52 tasks
@phobos2077
Copy link
Contributor

Good work. But before merging this, I would make sure that it is

  • optional via some cfg setting (to keep vanilla feel of the game available)
  • compatible with sfall extended saves (to be able to easily switch between sfall/CE)

@cambragol
Copy link
Author

  • optional via some cfg setting (to keep vanilla feel of the game available)

Maybe, but aren't there just too many cfg setting to start with? ddraw.ini, fallout.cfg, f2_res.ini.... it is all a mess. This is coming from someone who was not involved in Fallout for 20 years. It just seems insanely messy. How many hundreds of messages have I seen on various forums and posts, of people trying to wend their way through the morass.

I would lean into integrating it as innocuously as possible. I do see your point here though.

As for sFall, someone else would have to do that. I'm macOS only, no idea what sfall extended saves entails.

@phobos2077
Copy link
Contributor

Maybe, but aren't there just too many cfg setting to start with? ddraw.ini, fallout.cfg, f2_res.ini.... it is all a mess. This is coming from someone who was not involved in Fallout for 20 years. It just seems insanely messy. How many hundreds of messages have I seen on various forums and posts, of people trying to wend their way through the morass.

I agree, it's a mess. But most settings live in ddraw.ini nowadays (mostly under Misc section, which is bloated beyond reason). CE is probably a good opportunity to sort this out.

But the point that this should be optional, for the sake of vanilla feel, still stands. I guess this is one of those controversial things, like symbol naming conventions. Someone has to step up and make a decision. Should CE have as much options as possible to revert the game to look/feel as vanilla as possible. @alexbatalov - thoughts?

Tweaked the buttons to 'Back' and 'More' to reflect other on-screen navigation buttons in the pipboy.

Adding missing 'blit's to fix alexbatalov#472
@cambragol
Copy link
Author

  • optional via some cfg setting (to keep vanilla feel of the game available)

I rewrote the code to use global variable, which can be set to 10, 100, or 1000. At 10 the save/load interface reverts to default. 100 or 1000 increase the save game slots to those numbers, and enable the pagination.

So it can easily be hooked into a cfg setting. I'll update the PR if this is the way to go.

src/loadsave.cc Outdated
@@ -2234,11 +2267,17 @@ static void _ShowSlotList(int windowType)
}

// Pagination navigation
if (_currentSlotPage == 0) {
fontDrawText(gLoadSaveWindowBuffer + LS_WINDOW_WIDTH * (y + 0) + 95, "BACK", LS_WINDOW_WIDTH, LS_WINDOW_WIDTH, _colorTable[8804]);
Copy link
Contributor

@phobos2077 phobos2077 Mar 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about localization? Sfall had it's own ini file with translated strings.. But for CE I would think about adding entirely new MSG strings. That would mean editing msg files which are usually inside dat archives..

As a solution, I suggest to introduce a new msg file like "game/ce_interface.msg" (don't worry about the 8 char limit, we're not in 1994 anymore). Add it to the repository as well (English only, for now). Then put all new strings for in-engine UI there.

Maybe this can be done is a separate pull request.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I thought I could load in the strings from pipboy, so no new strings would be needed. Maybe easier said than done.

I wonder how many new strings we would need in the end? Working on the pipboy/interface is something I can handle, do you see any other areas that need some work?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sfall has a bunch of text messages related to it's features and tweaks, plus the Appearance Mod (the one that adds different races and hair styles) needs a few strings. Now they use an ini file, but this was done back when people were struggling to use what the engine has to offer. Nowadays sfall comes with it's own extra dat files which contains any new art and other resources for built-in features. CE could just follow this approach and a new MSG file as well.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about 'misc.msg'? - this message file is loaded at and accessible at all times, and is freed on game exit. Couldn't new interface text be stored there? It is already a grab-all for text messages throughout the game.

Whether we load in a new ce_interface.msg or reuse misc.msg, localization would have to be handled by mod makers. I suppose with our own ce_interface we could pre-translate for a number of languages. English, Spanish, French, German, Russian etc.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem with using vanilla msg files is they are already used by mods and localized. So better to have a new file for CE I think. Although if you pretend that no Fallout mods or localizations exist, then it's better to add strings to existing msg... But I think this is not a very useful approach, so long as CE is scoped as engine source port and not a complete game (with all resources included in repo).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we ever going to reach such a state? I.e. a state where numerous messages are needed to be combined into a Fallout_CE specific file? I wonder. If we are, great, let's do that, but if not, then I should utilize the messages in pipboy.msg for the interface, as I can pull those in easily enough. And they would be updated by mods/localizations with no input from me/us. However, I think until @alexbatalov weighs in on certain things, we are kind of in limbo.

@phobos2077
Copy link
Contributor

I rewrote the code to use global variable, which can be set to 10, 100, or 1000. At 10 the save/load interface reverts to default. 100 or 1000 increase the save game slots to those numbers, and enable the pagination.

So it can easily be hooked into a cfg setting. I'll update the PR if this is the way to go.

Sounds like a great solution. Good job!

Modified to use global variable 'saveLoadPages' which can be set to 10, 100 or 1000 - at more than 10 pagination turns on. At 10 Load/Save screen is default.

Also added left right arrow key navigation for flipping between pages when more than 10 save slots (saveLoadPages at 100 or 1000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants