-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUI.py
More file actions
117 lines (89 loc) · 2.88 KB
/
UI.py
File metadata and controls
117 lines (89 loc) · 2.88 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
110
111
112
113
114
class Handler(object):
def __init__(self, field):
self.__buttons = []
self.__field = field
def addButton(self, b):
self.__buttons.append(b)
def update(self, pos):
for e in self.__buttons:
if e.isInside(pos):
e.active()
else:
e.passive()
def click(self, pos):
for e in self.__buttons:
if e.isInside(pos):
return e.click()
if self.__field.isInside(pos):
return self.__field.click(pos)
def draw(self, screen):
for e in self.__buttons:
if e.getVisible():
e.draw(screen)
def activ(self):
for e in self.__buttons:
if not e.constant():
e.visible()
def deactiv(self):
for e in self.__buttons:
if not e.constant():
e.invisible()
class Button(object):
def __init__(self, data, imp, ima, constant):
self.__x = data["x"]
self.__y = data["y"]
self.__w = data["w"]
self.__h = data["h"]
self.__statechange = data["statechange"]
self.__image_passive = imp
self.__image_active = ima
self.__image = imp
self.__constant = constant
self.__visible = True
pass
def isInside(self, (x, y)):
if (self.__x + self.__w) >= x >= self.__x and (self.__y + self.__h) >= y >= self.__y:
return True
return False
def active(self):
self.__image = self.__image_active
def passive(self):
self.__image = self.__image_passive
def click(self):
return self.__statechange
def draw(self, screen):
screen.blit(self.__image, (self.__x, self.__y))
def constant(self):
return self.__constant
def visible(self):
self.__visible = True
def invisible(self):
self.__visible = False
def getVisible(self):
return self.__visible
class Field(object):
def __init__(self, data):
self.__startx = data["offsetX"]
self.__starty = data["offsetY"]
self.__w = data["width"]
self.__h = data["height"]
self.__statechange = data["statechange"]
pass
def isInside(self, (x, y)):
if (self.__startx + self.__w) >= x >= self.__startx and (self.__starty + self.__h) >= y >= self.__starty:
return True
return False
def click(self, pos):
return self.__statechange
class Text(object):
def __init__(self, pos, font):
self.__font = font
self.__pos = pos
self.__text = []
def setText(self, text):
self.__text = text
return self
def draw(self, screen):
for t in self.__text:
text = self.__font.render(t, 1, (255, 255, 255))
screen.blit(text, (self.__pos[0], self.__pos[1] + self.__text.index(t) * self.__font.size(t)[1]))