def draw_gui(self, screen): standard_width = options.standard_size()[0] standard_height = options.standard_size()[1] xoffset = (screen.get_width() - standard_width) / 2 yoffset = (screen.get_height() - standard_height) / 2 if screen.get_width() > standard_width or screen.get_height() > standard_height: # so that in dev mode you can see what the actual screen size would be. pygame.draw.rect(screen,(255,0,0), pygame.Rect(xoffset,yoffset,standard_width,standard_height), 1) level_text = self.font.render("Level: "+str(self.get_level_num() + 1), True, (255, 255, 255)) level_title = self.font.render(str(self.get_level_manager().current_level.name), True, (255, 255, 255)) death_text = self.font.render("Deaths: "+str(self.death_count), True, (255, 255, 255)) text_height = level_text.get_height() best_total_time = self.get_level_manager().get_best_run_time() total_time_text_color = self.get_time_display_color(self.total_time, best_total_time, start_color=(255, 255, 255), end_color=(255, 255, 255)) total_time_text = self.font.render("Total: " + utilities.format_time(self.total_time), True, total_time_text_color) best_level_time = self.get_level_manager().get_best_level_time(self.get_level_num()) level_time_text_color = self.get_time_display_color(self.level_time, best_level_time) level_time_text = self.font.render("Level: "+utilities.format_time(self.level_time), True, level_time_text_color) screen.blit(level_text, (xoffset, yoffset)) screen.blit(level_title, (xoffset, yoffset + text_height)) if self.settings.single_level_mode(): screen.blit(level_time_text, (xoffset + standard_width/2 - level_time_text.get_width()/2, yoffset)) else: screen.blit(total_time_text, (xoffset + standard_width/2 - total_time_text.get_width()/2, yoffset)) screen.blit(level_time_text, (xoffset + standard_width/2 - level_time_text.get_width()/2, yoffset + text_height)) screen.blit(death_text, (xoffset + standard_width - death_text.get_width(), yoffset))
def draw(self, screen): screen.fill(self.background_color) standard_width = options.standard_size()[0] standard_height = options.standard_size()[1] xoffset = (screen.get_width() - standard_width) / 2 yoffset = (screen.get_height() - standard_height) / 2 if screen.get_width() > standard_width or screen.get_height() > standard_height: # so that in dev mode you can see what the actual screen size would be. pygame.draw.rect(screen, (255, 0, 0), pygame.Rect(xoffset,yoffset,standard_width,standard_height), 1) y = 0 for option in self.option_images: screen.blit(option, (xoffset + MENU_ICING, yoffset + y + MENU_ICING)) y += option.get_height()
def draw(self, screen): screen.fill(self.background_color) standard_width = options.standard_size()[0] standard_height = options.standard_size()[1] xoffset = (screen.get_width() - standard_width) / 2 yoffset = (screen.get_height() - standard_height) / 2 if screen.get_width() > standard_width or screen.get_height() > standard_height: # so that in dev mode you can see what the actual screen size would be. pygame.draw.rect(screen,(255, 0, 0), pygame.Rect(xoffset,yoffset,standard_width,standard_height), 1) screen.blit(self.title_image, (xoffset + MENU_ICING, yoffset + MENU_ICING)) option_heights = [x.get_height() for x in self.option_text_images] options_height = sum(option_heights) options_width = max([x.get_width() for x in self.option_text_images]) for i in range(0, len(self.option_text_images)): opt = self.option_text_images[i] xpos = xoffset + standard_width - options_width - MENU_ICING ypos = yoffset + standard_height - options_height + sum(option_heights[0:i]) - MENU_ICING screen.blit(opt, (xpos, ypos)) level_pack = self.settings.level_path() level_pack_image = NORMAL_TEXT_FONT.render(level_pack, True, self.unselected_color) screen.blit(level_pack_image, (xoffset + MENU_ICING, yoffset + self.title_image.get_height() + MENU_ICING))
def __init__(self, settings): GameState.__init__(self, settings) self.selected_color = SELECTED_COLOR self.unselected_color = UNSELECTED_COLOR self.background_color = BACKGROUND_COLOR self.title_image = self.get_title_text_image(options.title(), options.standard_size()[0] - 2*MENU_ICING) self.option_names = ["start full run", "grind single level", "edit levels", "select level pack", "settings"] self.option_actions = [ lambda: self._launch_full_run_mode(), lambda: self.state_manager.set_current_state(GameStateManager.SELECT_SINGLE_LEVEL_STATE), lambda: None, lambda: None, lambda: None ] self.selected_index = 0 self.option_text_images = [] for i in range(0, len(self.option_names)): name = self.option_names[i] c = self.unselected_color if i != self.selected_index else self.selected_color self.option_text_images.append(NORMAL_TEXT_FONT.render(name, True, c))
gamestate_manager = GameStateManager(settings) platformer_inst = PlatformerInstance(settings) playing = PlayingState(settings, platformer_inst) editing = EditingState(settings, platformer_inst) main_menu = MainMenuState(settings) single_level = SelectSingleLevelState(settings) gamestate_manager.set_state(GameStateManager.PLAYING_STATE, playing) gamestate_manager.set_state(GameStateManager.EDITING_STATE, editing) gamestate_manager.set_state(GameStateManager.MAIN_MENU_STATE, main_menu) gamestate_manager.set_state(GameStateManager.SELECT_SINGLE_LEVEL_STATE, single_level) gamestate_manager.set_current_state(GameStateManager.MAIN_MENU_STATE) size = options.standard_size() if settings.dev_mode(): size = options.dev_size() screen = pygame.display.set_mode(size) still_running = True clock = pygame.time.Clock() FPS = options.fps() actor = playing.get_player() # The player's character def stop_running(): global still_running still_running = False def take_screenshot(): utilities.take_screenshot(screen)