def __init__(self): # Initializes the pygame font module pygame.font.init() # sets the colors according to the graphics level self.box_color = self.box_colors[Globals.graphics_level] self.text_color = self.text_colors[Globals.graphics_level] self.border_color = self.border_colors[Globals.graphics_level] # BGets window size for easy reference w = Globals.window.get_size() # Sets different dimensions/values for pm, dl and mb self.mb['w'] = math.floor( (w[0] * (2 / 3)) / Globals.block_size) * Globals.block_size self.mb['h'] = math.floor( (self.mb['w'] / Globals.block_size) * (3 / 4)) * Globals.block_size self.border_w = (Globals.block_size / Globals.pixels_per_block) self.mb['x'] = (w[0] - self.mb['w']) / 2 self.mb['y'] = (w[1] - self.mb['h']) / 2 self.dl['x'] = 0 self.dl['y'] = w[1] * (8 / 10) self.dl['w'] = w[0] self.dl['h'] = w[1] - self.dl['y'] self.dl['offset_left'] = int(self.dl['w'] * (1 / 10)) self.dl['image_s'] = int(self.dl['h'] * (1 / 2)) self.dl['padding'] = 10 self.pm_w = w[0] * (1 / 3) self.pm_h = w[1] * (3 / 4) self.pm_x = (w[0] - self.pm_w) / 2 self.pm_y = (w[1] - self.pm_h) / 2 self.pm_padding = 20 self.pm_button_h = self.pm_h / 8 font_url = "assets/fonts/Minecraftia-Regular.ttf" self.mb['title_font'] = Globals.get_font_by_height( font_url, int(self.mb['h'] / 6)) self.mb['message_font'] = Globals.get_font_by_height( font_url, int(self.mb['h'] / 15)) self.dl['font'] = Globals.get_font_by_height(font_url, int(self.dl['h'] / 5)) self.pm_title_font = Globals.get_font_by_height( font_url, int(self.pm_h / 10)) self.pm_button_font = Globals.get_font_by_height( font_url, int(self.pm_button_h * (3 / 4))) # Sets up the buttons self.pm_buttons = [{ "text": "RESUME", "on_click": self.resume }, { "text": "EXIT", "on_click": self.quit }] self.is_fading_in = True self.fade_start_time = None self.credit_gap = 3 * Globals.block_size self.credit_time = 45 self.credit_font = Globals.get_font_by_height(font_url, 40) self.showing_credits = False self.credit_surface = None
def set_up(self): # Gets window dimensions for easy reference w = Globals.window.get_size() # sets graphics level to the current graphics level # since set_up is called when the graphics need to be updated, # removing this line of code would cause it to infinitely set_up # and something I would never do self.graphics_level = Globals.graphics_level # Sets up sky self.sky_last_time = time.time() # Sets logo and sky images self.logo = self.logos[Globals.graphics_level] self.sky = self.skies[Globals.graphics_level] # Rounds logo width closest to one thirds as wide of the screen pixel_size = Globals.block_size / Globals.pixels_per_block approx_logo_w = w[0] / 3 logo_w_in_pixels = self.logo.get_size()[0] * pixel_size logo_w = int(int(approx_logo_w / logo_w_in_pixels) * logo_w_in_pixels) logo_h = int(self.logo.get_size()[1] * (self.logo.get_size()[0] / self.logo.get_size()[1])) self.logo = pygame.transform.scale(self.logo, (logo_w, logo_h)) self.logo_x = (w[0] - logo_w) / 2 self.logo_y = int(w[1] / 4) # Scales sky converter = self.sky.get_size()[0] / self.sky.get_size()[1] new_w = int(w[1] * converter) new_h = w[1] self.sky = pygame.transform.scale(self.sky, (new_w, new_h)) self.fade_in = True self.fade_alpha = 255 self.fade_start_time = time.time() # Saves the graphics level settings_file = open("assets/settings/settings.json", "r+") settings = json.loads(settings_file.read()) settings['graphics_level'] = Globals.graphics_level settings_file.seek(0) settings_file.write(json.dumps(settings)) settings_file.close() # Gets the button colors self.color_one = self.colors_one[Globals.graphics_level] self.color_two = self.colors_two[Globals.graphics_level] # Sets the selected button to continues self.selected_button = 0 self.border_width = int(Globals.block_size / Globals.pixels_per_block) # Sets the settings screen dimensions self.offset_y = self.logo_y + (self.logo.get_size()[1]) * 2 self.height_each = (w[1] - self.offset_y) / 4 self.text_font = Globals.get_font_by_height(self.font_file_url, self.height_each * 1 / 4) self.option_font = Globals.get_font_by_height(self.font_file_url, self.height_each * 1 / 2) self.bottom_font = Globals.get_font_by_height(self.font_file_url, self.height_each * (1 / 5)) self.button_w = (w[0] * 2 / 3) * 1 / 2 self.button_x = (w[0] * 1 / 3) + ((w[0] * 2 / 3) - self.button_w) / 2 self.button_h = self.height_each * 4 / 5 self.bottom_button_h = self.height_each * (3 / 4) self.bottom_button_w = (w[0] / 2) / 3 self.selected_setting = 0 self.volume = range(11) self.volume_index = int(Globals.volume * 10)