本文整理汇总了C++中clib::ConfigElem::remove_prop方法的典型用法代码示例。如果您正苦于以下问题:C++ ConfigElem::remove_prop方法的具体用法?C++ ConfigElem::remove_prop怎么用?C++ ConfigElem::remove_prop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类clib::ConfigElem
的用法示例。
在下文中一共展示了ConfigElem::remove_prop方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readProperties
void UCorpse::readProperties( Clib::ConfigElem& elem )
{
// corpses can be the same color as mobiles
u16 savecolor = elem.remove_ushort( "COLOR", 0 );
base::readProperties( elem );
color = savecolor;
elem.remove_prop( "CorpseType", &corpsetype );
elem.remove_prop( "OwnerSerial", &ownerserial );
take_contents_to_grave = elem.remove_bool( "TakeContentsToGrave", false );
movable_ = false;
}
示例2: runtime_error
USpell::USpell( Clib::ConfigElem& elem, Plib::Package* pkg ) :
pkg_( pkg ),
spellid_( elem.remove_ushort( "SPELLID" ) ),
name_( elem.remove_string( "NAME" ) ),
power_words_( elem.remove_string( "POWERWORDS" ) ),
scriptdef_( elem.remove_string( "SCRIPT", "" ), pkg, "scripts/" )
{
unsigned short action;
if ( elem.remove_prop( "ANIMATION", &action ) )
{
if ( UACTION_IS_VALID( action ) )
{
action_ = static_cast<UACTION>( action );
}
else
{
elem.throw_error( "Animation is out of range" );
}
}
else
{
action_ = ACTION_CAST_SPELL1;
}
unsigned short circle;
if ( elem.remove_prop( "CIRCLE", &circle ) )
{
if ( circle < 1 || circle > spellcircles.size() ||
spellcircles[circle - 1] == NULL )
{
ERROR_PRINT << "Error reading spell " << name_
<< ": Circle " << circle << " is not defined.\n";
throw std::runtime_error( "Config file error" );
}
params_ = spellcircles[circle - 1]->params;
}
else
{
params_ = USpellParams( elem );
}
std::string reagent_name;
while ( elem.remove_prop( "Reagent", &reagent_name ) )
{
unsigned int reagent = Items::get_objtype_from_string( reagent_name );
reglist_.push_back( reagent );
}
}
示例3: while
AuxService::AuxService( const Plib::Package* pkg, Clib::ConfigElem& elem ) :
_pkg( pkg ),
_scriptdef( elem.remove_string( "SCRIPT" ), _pkg ),
_port( elem.remove_ushort( "PORT" ) )
{
std::string iptext;
while ( elem.remove_prop( "IPMATCH", &iptext ) )
{
auto delim = iptext.find_first_of("/");
if (delim != std::string::npos)
{
std::string ipaddr_str = iptext.substr(0, delim);
std::string ipmask_str = iptext.substr(delim + 1);
unsigned int ipaddr = inet_addr( ipaddr_str.c_str() );
unsigned int ipmask = inet_addr( ipmask_str.c_str() );
_aux_ip_match.push_back( ipaddr );
_aux_ip_match_mask.push_back( ipmask );
}
else
{
unsigned int ipaddr = inet_addr( iptext.c_str() );
_aux_ip_match.push_back( ipaddr );
_aux_ip_match_mask.push_back( 0xFFffFFffLu );
}
}
}
示例4: name
CmdLevel::CmdLevel( Clib::ConfigElem& elem, int cmdlevelnum )
: name( elem.rest() ), cmdlevel( static_cast<unsigned char>( cmdlevelnum ) )
{
Clib::mklower( name );
std::string tmp;
while ( elem.remove_prop( "DIR", &tmp ) )
{
Clib::mklower( tmp );
add_searchdir( nullptr, Clib::normalized_dir_form( tmp ) );
}
while ( elem.remove_prop( "ALIAS", &tmp ) )
{
Clib::mklower( tmp );
aliases.push_back( tmp );
}
}
示例5: load_general_entry
// Strength
// Dexterity
void load_general_entry( const Plib::Package* pkg, Clib::ConfigElem& elem )
{
checka( elem,
networkManager.uoclient_general.strength,
"Strength" );
checka( elem,
networkManager.uoclient_general.intelligence,
"Intelligence" );
checka( elem,
networkManager.uoclient_general.dexterity,
"Dexterity" );
checkv( elem,
networkManager.uoclient_general.hits,
"Hits" );
checkv( elem,
networkManager.uoclient_general.stamina,
"Stamina" );
checkv( elem,
networkManager.uoclient_general.mana,
"Mana" );
//dave changed 3/15/03, support configurable max skillid
networkManager.uoclient_general.maxskills = elem.remove_ushort( "MaxSkillID", SKILLID__HIGHEST );
std::string temp;
if ( elem.remove_prop( "MethodScript", &temp ) )
{
if ( !temp.empty() )
{
ExportScript* shs = new ExportScript( pkg, temp );
if ( shs->Initialize() )
networkManager.uoclient_general.method_script = shs;
else
delete shs;
}
}
}
示例6: read_config
void ResourceDef::read_config( Clib::ConfigElem& elem )
{
initial_units_ = elem.remove_ulong( "InitialUnits" );
// start current_units at initial_units in case there's no entry in
// RESOURCE.DAT
current_units_ = initial_units_;
unsigned short tmp;
while ( elem.remove_prop( "LandTile", &tmp ) )
{
landtiles_.insert( tmp );
}
while ( elem.remove_prop( "ObjType", &tmp ) )
{
tiles_.insert( tmp );
}
}
示例7: EquipDesc
/// Since the constructor is doing some wrong guessing to tell when an armor is a shield,
/// forceShield will force to consider it a shield
ArmorDesc::ArmorDesc( u32 objtype, Clib::ConfigElem& elem, const Plib::Package* pkg,
bool forceShield )
: EquipDesc( objtype, elem, ARMORDESC, pkg ),
ar( elem.remove_ushort( "AR", 0 ) ),
zones(),
on_hit_script( elem.remove_string( "ONHITSCRIPT", "" ), pkg, "scripts/items/" )
{
std::string coverage;
while ( elem.remove_prop( "COVERAGE", &coverage ) )
{
try
{
zones.insert( Mobile::zone_name_to_zone( coverage.c_str() ) );
}
catch ( std::runtime_error& )
{
fmt::Writer tmp;
tmp.Format( "Error in Objtype 0x{:X}" ) << objtype;
if ( pkg == NULL )
tmp << "config/itemdesc.cfg\n";
else
tmp << pkg->dir() << "itemdesc.cfg\n";
ERROR_PRINT << tmp.str();
throw;
}
}
if ( zones.empty() )
{
// No 'COVERAGE' entries existed.
// default coverage based on object type/layer
unsigned short layer = Plib::systemstate.tile[graphic].layer;
// special case for shields - they effectively have no coverage.
if ( !forceShield && layer != Core::LAYER_HAND1 && layer != Core::LAYER_HAND2 )
{
try
{
zones.insert( Mobile::layer_to_zone( layer ) );
}
catch ( std::runtime_error& )
{
fmt::Writer tmp;
tmp.Format( "Error in Objtype 0x{:X}" ) << objtype;
if ( pkg == NULL )
tmp << "config/itemdesc.cfg\n";
else
tmp << pkg->dir() << "itemdesc.cfg\n";
ERROR_PRINT << tmp.str();
throw;
}
}
}
}
示例8: pkg
Vital::Vital( const Plib::Package* pkg, Clib::ConfigElem& elem ) :
pkg( pkg ),
name( elem.rest() ),
aliases(),
vitalid( 0 ),
next( NULL ),
get_regenrate_func( FindExportedFunction( elem, pkg, elem.remove_string( "RegenRateFunction" ), 1 ) ),
get_maximum_func( FindExportedFunction( elem, pkg, elem.remove_string( "MaximumFunction" ), 1 ) ),
underflow_func( NULL ),
regen_while_dead( elem.remove_bool( "RegenWhileDead", false ) )
{
aliases.push_back( name );
std::string tmp;
while ( elem.remove_prop( "Alias", &tmp ) )
aliases.push_back( tmp );
if ( elem.remove_prop( "UnderflowFunction", &tmp ) )
{
underflow_func = FindExportedFunction( elem, pkg, tmp, 2 );
}
}
示例9: pkg
Attribute::Attribute( const Plib::Package* pkg, Clib::ConfigElem& elem ) :
pkg( pkg ),
name( elem.rest() ),
attrid( 0 ),
aliases(),
next( NULL ),
getintrinsicmod_func( nullptr ),
delay_seconds( elem.remove_ushort( "DELAY", 0 ) ),
unhides( elem.remove_bool( "UNHIDES", true ) ),
disable_core_checks( elem.remove_bool( "DisableCoreChecks", false ) ),
default_cap( elem.remove_ushort( "DefaultCap", Core::settingsManager.ssopt.default_attribute_cap ) ),
script_( elem.remove_string( "SCRIPT", "" ), pkg, "scripts/skills/" )
{
aliases.push_back( name );
std::string tmp;
while ( elem.remove_prop( "Alias", &tmp ) )
aliases.push_back( tmp );
if ( elem.remove_prop( "GetIntrinsicModFunction", &tmp ) )
{
getintrinsicmod_func = Core::FindExportedFunction( elem, pkg, tmp, 1 );
}
}
示例10: checkv
void checkv( Clib::ConfigElem& elem, UoClientGeneral::Mapping& mapping, const char* tag )
{
if ( !mapping.any )
{
std::string name;
if ( elem.remove_prop( tag, &name ) )
{
mapping.name = name;
mapping.any = true;
Vital* pVital = FindVital( name );
if ( pVital )
mapping.id = pVital->vitalid;
else
elem.throw_error( "Vital " + name + " not found" );
}
}
}
示例11: checka
void checka( Clib::ConfigElem& elem, UoClientGeneral::Mapping& mapping, const char* tag )
{
if ( !mapping.any )
{
std::string name;
if ( elem.remove_prop( tag, &name ) )
{
mapping.name = name;
mapping.any = true;
Mobile::Attribute* pAttr = Mobile::Attribute::FindAttribute( name );
if ( pAttr )
mapping.id = pAttr->attrid;
else
elem.throw_error( "Attribute " + name + " not found" );
}
}
}
示例12: process_package_cmds_cfg
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 ) );
}
}
}
示例13: load_resource_cfg
void load_resource_cfg()
{
if ( !Clib::FileExists( "regions/resource.cfg" ) )
{
if ( Plib::systemstate.config.loglevel > 1 )
INFO_PRINT << "File regions/resource.cfg not found, skipping.\n";
return;
}
Clib::ConfigFile cf( "regions/resource.cfg", "ResourceSystem" );
Clib::ConfigElem elem;
while ( cf.read( elem ) )
{
std::string resourcename;
while ( elem.remove_prop( "ResourceType", &resourcename ) )
{
read_resource_cfg( resourcename.c_str() );
}
}
if ( Plib::systemstate.config.count_resource_tiles )
count_resource_tiles();
}