view mde/mde.d @ 11:b940f267419e

Options class created & changes to mergetag exception messages. Options class created (barebones). Loading/saving from Init. Init no longer runs cleanup functions after initialisation failure. Improved mergetag exception messages & error reporting. committer: Diggory Hardy <diggory.hardy@gmail.com>
author Diggory Hardy <diggory.hardy@gmail.com>
date Thu, 21 Feb 2008 09:05:33 +0000
parents 4c3575400769
children bff0d802cb7d
line wrap: on
line source

/** Modular D Engine
 *
 * This module contains main().
 */
module mde.mde;

// Package imports
import mde.init;
import global = mde.global;
import mde.events;
import mde.scheduler;
import mde.options;     // greeting message
import mde.exception;

import mde.input.input;

// External library imports
import tango.core.Thread : Thread;	// for sleep
//import tango.io.Stdout;
import tango.time.Clock;
import tango.util.log.Log : Log, Logger;

import derelict.sdl.sdl;

int main()
{
    //BEGIN Initialisation
    Logger logger = Log.getLogger ("mde.mde");
    
    scope Init init;
    try {
        init = new Init();	// initialisation
    } catch (initException e) {
        logger.fatal ("Initialisation failed; error was:");
        logger.fatal (e.msg);
        return 1;
    }
    
    global.input.addButtonCallback (cast(Input.inputID) 0x0u, delegate void(Input.inputID i, bool b) {
        if (b) {
            logger.info ("Quiting...");
            global.run = false;
        }
    } );
    //END Initialisation
    
    logger.info (options.greeting);
    
    while (global.run) {
        Scheduler.run (Clock.now());
        
        Thread.sleep (0.050);	// sleep this many seconds
    }
    
    return 0;		// cleanup handled by init's DTOR
}