class InstructionsMenu(object): main = 2 chosen = 0 def __init__(self, parent): self.mini_menu = parent.mini_menu self.event_handle = parent.event_handle self.handle = parent.handle self.get_screencopy = parent.get_screencopy self.N = parent.N font = parent.font small_font = parent.sfont sx, sy = parent.screensize minx = sx * 0.1 miny = sy * 0.15 maxx = sx * 0.9 maxy = sy * 0.80 self.text_area = ScrollingTextArea(small_font, (minx, miny), (maxx, maxy), None) y = miny-2*self.text_area.rowheight d = (maxx-minx)/3 self.titles = [] for i, title in enumerate(titles): orig = small_font.render(title, True, colors['white']) active = font.render(title, True, colors['yellow']) hov = Hoverable((minx+d*i,y), HAT_LEFTDOWN, orig, active) self.titles.append(hov) def draw(self): active_buttons = tuple([self.main]) last = None choice = self.main ## current_menu = 0 while True: if active_buttons != last: pygame.display.get_surface().blit(self.get_screencopy(),(0,0)) self.mini_menu.draw(active_buttons) self.text_area.set_text(instructions[self.chosen], draw = False) for i, rendered in enumerate(self.titles): rendered.draw(i == self.chosen) self.text_area.draw() pygame.display.flip() last = active_buttons event, choice = self.event_handle(choice, self.mini_menu.buttons + self.titles, len(self.mini_menu.buttons)) if event == CHOSE: if choice < self.N: #chose something from minimenu return self.handle(choice) else: self.chosen = choice - self.N last = None elif event == BACK: return None active_buttons = (self.main, choice)