Mercurial > projects > mde
view mde/mde.d @ 43:1530d9c04d4d
Column/row resizing implemented for GridLayoutWidget (finally)!
Also new exitImmediately option and a few debug scope(failure) log messages.
committer: Diggory Hardy <diggory.hardy@gmail.com>
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Thu, 15 May 2008 10:39:57 +0100 |
parents | 57d000574d75 |
children | 0fd51d2c6c8a |
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/>. */ /** Modular D Engine * * This module contains main(), which calls Init and runs the main loop. */ module mde.mde; // Comment to show use, where only used minimally: import mde.imde; // this module's interface for external modules import mde.events; // pollEvents import mde.Options; // pollInterval option import gl = mde.gl.draw; // gl.draw() import mde.input.Input; // new Input() import mde.scheduler.Init; import mde.scheduler.Scheduler; // Scheduler.run() import mde.scheduler.exception; // InitException import tango.core.Thread : Thread; // Thread.sleep() import tango.time.Clock; // Clock.now() import tango.util.log.Log : Log, Logger; int main() { //BEGIN Initialisation Logger logger = Log.getLogger ("mde.mde"); logger.info ("Starting mde..."); // Create instances now, so they can be used during init (if necessary) input = new Input(); mainSchedule = new Scheduler; scope Init init; try { init = new Init(); // initialisation } catch (InitException e) { logger.fatal ("Initialisation failed: " ~ e.msg); return 1; } if (miscOpts.pollInterval !<= 1.0 || miscOpts.pollInterval !>= 0.0) Options.setDouble ("misc", "pollInterval", 0.01); //END Initialisation //BEGIN Main loop setup mainSchedule.add (mainSchedule.getNewID, &mde.events.pollEvents).frame = true; mainSchedule.add (SCHEDULE.DRAW, &gl.draw); // Draw, per event only. //END Main loop setup while (run) { mainSchedule.execute (Clock.now()); Thread.sleep (miscOpts.pollInterval); // sleep this many seconds } return 0; // cleanup handled by init's DTOR }