X-Git-Url: https://git.jsancho.org/?p=dungeon-master.git;a=blobdiff_plain;f=src%2Fmain.cpp;h=0384ba5d957ffb9cb2e78e0c426e97b3ce05c31d;hp=6c2e2a756dc856903df78a4bf80b0e0e3cb6decc;hb=f4b5d6adc47032528d11e007a4a5cc4840676446;hpb=b201086ac53a63e010f23a7ec9128013fe3ac385 diff --git a/src/main.cpp b/src/main.cpp index 6c2e2a7..0384ba5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,10 +4,30 @@ using namespace irr; using namespace core; using namespace video; +using namespace gui; + +SCM register_generator(SCM name, SCM proc) +{ + printf ("Register: %s\n", scm_to_locale_string(name)); + scm_call_1(proc, scm_from_int(-1)); + return SCM_UNSPECIFIED; +} + +void init_dungeon_master_module(void *unused) +{ + scm_c_define_gsubr("register-generator", 2, 0, 0, (scm_t_subr)register_generator); + scm_c_export("register-generator", NULL); +} + +void scm_init_dungeon_master_module() +{ + scm_c_define_module("dungeon-master", init_dungeon_master_module, NULL); +} int main() { scm_init_guile(); + scm_init_dungeon_master_module(); scm_primitive_load(scm_from_locale_string("plugins/default/main.scm")); IrrlichtDevice* device = @@ -17,47 +37,17 @@ int main() if (!device) return 1; - IVideoDriver* driver = device->getVideoDriver(); - - f32 bg_r = 255.0f; - f32 bg_g = 255.0f; - f32 bg_b = 255.0f; - - bool fadeOut = -1; + device->setWindowCaption(L"Dungeon Master"); - u32 then = device->getTimer()->getTime(); + IVideoDriver* driver = device->getVideoDriver(); + IGUIEnvironment* env = device->getGUIEnvironment(); - const f32 fadeRate = 0.1f; + env->addStaticText(L"Dungeon Master", rect(150,20,350,40), true); while (device->run()) { - const u32 now = device->getTimer()->getTime(); - const f32 frameDeltaTime = (f32)(now - then); - then = now; - - if (bg_r <= 0.0f) fadeOut = false; - else if (bg_r >= 255.0f) fadeOut = true; - - if (fadeOut) - { - bg_r -= fadeRate * frameDeltaTime; - bg_g -= fadeRate * frameDeltaTime; - bg_b -= fadeRate * frameDeltaTime; - } - else - { - bg_r += fadeRate * frameDeltaTime; - bg_g += fadeRate * frameDeltaTime; - bg_b += fadeRate * frameDeltaTime; - } - - if (bg_r <= 0.0f) - bg_r = bg_b = bg_g = 0.0f; - else if (bg_r >= 255.0f) - bg_r = bg_b = bg_g = 255.0f; - - driver->beginScene(true, true, SColor(255, (u32)bg_r, - (u32)bg_g, (u32)bg_b)); + driver->beginScene(true, true, SColor(0, 200, 200, 200)); + env->drawAll(); driver->endScene(); }