本文整理汇总了C++中Weapon::addModifier方法的典型用法代码示例。如果您正苦于以下问题:C++ Weapon::addModifier方法的具体用法?C++ Weapon::addModifier怎么用?C++ Weapon::addModifier使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Weapon
的用法示例。
在下文中一共展示了Weapon::addModifier方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addModifier
void CharacterCore::addModifier(const SpellModifier& modifier, int slotNr, int modifierNr) {
Weapon* wep = dynamic_cast<Weapon*>(m_equippedItems.at(ItemType::Equipment_weapon));
if (wep == nullptr) return;
if (wep->addModifier(slotNr, modifierNr, modifier, true)) {
// check if this spell slot exists. If not, fill the slots
if (m_data.equippedWeaponSlots.size() < slotNr + 1) {
for (size_t i = m_data.equippedWeaponSlots.size(); i < slotNr + 1; ++i) {
std::pair<SpellID, std::vector<SpellModifier>> newSlot;
newSlot.first = SpellID::VOID;
m_data.equippedWeaponSlots.push_back(newSlot);
}
}
std::pair<SpellID, std::vector<SpellModifier>>& slot = m_data.equippedWeaponSlots.at(slotNr);
// check if this modifier slot exist
if (slot.second.size() < modifierNr + 1) {
g_logger->logInfo("CharacterCore", "Adding empty modifier slots slots to the weapon!");
for (size_t i = slot.second.size(); i < modifierNr + 1; ++i) {
slot.second.push_back(EMPTY_SPELLMODIFIER);
}
}
for (auto& it : slot.second) {
if (it.type == modifier.type) {
it.type = SpellModifierType::VOID;;
}
}
// add the modifier
slot.second[modifierNr] = modifier;
}
reloadWeaponSlots();
}
示例2: loadEquipmentItems
void CharacterCore::loadEquipmentItems()
{
clearEquippedItems();
Weapon* eqWeapon = nullptr;
Item* eqBack = nullptr;
Item* eqBody = nullptr;
Item* eqHead = nullptr;
Item* eqNeck = nullptr;
Item* eqRing1 = nullptr;
Item* eqRing2 = nullptr;
if (!m_data.equippedWeapon.empty() && g_resourceManager->getItemBean(m_data.equippedWeapon) != nullptr)
{
eqWeapon = new Weapon(*g_resourceManager->getItemBean(m_data.equippedWeapon));
// add equipped spells and their modifiers
for (int slot = 0; slot < m_data.equippedWeaponSlots.size(); slot++)
{
eqWeapon->addSpell(slot, m_data.equippedWeaponSlots[slot].first, false);
for (auto& it : m_data.equippedWeaponSlots[slot].second)
{
eqWeapon->addModifier(slot, it, false);
}
}
}
if (!m_data.equippedBack.empty() && g_resourceManager->getItemBean(m_data.equippedBack) != nullptr)
{
eqBack = new Item(*g_resourceManager->getItemBean(m_data.equippedBack));
}
if (!m_data.equippedBody.empty() && g_resourceManager->getItemBean(m_data.equippedBody) != nullptr)
{
eqBody = new Item(*g_resourceManager->getItemBean(m_data.equippedBody));
}
if (!m_data.equippedHead.empty() && g_resourceManager->getItemBean(m_data.equippedHead) != nullptr)
{
eqHead = new Item(*g_resourceManager->getItemBean(m_data.equippedHead));
}
if (!m_data.equippedNeck.empty() && g_resourceManager->getItemBean(m_data.equippedNeck) != nullptr)
{
eqNeck = new Item(*g_resourceManager->getItemBean(m_data.equippedNeck));
}
if (!m_data.equippedRing1.empty() && g_resourceManager->getItemBean(m_data.equippedRing1) != nullptr)
{
eqRing1 = new Item(*g_resourceManager->getItemBean(m_data.equippedRing1));
}
if (!m_data.equippedRing2.empty() && g_resourceManager->getItemBean(m_data.equippedRing2) != nullptr)
{
eqRing2 = new Item(*g_resourceManager->getItemBean(m_data.equippedRing2));
}
m_equippedItems.insert({ ItemType::Equipment_weapon, eqWeapon });
m_equippedItems.insert({ ItemType::Equipment_back, eqBack });
m_equippedItems.insert({ ItemType::Equipment_body, eqBody });
m_equippedItems.insert({ ItemType::Equipment_head, eqHead });
m_equippedItems.insert({ ItemType::Equipment_neck, eqNeck });
m_equippedItems.insert({ ItemType::Equipment_ring_1, eqRing1 });
m_equippedItems.insert({ ItemType::Equipment_ring_2, eqRing2 });
}
示例3: reloadWeaponSlots
void CharacterCore::reloadWeaponSlots() {
Weapon* wep = dynamic_cast<Weapon*>(m_equippedItems.at(ItemType::Equipment_weapon));
if (wep == nullptr) return;
wep->reload();
for (int slot = 0; slot < m_data.equippedWeaponSlots.size(); slot++) {
wep->addSpell(slot, m_data.equippedWeaponSlots[slot].first, false);
for (int i = 0; i < m_data.equippedWeaponSlots[slot].second.size(); ++i) {
wep->addModifier(slot, i, m_data.equippedWeaponSlots[slot].second[i], false);
}
}
}
示例4: addModifier
void CharacterCore::addModifier(const SpellModifier& modifier, int slotNr)
{
Weapon* wep = dynamic_cast<Weapon*>(m_equippedItems.at(ItemType::Equipment_weapon));
if (wep == nullptr) return;
if (wep->addModifier(slotNr, modifier, true))
{
std::pair<SpellID, std::vector<SpellModifier>>& slot = m_data.equippedWeaponSlots.at(slotNr);
// check if this type already exists. if yes, remove it.
for (auto& it = slot.second.begin(); it != slot.second.end(); /* don't increment here */)
{
if (it->type == modifier.type)
{
it = slot.second.erase(it);
}
else ++it;
}
slot.second.push_back(modifier);
}
reloadWeaponSlots();
}