/
Menue.py
86 lines (63 loc) · 2.87 KB
/
Menue.py
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
import pygame
from pygame.locals import *
from Deferred import Deferred
from Lobby import Lobby
from Button import Button
from Graphics import MenueAssets, screen
from Options import Options
from OptionsGUI import OptionsGUI
#REFACTOR: maybe keyboard selection?
#REFACTOR: graphics module for loading/preparing surfaces, animations
class Menue():
def __init__(self, window_x=200, window_y=200, style="Default"):
self.x = window_x
self.y = window_y
self.load_assets()
self.decision = Deferred("")
self.buttons = {}
self.buttons["play"] = Button("PLAY", self.decision, "lobby", (100, 225, 292, 120), MenueAssets.button_surface, MenueAssets.button_hover_animation_surface, MenueAssets.button_pressed_surface)
self.buttons["options"] = Button("OPTIONS", self.decision, "options", (100, 350, 292, 120), MenueAssets.button_surface, MenueAssets.button_hover_animation_surface, MenueAssets.button_pressed_surface)
self.buttons["quit"] = Button("QUIT", self.decision, "quit", (100, 475, 292, 120), MenueAssets.button_surface, MenueAssets.button_hover_animation_surface, MenueAssets.button_pressed_surface)
self.running = True
while self.running:
self.update()
if self.decision.value == "lobby":
Lobby()
if self.decision.value == "options":
OptionsGUI()
if self.decision.value == "quit":
self.running = False
self.decision.value = ""
def handle_events(self):
for event in pygame.event.get():
if event.type == QUIT:
self.running = False
elif event.type == KEYUP:
if event.key == K_ESCAPE:
self.running = False
elif event.type == MOUSEBUTTONUP:
for btn in self.buttons:
if self.buttons[btn].mouse_over_button(event.pos):
self.buttons[btn].on_click()
elif event.type == MOUSEBUTTONDOWN:
for btn in self.buttons:
if self.buttons[btn].mouse_over_button(event.pos):
self.buttons[btn].on_mouse_down()
elif event.type == MOUSEMOTION:
for btn in self.buttons:
if self.buttons[btn].mouse_over_button(event.pos):
self.buttons[btn].on_hover()
else:
self.buttons[btn].on_hover_off()
def update(self):
for btn in self.buttons:
self.buttons[btn].update()
self.handle_events()
self.draw()
def draw(self):
screen.blit(MenueAssets.background_surface, (0,0))
for btn in self.buttons:
self.buttons[btn].draw()
pygame.display.flip()
def load_assets(self):
MenueAssets.load_assets()