Szöveg renderelés
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -5,4 +5,6 @@ sprites = {
|
||||
"louisd": arcade.load_texture("res/sprite/louisd.png"),
|
||||
"louisl": arcade.load_texture("res/sprite/louisl.png"),
|
||||
"louisb": arcade.load_texture("res/sprite/louisb.png"),
|
||||
"cursor": arcade.load_texture("res/sprite/handcursor.png"),
|
||||
"font": arcade.load_spritesheet("res/sprite/font.png"),
|
||||
}
|
||||
|
||||
@@ -1,25 +1,15 @@
|
||||
import arcade
|
||||
import assets
|
||||
import text
|
||||
|
||||
text = text.TextRenderer(0, 100, 200)
|
||||
|
||||
def switch():
|
||||
print("Hello I'm switched")
|
||||
text.reset("●A bölcs, gyors, fürge róka zöld ágon ül, miközben egy tyúk csípős paprikát főz, és egy whiskyvel teli dobozt cipelő dzsesszzenész kvázi jókedvűen fütyörészik.")
|
||||
text.type_all()
|
||||
|
||||
def update(dt):
|
||||
pass
|
||||
|
||||
def draw(game):
|
||||
arcade.draw_rect_filled(
|
||||
arcade.LBWH(0, 0, game.screen_width, game.screen_height),
|
||||
arcade.color.BLUE,
|
||||
)
|
||||
|
||||
arcade.draw_texture_rect(
|
||||
assets.sprites["louisu"],
|
||||
arcade.LBWH(
|
||||
0,
|
||||
0,
|
||||
assets.sprites["louisu"].width,
|
||||
assets.sprites["louisu"].height
|
||||
),
|
||||
pixelated=True
|
||||
)
|
||||
text.render()
|
||||
|
||||
97
src/text.py
97
src/text.py
@@ -1,3 +1,5 @@
|
||||
import arcade
|
||||
import assets
|
||||
|
||||
class Character:
|
||||
def __init__(self, visible, codepoint=None, width=None, y_offset=None, display=None):
|
||||
@@ -9,6 +11,83 @@ class Character:
|
||||
else:
|
||||
self.display = display # Egy függvény amely akkor fut le amikor a speciális karaktert megjelenítik
|
||||
|
||||
class TextRenderer:
|
||||
def __init__(self, x, y, width=None):
|
||||
self.sprites = []
|
||||
self.base_x = x
|
||||
self.base_y = y
|
||||
self.width = width
|
||||
self.text = ""
|
||||
self.textptr = 0
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
def reset(self, text):
|
||||
self.text = text
|
||||
self.textptr = 0
|
||||
self.sprites = []
|
||||
|
||||
def amend(self, text):
|
||||
self.text = self.text + text
|
||||
|
||||
def type_tick(self):
|
||||
if self.textptr >= len(self.text):
|
||||
return True
|
||||
|
||||
try:
|
||||
char = texttable[self.text[self.textptr]]
|
||||
except:
|
||||
char = texttable['?']
|
||||
|
||||
if char.visible:
|
||||
c = char.codepoint
|
||||
texture = assets.sprites["font"].get_texture(arcade.LBWH((c % 16) * 16, (c // 16) * 12, char.width, 12))
|
||||
|
||||
if self.width and self.x >= self.base_x + self.width:
|
||||
self.y -= 13
|
||||
self.x = self.base_x
|
||||
|
||||
self.sprites.append([
|
||||
texture,
|
||||
arcade.LBWH(
|
||||
self.x,
|
||||
self.y + char.y_offset,
|
||||
char.width,
|
||||
12
|
||||
)
|
||||
])
|
||||
|
||||
self.x += char.width
|
||||
else:
|
||||
try:
|
||||
char.display(self)
|
||||
except e:
|
||||
print(f"Hiba: kivétel egy display függvényben: {e}")
|
||||
|
||||
self.textptr += 1
|
||||
|
||||
if self.textptr >= len(self.text):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def type_all(self):
|
||||
while not self.type_tick():
|
||||
pass
|
||||
|
||||
def render(self):
|
||||
for s in self.sprites:
|
||||
arcade.draw_texture_rect(
|
||||
s[0],
|
||||
s[1],
|
||||
pixelated=True
|
||||
)
|
||||
|
||||
# a \n display függvénye
|
||||
def newline(self):
|
||||
self.y -= 13
|
||||
self.x = self.base_x
|
||||
|
||||
# A szövegtábla tartalmazza az össtes karakter tulajdonságait
|
||||
texttable = {
|
||||
# Szóköz
|
||||
@@ -92,10 +171,10 @@ texttable = {
|
||||
'd': Character(True, 100, 5, 0 ),
|
||||
'e': Character(True, 101, 5, 0 ),
|
||||
'f': Character(True, 102, 4, 0 ),
|
||||
'g': Character(True, 103, 5, 0 ),
|
||||
'g': Character(True, 103, 5, -3),
|
||||
'h': Character(True, 104, 5, 0 ),
|
||||
'i': Character(True, 105, 2, 0 ),
|
||||
'j': Character(True, 106, 3, 0 ),
|
||||
'j': Character(True, 106, 3, -3),
|
||||
'k': Character(True, 107, 5, 0 ),
|
||||
'l': Character(True, 108, 2, 0 ),
|
||||
'm': Character(True, 109, 8, 0 ),
|
||||
@@ -105,7 +184,7 @@ texttable = {
|
||||
'q': Character(True, 113, 5, -3),
|
||||
'r': Character(True, 114, 4, 0 ),
|
||||
's': Character(True, 115, 5, 0 ),
|
||||
't': Character(True, 116, 3, 0 ),
|
||||
't': Character(True, 116, 4, 0 ),
|
||||
'u': Character(True, 117, 4, 0 ),
|
||||
'v': Character(True, 118, 6, 0 ),
|
||||
'w': Character(True, 119, 8, 0 ),
|
||||
@@ -134,8 +213,12 @@ texttable = {
|
||||
'ű': Character(True, 18 , 5, 0 ),
|
||||
|
||||
# Görög betűk
|
||||
'α': Character(True, 94 , 3, 0),
|
||||
'β': Character(True, 95 , 3, 0),
|
||||
'γ': Character(True, 96 , 3, 0),
|
||||
'Ω': Character(True, 127, 3, 0),
|
||||
'α': Character(True, 94 , 6, 0),
|
||||
'β': Character(True, 95 , 5, 0),
|
||||
'γ': Character(True, 96 , 7, 0),
|
||||
'Ω': Character(True, 127, 6, 0),
|
||||
|
||||
# Speciális karakterek
|
||||
'\n': Character(False, 0, 0, 0, display=newline)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user