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

Draft: Add the ability to disable the device selector #825

Draft
wants to merge 14 commits into
base: master
Choose a base branch
from

Conversation

ziggythehamster
Copy link

This is a work in progress and I'm seeking feedback on a few things. Before I get to that, a quick explanation. In my feature request #720 (and to an extent some of the things asked for in #719), one of the things that keeps happening to us is that either accidentally or maliciously, someone will change the device off of SP2, and the system becomes "broken" until a staffer can investigate. Because this happens so often, the GameCube got moved as close as possible to the front counter of the museum. My goal is to eventually make all of the advanced features hidden behind a setting of some sort, and have an administrator bypass sort of function using PicoBoot. It turns out that PicoBoot will parse and pass arguments if you have e.g., /ipl.cli, and Swiss accepts all of the configuration options normally read from global.ini as arguments. This means that we could have ipl.dol and start.dol and the only difference be that ipl.dol has a restricted configuration passed via ipl.cli. Perfect. Now those options need to exist, and this is the first one I'm working on. This leads me to the things I'm looking for feedback on:

  1. Are you happy with this direction, in general? I don't want to submit PRs to add features that annoy the team :).
  2. How would you feel if I refactored how menu items work? I'm pretty unhappy with how I made the menu support 4 buttons, and I think that if I refactored it such that the menu is actually a list of structs, I can simplify the process of either adding or removing menu items in the future (which might also include switching menu items out for other menu items, as an example). One issue that I'll have to figure out with this is that the math for how the menu items are distributed and positioned on screen does not make a lot of sense to me.
  3. Would it be a good idea to add a "UI Lockouts" page to settings?
  4. Style-wise, do you prefer functions like MenuItemNext() or menu_item_next()? Both are used a lot in Swiss, and I don't know what the "current" pattern is.
  5. Should I plan to get this PR ready as-is and redo the menus in a followup, or do that at the same time?

Currently identified stuff I still need to do:

  • Get the 4-button alignment right; it's slightly too far to the right
  • If you end up on the "file browser closed" state and then turn off the device selector, you're stuck unless you power-cycle the console or turn device selection back on, open the list, then turn it back off again.

@emukidid
Copy link
Owner

I've set some time aside to review this early next week, sorry about the delay!

@emukidid
Copy link
Owner

Alright, I've had some time to look over the code and the writeup here as well as re-review what's been asked for in those two feature requests (#719 & #720). What you've done so far is a nice start if we were to move towards a super tailored UI where entire sections could be changed individually. I feel like the simple thing to do here would be to simply add a new higher level style setting that applies to the entirety of Swiss to put it into "Game Mode" (name pending, I don't exactly want to call it "Museum Mode" heh). If this setting is enabled, it's all about the games, with certain things being stripped back and made harder to accidentally access. This setting would apply to either file browser style (carousel, or simple).

Things "Game Mode" would do:

  • Simplify the UI when browsing games
    • Hide device info
    • Hide current path
    • File Management is disabled
    • Only known file types are displayed
    • Locked to "flattened game dir" & favourite dir
    • Hide all bottom bar buttons
    • When selecting a game, the only options are load & back
    • To get out of this mode, you'll need to press a button combo to bring up settings, from there you'll be able to exit this mode by changing the setting for "UI Mode".
    • The recent menu would still be available.
    • Messages around "Game Patching" simply become "Preparing Game"

Interested in feedback on the above which I'm happy to implement - @Extrems @ziggythehamster

@crakerjac
Copy link

Bump. I'd love to see this implemented... I see no activity on this PR in a few months. Are you waiting on something or should this be closed out?

@emukidid
Copy link
Owner

I guess I was waiting on feedback but if there's nothing, perhaps we can just implement it as I'd outlined it.

@crakerjac
Copy link

If you don't like "Museum" and "Game" modes... which would be kinda fun, but not very self-explanatory... you could just do the standard "Admin" and "User" modes.

I really like what you described above. I'm not so sure about flattening out the game directory (I nest my games into buckets... FPS, RPG, Racing, etc.)... but this might push me for a more efficient organizational scheme.

@ziggythehamster
Copy link
Author

Sorry for dropping this for so long, got side-tracked with other stuff :).

I feel like the simple thing to do here would be to simply add a new higher level style setting that applies to the entirety of Swiss to put it into "Game Mode" [...] with certain things being stripped back and made harder to accidentally access. This setting would apply to either file browser style (carousel, or simple).

I'm down with that. I was thinking along the lines of making each option individually configurable originally because it has greater overall utility if there is disagreement over what a "locked down" mode means.

Going item by item with your idea:

Hide device info

I could go either way on this since showing the device info is not a huge problem... though it really only has utility for a staffer to help debug things, and I'm really not sure how much utility it actually has unless it showed the volume label or read a file to show in the popup.

Hide current path

I would argue against this. We organize our SD card images with paths like /GameCube/S/Sonic Heroes (U).nkit.iso and /Staff Picks/Animal Crossing (U).nkit.iso, and it's useful to be able to show the patron where they are, so they know they're in a subdirectory. This is particularly useful if we add homebrew/fan translations/hacks/mods to a separate tree where there could be confusion over where the patron actually is on the filesystem.

File Management is disabled

Only known file types are displayed

No complaints here

Locked to "flattened game dir" & favourite dir

For the reasons above, I don't know that I would want every GC game to appear in the same screen.

Hide all bottom bar buttons

I'm fine with this.

When selecting a game, the only options are load & back

Swiss already does this, but I forget what the option is called. This "lockdown mode" or "game mode" or whatever it's called could forcibly toggle this option on.

To get out of this mode, you'll need to press a button combo to bring up settings, from there you'll be able to exit this mode by changing the setting for "UI Mode".

I'm OK with this being delegated to the loader (PicoBoot in our case) for the time being.

The recent menu would still be available.

I'm fine with this too.

Messages around "Game Patching" simply become "Preparing Game"

Given that our systems are always on and we burn through SD cards with some regularity, I would probably keep the messages as they are, because it's helpful to help diagnose the problem remotely if it keeps getting stuck at the same point while patching the game, vs. if the loading process still fails but it fails at different points.

Also, FWIW, we have not yet decided on whether we will go with the file list or the carousel view. I think the carousel view is more likely to appeal to people who don't necessarily know what they're looking for, and be annoying to people who do, and vice-versa. At the risk of making everyone including myself feel old, we get a surprising number of people who vaguely remember a game from their childhood, and don't remember the name of it. The title artwork is helpful because they're likely to remember the shape/colors/etc. of the game logo and maybe what letter it starts with, but nothing else, and the carousel view has bigger logos. Most likely, we'll end up trying both modes out and see what feedback folks have.

I can probably contribute some work toward getting this done as well. Maybe for starters I can rework this PR into "Lockdown Mode" or "Game Mode" or whatever we want to call it ("Museum Mode" feels too specific; I could see this being useful for a situation where a parent wants to let a kid play on their GameCube without messing with the settings) and make it just disable the bottom bar for now, since there are a couple of edge cases that this PR handles for when device selection becomes required but the selector isn't enabled.

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.

None yet

3 participants