-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmenu.py
More file actions
109 lines (87 loc) · 4.21 KB
/
Copy pathmenu.py
File metadata and controls
109 lines (87 loc) · 4.21 KB
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import pygame
class MainMenu:
def __init__(self, native_surface, resolution_manager, settings):
self.settings = settings
self.screen = native_surface
self.res = resolution_manager
# Background
raw_bg = pygame.image.load("assets/images/menu_b.png").convert()
self.background = pygame.transform.scale(raw_bg, self.screen.get_size())
self.background_rect = self.background.get_rect(topleft=(0, 0))
# Play button
base_play_size = (450, 100)
base_play_center = (1920 // 2, 1080 // 2 - 50)
self.play_image = pygame.image.load("assets/images/play.png").convert_alpha()
self.play_image = pygame.transform.scale(self.play_image, base_play_size)
self.play_rect = self.play_image.get_rect(center=base_play_center)
# Leaderboard button
base_score_size = (450, 100)
base_score_center = (1920 // 2, 1080 // 2 + 75)
self.score_image = pygame.image.load("assets/images/score.png").convert_alpha()
self.score_image = pygame.transform.scale(self.score_image, base_score_size)
self.score_rect = self.score_image.get_rect(center=base_score_center)
# Tutorial button
base_tutorial_size = (450, 100)
base_tutorial_center = (1920 // 2, 1080 // 2 + 200)
self.tutorial_image = pygame.image.load(
"assets/images/tutorial.png"
).convert_alpha()
self.tutorial_image = pygame.transform.scale(
self.tutorial_image, base_tutorial_size
)
self.tutorial_rect = self.tutorial_image.get_rect(center=base_tutorial_center)
# Settings button
base_settings_size = (450, 100)
base_settings_center = (1920 // 2, 1080 // 2 + +325)
self.settings_image = pygame.image.load(
"assets/images/settings.png"
).convert_alpha()
self.settings_image = pygame.transform.scale(
self.settings_image, base_settings_size
)
self.settings_rect = self.settings_image.get_rect(center=base_settings_center)
# Quit button
base_quit_size = (450, 100)
base_quit_center = (1920 // 2, 1080 // 2 + 450)
self.quit_image = pygame.image.load("assets/images/quit.png").convert_alpha()
self.quit_image = pygame.transform.scale(self.quit_image, base_quit_size)
self.quit_rect = self.quit_image.get_rect(center=base_quit_center)
pygame.mixer.music.set_volume(
self.settings.music_volume if self.settings.sound_on else 0.0
)
# Load click sound
self.click_sound = pygame.mixer.Sound("assets/sounds/click.mp3")
def draw(self):
self.screen.blit(self.background, self.background_rect)
self.screen.blit(self.play_image, self.play_rect)
self.screen.blit(self.score_image, self.score_rect)
self.screen.blit(self.tutorial_image, self.tutorial_rect)
self.screen.blit(self.settings_image, self.settings_rect)
self.screen.blit(self.quit_image, self.quit_rect)
# Draw hitbox for debugging
# pygame.draw.rect(self.screen, (255, 0, 0), self.play_rect, 2)
# pygame.draw.rect(self.screen, (0, 255, 0), self.score_rect, 2)
# pygame.draw.rect(self.screen, (255, 255, 255), self.settings_rect, 2)
# pygame.draw.rect(self.screen, (255, 255, 255), self.quit_rect, 2)
# pygame.draw.rect(self.screen, (0, 0, 255), self.tutorial_rect, 2)
def handle_click(self, pos):
logical_pos = self.res.unscale_mouse(pos)
if self.play_rect.collidepoint(logical_pos):
if self.settings.sound_on:
self.click_sound.play()
return "start"
if self.score_rect.collidepoint(logical_pos):
if self.settings.sound_on:
self.click_sound.play()
return "score"
if self.tutorial_rect.collidepoint(logical_pos):
if self.settings.sound_on:
self.click_sound.play()
return "tutorial"
if self.settings_rect.collidepoint(logical_pos):
if self.settings.sound_on:
self.click_sound.play()
return "settings"
if self.quit_rect.collidepoint(logical_pos):
pygame.quit()
exit()