-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtext.py
96 lines (78 loc) · 3.19 KB
/
text.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
87
88
89
90
91
92
93
94
95
96
import pygame
from vector import Vector2
from constants import *
class Text(object):
def __init__(self, text, color, x, y, size, time=None, id=None, visible=True):
self.id = id
self.text = text
self.color = color
self.size = size
self.visible = visible
self.position = Vector2(x, y)
self.timer = 0
self.lifespan = time
self.label = None
self.destroy = False
self.setupFont("PressStart2P-Regular.ttf")
self.createLabel()
def setupFont(self, fontpath):
self.font = pygame.font.Font(fontpath, self.size)
def createLabel(self):
self.label = self.font.render(self.text, 1, self.color)
def setText(self, newtext):
self.text = str(newtext)
self.createLabel()
def update(self, dt):
if self.lifespan is not None:
self.timer += dt
if self.timer >= self.lifespan:
self.timer = 0
self.lifespan = None
self.destroy = True
def render(self, screen):
if self.visible:
x, y = self.position.asTuple()
screen.blit(self.label, (x, y))
class TextGroup(object):
def __init__(self):
self.nextid = 10
self.alltext = {}
self.setupText()
self.showText(READYTXT)
def addText(self, text, color, x, y, size, time=None, id=None):
self.nextid += 1
self.alltext[self.nextid] = Text(text, color, x, y, size, time=time, id=id)
return self.nextid
def removeText(self, id):
self.alltext.pop(id)
def setupText(self):
size = TILEHEIGHT
self.alltext[SCORETXT] = Text("0".zfill(8), WHITE, 0, TILEHEIGHT, size)
self.alltext[LEVELTXT] = Text(str(1).zfill(3), WHITE, 23*TILEWIDTH, TILEHEIGHT, size)
self.alltext[READYTXT] = Text("READY!", YELLOW, 11.25*TILEWIDTH, 20*TILEHEIGHT, size, visible=False)
self.alltext[PAUSETXT] = Text("PAUSED!", YELLOW, 10.625*TILEWIDTH, 20*TILEHEIGHT, size, visible=False)
self.alltext[GAMEOVERTXT] = Text("GAMEOVER!", YELLOW, 10*TILEWIDTH, 20*TILEHEIGHT, size, visible=False)
self.addText("SCORE", WHITE, 0, 0, size)
self.addText("LEVEL", WHITE, 23*TILEWIDTH, 0, size)
def update(self, dt):
for tkey in list(self.alltext.keys()):
self.alltext[tkey].update(dt)
if self.alltext[tkey].destroy:
self.removeText(tkey)
def showText(self, id):
self.hideText()
self.alltext[id].visible = True
def hideText(self):
self.alltext[READYTXT].visible = False
self.alltext[PAUSETXT].visible = False
self.alltext[GAMEOVERTXT].visible = False
def updateScore(self, score):
self.updateText(SCORETXT, str(score).zfill(8))
def updateLevel(self, level):
self.updateText(LEVELTXT, str(level + 1).zfill(3))
def updateText(self, id, value):
if id in self.alltext.keys():
self.alltext[id].setText(value)
def render(self, screen):
for tkey in list(self.alltext.keys()):
self.alltext[tkey].render(screen)