Sunday, November 25, 2012

In the time since my last post, I've found that I've become somewhat used to a routine of working on a project only a little bit here and there each day, getting little to maybe nothing done each day. I'm surprised how used to working this slow I've gotten. I still want to dive in more so, but my slow work plan is working so far, so great!

Mentioned in my last post, I have been working on creating a custom window frame. I wasn't having much luck for awhile, getting stuck on early stages of this task. But I finally learned enough to start making more educated guesses about the problems I was facing, and I finally figured things out myself. From there it's been only mildly rocky. But for the most part things have gone smoothly to the point were I got all the basics of the idea implemented with the custom window titlebar and borders. In my development project for this code, things look and work almost exactly how I could want them to now. From here, it's just fine tuning things. Like getting rid of a bug or 2, and covering a few loose ends.

I'm not certain what I want to get working on next. Either custom drawing some client controls like I would want, outlining the Z-Net 3 design I have in my head into a resource editor, maybe IRC message encryption, or tinkering with how I might go about addon support.

The latter 2 because it would be a change of pace from what I have been working on. The design outline, just because I'm thinking it might be good to get the things out of my head at this stage, just so I can fine tune my ideas as I'm working other things. And the first, because I learned a lot with the title bar/frame stuff, and I should be able to apply what I learned to that.

But I have time to think about all that, as I still have some work left to do with my current task.

I'd post a pic of the work on my custom frame stuff, but all the work has been on the code. Not the imagery itself. For development I've been using Bitmaps from the skin files of some commercial skinning libraries. I don't think their would be any copyright issues with me just posting a pic of me using them outside of their intended libraries, but I'd rather not show it just so that the frame looking like that isn't expected. I don't want to mock up my own quick crummy bitmaps either. Sadly, this type of work only looks as good as the images I display with it. I may change my mind about this later.

Sunday, November 11, 2012

I have begun working on Z-Net 3, but mainly just preliminary stuff. First on my list is what I expected to be the tougher challenge. I want Z-Net 3 to have a nice looking, stylish interface. None of the blandness of the zbattle style GUI. Not quite even the mIRC UI that ZN 1 and 2 had. It basically means I have to create my own skin, and before that I have to make the code support using such a skin. This means I have to use bitmaps everywhere. I've started with the frame and title bar. This part has been extremely tricky for me because it uses code and API functions that I have never had to use before, so it's all new to me. Making things more difficult is the fact that I can find zero help for doing this online. The closest topics I can find are about replacing the entire window with a simple bitmap skin, which isn't what I want and helps me very little. Such interfaces aren't resizeable. To make a resizeable interface you have to have at least 8 different bitmaps. The 4 corners, top, bottom, and both sides. I was quickly able to display the bitmaps as such, and tile or stretch them as needed when the window was resized. But I've been going in circles trying to basically get the parts of the bitmaps that I would want to be transparent and able to be clicked through to whats behind the window, to be as such. This is a necessary thing in order for the window to look attractive, else it will have to be a dull squared, 90 degree corner piece of garbage. Other programs do this, so mine should be able to as well. But for whatever reason, EVERYTHING I try fails, and there is just no help to be found yet.

Ideally, I wouldn't have to reinvent the wheel. You would think that on the net there are probably several libraries to choose from to do such a thing, that I could use in Z-Net 3, or at least use to learn my mistakes. But nope. Everything is a "pay me some ridiculous amount of money", un-freeware-friendly, piece of crap. Ive tried a few things. All in the form of a binary dll, pretty much. Some look great and do exactly what I would want, some not so much. So far only one has any hope, being USkin.dll. For a short time the company that made it offered a free version. Its not optimal. So far it looks glitchy and flickery in its demos. But atm, free is free, and maybe I can add some code to negate that stuff. But so far that doesn't want to work either, even when compiled with a simple stock demo project. The program crashes after I run it, and atm I'm unsure why.

My hope and plan for now is to just try and get USkin working, and move on for now. Ideally down the line I would hope I would figure out the issues with my own code and use that instead. But right now I'm eager to stop spinning my wheels and move on to something else. A lot of what will be in ZN3's code will be easy. Things I've done before with ZNI. So I'm less concerned with certain things, and more concerned with things such as protocol encryption, self updating software, addon support, etc. Things I haven't done much before, if at all.

If all goes well with the interface, I'll need to be looking for a artist to help design the UI. I could probably do it myself, but I'd rather not. I'm sure my UI would look good, but I'm not an artist, so it likely wouldn't look as good as it could. Once this project really gets rolling, I'll probably look for a website guy as well. It might be nice to have some team members for a change, outside of mods. But that's for a future day.