pegasus-frontend icon indicating copy to clipboard operation
pegasus-frontend copied to clipboard

[Feature Request] Add a "Completed" tag/banner for finished games

Open DrGorillaNuts opened this issue 5 years ago • 5 comments

Hey all, I suggested this on the Discord and figured I'd submit it here on the Github. A feature request I'd like to see in the future would be an option to toggle on/off a "Completed"/"Finished"/"100%" option for titles that we've beaten, so we can keep track of finished games in our collections. This could be done similar to how the Favorite feature works, but maybe have a green "Complete" icon overlay somewhere on the grid picture.

DrGorillaNuts avatar Jul 28 '20 20:07 DrGorillaNuts

@mmatyas if you are open to it, I had implemented a POC of adding a new "Completed" boolean to the game metadata in my branch at https://github.com/msheehan79/pegasus-frontend/tree/completed-flag. Admittedly, it's pretty much a copy/paste of the approach you used for "Favorites", where the games are written to a simple text file, but that's really all that is needed, I think.

It needs to be updated to reflect the recent updates but I'd be happy to submit a PR once I do that if you see this as a viable solution to the ask.

msheehan79 avatar Mar 20 '25 02:03 msheehan79

The exact definition of "completed" can be broad, so I think this might be better as an extra option in the metadata files (eg. x-completed). Some people may want to make a difference between "reached the end", and "completed every single sidequests and achievements"; for some games completion is irrelevant by nature (eg. puzzle games), in others every playthrough is significantly different.

I believe there was an open issue about extra fields not being accessible though, so that could be something to look into.

mmatyas avatar Mar 22 '25 21:03 mmatyas

Sure, I agree that the definition can be interpreted differently, but I think whether or not the flag is used can be left to the end user.

Personally, I have indeed been using one of the extra fields for this purpose for the past year or so - and while it does work, I found 2 drawbacks to the extra fields approach which is why I decided to try and add it as a writable field:

  • They are not writable - this means whenever I deem a game "Complete" I have to remember to update it in my metadata database, regenerate the metadata file and reload Pegasus. Being able to set it directly within the theme would be a significant benefit there.

  • Filtering - It has been some time since I tried so my details might be off here, but I recall the only SortProxyFilter that worked for the extra fields was RegExFilter, and it had significant performance implications on large collections.

In any event, just giving my thoughts on the benefits of having it as a native field vs extra.

msheehan79 avatar Mar 23 '25 03:03 msheehan79

Oh, someone actually messaged me with a similar question recently, about custom writable fields, and we solved it by using the theme's settings (ie. memory). Technically it can be used as a read-write storage for custom data too.

Can't comment on filtering, but if you can reproduce the problem, and create a minimal example, feel free to report it as an issue.

mmatyas avatar Mar 23 '25 20:03 mmatyas

No worries - on the filtering issue looks like https://github.com/mmatyas/pegasus-frontend/issues/1107 is pretty much the same issue I saw. The only filter type that works is ExpressionFilter - but on larger collections the performance hit is significant compared to the other filter models.

msheehan79 avatar Mar 24 '25 01:03 msheehan79