bool Creature::setAttackedCreature(Creature* creature) { if(creature) { const Position& creaturePos = creature->getPosition(); if(creaturePos.z != getPosition().z) { std::cout << "Creature::setAttackedCreature false " << creaturePos.z << " - " << getPosition().z << std::endl; attackedCreature = NULL; return false; } } attackedCreature = creature; if(attackedCreature) { onAttackedCreature(attackedCreature); attackedCreature->onAttacked(); } for(std::list<Creature*>::iterator cit = summons.begin(); cit != summons.end(); ++cit) (*cit)->setAttackedCreature(creature); return true; }
bool Creature::setAttackedCreature(Creature* creature) { if (creature) { const Position& creaturePos = creature->getPosition(); if (creaturePos.z != getPosition().z || !canSee(creaturePos)) { attackedCreature = NULL; return false; } attackedCreature = creature; onAttackedCreature(attackedCreature); attackedCreature->onAttacked(); } else { attackedCreature = NULL; } for (Creature* summon : summons) { summon->setAttackedCreature(creature); } return true; }
bool Creature::setAttackedCreature(Creature* creature) { if(creature){ const Position& creaturePos = creature->getPosition(); if(creaturePos.z != getPosition().z || !canSee(creaturePos)){ attackedCreature = NULL; return false; } } attackedCreature = creature; if(attackedCreature){ onAttackedCreature(attackedCreature); attackedCreature->onAttacked(); } std::list<Creature*>::iterator cit; for(cit = summons.begin(); cit != summons.end(); ++cit) { (*cit)->setAttackedCreature(creature); } return true; }