• entries
707
1173
• views
435853

# Update

317 views

Ethereal Darkness Interactive Update

I didn't get squat done on this today. I've got a quite complex system done up for the script editor, and I dislike it very much. So, I'm probably going to spend the next 4 and a half hours designing a better system. The system needs to be modifyable(sp?) in case a function gets changed, added, or removed. I've set a deadline of Wednesday for this, so that I can started on the Audio system. This is going to take quite a while, so once I start the audio system, all other projects will probably stop (not fully, since I'll work on them when I get frustrated with the Audio system.)

Dragonfire Games Update

I'm designing each widgets functionality out on paper before I start coding, which is helping me spot a lot of things I wouldn't have thought of. That is all.

Rant

Yea, so since I seem to rant an awful lot, I decided to add another section for it. I'm adding it here so that the people who don't want to read it, don't have to. So, it probably won't get read at all.

My internet went out again today =/. I didn't get squat done either. Evidentally now that I don't have time to do anything, my parents decided that I need to more stuff. Its not that I mind doing things for them, its just that back when I had all kinds of time, they rarely even called me downstairs. Now I can't go 10 minutes without hearing someone yelling my name. And of course they can't do anything by themselves. Seriously, how am I going to "help" them feed the chicks? You unscrew the jar, fill the jar, screw the cap back on and its done. I'm pretty sure thats not a two person job. It seems they can't do anything by themselves. This is the reason I stay up until 6 and sleep until noon, I get 8 hours by myself [grin].

That is perhaps the best-formatted post I have ever seen. Ever.

I think I'll start using that layout from now on.

Thank you very much [grin].

Edit: Make sure you put the < hr > tag and the text on the same line, or you'll get big chunks of space in between:

< hr >< center >[ b ]Title[ /b ]< /center >< hr >Paragraph goes here.

That's pretty similar to the layout I use in my header files, except I left align the heading texts.

Maybe I should start using a similar layout in my journal posts as well!

I figured I'd post it here instead of starting a new entry. I just did up some concepts on the user interface since I can't figure out how to do this fucking script editor =/. I'll talk to Raymond about it after he gets home from work.

Anyway, here's what most of the widgets on the list will look like:

Buttons

Choice Dialog

Counter

Listbox

Listview

Progress Bar

Tally Counter

TextBox

Listbox will hold only text items, whereas the Listview will hold anything based off of the Renderable class. Progressbars will be used throughout games (for healthbars and such). The Tally counter is for stuff like point allocation (i.e. in Baldur's Gate when you're choosing weapon proficiencies.) The choice dialog will consist of a listbox and 3 buttons. The buttons are optional.

Each widget is based off of a base widget class:
// basic OnMESSAGE methods
OnCreate
OnDestroy
OnRender
OnMove
OnResize
OnActivate
OnLeftClick
OnRightClick
OnMiddleClick
OnLeftRelease
OnRightRelease
OnMiddleRelease
OnMouseMove
OnMouseWheel

// OnDATAChange methods
OnTextChange
OnVisibilityChange
OnSelectionChange
OnStateChange


There are other things in the Widget class, but I haven't got all of that figured out.

The system includes a class called the Group. Its derived from widget and has 2 different forms: GroupBox, and Panel. GroupBox has graphical display qualities (like a Windows GroupBox). A panel on the other hand does not. The default settings for a Group is the panel setup. The system is pretty dependant on the user using the Group class.

Here's an example
// All pseudocode
dft::GuiManager g_Gui;



With this code you have no idea which radio belongs in which group.

dft::GuiManager g_Gui;

dft::Group* pGroup = new Group(GRP_PANEL);

pGroup = new Group(GRP_PANEL);



(See Telastyn, I told you I'd try [wink].)

With this pseudocode you can tell that the first 3 are in a group and the last 2 are in a different group. This also eases the code, since in the Group class, I can override the OnSelectionChange() and change each radio button status. This will also make it easier when I want to add tabs [grin].

Edit: I decided to go a little deeper in to this discussion. Grouping has been one of my major concerns, mostly because of the tab control and the radio button. I've had several different systems including different kinds of IDs, and a list of widgets that are grouped together stored within each widget (very bad idea). This system seems to work out very well and keeps with the design of the rest of the GUI code. You create and define a widget (by define I mean set it up) and then call Parent->Add(NewWidget). Something else that I didn't mention is that a Group also defines the area in which its children can be seen (its clipping rectangle.)

## Create an account

Register a new account