Hey all,
Having familiarised myself sufficiently with C++, I'm thinking an excellent place to start contributing code would be where I'm familiar- in UI development.
I wanted to run my thoughts by everyone to see if they'd step on any toes before starting, but in essence, what I'd like to do is update the options screen, and expose all those "hidden" options in the .cfg file to the user so they can be changed on the fly.
This has a few steps:
1) Implement some modern UI concepts in a way that fits the graphical lexicon of XCOM and OpenXcom. I'm talking check boxes, radio buttons, sliders, (for setting things like volume or animation speed) and most importantly in terms of updating the options screen, a tab interface. Mostly this will involve changing draw routines in existing controls, but the last two will take some extra coding. This will probably be where the majority of the time sink is, and will mostly involve translating graphics into hardcoded draw routines, seeing we don't appear to have external image loading yet.
2) Draft the new layout in paint shop pro. (as it happens, I've already completed this step in terms of the basic options screen in order to think about what I'd need to do, see my attachment)
3) Translate that draft into code.
4) Add some future proofing UI features, such as a container surface for groups of radio buttons, (or even just a list control that takes parameters to automatically add radio buttons) a scrollable text list that incorporates a scrollbar, an unscrollable text list, a combo box for setting the display resolution, etc... All of this should make it easier to make changes in the future, or to add new UI screens that might benefit from them, for example a new crew-ordering screen.
My draft idea should not only give us about six tabs to work with in terms of space for options, but also have more room on each screen, as the UI elements I'd implement take up less space than the current approach of using a text button for almost everything, and needing several grouped text buttons in order to present a continuous range where a slider would be very efficient. (although I don't think I'll be making graphical buttons until such time as we can load PNGs to use for buttons, because hardcoding each different graphic sounds very annoying)
Does this sound like something relatively useful?