当前位置: 首页>>代码示例>>C++>>正文


C++ Monster::addSpell方法代码示例

本文整理汇总了C++中Monster::addSpell方法的典型用法代码示例。如果您正苦于以下问题:C++ Monster::addSpell方法的具体用法?C++ Monster::addSpell怎么用?C++ Monster::addSpell使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Monster的用法示例。


在下文中一共展示了Monster::addSpell方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: initCreatures


//.........这里部分代码省略.........
		int rareness = node->getValueAsInt( "rareness" );
		int speed = node->getValueAsInt( "speed" );
		float scale = node->getValueAsFloat( "scale" );
		bool npc = node->getValueAsBool( "npc" );
		bool harmless = node->getValueAsBool( "harmless" );
		bool special = node->getValueAsBool( "special" );
		GLuint statemod = node->getValueAsInt( "statemod" );

		Monster *m =
		  new Monster( name, displayName,
		               type,
		               level, hp, mp,
		               model_name, skin_name,
		               rareness, speed, armor,
		               scale, npc, portrait,
		               harmless );
		
		if( strlen( combatMusic ) ) {
			m->setCombatMusic( combatMusic );
		}
		
		if ( npc ) {
			npcs.push_back( m );
			m->setStartingStateMod( statemod );
		} else if ( harmless ) {
			harmlessCreatures.push_back( m );
		} else if ( special ) {
			// don't add to random monsters list
			// these are placed monsters like Mycotharsius.
		} else {
			vector<Monster*> *list = NULL;
			if ( monsters.find( level ) == monsters.end() ) {
				list = new vector<Monster*>();
				monsters[level] = list;
			} else {
				list = monsters[level];
			}
			list->push_back( m );
		}
		string s = name;
		for ( int i = 0; monstersByName.find( s ) != monstersByName.end(); ++i ) {
			cerr << "*** Monster::initCreatures() '" << s << "' occurs multiple times." << endl;
			stringstream numbered;
			numbered << name << " " << i+2;
			s = numbered.str();
		}
		monstersByName[s] = m;

		// store type and add sounds
		string typeStr = m->getModelName();
		bool found = false;
		for ( int i = 0; i < static_cast<int>( monsterTypes.size() ); i++ ) {
			if ( !strcmp( monsterTypes[i].c_str(), m->getModelName() ) ) {
				found = true;
				break;
			}
		}
		if ( !found ) {
			if ( !( npc || harmless ) ) monsterTypes.push_back( typeStr );

			if ( soundMap.find( typeStr ) == soundMap.end() ) {
				currentSoundMap = new map<int, vector<string>*>();
				soundMap[typeStr] = currentSoundMap;
			} else {
				currentSoundMap = soundMap[typeStr];
			}
			addMd2Sounds( m->getModelName(), currentSoundMap );
		}

		// backpack
		strcpy( tmp, node->getValueAsString( "inventory" ) );
		char *p = strtok( tmp, "," );
		while ( p ) {
			m->addItem( RpgItem::getItemByName( p ) );
			p = strtok( NULL, "," );
		}

		// spells
		strcpy( tmp, node->getValueAsString( "spells" ) );
		p = strtok( tmp, "," );
		while ( p ) {
			m->addSpell( Spell::getSpellByName( p ) );
			p = strtok( NULL, "," );
		}

		// skills
		vector<ConfigNode*> *vv = config->getDocument()->
		                          getChildrenByName( "skills" );
		if ( vv && !vv->empty() ) {
			ConfigNode *n = ( *vv )[0];
			set<string> names;
			n->getKeys( &names );
			for ( set<string>::iterator e = names.begin(); e != names.end(); ) {
				string skillStr = *e;
				int value = n->getValueAsInt( name );
				m->skills[ skillStr ] = value;
			}
		}
	}
}
开发者ID:q4a,项目名称:scourge,代码行数:101,代码来源:monster.cpp


注:本文中的Monster::addSpell方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。