I'm currently studying as much of CEGUI as possible to make a proper integration into a 3D game. We've been using CEGUI for like two years now, but the integration was rather poor.
So now I've gotten to the falagard skinning system and I'm asking myself what I have to do to have multiple looknfeels. Say we use CEGUI for menus and for the HUD. And I would like to use different looknfeels for each of them. And these should be configurable (not at run time).
I've come up with a rather hacky method that requires two *.scheme files. The first (called MenuWidgetsTaharez.scheme) defines the falagard mappings to window types called "MenuWidgets/Button". But suppose I want a different look, I would simply like to replace that MenuWidgetsTaharez.scheme by MenuWidgetsMyLook.scheme.
In the new file I would then change the mapping from e.g. LookNFeel="TaharezLook/Button" to LookNFeel="MyNewLook/Button".
This way I can simply use "MenuWidgets/WindowType" and "HUDWidgets/WindowType" in my layout files.
That seems very reasonable to me. But there is an implementation problem: TaharezLook.looknfeel addresses child windows by "TaharezLook/MyWidget" of course. And since I don't define any of these types I get an exception. Though I was able to resolve this issue by using window type aliases for each window type.
Unfortunately I have to do this in two files or otherwise the loader would complain that the types from the falagard mappings don't exist (probably because the types only get updated after the scheme file has been loaded).
However something tells me I've completely misunderstood the concept of the falagard skinning system... ^^
Can anybody give me a hint on how to properly implement my desired behaviour?
Using CEGUI 0.6.2 on Windows XP, compiling with Visual Studio 9 SP1. Though our project supports both windows (msvc, mingw) and linux (gcc).
EDIT: I guess it would be better to do the aliases the other way round. It makes a bit more sense
