void Raid::startRaid() { RaidEvent* raidEvent = getNextRaidEvent(); if (raidEvent) { state = RAIDSTATE_EXECUTING; nextEventEvent = g_scheduler.addEvent(createSchedulerTask(raidEvent->getDelay(), std::bind(&Raid::executeRaidEvent, this, raidEvent))); } }
bool Raid::executeRaidEvent(RaidEvent* raidEvent) { if(!raidEvent->executeEvent()) return !resetRaid(false); RaidEvent* newRaidEvent = getNextRaidEvent(); if(!newRaidEvent) return !resetRaid(false); nextEvent = Scheduler::getInstance().addEvent(createSchedulerTask( std::max(RAID_MINTICKS, (int32_t)(newRaidEvent->getDelay() - raidEvent->getDelay())), boost::bind(&Raid::executeRaidEvent, this, newRaidEvent))); return true; }
bool Raid::startRaid() { if(refCount) return true; RaidEvent* raidEvent = getNextRaidEvent(); if(!raidEvent) return false; nextEvent = Scheduler::getInstance().addEvent(createSchedulerTask( raidEvent->getDelay(), boost::bind(&Raid::executeRaidEvent, this, raidEvent))); Raids::getInstance()->setRunning(this); return true; }
void Raid::executeRaidEvent(RaidEvent* raidEvent) { if (raidEvent->executeEvent()) { nextEvent++; RaidEvent* newRaidEvent = getNextRaidEvent(); if (newRaidEvent) { uint32_t ticks = static_cast<uint32_t>(std::max<int32_t>(RAID_MINTICKS, newRaidEvent->getDelay() - raidEvent->getDelay())); nextEventEvent = g_scheduler.addEvent(createSchedulerTask(ticks, std::bind(&Raid::executeRaidEvent, this, newRaidEvent))); } else { resetRaid(); } } else { resetRaid(); } }
void Raid::executeRaidEvent(RaidEvent* raidEvent) { if(raidEvent->executeEvent()) { nextEvent++; RaidEvent* newRaidEvent = getNextRaidEvent(); if(newRaidEvent) { uint32_t ticks = (uint32_t)std::max(((uint32_t)RAID_MINTICKS), ((int32_t)newRaidEvent->getDelay() - raidEvent->getDelay())); nextEventEvent = g_scheduler.addEvent(createSchedulerTask(ticks, boost::bind(&Raid::executeRaidEvent, this, newRaidEvent))); } else resetRaid(); } else resetRaid(); }