Exemplo n.º 1
0
 def create_buttons(self):
     def centerstr(name):
         namew, _ = self.font.size(name)
         spaces = int((diff - namew)/(2*spacesize))
         return ' '*spaces+name+' '*spaces
     import itertools
     per = self.font.size('ABCDEFGHIJKLMNOPQRSTU')[1]
     spacesize, _ = self.font.size(' ')
     w, h = self.screensize
     cols = itertools.cycle([(0.06*w,0.32*w),
                             (0.37*w,0.63*w),
                             (0.68*w,0.94*w)])
     diff = w*0.24
     y = 0.15*h - per
     for i, name in enumerate(self.logs):
         if i % 3 == 0:
             y += per
         sx, ex = cols.next()
         name = name.split('.')[0]
         name = centerstr(' '.join(name.split()[:-1])[:25])
         not_chosen = self.font.render(name[:25], True, colors['gray'])
         hovering = self.font.render(name[:25], True, colors['red'])
         cur_choice = self.font.render(name[:25], True, colors['white'])
         hov = Hoverable((sx,y), HAT_LEFTDOWN, not_chosen, hovering, cur_choice)
         self.hoverables.append(hov)
     alusta = 'Alusta mängu'
     hovering = self.lfont.render(alusta, True, colors['red'])
     not_hovering = self.lfont.render(alusta, True, colors['white'])
     x = w*0.5 - hovering.get_width()/2
     y += 1.5*per
     self.startbutton = Hoverable((x, y), HAT_CENTERED, not_hovering, hovering)        
Exemplo n.º 2
0
    def __init__(self, parent):
        self.font = parent.font
        small_font = parent.sfont
##        self.screencopy = parent.screencopy
        self.event_handle = parent.event_handle
        self.handle = parent.handle
        self.get_screencopy = parent.get_screencopy

        w, h = pygame.display.get_surface().get_size()
        dyes_x, dyes_y = small_font.size('Jah')
        yy = (h - dyes_y)*0.55
        yes_orig = small_font.render('Jah', True, colors['white'])
        yes_active = self.font.render('Jah', True, colors['red'])
        dno_x, dno_y = small_font.size('Ei')
        yn = (h - dno_y)*0.55
        no_orig = small_font.render('Ei', True, colors['white'])
        no_active = self.font.render('Ei', True, colors['red'])
        
        self.hyes = Hoverable(((w - dno_x)*0.40, yy), HAT_CENTERED, yes_orig, yes_active)
        self.hno = Hoverable(((w - dyes_x)*0.60, yn), HAT_CENTERED, no_orig, no_active)
Exemplo n.º 3
0
class ConfirmationMenu(object):
    def __init__(self, parent):
        self.font = parent.font
        small_font = parent.sfont
##        self.screencopy = parent.screencopy
        self.event_handle = parent.event_handle
        self.handle = parent.handle
        self.get_screencopy = parent.get_screencopy

        w, h = pygame.display.get_surface().get_size()
        dyes_x, dyes_y = small_font.size('Jah')
        yy = (h - dyes_y)*0.55
        yes_orig = small_font.render('Jah', True, colors['white'])
        yes_active = self.font.render('Jah', True, colors['red'])
        dno_x, dno_y = small_font.size('Ei')
        yn = (h - dno_y)*0.55
        no_orig = small_font.render('Ei', True, colors['white'])
        no_active = self.font.render('Ei', True, colors['red'])
        
        self.hyes = Hoverable(((w - dno_x)*0.40, yy), HAT_CENTERED, yes_orig, yes_active)
        self.hno = Hoverable(((w - dyes_x)*0.60, yn), HAT_CENTERED, no_orig, no_active)
        
    def confirm(self, warning):
        rendered = self.font.render(warning, True, colors['white'])
        w, h = self.font.size(warning)
        screen = pygame.display.get_surface()
        x,y = screen.get_size()
        lactive = -1; active = 0
        while True:
            if lactive != active:
                screen.blit(self.get_screencopy(),(0,0))
                screen.blit(rendered,((x-w)*0.50, (y-h)*0.40))
                self.hyes.draw(active == 0)
                self.hno.draw(active == 1)
            pygame.display.flip()
            event, active = self.event_handle(active, [self.hyes, self.hno])
            if event == CHOSE:
                return active
            elif event == BACK:
                return BACK    
Exemplo n.º 4
0
    def __init__(self, parent):
        def centerstr(name):
            namew, _ = font.size(name)
            spaces = int((diff - namew)/(2*spacesize))
            return ' '*spaces+name+' '*spaces
        self.mini_menu = parent.mini_menu
        self.handle = parent.handle
        self.get_screencopy = parent.get_screencopy
        
        self.bots = [0, 1]
        font = parent.sfont
        w, h = parent.screensize
        bots = [(HUMANPLAYER, 'Inimene')] + AIS
        self.lenbots = len(bots)*2
        row_1 = w * 0.25
        row_2 = w * 0.50
        maxbots = 12
        self.hoverable_bots = []
        y = h * 0.15
        afont = parent.font
        self.label = afont.render('Vali mängijad:', True, colors['yellow'])
##        print self.label.get_width()
        self.labelpos = (w * 0.5 - self.label.get_width()*0.5, h*0.07)
        per = font.size('ABCDEFGHIJKLMNOPQRSTU')[1]
        diff = w * 0.25
        spacesize, _ = font.size(' ')
        for i, (_, name) in enumerate(bots):
            if i == maxbots:
                row_1 = w*0.05
                row_2 = w*0.7
                y = h*0.15 + per
            y += per
            name = centerstr(name)
            not_chosen = font.render(name, True, colors['gray'])
            hovering = font.render(name, True, colors['red'])
            cur_choice = font.render(name, True, colors['white'])
            hov1 = Hoverable((row_1,y), HAT_LEFTDOWN, not_chosen, hovering, cur_choice)
            hov2 = Hoverable((row_2,y), HAT_LEFTDOWN, not_chosen, hovering, cur_choice)
            self.hoverable_bots.append(hov1)
            self.hoverable_bots.append(hov2)
        #startbutton
        alusta = 'Alusta mängu'
        hovering = parent.font.render(alusta, True, colors['red'])
        not_hovering = parent.font.render(alusta, True, colors['white'])
        x = w*0.5 - parent.font.size(alusta)[0]/2
        y = h*0.15 + (min(maxbots, len(bots))+1.5)*per
        self.startbutton = Hoverable((x, y), HAT_CENTERED, not_hovering, hovering)
Exemplo n.º 5
0
    def create_buttons(self):
        def centerstr(name):
            #centers string, expects spacesize and diff to be in local scope
            namew, _ = self.font.size(name)
            spaces = int((diff - namew)/(2*spacesize))
            return ' '*spaces+name+' '*spaces
        def createbutton(name):
            name = centerstr(name)
            not_chosen = self.font.render(name[:25], True, colors['gray'])
            hovering = self.font.render(name[:25], True, colors['red'])
            cur_choice = self.font.render(name[:25], True, colors['white'])
            return Hoverable((sx,y), HAT_LEFTDOWN, not_chosen, hovering, cur_choice)
        per = self.font.size('ABCDEFGHIJKLMNOPQRSTU')[1]
        spacesize, _ = self.font.size(' ')
        #local constants
        col1, col2, hstrt = 0.3, 0.7, 0.2
        w, h = self.screensize
        #creates resolution buttons, places them in the middle of the reslabel
        self.reslabel = self.font.render('Resolutsioon:', True, colors['yellow'])
        diff = self.reslabel.get_width()
        self.reslabelpos = (col1 * w  - diff/2, hstrt*h)
        y = hstrt*h
        sx = col1*w - diff/2
        for pos in defaultsizes:
            y += per
            st = '%d x %d' % pos
            self.hoverables.append(createbutton(st))
        #creates ai_delay buttons, places them in the middle of the delaylabel
        self.delaylabel = self.font.render('AI delay:', True, colors['yellow'])
        diff = self.delaylabel.get_width()
        self.delaylabelpos = (col2*w - diff/2, hstrt*h)
        y = hstrt*h
        sx = col2*w - diff/2
        for delay in delays:
            y += per
            self.hoverables.append(createbutton('%d ms' % delay))
        #start button
        alusta = 'Salvesta'
        hovering = self.lfont.render(alusta, True, colors['red'])
        not_hovering = self.lfont.render(alusta, True, colors['white'])
        x = w/2 - hovering.get_width()/2
##        y = 0.5*h
        y += 2*per
        self.startbutton = Hoverable((x, y), HAT_CENTERED, not_hovering, hovering)
Exemplo n.º 6
0
class OptionsMenu(object):
    main = 4
    def __init__(self, parent):
        self.mini_menu = parent.mini_menu
        self.handle = parent.handle
        self.get_screencopy = parent.get_screencopy
        self.screensize = parent.screensize
        self.bots = [0, 1]
        self.font = parent.sfont
        w, h = parent.screensize
        self.lfont = parent.font
        self.label = self.lfont.render('Seaded', True, colors['yellow'])
        self.labelpos = (w * 0.5 - self.label.get_width()*0.5, h*0.07)

        self.logs = []
        self.hoverables = []
        self.create_buttons()
    def create_buttons(self):
        def centerstr(name):
            #centers string, expects spacesize and diff to be in local scope
            namew, _ = self.font.size(name)
            spaces = int((diff - namew)/(2*spacesize))
            return ' '*spaces+name+' '*spaces
        def createbutton(name):
            name = centerstr(name)
            not_chosen = self.font.render(name[:25], True, colors['gray'])
            hovering = self.font.render(name[:25], True, colors['red'])
            cur_choice = self.font.render(name[:25], True, colors['white'])
            return Hoverable((sx,y), HAT_LEFTDOWN, not_chosen, hovering, cur_choice)
        per = self.font.size('ABCDEFGHIJKLMNOPQRSTU')[1]
        spacesize, _ = self.font.size(' ')
        #local constants
        col1, col2, hstrt = 0.3, 0.7, 0.2
        w, h = self.screensize
        #creates resolution buttons, places them in the middle of the reslabel
        self.reslabel = self.font.render('Resolutsioon:', True, colors['yellow'])
        diff = self.reslabel.get_width()
        self.reslabelpos = (col1 * w  - diff/2, hstrt*h)
        y = hstrt*h
        sx = col1*w - diff/2
        for pos in defaultsizes:
            y += per
            st = '%d x %d' % pos
            self.hoverables.append(createbutton(st))
        #creates ai_delay buttons, places them in the middle of the delaylabel
        self.delaylabel = self.font.render('AI delay:', True, colors['yellow'])
        diff = self.delaylabel.get_width()
        self.delaylabelpos = (col2*w - diff/2, hstrt*h)
        y = hstrt*h
        sx = col2*w - diff/2
        for delay in delays:
            y += per
            self.hoverables.append(createbutton('%d ms' % delay))
        #start button
        alusta = 'Salvesta'
        hovering = self.lfont.render(alusta, True, colors['red'])
        not_hovering = self.lfont.render(alusta, True, colors['white'])
        x = w/2 - hovering.get_width()/2
##        y = 0.5*h
        y += 2*per
        self.startbutton = Hoverable((x, y), HAT_CENTERED, not_hovering, hovering)
    def draw(self):
        """Draws the OptionsMenu and loops over input until an error condition
            (enter being pressed/some other menu chosen) achieved through
            event_handle"""
        global ai_delay
        chosen1 = defaultsizes.index(self.screensize) if self.screensize in defaultsizes \
                                              else -1
        chosen2 = delays.index(ai_delay) + len(defaultsizes) if ai_delay in delays \
                                              else -1
        last_chosen1 = last_chosen2 = last_hovering = last_active = None
        active_buttons = (self.main,)
        hovering = -1
        ai = 0
        while True:
            if (last_chosen1, last_chosen2, last_hovering, last_active) != \
                (chosen1, chosen2, hovering, active_buttons):
                pygame.display.get_surface().blit(self.get_screencopy(),(0,0))
                self.mini_menu.draw(active_buttons)
                for i, hov in enumerate(self.hoverables):
                    if i in (chosen1, chosen2):
                        hov.draw(2)
                    else:   
                        hov.draw(i == hovering)
                self.startbutton.draw(hovering == len(self.hoverables))
                pygame.display.get_surface().blit(self.label,self.labelpos)
                pygame.display.get_surface().blit(self.reslabel,self.reslabelpos)
                pygame.display.get_surface().blit(self.delaylabel,self.delaylabelpos)
                last_chosen1 = chosen1
                last_chosen2 = chosen2
                last_hovering = hovering
                last_active = active_buttons
                pygame.display.flip()
            event, hovering = self.event_handle(hovering)
            if event == BACK:
                return None
            elif event == CHOSE:
                if hovering < len(defaultsizes):
                    #resolution
                    chosen1 = hovering
                elif hovering < len(self.hoverables):
                    #ai delay
                    chosen2 = hovering
                elif hovering == len(self.hoverables): #start game button:
                    ai_delay = delays[chosen2 - len(defaultsizes)]
                    return CHANGEDSETTINGS, (defaultsizes[chosen1],
                                             ai_delay)
                else: #minimenu
                    return self.handle(hovering - len(self.hoverables) - 1)
            if hovering > len(self.hoverables):
                active_buttons = (self.main, hovering - len(self.hoverables) - 1)
            else:
                active_buttons = (self.main,)
    def event_handle(self, active):
        e = pygame.event.wait()
        pygame.event.post(e)
        for event in pygame.event.get():
            if event.type == QUIT:
                raise exited_game
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    return BACK, None
                #navigating by keyboard
                elif event.key == K_RIGHT or event.key == K_DOWN:
                    if active+1 <= len(self.hoverables) + 6:
                        active += 1
                    else:
                        active = 0
                elif event.key == K_LEFT or event.key == K_UP:
                    if active-1 >= 0:
                        active -= 1
                    else:
                        active = len(self.hoverables) + 6
                elif event.key == K_RETURN:
                    return CHOSE, active
            elif event.type == MOUSEMOTION:
                pos = pygame.mouse.get_pos()
                for i, hov in enumerate(self.hoverables):
                    if hov.hovering(pos):
                        return None, i # just hovering
                for i, hov in enumerate(self.mini_menu.buttons):
                    if hov.hovering(pos):
                        return None, i + len(self.hoverables) + 1
                if self.startbutton.hovering(pos):
                    return None, len(self.hoverables)
            elif event.type == MOUSEBUTTONDOWN:
                pos = pygame.mouse.get_pos()
                for i, hov in enumerate(self.hoverables):
                    if hov.hovering(pos):
                        return CHOSE, i #clicked bot
                for i, hov in enumerate(self.mini_menu.buttons):
                    if hov.hovering(pos):
                        return CHOSE, i + len(self.hoverables) + 1#clicked menu
                if self.startbutton.hovering(pos):
                    return CHOSE, len(self.hoverables)#clicked start      
        return None, active
Exemplo n.º 7
0
class LogsMenu(object):
    chosen = 0
    main = 3
    def __init__(self, parent):
        self.mini_menu = parent.mini_menu
        self.handle = parent.handle
        self.get_screencopy = parent.get_screencopy
        self.screensize = parent.screensize
        self.bots = [0, 1]
        self.font = parent.sfont
        w, h = parent.screensize
        self.lfont = parent.font
        self.label = self.lfont.render('Vali logi:', True, colors['yellow'])
        self.labelpos = (w * 0.5 - self.label.get_width()*0.5, h*0.07)
        self.logs = []
        self.hoverables = []
        
    def create_buttons(self):
        def centerstr(name):
            namew, _ = self.font.size(name)
            spaces = int((diff - namew)/(2*spacesize))
            return ' '*spaces+name+' '*spaces
        import itertools
        per = self.font.size('ABCDEFGHIJKLMNOPQRSTU')[1]
        spacesize, _ = self.font.size(' ')
        w, h = self.screensize
        cols = itertools.cycle([(0.06*w,0.32*w),
                                (0.37*w,0.63*w),
                                (0.68*w,0.94*w)])
        diff = w*0.24
        y = 0.15*h - per
        for i, name in enumerate(self.logs):
            if i % 3 == 0:
                y += per
            sx, ex = cols.next()
            name = name.split('.')[0]
            name = centerstr(' '.join(name.split()[:-1])[:25])
            not_chosen = self.font.render(name[:25], True, colors['gray'])
            hovering = self.font.render(name[:25], True, colors['red'])
            cur_choice = self.font.render(name[:25], True, colors['white'])
            hov = Hoverable((sx,y), HAT_LEFTDOWN, not_chosen, hovering, cur_choice)
            self.hoverables.append(hov)
        alusta = 'Alusta mängu'
        hovering = self.lfont.render(alusta, True, colors['red'])
        not_hovering = self.lfont.render(alusta, True, colors['white'])
        x = w*0.5 - hovering.get_width()/2
        y += 1.5*per
        self.startbutton = Hoverable((x, y), HAT_CENTERED, not_hovering, hovering)        
        

    def draw(self):
        from os import listdir
        last_chosen = None
        last_buttons = None
        last_hovering = None
        hovering = self.chosen
        active_buttons = (self.main,)
        logs = listdir('Logs')
        if self.logs != logs: #the folder was updated
            self.logs = logs
            self.lenlogs = len(logs)
            self.hoverables = []
            self.create_buttons()
            
        while True:
            if  self.chosen != last_chosen or active_buttons != last_buttons or hovering != last_hovering:
                pygame.display.get_surface().blit(self.get_screencopy(),(0,0))
                self.mini_menu.draw(active_buttons) 
                pygame.display.get_surface().blit(self.label,self.labelpos)
                for i, hov in enumerate(self.hoverables):
                    if i == self.chosen:
                        hov.draw(2)
                    else:   
                        hov.draw(i == hovering)
                self.startbutton.draw(hovering == self.lenlogs)
                pygame.display.flip()
                last_chosen = self.chosen
                last_buttons = active_buttons
                last_hovering = hovering
            event, hovering = self.event_handle(hovering)
            if event == BACK:
                return None
            elif event == CHOSE:
                if hovering == self.lenlogs: #start game button:
                    return CHOSELOGGAME, self.logs[self.chosen]
                elif hovering < self.lenlogs:
                    self.chosen = hovering
                else: #minimenu
                    return self.handle(hovering - self.lenlogs - 1)
            if hovering > self.lenlogs:
                active_buttons = (self.main, hovering - self.lenlogs - 1)
            else:
                active_buttons = (self.main,)
            
    def event_handle(self, active):
        e = pygame.event.wait()
        pygame.event.post(e)
        for event in pygame.event.get():
            if event.type == QUIT:
                raise exited_game
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    return BACK, None
                elif event.key == K_RIGHT:
                    if active+1 <= self.lenlogs + 6:
                        active += 1
                    else:
                        active = 0
                elif event.key == K_LEFT:
                    if active-1 >= 0:
                        active -= 1
                    else:
                        active = self.lenlogs + 6
                elif event.key == K_UP:
                    if active > self.lenlogs:
                        active -= 1
                    elif active-3 >= 0:
                        active -= 3
                    else:
                        active = self.lenlogs + 6
                elif event.key == K_DOWN:
                    if active+3 <= self.lenlogs:
                        active += 3
                    elif active <= self.lenlogs + 6:
                        active += 1
                    else:
                        active = 0
                elif event.key == K_RETURN:
                    return CHOSE, active
            elif event.type == MOUSEMOTION:
                pos = pygame.mouse.get_pos()
                for i, hov in enumerate(self.hoverables):
                    if hov.hovering(pos):
                        return None, i # just hovering
                for i, hov in enumerate(self.mini_menu.buttons):
                    if hov.hovering(pos):
                        return None, i + self.lenlogs + 1
                if self.startbutton.hovering(pos):
                    return None, self.lenlogs
            elif event.type == MOUSEBUTTONDOWN:
                pos = pygame.mouse.get_pos()
                for i, hov in enumerate(self.hoverables):
                    if hov.hovering(pos):
                        return CHOSE, i #clicked bot
                for i, hov in enumerate(self.mini_menu.buttons):
                    if hov.hovering(pos):
                        return CHOSE, i + self.lenlogs + 1#clicked menu
                if self.startbutton.hovering(pos):
                    return CHOSE, self.lenlogs#clicked start      
        return None, active
Exemplo n.º 8
0
class NewGameMenu(object):
    main = 0
    def __init__(self, parent):
        def centerstr(name):
            namew, _ = font.size(name)
            spaces = int((diff - namew)/(2*spacesize))
            return ' '*spaces+name+' '*spaces
        self.mini_menu = parent.mini_menu
        self.handle = parent.handle
        self.get_screencopy = parent.get_screencopy
        
        self.bots = [0, 1]
        font = parent.sfont
        w, h = parent.screensize
        bots = [(HUMANPLAYER, 'Inimene')] + AIS
        self.lenbots = len(bots)*2
        row_1 = w * 0.25
        row_2 = w * 0.50
        maxbots = 12
        self.hoverable_bots = []
        y = h * 0.15
        afont = parent.font
        self.label = afont.render('Vali mängijad:', True, colors['yellow'])
##        print self.label.get_width()
        self.labelpos = (w * 0.5 - self.label.get_width()*0.5, h*0.07)
        per = font.size('ABCDEFGHIJKLMNOPQRSTU')[1]
        diff = w * 0.25
        spacesize, _ = font.size(' ')
        for i, (_, name) in enumerate(bots):
            if i == maxbots:
                row_1 = w*0.05
                row_2 = w*0.7
                y = h*0.15 + per
            y += per
            name = centerstr(name)
            not_chosen = font.render(name, True, colors['gray'])
            hovering = font.render(name, True, colors['red'])
            cur_choice = font.render(name, True, colors['white'])
            hov1 = Hoverable((row_1,y), HAT_LEFTDOWN, not_chosen, hovering, cur_choice)
            hov2 = Hoverable((row_2,y), HAT_LEFTDOWN, not_chosen, hovering, cur_choice)
            self.hoverable_bots.append(hov1)
            self.hoverable_bots.append(hov2)
        #startbutton
        alusta = 'Alusta mängu'
        hovering = parent.font.render(alusta, True, colors['red'])
        not_hovering = parent.font.render(alusta, True, colors['white'])
        x = w*0.5 - parent.font.size(alusta)[0]/2
        y = h*0.15 + (min(maxbots, len(bots))+1.5)*per
        self.startbutton = Hoverable((x, y), HAT_CENTERED, not_hovering, hovering)
        
    def draw(self):
        active_buttons = (self.main,)
        hovering = self.bots[0]
        last_buttons = None
        last_bots = None
        last_hovering = None
        while True:
            if  active_buttons != last_buttons or self.bots != last_bots \
                                        or hovering != last_hovering:
##                print active_buttons, last_buttons
                pygame.display.get_surface().blit(self.get_screencopy(),(0,0))
                self.mini_menu.draw(active_buttons) 
                left, right = self.bots
                pygame.display.get_surface().blit(self.label,self.labelpos)
                for i, hov in enumerate(self.hoverable_bots):
                    if i==left or i==right:
                        hov.draw(2)
                    elif i == hovering:
                        hov.draw(1)
                    elif i!=left and i!=right:
                        hov.draw(0)
                self.startbutton.draw(hovering == self.lenbots)   
                pygame.display.flip()
                last_buttons = active_buttons[:]
                last_bots = self.bots[:]
                last_hovering = hovering
                
            event, hovering = self.event_handle(hovering)
            if event == BACK:
                return None
            elif event == CHOSE:
                if hovering == self.lenbots: #start game button:
                    return CHOSENORMALGAME, \
                        [AIS[(x-2)/2] if x>1 else HUMANPLAYER for x in self.bots]
                elif hovering < self.lenbots:
                    self.bots[hovering%2] = hovering
                else: #minimenu
                    return self.handle(hovering - self.lenbots - 1)
            if hovering > self.lenbots:
                active_buttons = (self.main, hovering - self.lenbots - 1)
            else:
                active_buttons = (self.main,)

    def event_handle(self, active):
##        pygame.time.wait(50)
        e = pygame.event.wait()
        pygame.event.post(e)
        for event in pygame.event.get():
            if event.type == QUIT:
                raise exited_game
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    return BACK, None
                elif event.key == K_RIGHT:
                    if active+1 <= self.lenbots + 6:
                        active += 1
                    else:
                        active = 0
                elif event.key == K_LEFT:
                    if active-1 >= 0:
                        active -= 1
                    else:
                        active = self.lenbots + 6
                elif event.key == K_UP:
                    if active > self.lenbots:
                        active -= 1
                    elif active-2 >= 0:
                        active -= 2
                    else:
                        active = self.lenbots + 6
                elif event.key == K_DOWN:
                    if active+2 <= self.lenbots:
                        active += 2
                    elif active <= self.lenbots + 6:
                        active += 1
                    else:
                        active = 0
                elif event.key == K_RETURN:
                    return CHOSE, active
            elif event.type == MOUSEMOTION:
                pos = pygame.mouse.get_pos()
                for i, hov in enumerate(self.hoverable_bots):
                    if hov.hovering(pos):
                        return None, i # just hovering
                for i, hov in enumerate(self.mini_menu.buttons):
                    if hov.hovering(pos):
                        return None, i + self.lenbots + 1
                if self.startbutton.hovering(pos):
                    active = self.lenbots
            elif event.type == MOUSEBUTTONDOWN:
                pos = pygame.mouse.get_pos()
                for i, hov in enumerate(self.hoverable_bots):
                    if hov.hovering(pos):
                        return CHOSE, i #clicked bot
                for i, hov in enumerate(self.mini_menu.buttons):
                    if hov.hovering(pos):
                        return CHOSE, i + self.lenbots + 1#clicked menu
                if self.startbutton.hovering(pos):
                    return CHOSE, self.lenbots#clicked start      
        return None, active