1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
import pygame
import helper
def draw(canvas, screen, need_update_world, world, mouse, blocks, zoom, offset, block_coordinates):
canvas.fill("red")
width = screen.get_size()[0]
height = width / (16/9)
if width > screen.get_size()[0] or height > screen.get_size()[1]:
height = screen.get_size()[1]
width = height * (16/9)
world_display = pygame.Surface((1280, 720))
if need_update_world:
world.fill("gray")
for block in blocks:
world.blit(helper.draw_texture(helper.get_block_texture(block[2])), (block[0], block[1]))
need_update_world = False
world_display.blit(world, (0, 0))
if mouse[0] > -1 and mouse[1] > -1 and pygame.mouse.get_focused():
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:
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))
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]
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))
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))
pygame.display.flip()
return canvas, screen, need_update_world, world, mouse, blocks, zoom, offset, block_coordinates
|