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
Beispiel #2
0
	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)