bool nofMetalworker::StartWorking() { nextProducedTool = GetOrderedTool(); if(nextProducedTool == GD_NOTHING) nextProducedTool = GetRandomTool(); return (nextProducedTool != GD_NOTHING) && nofWorkman::StartWorking(); }
bool nofMetalworker::ReadyForWork() { nextProducedTool = GetOrderedTool(); if(nextProducedTool == GD_NOTHING) nextProducedTool = GetRandomTool(); if(current_ev) { assert(current_ev->id == 2 && state == STATE_WAITINGFORWARES_OR_PRODUCTIONSTOPPED); em->RemoveEvent(current_ev); } if(nextProducedTool != GD_NOTHING) return true; // Try again in some time (3000GF ~= 2min at 40ms/GF) current_ev = em->AddEvent(this, 3000, 2); return false; }