X-Git-Url: https://git.jsancho.org/?p=dungeon-master.git;a=blobdiff_plain;f=src%2Fmods.cpp;fp=src%2Fmods.cpp;h=abdf472bfd8ff25c4c1a6519f1761a11773f94b7;hp=06a5b2fc67244e76eeda8296fb355410165ac159;hb=652177d7027e9a9fe6c6b8394042bdaabf5ada76;hpb=602500ffe32004dc0437ed55ac2d25ec69fc9e25 diff --git a/src/mods.cpp b/src/mods.cpp index 06a5b2f..abdf472 100644 --- a/src/mods.cpp +++ b/src/mods.cpp @@ -23,49 +23,52 @@ #include "paths.h" -SCM register_scene_generator(SCM name, SCM type, SCM proc) +SCM register_scene_generator (SCM name, SCM type, SCM proc) { - SceneGenerator generator {scm_to_locale_string(name), scm_to_locale_string(type), proc }; - register_generator(generator); - printf ("Register: %s (%s)\n", generator.name.c_str(), generator.type.c_str()); - scm_call_1(proc, scm_from_int(-1)); + SceneGenerator generator {scm_to_locale_string (name), scm_to_locale_string (type), proc }; + //register_generator (generator); + printf ("Register: %s (%s)\n", generator.name.c_str (), generator.type.c_str ()); + scm_call_1 (proc, scm_from_int (-1)); return SCM_UNSPECIFIED; } -void init_dungeon_master_module(void *unused) +void init_dungeon_master_module (void *unused) { - scm_c_define_gsubr("register-scene-generator", 3, 0, 0, (scm_t_subr)register_scene_generator); - scm_c_export("register-scene-generator", NULL); + scm_c_define_gsubr ("register-scene-generator", 3, 0, 0, (scm_t_subr) register_scene_generator); + scm_c_export ("register-scene-generator", NULL); } -void scm_init_dungeon_master_module() +void scm_init_dungeon_master_module () { - scm_c_define_module("dungeon-master", init_dungeon_master_module, NULL); + scm_c_define_module ("dungeon-master", init_dungeon_master_module, NULL); } -void load_mods() +void load_dmaster_mods () { - scm_init_guile(); - scm_init_dungeon_master_module(); + scm_init_guile (); + scm_init_dungeon_master_module (); - std::set paths = get_dm_paths(); + std::set paths = get_dmaster_paths (); DIR* mods_dir; struct dirent* mod; std::string mods_path, mod_main; - for (const std::string &path : paths) { - mods_path = path + DIR_DELIM + "mods"; - mods_dir = opendir(mods_path.c_str()); - if (mods_dir != NULL) { - while (mod = readdir(mods_dir)) { - if (strcmp(mod->d_name, ".") != 0 && strcmp(mod->d_name, "..") != 0) { - mod_main = mods_path + DIR_DELIM + mod->d_name + DIR_DELIM + "main.scm"; - scm_primitive_load(scm_from_locale_string(mod_main.c_str())); - } - } + for (const std::string &path : paths) + { + mods_path = path + PATH_DELIM + "mods"; + mods_dir = opendir (mods_path.c_str ()); + if (mods_dir != NULL) + { + while (mod = readdir (mods_dir)) + { + if (strstr (mod->d_name, ".scm") != NULL) { + mod_main = mods_path + PATH_DELIM + mod->d_name; + scm_primitive_load (scm_from_locale_string (mod_main.c_str ())); + } + } + } + closedir (mods_dir); } - closedir(mods_dir); - } }