本文整理汇总了C++中UNORDERED_MAP::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ UNORDERED_MAP::begin方法的具体用法?C++ UNORDERED_MAP::begin怎么用?C++ UNORDERED_MAP::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UNORDERED_MAP
的用法示例。
在下文中一共展示了UNORDERED_MAP::begin方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: removeNode
void CNodeDefManager::removeNode(const std::string &name)
{
// Pre-condition
assert(name != "");
// Erase name from name ID mapping
content_t id = CONTENT_IGNORE;
if (m_name_id_mapping.getId(name, id)) {
m_name_id_mapping.eraseName(name);
m_name_id_mapping_with_aliases.erase(name);
}
// Erase node content from all groups it belongs to
for (UNORDERED_MAP<std::string, GroupItems>::iterator iter_groups =
m_group_to_items.begin();
iter_groups != m_group_to_items.end();) {
GroupItems &items = iter_groups->second;
for (GroupItems::iterator iter_groupitems = items.begin();
iter_groupitems != items.end();) {
if (iter_groupitems->first == id)
items.erase(iter_groupitems++);
else
iter_groupitems++;
}
// Check if group is empty
if (items.size() == 0)
m_group_to_items.erase(iter_groups++);
else
iter_groups++;
}
}
示例2: SelectRandomNotStomach
Unit* SelectRandomNotStomach()
{
if (Stomach_Map.empty())
return NULL;
UNORDERED_MAP<uint64, bool>::const_iterator i = Stomach_Map.begin();
std::list<Unit*> temp;
std::list<Unit*>::const_iterator j;
//Get all players in map
while (i != Stomach_Map.end())
{
//Check for valid player
Unit* pUnit = Unit::GetUnit(*me, i->first);
//Only units out of stomach
if (pUnit && i->second == false)
temp.push_back(pUnit);
++i;
}
if (temp.empty())
return NULL;
j = temp.begin();
//Get random but only if we have more than one unit on threat list
if (temp.size() > 1)
advance (j , rand() % (temp.size() - 1));
return (*j);
}
示例3: UpdateAI
void UpdateAI(const uint32 uiDiff)
{
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;
if (m_uiMorphTimer)
{
if (m_uiMorphTimer <= uiDiff)
{
if (DoCastSpellIfCan(m_creature, SPELL_POLYMORPH_BACKFIRE, CAST_TRIGGERED) == CAST_OK)
{
m_uiMorphTimer = 0;
m_creature->ForcedDespawn();
}
}
else
m_uiMorphTimer -= uiDiff;
}
for (UNORDERED_MAP<uint8, uint32>::iterator itr = m_mSpellTimers.begin(); itr != m_mSpellTimers.end(); ++itr)
{
if (itr->second < uiDiff)
{
if (CanUseSpecialAbility(itr->first))
{
itr->second = m_aSpitelashAbility[itr->first].m_uiCooldown;
break;
}
}
else
itr->second -= uiDiff;
}
DoMeleeAttackIfReady();
}
示例4: Reset
void Reset()
{
m_uiMorphTimer = 0;
for (UNORDERED_MAP<uint8, uint32>::iterator itr = m_mSpellTimers.begin(); itr != m_mSpellTimers.end(); ++itr)
itr->second = m_aSpitelashAbility[itr->first].m_uiInitialTimer;
}
示例5: UpdateAI
void UpdateAI(const uint32 uiDiff)
{
//Return since we have no target
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;
for (UNORDERED_MAP<uint8, uint32>::iterator itr = m_mSpellTimers.begin(); itr != m_mSpellTimers.end(); ++itr)
{
if (itr->second < uiDiff)
{
if (CanUseSpecialAbility(itr->first))
{
itr->second = m_aSilverHandAbility[itr->first].m_uiCooldown;
break;
}
}
else
itr->second -= uiDiff;
}
DoMeleeAttackIfReady();
}
示例6: HasAuraName
bool bot_ai::HasAuraName (Unit *unit, std::string spell, uint64 casterGuid)
{
if (spell.length()==0) return false;
int loc = master->GetSession()->GetSessionDbcLocale();;
if(unit == NULL) return false;
Unit *target = unit;
if(target->isDead()) return false;
Unit::AuraMap &vAuras = (Unit::AuraMap&)target->GetOwnedAuras();
//save the map of auras b/c it can crash if an aura goes away while looping
UNORDERED_MAP<uint64, Aura*> auraMap;
for(Unit::AuraMap::const_iterator iter = vAuras.begin(); iter!= vAuras.end(); ++iter)
{
Aura *aura = iter->second;
(auraMap)[iter->first] = aura;
}
// now search our new map
for(UNORDERED_MAP<uint64, Aura*>::iterator itr = auraMap.begin(); itr!= auraMap.end(); ++itr)
{
const SpellEntry *spellInfo = itr->second->GetSpellProto();
const std::string name = spellInfo->SpellName[loc];
if(!spell.compare(name))
{
if(casterGuid == 0){ //don't care who casted it
return true;
} else if(casterGuid == itr->second->GetCasterGUID()){ //only if correct caster casted it
return true;
}
}
}
return false;
}
示例7: HasAuraIcon
bool bot_ai::HasAuraIcon (Unit *unit, uint32 SpellIconID, uint64 casterGuid)
{
int loc = master->GetSession()->GetSessionDbcLocale();;
if(unit == NULL) return false;
Unit *target = unit;
if(target->isDead()) return false;
Unit::AuraMap &vAuras = (Unit::AuraMap&)target->GetOwnedAuras();
//save the map of auras b/c it can crash if an aura goes away while looping
UNORDERED_MAP<uint64, Aura*> auraMap;
for(Unit::AuraMap::const_iterator iter = vAuras.begin(); iter!= vAuras.end(); ++iter)
{
Aura *aura = iter->second;
(auraMap)[iter->first] = aura;
}
// now search our new map
for(UNORDERED_MAP<uint64, Aura*>::iterator itr = auraMap.begin(); itr!= auraMap.end(); ++itr)
{
const SpellEntry *spellInfo = itr->second->GetSpellProto();
uint32 spelliconId = spellInfo->SpellIconID;
//error_log ("bot_ai.HasAuraICON: %s has icon %u",spellInfo->SpellName[master->GetSession()->GetSessionDbcLocale()], spellInfo->SpellIconID);
if(spelliconId==SpellIconID)
{
//error_log ("bot_ai.HasAuraICON: %s has icon %u",spellInfo->SpellName[master->GetSession()->GetSessionDbcLocale()], spellInfo->SpellIconID);
if(casterGuid == 0){ //don't care who casted it
return true;
} else if(casterGuid == itr->second->GetCasterGUID()){ //only if correct caster casted it
return true;
}
}
}
return false;
}
示例8: UpdateAI
void UpdateAI(const uint32 diff)
{
//Check if we have a target
if (!UpdateVictim())
{
//No target so we'll use this section to do our random wispers instance wide
//WisperTimer
if (WisperTimer <= diff)
{
Map* map = me->GetMap();
if (!map->IsDungeon()) return;
//Play random sound to the zone
Map::PlayerList const &PlayerList = map->GetPlayers();
if (!PlayerList.isEmpty())
{
for (Map::PlayerList::const_iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr)
{
if (Player* pPlr = itr->getSource())
pPlr->PlayDirectSound(RANDOM_SOUND_WHISPER, pPlr);
}
}
//One random wisper every 90 - 300 seconds
WisperTimer = urand(90000, 300000);
} else WisperTimer -= diff;
return;
}
me->SetTarget(0);
//No instance
if (!pInst)
return;
uint32 currentPhase = pInst->GetData(DATA_CTHUN_PHASE);
if (currentPhase == PHASE_CTHUN_STOMACH || currentPhase == PHASE_CTHUN_WEAK)
{
// EyeTentacleTimer
if (EyeTentacleTimer <= diff)
{
//Spawn the 8 Eye Tentacles in the corret spots
SpawnEyeTentacle(0, 20); //south
SpawnEyeTentacle(10, 10); //south west
SpawnEyeTentacle(20, 0); //west
SpawnEyeTentacle(10, -10); //north west
SpawnEyeTentacle(0, -20); //north
SpawnEyeTentacle(-10, -10); //north east
SpawnEyeTentacle(-20, 0); // east
SpawnEyeTentacle(-10, 10); // south east
EyeTentacleTimer = 30000; // every 30sec in phase 2
} else EyeTentacleTimer -= diff;
}
switch (currentPhase)
{
//Transition phase
case PHASE_CTHUN_TRANSITION:
//PhaseTimer
if (PhaseTimer <= diff)
{
//Switch
pInst->SetData(DATA_CTHUN_PHASE, PHASE_CTHUN_STOMACH);
//Switch to c'thun model
me->InterruptNonMeleeSpells(false);
DoCast(me, SPELL_TRANSFORM, false);
me->SetFullHealth();
me->SetVisible(true);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
//Emerging phase
//AttackStart(Unit::GetUnit(*me, HoldpPlayer));
DoZoneInCombat();
//Place all units in threat list on outside of stomach
Stomach_Map.clear();
std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
for (; i != me->getThreatManager().getThreatList().end(); ++i)
{
//Outside stomach
Stomach_Map[(*i)->getUnitGuid()] = false;
}
//Spawn 2 flesh tentacles
FleshTentaclesKilled = 0;
//Spawn flesh tentacle
for (uint8 i = 0; i < 2; i++)
{
Creature* spawned = me->SummonCreature(MOB_FLESH_TENTACLE, FleshTentaclePos[i], TEMPSUMMON_CORPSE_DESPAWN);
if (!spawned)
++FleshTentaclesKilled;
}
//.........这里部分代码省略.........
示例9: UpdateAI
void UpdateAI(const uint32 diff)
{
//Check if we have a target
if (!UpdateVictim())
{
//No target so we'll use this section to do our random wispers instance wide
//WisperTimer
if (WisperTimer <= diff)
{
Map *map = me->GetMap();
if (!map->IsDungeon()) return;
Map::PlayerList const &PlayerList = map->GetPlayers();
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
{
if (Player* i_pl = i->getSource())
{
//Play random sound to the zone
i_pl->SendPlaySound(RANDOM_SOUND_WHISPER, true);
}
}
//One random wisper every 90 - 300 seconds
WisperTimer = 90000 + (rand()% 210000);
} else WisperTimer -= diff;
return;
}
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
//No instance
if (!pInst)
return;
switch (pInst->GetData(DATA_CTHUN_PHASE))
{
//Transition phase
case 2:
{
//PhaseTimer
if (PhaseTimer <= diff)
{
//Switch
pInst->SetData(DATA_CTHUN_PHASE, 3);
//Switch to c'thun model
me->InterruptNonMeleeSpells(false);
DoCast(me, SPELL_TRANSFORM, false);
me->SetHealth(me->GetMaxHealth());
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
//Emerging phase
//AttackStart(Unit::GetUnit(*me, HoldPlayer));
DoZoneInCombat();
//Place all units in threat list on outside of stomach
Stomach_Map.clear();
std::list<HostileReference*>::iterator i = me->getThreatManager().getThreatList().begin();
for (; i != me->getThreatManager().getThreatList().end(); ++i)
{
//Outside stomach
Stomach_Map[(*i)->getUnitGuid()] = false;
}
//Spawn 2 flesh tentacles
FleshTentaclesKilled = 0;
Creature* Spawned;
//Spawn flesh tentacle
Spawned = (Creature*)me->SummonCreature(MOB_FLESH_TENTACLE, TENTACLE_POS1_X, TENTACLE_POS1_Y, TENTACLE_POS1_Z, TENTACLE_POS1_O, TEMPSUMMON_CORPSE_DESPAWN, 0);
if (!Spawned)
FleshTentaclesKilled++;
else
((flesh_tentacleAI*)(Spawned->AI()))->SpawnedByCthun(me->GetGUID());
//Spawn flesh tentacle
Spawned = (Creature*)me->SummonCreature(MOB_FLESH_TENTACLE, TENTACLE_POS2_X, TENTACLE_POS2_Y, TENTACLE_POS2_Z, TENTACLE_POS2_O, TEMPSUMMON_CORPSE_DESPAWN, 0);
if (!Spawned)
FleshTentaclesKilled++;
else
((flesh_tentacleAI*)(Spawned->AI()))->SpawnedByCthun(me->GetGUID());
PhaseTimer = 0;
} else PhaseTimer -= diff;
}break;
//Body Phase
case 3:
{
//Remove Target field
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
//Weaken
//.........这里部分代码省略.........
示例10: Reset
void Reset()
{
for (UNORDERED_MAP<uint8, uint32>::iterator itr = m_mSpellTimers.begin(); itr != m_mSpellTimers.end(); ++itr)
itr->second = m_aSilverHandAbility[itr->first].m_uiInitialTimer;
}