pegasus-frontend
pegasus-frontend copied to clipboard
[Feature Request] Add a "Completed" tag/banner for finished games
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.
@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.
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.
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.
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.
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.