def __init__(self, screensize): self.button_info.reverse() self.background_color = MENU['bgcolor'] self.background = pygame.Surface(screensize).convert() self.background.fill(self.background_color) self.width, self.height = screensize self.changed = True self.button_amount = len(self.button_info) self.main_text = Textbox(name="main_text", size=MENU['title-size'], location=(0, 0), text_color=MENU['title-color'], surface_color=MENU['title-bgcolor'], text_size=MENU['title-text-size']) self.main_text.update(self.title) button_height = ( (self.height - MENU['title-size'][1]) / self.button_amount - MENU['button-padding']) button_size = (self.width - (MENU['button-padding'] * 2), button_height) calc_button_top = lambda n: (self.height - button_height * n - MENU[ 'button-padding'] * (n - 1) - MENU['button-padding']) self.buttons = [] for n, button in enumerate(self.button_info): new_button = Button(name=button['name'], size=button_size, text=button['text'], location=(0, 0)) new_button.rect = new_button.surface.get_rect( top=calc_button_top(n + 1), centerx=self.width / 2) self.buttons.append(new_button) self.background.blit( self.main_text.surface, self.main_text.surface.get_rect(centery=MENU['title-center-y'], centerx=self.width / 2)) self.buttonevents = []
def __init__(self,screensize): self.button_info.reverse() self.background_color = MENU['bgcolor'] self.background=pygame.Surface(screensize).convert() self.background.fill(self.background_color) self.width, self.height = screensize self.changed = True self.button_amount = len(self.button_info) self.main_text = Textbox( name="main_text", size=MENU['title-size'], location=(0,0), text_color=MENU['title-color'], surface_color=MENU['title-bgcolor'], text_size=MENU['title-text-size']) self.main_text.update(self.title) button_height = ((self.height-MENU['title-size'][1])/ self.button_amount-MENU['button-padding']) button_size = (self.width-(MENU['button-padding']*2),button_height) calc_button_top = lambda n: (self.height - button_height*n - MENU['button-padding']*(n-1) - MENU['button-padding']) self.buttons = [] for n, button in enumerate(self.button_info): new_button = Button( name=button['name'], size=button_size, text=button['text'], location=(0,0)) new_button.rect = new_button.surface.get_rect( top=calc_button_top(n+1), centerx=self.width/2) self.buttons.append(new_button) self.background.blit( self.main_text.surface, self.main_text.surface.get_rect( centery=MENU['title-center-y'], centerx=self.width/2)) self.buttonevents = []
def __init__(self, screensize, gametype, title_prefix): self.name = "highscore" self.hasclicked = False self.width = screensize[0] self.background = pygame.Surface(screensize).convert() self.background.fill(HIGHSCORE['bgcolor']) self.changed = True highscores = get_highscores(HIGHSCORE['show-n-scores'], gametype=gametype) title = Textbox(name="highscore_title", size=HIGHSCORE['title-size'], location=(0, 0), text_color=HIGHSCORE['title-text-color'], surface_color=HIGHSCORE['title-bgcolor'], text_size=HIGHSCORE['title-text-size'], bold=HIGHSCORE['title-bold']) title.update(title_prefix + HIGHSCORE['title-text']) score_boxes = [] placement = 0 for i in highscores: placement += 1 highscore = Textbox(name="highscore_title", size=HIGHSCORE['score-size'], location=(0, 0), text_color=HIGHSCORE['score-text-color'], surface_color=HIGHSCORE['score-bgcolor'], text_size=HIGHSCORE['score-text-size'], bold=HIGHSCORE['score-bold'], font=HIGHSCORE['score-font']) highscore.update('{0:<2}'.format(str(placement)) + HIGHSCORE['score-separator'] + '{0:>15}'.format(str(i))) self.background.blit( highscore.surface, highscore.surface.get_rect(centery=75 + 40 * placement, centerx=self.width / 2)) self.background.blit( title.surface, title.surface.get_rect(centery=50, centerx=self.width / 2))
def __init__(self,screensize,gametype,title_prefix): self.name = "highscore" self.hasclicked = False self.width = screensize[0] self.background = pygame.Surface(screensize).convert() self.background.fill(HIGHSCORE['bgcolor']) self.changed = True highscores = get_highscores(HIGHSCORE['show-n-scores'],gametype=gametype) title = Textbox( name="highscore_title", size=HIGHSCORE['title-size'], location=(0,0), text_color=HIGHSCORE['title-text-color'], surface_color=HIGHSCORE['title-bgcolor'], text_size=HIGHSCORE['title-text-size'], bold=HIGHSCORE['title-bold']) title.update(title_prefix + HIGHSCORE['title-text']) score_boxes = [] placement = 0 for i in highscores: placement += 1 highscore = Textbox( name="highscore_title", size=HIGHSCORE['score-size'], location=(0,0), text_color=HIGHSCORE['score-text-color'], surface_color=HIGHSCORE['score-bgcolor'], text_size=HIGHSCORE['score-text-size'], bold=HIGHSCORE['score-bold'], font=HIGHSCORE['score-font']) highscore.update( '{0:<2}'.format(str(placement))+HIGHSCORE['score-separator']+ '{0:>15}'.format(str(i)) ) self.background.blit(highscore.surface, highscore.surface.get_rect( centery=75+40*placement, centerx=self.width/2 )) self.background.blit(title.surface, title.surface.get_rect( centery=50, centerx=self.width/2 ))
class Menu(object): def __init__(self,screensize): self.button_info.reverse() self.background_color = MENU['bgcolor'] self.background=pygame.Surface(screensize).convert() self.background.fill(self.background_color) self.width, self.height = screensize self.changed = True self.button_amount = len(self.button_info) self.main_text = Textbox( name="main_text", size=MENU['title-size'], location=(0,0), text_color=MENU['title-color'], surface_color=MENU['title-bgcolor'], text_size=MENU['title-text-size']) self.main_text.update(self.title) button_height = ((self.height-MENU['title-size'][1])/ self.button_amount-MENU['button-padding']) button_size = (self.width-(MENU['button-padding']*2),button_height) calc_button_top = lambda n: (self.height - button_height*n - MENU['button-padding']*(n-1) - MENU['button-padding']) self.buttons = [] for n, button in enumerate(self.button_info): new_button = Button( name=button['name'], size=button_size, text=button['text'], location=(0,0)) new_button.rect = new_button.surface.get_rect( top=calc_button_top(n+1), centerx=self.width/2) self.buttons.append(new_button) self.background.blit( self.main_text.surface, self.main_text.surface.get_rect( centery=MENU['title-center-y'], centerx=self.width/2)) self.buttonevents = [] def update(self): self.changed = False for button in self.buttons: button.update(pygame.mouse.get_pos()) if button.clicked(): self.buttonevents.append(button) if button.changed: nice_print(["Button {0!r} changed:".format(button.name), "Blitting on {0!r}".format(self.name)]) self.background.blit(button.surface,button.rect) self.changed = True button.changed = False def mousedown(self,pos): for button in self.buttons: if button.rect.collidepoint(pos): nice_print(["Clicked button {0!r}".format(button.name)]) button.mousedown() return def mouseup(self,pos): for button in self.buttons: if button.rect.collidepoint(pos): button.mouseup() return def button_clicked(self): try: button = self.buttonevents.pop() yield button.name except IndexError: pass def done(self): pass
class Menu(object): def __init__(self, screensize): self.button_info.reverse() self.background_color = MENU['bgcolor'] self.background = pygame.Surface(screensize).convert() self.background.fill(self.background_color) self.width, self.height = screensize self.changed = True self.button_amount = len(self.button_info) self.main_text = Textbox(name="main_text", size=MENU['title-size'], location=(0, 0), text_color=MENU['title-color'], surface_color=MENU['title-bgcolor'], text_size=MENU['title-text-size']) self.main_text.update(self.title) button_height = ( (self.height - MENU['title-size'][1]) / self.button_amount - MENU['button-padding']) button_size = (self.width - (MENU['button-padding'] * 2), button_height) calc_button_top = lambda n: (self.height - button_height * n - MENU[ 'button-padding'] * (n - 1) - MENU['button-padding']) self.buttons = [] for n, button in enumerate(self.button_info): new_button = Button(name=button['name'], size=button_size, text=button['text'], location=(0, 0)) new_button.rect = new_button.surface.get_rect( top=calc_button_top(n + 1), centerx=self.width / 2) self.buttons.append(new_button) self.background.blit( self.main_text.surface, self.main_text.surface.get_rect(centery=MENU['title-center-y'], centerx=self.width / 2)) self.buttonevents = [] def update(self): self.changed = False for button in self.buttons: button.update(pygame.mouse.get_pos()) if button.clicked(): self.buttonevents.append(button) if button.changed: nice_print([ "Button {0!r} changed:".format(button.name), "Blitting on {0!r}".format(self.name) ]) self.background.blit(button.surface, button.rect) self.changed = True button.changed = False def mousedown(self, pos): for button in self.buttons: if button.rect.collidepoint(pos): nice_print(["Clicked button {0!r}".format(button.name)]) button.mousedown() return def mouseup(self, pos): for button in self.buttons: if button.rect.collidepoint(pos): button.mouseup() return def button_clicked(self): try: button = self.buttonevents.pop() yield button.name except IndexError: pass def done(self): pass