def informNewChoice():
    global clients, newOrder
    dw.set_led_head(dw.led_colors['GREEN'])
    OralInteraction.informNewChoice(clients, newOrder)
    waitingBarman = False
    while not waitingBarman:
        dw.set_led_head(dw.led_colors['GREEN'])
        waitingBarman = OralInteraction.waitingBarmanResponse()
    clients[0].cambiarEstadoPedido('esta listo')
    dw.set_led_head(dw.led_colors['GREEN'])
    OralInteraction.listingMissingObjects(clients)
    dw.set_led_head(dw.led_colors['GREEN'])
    verificationAccepted = OralInteraction.verifyMissingObject()
    dw.set_led_head(dw.led_colors['GREEN'])
    OralInteraction.returnToClients(clients)
def requestDrink():
    global newClient, clientCount, clients
    repeat = True
    while repeat:
        dw.set_led_head(dw.led_colors['GREEN'])
        OralInteraction.askForDrink()
        drink = OralInteraction.listeningDrink(OralInteraction.captureAudio())
        while drink == "":
            dw.set_led_head(dw.led_colors['GREEN'])
            OralInteraction.apologize()
            OralInteraction.askForDrink()
            drink = OralInteraction.listeningDrink(OralInteraction.captureAudio())
        affirmate = True
        while affirmate:
            dw.set_led_head(dw.led_colors['GREEN'])
            OralInteraction.verifyDrink(drink)
            affirmation = OralInteraction.affirmationCheck(OralInteraction.captureAudio())
            print('---- La Afirmacion es: ' + str(affirmation) + '---------')
            if affirmation == 0:
                affirmate = False
            if affirmation == 1:
                affirmate = False
                repeat = False
    newClient.cambiarPedido(drink)
    clients.append(newClient)
    print()
    clientCount+=1
def requestNewPerson():
    dw.set_led_head(dw.led_colors['GREEN'])
    OralInteraction.askForNewPerson()
    newPerson = OralInteraction.affirmationCheck(OralInteraction.captureAudio())
    while newPerson == -1:
        dw.set_led_head(dw.led_colors['GREEN'])
        OralInteraction.apologize()
        OralInteraction.askForNewPerson()
        newPerson = OralInteraction.affirmationCheck(OralInteraction.captureAudio())
    if(newPerson==1):
        dw.set_led_head(dw.led_colors['GREEN'])
        OralInteraction.say_something('De acuerdo')
        OralInteraction.say_something('Esperaré al siguiente cliente')
    else:
        dw.set_led_head(dw.led_colors['GREEN'])
        OralInteraction.say_something('Está bien')
        OralInteraction.say_something('Iré a realizar el pedido al bar')
    signals['newPerson'] = (newPerson == 1)
def askPresentation():
    global newClient
    repeat = True
    while repeat:
        dw.set_led_head(dw.led_colors['GREEN'])
        OralInteraction.askForName()
        name = OralInteraction.listeningName(OralInteraction.captureAudio())
        while name == "":
            dw.set_led_head(dw.led_colors['GREEN'])
            OralInteraction.apologize()
            OralInteraction.askForName()
            name = OralInteraction.listeningName(OralInteraction.captureAudio())
        affirmate = True
        while affirmate:
            dw.set_led_head(dw.led_colors['GREEN'])
            OralInteraction.verifyName(name)
            affirmation = OralInteraction.affirmationCheck(OralInteraction.captureAudio())
            if affirmation == 0:
                affirmate = False
            if affirmation == 1:
                affirmate = False
                repeat = False
    newClient = Cliente(name,"","no esta listo")
def informReadyChoice():
    dw.set_led_head(dw.led_colors['GREEN'])
    OralInteraction.informReadyChoiceClient(clients)
    dw.set_led_head(dw.led_colors['GREEN'])
    OralInteraction.finalExit()
def askForMissingClient():
    dw.set_led_head(dw.led_colors['GREEN'])
    OralInteraction.askForMissingClient(clients)
def informOrderState():
    global clients, Recognized_name, newOrder
    dw.set_led_head(dw.led_colors['GREEN'])
    beverageFound = OralInteraction.informOrderState(clients, Recognized_name)
    if beverageFound:
        for i, client in enumerate(clients):
            if (Recognized_name == client.darNombre()):
                del clients[i]
                break
    elif beverageFound == False:
        dw.set_led_head(dw.led_colors['GREEN'])
        OralInteraction.apologizeClient()
        repeat = True
        while repeat:
            dw.set_led_head(dw.led_colors['GREEN'])
            OralInteraction.listingAlternatives(alternatives)
            dw.set_led_head(dw.led_colors['GREEN'])
            newOrder = OralInteraction.listeningDrink(OralInteraction.captureAudio())
            while newOrder == "":
                dw.set_led_head(dw.led_colors['GREEN'])
                OralInteraction.apologize()
                dw.set_led_head(dw.led_colors['GREEN'])
                OralInteraction.listingAlternatives(alternatives)
                dw.set_led_head(dw.led_colors['GREEN'])
                newOrder = OralInteraction.listeningDrink(OralInteraction.captureAudio())
            affirmate = True
            while affirmate:
                dw.set_led_head(dw.led_colors['GREEN'])
                confirmRes = OralInteraction.confirmOrder(newOrder)
                if confirmRes == 0:
                    affirmate = False
                if confirmRes == 1:
                    affirmate = False
                    repeat = False
def listingRequest():
    global clients, missingDrink, alternatives

    #-----------------INDUCIR CLIENTES-----------------

    # clients = [		Cliente("Bryan","un vino","no esta listo"), \
    # 				            Cliente("Lyna","una gaseosa","no esta listo"), \
    # 				            Cliente("Fabián","café","no esta listo")]
    # dictionary = {'age':21,'gender':"male", 'smile':0, 'beard':0.2, 'glasses':"glasses", 'bald' : 0.2, 'hairColor' : "brown", 'eyeMakeUp':True, 'lipMakeUp':True,'headWear':0.9, 'mustache':0.1}
    # for i in range(len(clients)):
    #  	clients[i].assignAttributes(dictionary)

    #---------------------------------------------------

    missingDrink = MissingDrink(clients, capture)
    dw.set_led_head(dw.led_colors['GREEN'])
    OralInteraction.listingRequest(clients)
    waitingBarman = False
    while not waitingBarman:
        dw.set_led_head(dw.led_colors['GREEN'])
        waitingBarman = OralInteraction.waitingBarmanResponse()
    done = False
    takePhoto = True
    while takePhoto:
        while not done:
            done = missingDrink.takeBarPhoto()
        missingDrink.analyzeImage()
        clients = missingDrink.checkOrder()
        verify = True
        while verify:
            dw.set_led_head(dw.led_colors['GREEN'])
            OralInteraction.listingMissingObjects(clients)
            verificationAccepted = OralInteraction.verifyMissingObject()
            if verificationAccepted == 1:
                takePhoto = False
                verify = False
            elif verificationAccepted == 0:
                verify = False
            else:
                dw.set_led_head(dw.led_colors['GREEN'])
                OralInteraction.apologizeBarman()
    reqAlternatives = False
    for client in clients:
        if client.darEstadoPedido() == "no esta listo":
            reqAlternatives = True
            break
    while reqAlternatives:
        dw.set_led_head(dw.led_colors['GREEN'])
        OralInteraction.requestAlternatives()
        dw.set_led_head(dw.led_colors['GREEN'])
        alternatives = OralInteraction.listeningAlternatives()
        while alternatives == '':
            OralInteraction.apologizeBarman()
            alternatives = OralInteraction.listeningAlternatives()
        alternativesAccepted = -1
        while alternativesAccepted == -1:
            dw.set_led_head(dw.led_colors['GREEN'])
            alternativesAccepted = OralInteraction.verifyAlternatives(alternatives)
        if alternativesAccepted == 1:
            reqAlternatives = False
        else:
            dw.set_led_head(dw.led_colors['GREEN'])
            # OralInteraction.apologizeAlternatives()
            reqAlternatives = True
    dw.set_led_head(dw.led_colors['GREEN'])

    # alternatives = "gaseosa y café"

    OralInteraction.waveBarman()
    #     dw.stop_action(dw.actions['STAND']) #SIT_DOWN
    #     dw.set_head_angle(0, 90); #AJUSTAR
    #     state = states['at_door']
    # if state==states['at_door']:

    if state == states['reset']:
        if (time.time() - signals['time_delay']) < INIT_TIME:
            state = states['reset']
        else:
            # dw.set_led_head(dw.led_colors['GREEN'])
            # dw.stop_action(dw.actions['SIT_DOWN'])
            # dw.set_head_angle(0, 10)
            # oi.launchListingRequest()
            # state = states['listingRequest']
            ##ORIGINAL
            dw.set_led_head(dw.led_colors['BLUE'])
            dw.stop_action(dw.actions['STAND'])  #SIT_DOWN
            dw.set_head_angle(0, 90)
            #AJUSTAR
            state = states['at_door']

    elif state == states['at_door']:
        if signals['door']:
            state = states['at_door']
        else:
            ### 4 ###
            signals['dwLookFinished'] = False
            dw.look_around('RIGTH')
            state = states['look_around1']

    elif state == states['look_around1']: