Jump to content
  • Advertisement
  • entries
    707
  • comments
    1173
  • views
    435853

Update

Sign in to follow this  
Programmer16

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].
Sign in to follow this  


4 Comments


Recommended Comments

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

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

Share this comment


Link to comment
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.

Share this comment


Link to comment
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!

Share this comment


Link to comment
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;

dft::RadioButton* pTempRadio = new RadioButton;
pTempRadio->Create(&g_Gui);

pTempRadio = new RadioButton;
pTempRadio->Create(&g_Gui);

pTempRadio = new RadioButton;
pTempRadio->Create(&g_Gui);

pTempRadio = new RadioButton;
pTempRadio->Create(&g_Gui);

pTempRadio = new RadioButton;
pTempRadio->Create(&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);
dft::RadioButton pRadio = new dft::RadioButton;
pRadio->Create(&g_Gui);
pGroup->Add(pRadio);

pRadio = new dft::RadioButton;
pRadio->Create(&g_Gui);
pGroup->Add(pRadio);

pRadio = new dft::RadioButton;
pRadio->Create(&g_Gui);
pGroup->Add(pRadio);

pGroup = new Group(GRP_PANEL);
pRadio = new dft::RadioButton;
pRadio->Create(&g_Gui);
pGroup->Add(pRadio);

pRadio = new dft::RadioButton;
pRadio->Create(&g_Gui);
pGroup->Add(pRadio);










(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.)

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!