I spent the bulk of my available time this weekend writing the code for the Table Layout. It ended up quite a bit different from the design; chiefly because I found there was no need for an abstract row. The TableLayout class itself handles all the row…ing.
I just need to add some things like cellpadding, cellspacing, rowspan and colspan. Maybe some method to draw borders; though I might use a specialised DataTable class for that.
I’m now about 60% done on the UI system code. I’m also only about 80% complete with the design though (I was tired of design and needed to code).
I have to admit that designing everything first was something I haven’t done before and it helped immensely. I don’t know why I never did it before but I will definitely be doing this for future systems in the game.
I’ve been working on the UI quite a bit and have started to get all of the components together in UML. The number of lines going back and forth is very confusing, but luckily I have no diamonds.
So as work continues steadily on this I’ve been thinking about the next steps after the UI is completed. My TODO list says that the next part is Game Logic which is essentially the largest part of the game. There’s ecomomy, combat, resources, technology which is all then followed closely by AI. Essentially, it’s the game part of the game.
In order to realise a piece of my game; I’m tossing around the idea of making a smaller, combat focused game to begin with. It would probably be focused in a single star system; maybe not even randomly generated for now (maybe even the Sol system). Something along the lines with both sides having a certain number of points that they can use to increase their Admirals abilities and their actual fleets technologies and units. Then it’s just a matter of clicking things around.
This idea also looks like it can readily be expanded to add the economic and diplomatic pieces on top; followed then by technology.
I’ve made some more progress on the UI; it’s now possible to have it textured. The textures are variable dimensions and there’s a few different options on how to handle resizing (stretching textures or repeating them etc).
EDIT: I’ve got some performance problems doing this because a single texture for like the border needs to be repeated a whole heap of times. It seems like resizeable windows may not be doable, instead I will need to use statically sized windows. I’m sure there’s another way…
I’m not surprised, but I am a little dismayed, about the amount of effort that goes into even the simplest UI. I’m using a sort of event queue to process input and hope to detach the input handling from the main loop soon.
The actual elements themselves are easy enough to program but the designing part of it is a little tricky. I’ve been playing and studying a few UI intensive games the last few weeks to see what works and what doesn’t. If I’m honest, ive been wasting time.