Added terrain of first level.
This commit is contained in:
parent
f8aa5bd3d9
commit
d4f6235bb8
1 changed files with 90 additions and 11 deletions
101
cowyeet.py
101
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
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue