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

GLC 2.0 #39

Open
Solaire opened this issue Sep 19, 2021 · 8 comments
Open

GLC 2.0 #39

Solaire opened this issue Sep 19, 2021 · 8 comments
Labels
enhancement New feature or request refactor cleaning up or refactoring the code

Comments

@Solaire
Copy link
Owner

Solaire commented Sep 19, 2021

I'd like to start working on version 2.0 of GLC. The reason it's 2.0 and not 1.x is mostly due to a brand new TUI and moving from .NET framework to .NET core (more details below). I will be doing some research into it but I think I would like to basically re-write GLC as a new .NET core project (obviously the original project will remain here until we are happy with 2.0) - also I think I have been away from the project for so long that I'm finding it quite difficult to actually implement new features. So here is my proposal for version 2.0 features and changes:

  • New project built on .NET Core (now simply called .NET)
    • Microsoft is not really supporting the framework any more
    • I'd like to potentially have a working Linux version (Porting to C/C++ will take way too much time and .NET is cross-platform)
    • Will have to see if the required libraries and stuff are available (Json, SQLite, etc) but I'm confident they are
  • Use database to store games and platforms
  • Create a brand new TUI and command handling
    • I have been using cmus for some time which is a command-line music player for linux; I think the interface is pretty good and I think we should go in that direction (cmus supports 5 or 6 different 'views' so we can implement that too).
    • The interface would show the platforms and all its' games in a single view along with some information about currently highlighted game.
    • Mouse events could be added as some point but it's not a priority

In terms of the work required, I don't think it'll be too much since a lot of the features have been implemented and can be copied over (as much as .NET core will allow it that is) and some stuff will not be needed due to the SQL handling searching and sorting.

@Nutzzz Let me know what do you think about the idea as a whole. I might have missed some important features

@Solaire Solaire added enhancement New feature or request refactor cleaning up or refactoring the code labels Sep 19, 2021
@Nutzzz
Copy link
Contributor

Nutzzz commented Sep 19, 2021

Those seem like good plans to me.

FYI, I'm mostly done with a refactor of the platforms, implemented via an interface. It's much easier to follow now. I'll send a pull request soon.

I've also added:

  • Oculus platform;
  • Download missing icons from the web, automatically or manually for a given game;
  • User can edit tags;
  • User can edit rating;
  • Last run date added;
  • More flexible sort, making rating and last run date additional sort possibilities.

Note as far as the "more info" display you reference, I did add the info bar on the bottom in an earlier pull request, with a full title (since it may have been truncated in grid view), and the platform (since it may be in a non-platform category). I was going to add rating to the bar, but once you add more than two items, you have to think harder about how to deal with limited width real estate. However, were you thinking we might display additional information below the image?

I was thinking about either doing the in-game settings menu or platform authentication next. However, the latter is going to increase the dependencies quite a bit and it starts to feel like we're going beyond the "simple" raison d'être of this project. I'm still having fun with it, but I don't know at what point we're just reinventing the wheel of more established projects.

@Nutzzz
Copy link
Contributor

Nutzzz commented Sep 19, 2021

Just for fun, I'm trying the upgrade-assistant to quickly figure out the dependency issues we're going to run into.

@Solaire
Copy link
Owner Author

Solaire commented Sep 20, 2021

Yeah, I agree that the scope of this application has grown over time (no thanks to every game dev wanting their own platform now haha) and version 2.0 will become a command-line alternative to Playnite or other launchers. That being said I think it's a good project to carry on with and I'm enjoying working on it.

@Nutzzz
Copy link
Contributor

Nutzzz commented Sep 22, 2021

Since it was an omnibus already, along with all the stuff mentioned above the latest PR migrates us to .NET 5.

@Nutzzz
Copy link
Contributor

Nutzzz commented Oct 8, 2021

So, as for as a cmus-type interface, I made a quick-and-dirty mock-up. I assume something like this is what you had in mind?

GLC2-mockup

EDIT: New mock-up with #44 suggested infopane (and some new ideas about the left pane):

GLC2-mockup2

@Nutzzz
Copy link
Contributor

Nutzzz commented Mar 17, 2023

Do you think it would be better to focus on the backend and just use a TUI library like Terminal.Gui for the frontend? There are certainly limitations to it, but I did a quick-and-dirty experiment and FWIW have got something to show for it after a few hours. I only pre-populated a few dummy games for one platform, but so far the help, color scheme switcher, and search function are working. And mouse support is built-in!

nGLC

EDIT: Note that the active Terminal.Gui devs are working on a v2 with a lot of good (but breaking) changes, and if we do go with that framework perhaps we should target the v2_develop branch rather than using the v1.9 V1.10 NuGet package.

@Solaire
Copy link
Owner Author

Solaire commented Apr 2, 2023

There is a branch that I try to push regularly features/new_glc which is using this framework for the TUI. The branch is a bit of a mess right now

@Nutzzz
Copy link
Contributor

Nutzzz commented Apr 2, 2023

Oh, that's funny. I've built the new_glc branch and played around with it to see what you had so far, but hadn't really looked at the code much (obviously, as I didn't even realize you were using Terminal.Gui already).

I wasn't clear where you were stuck, and I guess I was hoping to see if we could find a way to keep moving forward by making some of the tasks more manageable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request refactor cleaning up or refactoring the code
Projects
None yet
Development

No branches or pull requests

2 participants