diff --git a/cowyeet.py b/cowyeet.py index ea50467..8860e02 100644 --- a/cowyeet.py +++ b/cowyeet.py @@ -25,6 +25,7 @@ else: settings = FileDict() settings.path = "settings.txt" settings["win_size"] = DEFAULT_WINDOW_SIZE + settings["level_size_multiplier"] = 1 settings.save() # loading screen @@ -39,6 +40,7 @@ pygame.display.update() # variables nero = (40, 40, 40) # colors (color names by https://www.color-blindness.com/color-name-hue/) dim_gray = (100, 100, 100) +summer_sky = (50, 200, 220) white_smoke = (240, 240, 240) buttons = [] # misc @@ -47,6 +49,9 @@ active_buttons = [] last_frame_mouse_pressed = False page = "main_menu" level = None +level_data = None +lvl_width = None +level_surface = None # pygame objects @@ -55,8 +60,30 @@ mouse = pygame.mouse bigger_default_font = pygame.font.SysFont("ubuntu", 32) # fonts -# texts -choose_level_text = bigger_default_font.render("Choose a level:", True, white_smoke) +choose_level_text = bigger_default_font.render("Choose a level:", True, white_smoke) # texts + +texture_not_found = pygame.image.load("textures/texture_not_found.png") +texture_not_found = pygame.transform.scale(texture_not_found, (40 * settings["level_size_multiplier"], 40 * settings["level_size_multiplier"])) + + +def load_texture(path: str): # images + if os.path.isfile(path): + return pygame.image.load(path) + + else: + return texture_not_found + + +def load_block_texture(path: str): + texture = load_texture(path) + + return pygame.transform.scale(texture, (40 * settings["level_size_multiplier"], 40 * settings["level_size_multiplier"])) + + +stone_block_texture = load_block_texture("textures/terrain/stone_01.png") +dirt_block_texture = load_block_texture("textures/terrain/dirt_01.png") +grass_block_texture = load_block_texture("textures/terrain/grass_01.png") +rock_block_texture = load_block_texture("textures/terrain/rock_01.png") # coordinate calculations @@ -82,7 +109,7 @@ def start_level(lvl: int): page_switch("ingame") level = lvl - load_level(1) + load_level(lvl) # buttons @@ -107,27 +134,67 @@ def window_size_reload(new_size): def load_level(lvl): + global level_data + global lvl_width + global level_surface + level_data = __import__("data.levels." + str(lvl), fromlist="data.levels") + lvl_width, lvl_height = level_data.level_size + + level_surface = pygame.Surface((lvl_width * 40 * settings["level_size_multiplier"], lvl_height * 40 * settings["level_size_multiplier"])) + level_surface.fill(summer_sky) + + x = 0 + y = 0 + + for row in level_data.data_array: + x = 0 + + for block in row: + rx = x * 40 * settings["level_size_multiplier"] + ry = y * 40 * settings["level_size_multiplier"] + print(block) + + blit_block(block, (rx, ry)) + x += 1 + + y += 1 + + +def blit_block(block, position: tuple): + if not block == 0: + if block == 1: + level_surface.blit(stone_block_texture, position) + + elif block == 2: + level_surface.blit(dirt_block_texture, position) + + elif block == 3: + level_surface.blit(grass_block_texture, position) + + elif block == 4: + level_surface.blit(rock_block_texture, position) + + else: + level_surface.blit(texture_not_found, position) + + def main_menu_page(): - global active_buttons - - active_buttons = [start_button] - buttons[start_button].blit() def level_selector_page(): - global active_buttons - - active_buttons = [lvl_one_button] - buttons[lvl_one_button].blit() screen.blit(choose_level_text, (screen.get_width() / 2 - choose_level_text.get_width() / 2, 16)) +def ingame_page(): + screen.blit(level_surface, (0, screen.get_height() - level_surface.get_height())) + + def page_selector(): if page == "main_menu": main_menu_page() @@ -135,6 +202,9 @@ def page_selector(): elif page == "level_selector": level_selector_page() + elif page == "ingame": + ingame_page() + def page_switch(new_page: str=None): global active_buttons @@ -143,6 +213,15 @@ def page_switch(new_page: str=None): if not new_page is None: page = new_page + if page == "main_menu": + active_buttons = [start_button] + + elif page == "level_selector": + active_buttons = [lvl_one_button] + + elif page == "ingame": + active_buttons = [] + # for button in buttons: # button.active = False #