summaryrefslogtreecommitdiff
path: root/src/display.py
diff options
context:
space:
mode:
authorRaindropsSys <contact@minteck.org>2023-09-01 14:54:08 +0200
committerRaindropsSys <contact@minteck.org>2023-09-01 14:54:08 +0200
commitc2f1ed6a85c3895483d36af0f64e2829c3fa3263 (patch)
tree6f6a8efbe62db8576a1abf5409569b37ccf261be /src/display.py
parent03afd42fdcd52e4a827016828c4ad286de320078 (diff)
downloadblocks-c2f1ed6a85c3895483d36af0f64e2829c3fa3263.tar.gz
blocks-c2f1ed6a85c3895483d36af0f64e2829c3fa3263.tar.bz2
blocks-c2f1ed6a85c3895483d36af0f64e2829c3fa3263.zip
Updated 11 files and added 2 files (automated)
Diffstat (limited to 'src/display.py')
-rw-r--r--src/display.py75
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