Something I’ve noticed: While I was working on the final mastering phases of my album, even though it was a lot of work of a sort, it was also a section of the day where I had nothing else to do with my eyes and hands, and I got a fair amount of programming done during that time. I think that, while I often do a better job of programming if I’m not listening to music, I undeniably have a much easier time starting programming if I’m listening to something when I do. My general tendency towards laziness and inactivity is most often a manifestation of anxiety about where to start, so any satin sheets I can put on that speedbump are helpful.
Despite these difficulties getting started, this week I have been, if not massively productive, at least dutiful. I finished up the frame image editor, though on closer inspection I appear to have missed something fundamental in the image loader/selector. That shouldn’t take long to fix anyway, and all the tricky bits should be done now at least.
I should probably tweak some of the drawing too since the way those text boxes clip over the edges is pretty ugly. The rectangle there is the clipping rectangle – doesn’t do a lot on an image like this, where it’s just the one picture, but if I’m using sprite sheets then that’s how I’ll define what chunk of the sheet I’m drawing from. Can either drag the rectangle around freehand or set its parameters manually with the text fields on the left side. That’s all tested and working.
Since this seemed like a decent stopping point, I bounced back over to the main EverEnding code base – well, sort of. I actually ended up working on common UI elements shared by both projects, stuff like a double slider and a specific number input field, which is actually the kind I used here for the rectangle parameters. Any time I find myself copying and pasting the same UI elements a lot I figure it’s time to extract them out into a utility class, and I’ve been doing a lot of numerical inputs using text fields, so it seemed like a good time. The other UI element I’ve been using a lot which is begging to be turned into its own class is the set of draggable tabs, but I haven’t settled on an elegant and flexible way to approach that yet so it’s safe from my attentions. For now.
I think I’m done with the sliders and input fields and whatnot, though, for the time being. The problem is, since I’ve been updating code that’s shared between both projects, I still need to update EverEnding to use the new slider code. Hopefully it will go quickly, since making shit go quickly is supposed to be the idea behind these utility classes in the first place. It’s a pain in the ass, even if a necessary one – all projects have growing pains like these. As I said to a friend, refactoring is tedious but has its moments, and UI programming is tedious but has its moments, but when you combine UI programming and refactoring you get a task with very few moments.
Anyway, hopefully it’ll just take a day or two to get things building again, and then realistically probably another day or two to deal with whatever bugs I’ve created. After that I go back to trying to work on these projects concurrently, programming additional elements into AnxEdit (probably starting with the stuff I missed in the frame image editor) and roughing out the first levels of the game itself.
Also I got a big-ass white board. I have manifested my destiny to become An Organized Person. It will happen.