Mercurial > projects > mde
view examples/guiDemo.d @ 154:0520cc00c0cc
Better error reporting for loading translations; avoided an infinite loop.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Sat, 18 Apr 2009 12:02:33 +0200 |
parents | 9f035cd139c6 |
children | a1ba9157510e |
line wrap: on
line source
/* LICENSE BLOCK Part of mde: a Modular D game-oriented Engine Copyright © 2007-2008 Diggory Hardy This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /** Main module for a gui demo & testing executable. */ module examples.guiDemo; import mde.imde; import mde.mainLoop; // Some setup for the main loop import mde.menus; // add default menus import mde.setup.Init; // initialization import mde.scheduler.Scheduler; // mainSchedule import mde.setup.Screen; // Screen.draw() import mde.setup.InitStage; // StageState import mde.gui.WMScreen; import tango.core.Thread : Thread; // Thread.sleep() import tango.time.Clock; // Clock.now() import tango.util.log.Log : Log, Logger; int main(char[][] args) { Logger logger = Log.getLogger ("mde.mde"); // If compiled with unittests, notify that they completed and exit: debug (mdeUnitTest) { logger.info ("Compiled unittests have completed; terminating."); return 0; } // Set up the gui scope WMScreen gui = new WMScreen ("guiDemo"); StageState guiLoad () { // init func gui.loadDesign(); return StageState.ACTIVE; } StageState guiSave () { gui.save; return StageState.INACTIVE; } addInitStage ("GuiM", &guiLoad, &guiSave, ["SWnd", "Font"]); scope Init init = new Init(args); // initialize mde mainSchedule.add (SCHEDULE.DRAW, &Screen.draw).request = true; // Draw, per event and first frame only. while (run) { mainSchedule.execute (Clock.now()); Thread.sleep (mainInterval); // sleep this many seconds } return 0; // cleanup handled by init's DTOR }