X-Git-Url: https://git.jsancho.org/?p=dungeon-master.git;a=blobdiff_plain;f=src%2Fmods.cpp;fp=src%2Fmods.cpp;h=0000000000000000000000000000000000000000;hp=7b9115e6320618ce749112f79ec9a15203e2c8a5;hb=8f36ecdca1766ddd2a177fa46dc885c7f8e14130;hpb=4fce641cc077d18f972e250d2fe3be5067618127 diff --git a/src/mods.cpp b/src/mods.cpp deleted file mode 100644 index 7b9115e..0000000 --- a/src/mods.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* Dungeon Master --- RPG Adventure Generator - Copyright © 2019 Javier Sancho - - Dungeon Master 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 3 of the License, or - (at your option) any later version. - - Dungeon Master 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 Dungeon Master. If not, see . -*/ - -#include -#include -#include "generators.h" -#include "mods.h" -#include "paths.h" - -SCM -register_scene_generator (SCM name, - SCM type, - SCM proc) -{ - SceneGenerator* generator = - register_generator (scm_to_utf8_string (name), - scm_to_utf8_string (scm_symbol_to_string (type)), - proc); - printf ("Register: %s (%s)\n", generator->name, generator->type); - scm_call_1 (generator->proc, scm_from_int (-1)); - return SCM_UNSPECIFIED; -} - -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); -} - -void -scm_init_dungeon_master_module () -{ - scm_c_define_module ("dungeon-master", init_dungeon_master_module, NULL); -} - -void -add_to_load_path (std::string path) -{ - // Add path to %load-path variable, needed for mods structured like modules - std::string exp = "(add-to-load-path \"" + path + "\")"; - scm_c_eval_string (exp.c_str ()); -} - -void -load_dmaster_mods () -{ - scm_init_guile (); - scm_init_dungeon_master_module (); - - 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 + PATH_DELIM + "mods"; - add_to_load_path (mods_path); - 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); - } -}