ID:156829
 
Is there a way to switch between multiple skins, for example when a user logs in is shown skin A for character creation then when the user has done that they're taken to skin B? Or would it be easier to just use the maps?
Put "skin A" and "skin B" in different panes, then use a child control on the default window to switch between them.
The answer is absolutely and quite easily, Yes. There are a great many ways that you can do this and its up to you to choose the best method. Here's one.

The biggest challenge is that your mainform must be visible at all times unless you are ok with having an options and message dialog appear. I wish they would fix that.

This all depends on when you want to popup the character creation window so I will assume at new player startup.

When your main window opens, have a filled black label cover everything by default. Create a new character creation window window that is set to visible and make it look and do whatever you want. When they are done, they hit OK which causes the Character Creation window to hide and the black label over the main form to become invisible.

You can create as many windows as you want and just show/hide them whenever you want. If you don't want them interacting with the main window while sub windows are open, just hide the content behind a label or splash screen that says "Waiting...".

ts

In response to Tsfreaks (#2)
Or you can save yourself a ton of trouble and just put a child control on your main window and display the various panes inside of that.
In response to Nadrew (#3)
Why do you think my method is a ton of trouble? I feel there is less complexity in adding and using a new window vs a new child control/window pane.

The usability of your main window is lessened by overlapping child controls. I've also experienced overlapping flicker problems at run time with resizing and scrolling so I tend to avoid them. To be fair, I seem to have more flicker problems than most. You also have to manually specify your child/window sizes at every turn when they are different or re-sizable.

I suspect I'm missing something if both of you are recommending them.

ts
In response to Tsfreaks (#4)
Tsfreaks wrote:
I feel there is less complexity in adding and using a new window vs a new child control/window pane.

Compare the following two versions...

Yours:
Tsfreaks wrote:
The biggest challenge is that your mainform must be visible at all times unless you are ok with having an options and message dialog appear. I wish they would fix that.

This all depends on when you want to popup the character creation window so I will assume at new player startup.

When your main window opens, have a filled black label cover everything by default. Create a new character creation window window that is set to visible and make it look and do whatever you want. When they are done, they hit OK which causes the Character Creation window to hide and the black label over the main form to become invisible.

Ours:
Create a child, fill window and set anchors. Set the two panes, then winset the splitter value to 0 or 100 at runtime.


I would be inclined to argue that one of these solutions looks a little easier than the other.


Tsfreaks wrote:
The usability of your main window is lessened by overlapping child controls.

I've never experienced this. Could you compile an host a demo? And what exactly do you mean by 'overlapping'?


Tsfreaks wrote:
You also have to manually specify your child/window sizes at every turn when they are different or re-sizable.

I'm not sure what you mean here either.


Tsfreaks wrote:
I suspect I'm missing something if both of you are recommending them.

I tend to eagerly recommend the same solution (as you can read in my BYOND RPG article) and keep being ignored. There are two reasons why I recommend this solution.

First and most important of all, I've yet to see a professional game which opens a new window for something like a title screen. I'd guess that for each example, I could tell you ten that simply reuse the main window as it looks a lot less cluttered and follows the general GUI thesis that the customer should only see and access what is crucial at any given time.

The second reason would be that it is simply a lot easier as you save yourself all the trouble of placing/hiding windows.
In response to Tsfreaks (#4)
With proper use of anchors you don't have to worry about the size of things. You really only need one child on the default window, and it only needs to have one pane assigned.

After that you just design your interface as panes instead of windows, then set the left/top parameter of the main child to those panes and you've effectively made it possible to change the window that gets displayed as the main window without having to show and hide a bunch of windows.

I've never experienced the flickering you're talking about.
In response to Nadrew (#6)
Ah... that makes sense. I had not thought about having the main portion of the game already in a pane.

I have to agree. In most cases, this is how you would want to start off your UI design process.

Just to understand it better, I created an example of this suggestion. I'm very pleased with how it works. I wish I hadn't missed this design practice. I could have saved myself a fair amount of trouble. Better late than never I suppose.

Multi-Pane Example

The above example shows how to create an interface that takes you from a splash screen, to an options menu, to a character creation screen, then your map, and optionally back to the character screen for editing.

ts






In response to Schnitzelnagler (#5)
Schnitzelnagler wrote:
Tsfreaks wrote:
I feel there is less complexity in adding and using a new window vs a new child control/window pane.

Compare the following two versions...

Yours:
Tsfreaks wrote:
The biggest challenge is that your mainform must be visible at all times unless you are ok with having an options and message dialog appear. I wish they would fix that.

This all depends on when you want to popup the character creation window so I will assume at new player startup.

When your main window opens, have a filled black label cover everything by default. Create a new character creation window window that is set to visible and make it look and do whatever you want. When they are done, they hit OK which causes the Character Creation window to hide and the black label over the main form to become invisible.

Ours:
Create a child, fill window and set anchors. Set the two panes, then winset the splitter value to 0 or 100 at runtime.


I would be inclined to argue that one of these solutions looks a little easier than the other.

... a really silly comparison to make and the point wasn't well received.


Tsfreaks wrote:
The usability of your main window is lessened by overlapping child controls.

I've never experienced this. Could you compile an host a demo? And what exactly do you mean by 'overlapping'?


Before I understood how and where the main game would live, I thought you had to put your child control over your map and other interface components which would make for a lame UI editing experience.


Tsfreaks wrote:
You also have to manually specify your child/window sizes at every turn when they are different or re-sizable.

I'm not sure what you mean here either.


Before digging into my example, I was under the impression that you would want to resize each pane (view) but now that I understand a little better, I see that it is not necessary.