BObjectRef PackageObjImp::get_member( const char* membername ) { if ( stricmp(membername,"name") == 0 ) { return BObjectRef(new String( value()->name() )); } else if ( stricmp(membername, "version") == 0 ) { return BObjectRef(new String(value()->version())); } else if ( stricmp(membername, "supports_http") == 0 ) { const Package* pkg = value().Ptr(); return BObjectRef(new BLong(FileExists(pkg->dir()+"www"))); } else if ( stricmp(membername, "npcdesc") == 0 ) { Package* pkg = value().Ptr(); string filepath = GetPackageCfgPath(pkg, "npcdesc.cfg"); return BObjectRef(new BLong(FileExists(filepath))); } else { return BObjectRef( new BError( "Undefined member" ) ); } }
void process_package_cmds_cfg( Plib::Package* pkg ) { // ConfigFile cf( (pkg->dir() + "cmds.cfg").c_str(), "Commands" ); Clib::ConfigFile cf( GetPackageCfgPath( pkg, "cmds.cfg" ).c_str(), "Commands" ); Clib::ConfigElem elem; while ( cf.read( elem ) ) { CmdLevel* cmdlevel = find_cmdlevel( elem.rest() ); if ( !cmdlevel ) { elem.throw_error( std::string( "Command Level " ) + elem.rest() + " not found." ); } std::string tmp; while ( elem.remove_prop( "DIR", &tmp ) ) { Clib::mklower( tmp ); cmdlevel->add_searchdir_front( pkg, Clib::normalized_dir_form( pkg->dir() + tmp ) ); } } }
void read_npc_templates( Plib::Package* pkg ) { std::string filename = GetPackageCfgPath( pkg, "npcdesc.cfg" ); if ( !Clib::FileExists( filename ) ) return; Clib::ConfigFile cf( filename.c_str() ); Clib::ConfigElem elem; while ( cf.read( elem ) ) { if ( elem.type_is( "NpcTemplate" ) ) { // first determine the NPC template name. std::string namebase; const char* rest = elem.rest(); if ( rest != NULL && *rest != '\0' ) { namebase = rest; } else { namebase = elem.remove_string( "TemplateName" ); } std::string descname; if ( pkg != NULL ) { descname = ":" + pkg->name() + ":" + namebase; elem.set_rest( descname.c_str() ); } else descname = namebase; gamestate.npc_template_elems[descname] = NpcTemplateElem( cf, elem ); } } }
void load_special_storedconfig( string cfgname ) { string main_cfg = "config/" + cfgname + ".cfg"; CreateEmptyStoredConfigFile(main_cfg.c_str()); ref_ptr<StoredConfigFile> scfg = FindConfigFile(main_cfg, ""); if ( FileExists(main_cfg.c_str()) ) { ConfigFile cf_main(main_cfg.c_str()); scfg->load(cf_main); } for( Packages::iterator itr = packages.begin(); itr != packages.end(); ++itr ) { Package* pkg = (*itr); //string filename = pkg->dir() + cfgname + ".cfg"; string filename = GetPackageCfgPath(pkg, cfgname+".cfg"); if ( FileExists(filename.c_str()) ) { ConfigFile cf(filename.c_str()); scfg->load(cf); } } }