diff options
Diffstat (limited to 'src/display.py')
-rw-r--r-- | src/display.py | 75 |
1 files changed, 44 insertions, 31 deletions
diff --git a/src/display.py b/src/display.py index 23722a5..4ba3c24 100644 --- a/src/display.py +++ b/src/display.py @@ -1,9 +1,12 @@ import pygame import helper +import pause +opacity = 0 -def draw(canvas, screen, need_update_world, world, mouse, blocks, zoom, offset, block_coordinates): +def draw(canvas, screen, need_update_world, world, mouse, blocks, zoom, offset, block_coordinates, paused, screen_blocks): + global opacity canvas.fill("red") width = screen.get_size()[0] @@ -16,75 +19,85 @@ def draw(canvas, screen, need_update_world, world, mouse, blocks, zoom, offset, world_display = pygame.Surface((1280, 720)) if need_update_world: + screen_blocks = [] world.fill("gray") - for block in blocks: - world.blit(helper.draw_texture(helper.get_block_texture(block[2])), (block[0], block[1])) + for layer in range(len(blocks)): + for height in range(len(blocks[layer]) - 1, -1, -1): + for width in range(len(blocks[layer][height]) - 1, -1, -1): + if blocks[layer][height][width] != "air": + x = offset[0] + 500 + (21 * width) - (21 * height) + y = offset[1] + 500 - (13 * layer) - (14 * width) - (12 * height) + world.blit(helper.draw_texture(helper.get_block_texture(blocks[layer][height][width])), (x, y)) + + for layer in range(len(blocks) - 1, -1, -1): + for height in range(len(blocks[layer]) - 1, -1, -1): + for width in range(len(blocks[layer][height]) - 1, -1, -1): + if blocks[layer][height][width] != "air": + x = offset[0] + 500 + (21 * width) - (21 * height) + y = offset[1] + 500 - (13 * layer) - (14 * width) - (12 * height) + screen_blocks.append((x, y, blocks[layer][height][width], layer, height, width)) need_update_world = False + print(offset) world_display.blit(world, (0, 0)) - if mouse[0] > -1 and mouse[1] > -1 and pygame.mouse.get_focused(): + if mouse[0] > -1 and mouse[1] > -1 and pygame.mouse.get_focused() and not paused: cursor_x = original_cursor_x = mouse[0] - 42 / 2 cursor_y = original_cursor_y = mouse[1] - 42 / 2 cursor_changed = False - for block in blocks: - if abs(block[0] - mouse[0] + 42 / 2) < 21 and abs(block[1] - mouse[1] + 42 / 2) < 21: + for block in screen_blocks: + if block[0] <= mouse[0] <= block[0] + 42 and block[1] <= mouse[1] <= block[1] + 42: cursor_x = block[0] cursor_y = block[1] cursor_changed = True break - if abs(block[0] - mouse[0] + 42 / 2) < 21 and abs(block[1] - mouse[1] + 42 / 2 + 15) < 21: - cursor_x = block[0] - cursor_y = block[1] + 15 - cursor_changed = True - break if cursor_changed: - has_block_below = False - - for i in range(len(blocks) - 1, -1, -1): - if blocks[i][0] == cursor_x and blocks[i][1] == cursor_y: - has_block_below = True - break - - if has_block_below: - world_display.blit(helper.draw_texture(5), (cursor_x, cursor_y)) - else: - world_display.blit(helper.draw_texture(1), (cursor_x, cursor_y)) - + world_display.blit(helper.draw_texture(5), (cursor_x, cursor_y)) block_coordinates = (cursor_x, cursor_y) else: block_coordinates = (-1, -1) world_display.blit(helper.draw_texture(2), (original_cursor_x + 42 / 2, original_cursor_y + 42 / 2)) - x = 1280 / 2 - zoom[0] / 2 + offset[0] - y = 720 / 2 - zoom[1] / 2 + offset[1] + x = 1280 / 2 - zoom[0] / 2 + y = 720 / 2 - zoom[1] / 2 if x < 0: x = 0 - offset = (offset[0] - 10, offset[1]) if y < 0: y = 0 - offset = (offset[0], offset[1]) if x + zoom[0] > 1280: x = 0 - offset = (offset[0] - 10, offset[1]) if y + zoom[1] > 720: y = 0 - offset = (offset[0], offset[1]) canvas.blit(pygame.transform.scale(world_display.subsurface(x, y, zoom[0], zoom[1]), (1280, 720)), (0, 0)) + if paused: + canvas.blit(pygame.Surface.convert_alpha(pause.show()), (0, 0)) + scaled_win = pygame.transform.scale(canvas, (width, height)) - screen.blit(scaled_win, (screen.get_size()[0] / 2 - width / 2, screen.get_size()[1] / 2 - height / 2)) + + if opacity >= 1: + result = scaled_win + else: + result = helper.transparent(scaled_win, opacity) + + screen.blit(result, (screen.get_size()[0] / 2 - width / 2, screen.get_size()[1] / 2 - height / 2)) pygame.display.flip() - return canvas, screen, need_update_world, world, mouse, blocks, zoom, offset, block_coordinates + if opacity < 1: + opacity += 1/30 + + if opacity >= 1: + opacity = 1 + + return canvas, screen, need_update_world, world, mouse, blocks, zoom, offset, block_coordinates, paused, screen_blocks |