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

File session details on the file select screen #818

Draft
wants to merge 2 commits into
base: dev
Choose a base branch
from

Conversation

LuneAres
Copy link

@LuneAres LuneAres commented Sep 7, 2024

Overview

The goal was to be able to know if there was an ongoing session. You can see some informations about the ongoing session associated with the files before continuing them from the file select screen:

  • is there an ongoing session
  • is the map available
  • map name (SID if not available)
  • map "chapter" (the text displayed above the area name on the banner)
    -> is it customizable in Everest? If it is, I need to make the session details compatible
  • map title banner ("title" and "accent")
  • map mode (nothing for A sides, an indicator for B or C side)
  • session time
  • deaths counter
  • has the map already been completed on this save file
  • berry counter
  • berry list
    -> like the one at the bottom of the when in pause
    -> only if the map has already been completed
    -> scales to not take too much space

It addresses issue #439.

Implementation

  • adds a SessionDetailsPage entity that stores the relevant informations of a session to render them, and can be updated to switch sessions (the berry list is baked into a virtual render target)
  • adds ref to a SessionDetailsPage instance in OuiFileSelect
  • modifies OuiFileSelect.Update() to modify input capture
  • modifies the IL patch on OuiFileSelectSlot.Render to change ticket rendering position based on a the OuiFileSelectSlot.ticketRenderPosition property (added by this change too) to make the ticket move depending on OuiFileSelect.SessionDetailsEase
  • modifies the OuiFileSelectSlot.IdlePosition to shift the slots idle position to the left when showing session details
  • modifies Overworld.InputEntity and Overworld.Update() to show the input prompt for toggling session details in the bottom right of the screen with "Confirm" and "Cancel"

Compatibility

AltSideHelper

I don't know what needs to be exposed and how.
For now I did put into (private) fields of SessionDetailsPage the things that I think are relevant for AltSide compat

CollabUtils2

Maybe being able to see the icon and the name of the lobby the map is associated with would be great.
-> for example, Strawberry jam maps will display their sub-difficulty indicator as their icon

Save slots manipulation

There is the idea of being adding the possibility to move save slots. I also thought about being able to erase a slot (so every slot below it get moved up by one).
We need to think of a way to cleanly allow those save slots operations without conflicts. For now there is a mod for moving slots (https://gamebanana.com/mods/539280), but it also uses the journal key (I actually didn't test the interaction between this mod and my patches)

Issues / things to add

Things I just noticed I need to fix, or I think would be (more or less) relevant to consider doing/adding in continuation to the initial commit, at some point in time or never, by someone else or me, in Everest or in a mod.... I don't know, and I'm asking you about what you think (maybe that's not the right place to do that for some of them):

  • allow for configuration of the keybind (currently hardcoded as the Journal key)
  • rename SessionDetailsPage to OuiFileSelectSessionDetailsPage and move it to a seperate file
  • add a public bool ShowSessionDetailsUI field to Overworld and update it from OuiFileSelect instead of harcoding the check in Overworld.Update()
  • translation of the few new dialogs (currently there's only english and french)
  • backpack icon on the card to tell if there is an ongoing session at first glance without looking at the details
  • show collectables collected during the session (cassette / hearthgem)
  • put the journal time icon next to the session time
  • add a warning that if the map isn't loaded, then the session details may be different from what is espected
    -> apart from the name, chapter, and area icon, there is also: custom banner (title and accent), tab, mode icon (for B and C sides)
  • show the mode icon for the A-side if it's a custom one?
  • add an indicator of "position in the map" using the berry list
  • a way to cache session details infos so we can show them even if the map isn't available (still indicate somewhere if the map is available or not)
  • a few things about campaigns
    • being able to see all the campaigns you played for each savefile
    • being able to store up to one ongoing session per campaign for each file slot
      -> maybe add something LevelSetPicker-like between the ticket and session details page to move between played campaigns (use the savedata total playtime of the areas in the levelset to determine?) that can navigate between played campaigns when viewing session details
      • changing the rendered card, ticket and session details to match the selected campaign
      • being able to access an easier way to select the campaign, a bit like the map search that you can access from chapter select screen (maybe also add that to the LevelSetPicker)
        -> by pressing confirm?

@LuneAres LuneAres marked this pull request as draft September 7, 2024 19:02
@LuneAres LuneAres marked this pull request as ready for review September 8, 2024 00:55
@LuneAres LuneAres marked this pull request as draft September 13, 2024 12:50
@maddie480 maddie480 added the ready for review This PR should be reviewed label Sep 18, 2024
@maddie480
Copy link
Member

well... it's still a draft 2 months later 🤔

@maddie480 maddie480 added dormant This PR is really old, do we really need it? and removed ready for review This PR should be reviewed labels Nov 22, 2024
@LuneAres
Copy link
Author

I think I will remove the pull request.
Maybe I'll come back to this, but if I do I would probably rewrite it as a mod in first intention (maybe with compatibility with Aurora's per-map stored sessions, but at least with the ability to have one stored session per campaign)
And maybe it'll become a Everest pull request again one day (I'll try to write a better pull request then, both in terms of code and reviewability)
I also noticed a few minor graphical bugs to adress

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dormant This PR is really old, do we really need it?
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants