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" ) );
    }
}
Example #2
0
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 ) );
    }
  }
}
Example #3
0
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 );
    }
  }
}
Example #4
0
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);
		}
	}
}