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"),
|
"louisd": arcade.load_texture("res/sprite/louisd.png"),
|
||||||
"louisl": arcade.load_texture("res/sprite/louisl.png"),
|
"louisl": arcade.load_texture("res/sprite/louisl.png"),
|
||||||
"louisb": arcade.load_texture("res/sprite/louisb.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 arcade
|
||||||
import assets
|
import assets
|
||||||
|
import text
|
||||||
|
|
||||||
|
text = text.TextRenderer(0, 100, 200)
|
||||||
|
|
||||||
def switch():
|
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):
|
def update(dt):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def draw(game):
|
def draw(game):
|
||||||
arcade.draw_rect_filled(
|
text.render()
|
||||||
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
|
|
||||||
)
|
|
||||||
|
|||||||
97
src/text.py
97
src/text.py
@@ -1,3 +1,5 @@
|
|||||||
|
import arcade
|
||||||
|
import assets
|
||||||
|
|
||||||
class Character:
|
class Character:
|
||||||
def __init__(self, visible, codepoint=None, width=None, y_offset=None, display=None):
|
def __init__(self, visible, codepoint=None, width=None, y_offset=None, display=None):
|
||||||
@@ -9,6 +11,83 @@ class Character:
|
|||||||
else:
|
else:
|
||||||
self.display = display # Egy függvény amely akkor fut le amikor a speciális karaktert megjelenítik
|
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
|
# A szövegtábla tartalmazza az össtes karakter tulajdonságait
|
||||||
texttable = {
|
texttable = {
|
||||||
# Szóköz
|
# Szóköz
|
||||||
@@ -92,10 +171,10 @@ texttable = {
|
|||||||
'd': Character(True, 100, 5, 0 ),
|
'd': Character(True, 100, 5, 0 ),
|
||||||
'e': Character(True, 101, 5, 0 ),
|
'e': Character(True, 101, 5, 0 ),
|
||||||
'f': Character(True, 102, 4, 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 ),
|
'h': Character(True, 104, 5, 0 ),
|
||||||
'i': Character(True, 105, 2, 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 ),
|
'k': Character(True, 107, 5, 0 ),
|
||||||
'l': Character(True, 108, 2, 0 ),
|
'l': Character(True, 108, 2, 0 ),
|
||||||
'm': Character(True, 109, 8, 0 ),
|
'm': Character(True, 109, 8, 0 ),
|
||||||
@@ -105,7 +184,7 @@ texttable = {
|
|||||||
'q': Character(True, 113, 5, -3),
|
'q': Character(True, 113, 5, -3),
|
||||||
'r': Character(True, 114, 4, 0 ),
|
'r': Character(True, 114, 4, 0 ),
|
||||||
's': Character(True, 115, 5, 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 ),
|
'u': Character(True, 117, 4, 0 ),
|
||||||
'v': Character(True, 118, 6, 0 ),
|
'v': Character(True, 118, 6, 0 ),
|
||||||
'w': Character(True, 119, 8, 0 ),
|
'w': Character(True, 119, 8, 0 ),
|
||||||
@@ -134,8 +213,12 @@ texttable = {
|
|||||||
'ű': Character(True, 18 , 5, 0 ),
|
'ű': Character(True, 18 , 5, 0 ),
|
||||||
|
|
||||||
# Görög betűk
|
# Görög betűk
|
||||||
'α': Character(True, 94 , 3, 0),
|
'α': Character(True, 94 , 6, 0),
|
||||||
'β': Character(True, 95 , 3, 0),
|
'β': Character(True, 95 , 5, 0),
|
||||||
'γ': Character(True, 96 , 3, 0),
|
'γ': Character(True, 96 , 7, 0),
|
||||||
'Ω': Character(True, 127, 3, 0),
|
'Ω': Character(True, 127, 6, 0),
|
||||||
|
|
||||||
|
# Speciális karakterek
|
||||||
|
'\n': Character(False, 0, 0, 0, display=newline)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user