bool nofMetalworker::StartWorking()
{
    nextProducedTool = GetOrderedTool();
    if(nextProducedTool == GD_NOTHING)
        nextProducedTool = GetRandomTool();

    return (nextProducedTool != GD_NOTHING) && nofWorkman::StartWorking();
}
Ejemplo n.º 2
0
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;
}