This week I worked on the GUI for downloading DLC packages. Since I could automate the process of producing the ready-to-upload package for Android, I needed to test if we could conveniently download the downloadable game packages from Play Store servers. For this, we require an in-launcher GUI, which users can use to browse available downloadable games and download any game. I will refer to this new GUI as downloader GUI.
There are currently 11 freeware games that ScummVM is allowed to distribute. And we plan to make them downloadable through our downloader GUI.
Mockup
I first created a mockup design for our new downloader GUI based on the ScummVM theme and asset. Here is a video feed of the same:
You can find the Figma link here.
Keep It Simple, Stupid
Our current GUI is limited. Current widgets will unfortunately not be able to structure and display the elements the way I want. For example, there is no multiline support; the grouped list can’t have a button and an icon, etc. So, it’s not possible to recreate the above design without modifying or creating new widgets, which might take a lot of time.
Sev has recommended getting things done pragmatically and keeping it simple initially –
simple list, with the installed games graying out. And one button “Download” aside, similar to how the launcher now works
and so, I did exactly that this week.
After this, I will do the most important thing – implement the downloading mechanism, i.e., retrieve list of DLCs, request a DLC to download, handle broken downloads, etc.
If there is time, we can implement the new functionalities of widgets according to our needs.
The GUI
ScummVM’s GUI is composed of Widgets and Dialogs.
Widgets are the building blocks of our user interface. There are implementations of how the widget should be drawn, how it should look, what text/images it should contain, etc. Dialogs are modals that provide the space to draw and display widgets.
There are also STX (ScummVM Theme XML) files that contain the layout specifications. We can describe the actual positioning and layout of widgets and dialogs here.
Current Progress
I have created a “Download Games” button on the launcher that opens the Download Games dialog. In this dialog, users will be able to browse the available downloadable games. Here is how it looks currently:
I have also implemented the functionality where already downloaded games are grayed out. To know if a game is already downloaded, we are scanning game entries in scummvm.ini for unique “download” keys.