def render(self): surface = pygame.Surface((self.width, self.height)) if len(self.teams) == 0: counter = text_renderer.render_menu_item("0/0", colours.COLOUR_WHITE) surface.blit(counter, (self.width - counter.get_width() - 30, (self.header_bottom - counter.get_height()) // 2)) return surface counter = text_renderer.render_menu_item( "{}/{}".format(self.selected + 1, len(self.teams)), colours.COLOUR_WHITE) surface.blit( counter, ((self.width + self.team_member_width) // 2 - counter.get_width(), (self.header_bottom - counter.get_height()) // 2)) banner = self.banners[self.selected] surface.blit(banner, ((self.width - banner.get_width()) // 2, (self.header_bottom - counter.get_height()) // 2)) x1 = (self.width - self.banner_width) // 2 - 15 y1 = self.header_bottom // 2 x2 = x1 + 5 y2 = y1 + 5 x3 = x2 y3 = y1 - 5 pygame.draw.polygon(surface, colours.COLOUR_WHITE, [(x1, y1), (x2, y2), (x3, y3)]) x1 = (self.width + self.banner_width) // 2 + 15 x2 = x1 - 5 x3 = x2 pygame.draw.polygon(surface, colours.COLOUR_WHITE, [(x1, y1), (x2, y2), (x3, y3)]) for i in range(len(self.teams[self.selected])): self.render_team_member( surface, self.teams[self.selected][i], i * (self.team_member_height + self.team_member_spacing) + self.header_bottom) return surface
def __init__(self, label, height=-1, width=-1): self.label = label self.surface_label = text_renderer.render_menu_item( label, colours.COLOUR_WHITE) self.focused = False self.height = height self.width = width
def __init__(self, label, value=False, height=-1, width=-1): super(BooleanMenuItem, self).__init__(label, height, width) self.value = value self.label = label self.padding = 30 self.bottom_margin = 0 self.surface_values = [ text_renderer.render_menu_item("Disabled", colours.COLOUR_WHITE), text_renderer.render_menu_item("Enabled", colours.COLOUR_WHITE), ] if self.width < 0: self.width = max(self.surface_values[0].get_width(), self.surface_label.get_width()) * 2 + self.padding if self.height < 0: self.height = max( max(self.surface_label.get_height(), self.surface_values[0].get_height()), self.surface_values[1].get_height())
def __init__(self, label1, label2, callback, height=-1, width=-1): super(ChoiceMenuItem, self).__init__(label1, height, width) self.label2 = label2 self.surface_label2 = text_renderer.render_menu_item( label2, colours.COLOUR_WHITE) self.padding = 80 self.selected = 0 self.bottom_margin = 0 self.callback = callback if self.width < 0: self.width = max(self.surface_label2.get_width(), self.surface_label.get_width()) * 2 + self.padding if self.height < 0: self.width = max(self.surface_label2.get_height(), self.surface_label.get_height())
def __init__(self, region, teams=[]): self.width = region[0] self.height = region[1] self.callback = None self.teams = teams self.selected = 0 self.header_top = 0 self.header_bottom = 45 self.banners = [] self.banner_width = 0 self.banner_height = 0 self.team_member_height = 100 self.team_member_width = 760 self.team_member_spacing = 10 self.move_list_offset = (self.width - self.team_member_width) // 2 + 450 self.hth_surface = text_renderer.render_text("HTH:", colours.COLOUR_WHITE) self.atk_surface = text_renderer.render_text("ATK:", colours.COLOUR_WHITE) self.def_surface = text_renderer.render_text("DEF:", colours.COLOUR_WHITE) self.spd_surface = text_renderer.render_text("SPD:", colours.COLOUR_WHITE) for team in teams: self.banners.append( text_renderer.render_menu_item(team.get_short_name(), colours.COLOUR_WHITE)) if self.banners[-1].get_width() > self.banner_width: self.banner_width = self.banners[-1].get_width() if self.banners[-1].get_height() > self.banner_height: self.banner_height = self.banners[-1].get_height()
def __init__(self, label, options, selected=0, height=-1, width=-1): super(MultiOptionMenuItem, self).__init__(label, height, width) self.options = options self.selected = selected self.padding = 30 self.bottom_margin = 0 self.label = label max_item_width = 0 max_item_height = 0 self.surface_values = [] for item in options: rendered = text_renderer.render_menu_item(item, colours.COLOUR_WHITE) self.surface_values.append(rendered) if rendered.get_width() > max_item_width: max_item_width = rendered.get_width() if rendered.get_height() > max_item_height: max_item_height = rendered.get_height() self.width = max(max_item_width, self.surface_label.get_width()) * 2 + self.padding self.height = max(max_item_height, self.surface_label.get_height())
def __init__(self, text, callback, height=-1, width=-1): self.text = text self.callback = callback self.bottom_margin = 0 self.surface = text_renderer.render_menu_item(text, colours.COLOUR_WHITE)