double VillageControl::Villain::getAttackProbability(const VillageControl* self) const { double ret = 0; for (auto& elem : triggers) { double val = getTriggerValue(elem, self); CHECK(val >= 0 && val <= 1); ret = max(ret, val); Debug() << "trigger " << EnumInfo<AttackTriggerId>::getString(elem.getId()) << " village " << self->getCollective()->getName().getFull() << " under attack probability " << val; } return ret; }
BACIMonitor::BACIMonitor(const ACE_CString& _name, int _callbackID, MonitorImplementator* _monitorImplementator_p, const ACS::TimeInterval& _triggerTime, const BACIValue& _triggerValue, const ACS::TimeInterval& _minTriggerTime, const BACIValue& _minTriggerValue, BACIProperty* _property, const ACS::TimeInterval& _transmitTime, const UpdateMode& _updateMode, const bool _archivingMonitor, const bool _suspended, const bool _deltaValueAndTimerInteraction, const unsigned int _priority) : name_m(_name), callbackID_m(_callbackID), monitorImplementator_mp(_monitorImplementator_p), updateMode_m(mumLast), triggerTime_m(0), minTriggerTime_m(_minTriggerTime), transmitTime_m(0), userControlledTransmitTime_m(false), lastTime_m(0), minTriggerValue_m(_minTriggerValue), triggerOnValue_m(false), triggerOnValuePercent_m(false), property_mp(_property), archivingMonitor_m(_archivingMonitor), suspended_m(_suspended), deltaValueAndTimerInteraction_m(_deltaValueAndTimerInteraction), priority_m(_priority), inDestructionState_m(false), destroyed_m(false) { ACS_TRACE("baci::BACIMonitor::BACIMonitor"); ACS_LOG(0, "baci::BACIMonitor::BACIMonitor", (static_cast<ACE_Log_Priority>(LM_DELOUSE), "Creating monitor '%s' (archiving: %d, triggerTime: %d)", name_m.c_str(), archivingMonitor_m, (unsigned)_triggerTime)); if (archivingMonitor_m==true) { ACS_LOG(0, "baci::BACIMonitor::BACIMonitor", (LM_DEBUG, "Archiver monitor with priority %d", priority_m)); } // VxWorks (should not be as initializer) monitorImplementator_mp = 0; // set update mode setUpdateMode(_updateMode); // set monitors setTriggerTime(_triggerTime); setTriggerValue(_triggerValue); if (getTriggerValue().isNull()==0 && getTriggerValue().noDelta()==false) { setTriggerOnValue(true); } if (getTriggerValuePercent().isNull()==0 && getTriggerValuePercent().noDelta()==false) { setTriggerOnValuePercent(true); } // set transmit_time if (_transmitTime!=0) { userControlledTransmitTime_m = true; setTransmitTime(_transmitTime); // user now handles monitor sync. } if (archivingMonitor_m==false) { property_mp->getComponent()->getCallback(callbackID_m)->setRemoveOnFailure(false); } monitorImplementator_mp = _monitorImplementator_p; // add monitor property_mp->addMonitor(this); }