Yeah, My GUI Lib does this (actually a menu system for games), you just call it once every loop with UpdateGUI() and any action is passed back to the main loop via a global variable. Since every GUI Object has a unique ID it is therefore possible (using the Select command) to do actions when buttons are pressed etc.
Since this was designed with Menu's in mind some of the buttons provide links into other menus, provide resolution selection etc.. these actions are all controlled within the UpdateGUI() call. The lib also takes care of text input and chat boxes etc.
The set-up of the menu system is also very simple. You don't have to code it in the main program, all of the setting for buttons are contained within .txt files which determine the look and feel of buttons, size, position, justification, action, ID, Font, Text, ToolTips etc...
This system gives a great deal of flexibilty when using different languages since the all buttons etc.. are created when you initilaise the lib (created on the fly and saved into memory). You just choose which .txt file to parse and the buttons are created for you..
I'm not ready to release it yet since I'ts a ongoing development alongside a game I am working on.. But watch this space.
Since this was designed with Menu's in mind some of the buttons provide links into other menus, provide resolution selection etc.. these actions are all controlled within the UpdateGUI() call. The lib also takes care of text input and chat boxes etc.
The set-up of the menu system is also very simple. You don't have to code it in the main program, all of the setting for buttons are contained within .txt files which determine the look and feel of buttons, size, position, justification, action, ID, Font, Text, ToolTips etc...
This system gives a great deal of flexibilty when using different languages since the all buttons etc.. are created when you initilaise the lib (created on the fly and saved into memory). You just choose which .txt file to parse and the buttons are created for you..
I'm not ready to release it yet since I'ts a ongoing development alongside a game I am working on.. But watch this space.