Formázási javítások és tipográfiai karakter spritok és definíciók
This commit is contained in:
BIN
res/sprite/font.png
Normal file
BIN
res/sprite/font.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@@ -1,11 +1,5 @@
|
|||||||
import gamestate
|
import gamestate
|
||||||
|
|
||||||
def switch():
|
# Azért létezik ez a "none" gamestate hogy meghívja az elsö gamestate init() funkcióját
|
||||||
pass
|
|
||||||
|
|
||||||
def update(dt):
|
def update(dt):
|
||||||
gamestate.switch_gamestate("title")
|
gamestate.switch_gamestate("title")
|
||||||
|
|
||||||
def draw():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|||||||
61
src/main.py
61
src/main.py
@@ -1,66 +1,12 @@
|
|||||||
import arcade
|
import arcade
|
||||||
import assets
|
import assets
|
||||||
import gamestate
|
import gamestate
|
||||||
|
import renderers
|
||||||
|
import text
|
||||||
|
|
||||||
SCREEN_WIDTH = 256
|
SCREEN_WIDTH = 256
|
||||||
SCREEN_HEIGHT = 224
|
SCREEN_HEIGHT = 224
|
||||||
|
|
||||||
class TextureRenderer:
|
|
||||||
def __init__(self, ctx):
|
|
||||||
self.ctx = ctx
|
|
||||||
|
|
||||||
self.program = ctx.program(
|
|
||||||
vertex_shader="""
|
|
||||||
#version 330
|
|
||||||
|
|
||||||
in vec2 in_vert;
|
|
||||||
in vec2 in_uv;
|
|
||||||
|
|
||||||
out vec2 uv;
|
|
||||||
|
|
||||||
uniform vec2 screen_size;
|
|
||||||
uniform vec4 bounds;
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
// Convert quad coordinates from [-1, 1] to [0, 1]
|
|
||||||
vec2 local = in_vert * 0.5 + 0.5;
|
|
||||||
|
|
||||||
// bounds = x, y, width, height in pixels
|
|
||||||
vec2 pixel_pos = bounds.xy + local * bounds.zw;
|
|
||||||
|
|
||||||
// Convert pixels to NDC
|
|
||||||
vec2 ndc = pixel_pos / screen_size * 2.0 - 1.0;
|
|
||||||
|
|
||||||
gl_Position = vec4(ndc, 0.0, 1.0);
|
|
||||||
uv = in_uv;
|
|
||||||
}
|
|
||||||
""",
|
|
||||||
fragment_shader="""
|
|
||||||
#version 330
|
|
||||||
|
|
||||||
uniform sampler2D tex;
|
|
||||||
|
|
||||||
in vec2 uv;
|
|
||||||
out vec4 color;
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
color = texture(tex, uv);
|
|
||||||
}
|
|
||||||
""",
|
|
||||||
)
|
|
||||||
|
|
||||||
self.quad = arcade.gl.geometry.quad_2d_fs()
|
|
||||||
|
|
||||||
def render(self, texture, x, y, width, height):
|
|
||||||
self.program["screen_size"] = (self.ctx.screen.width,
|
|
||||||
self.ctx.screen.height)
|
|
||||||
self.program["bounds"] = (x, y, width, height)
|
|
||||||
|
|
||||||
texture.use(0)
|
|
||||||
self.program["tex"] = 0
|
|
||||||
|
|
||||||
self.quad.render(self.program)
|
|
||||||
|
|
||||||
class Game(arcade.Window):
|
class Game(arcade.Window):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
@@ -83,7 +29,7 @@ class Game(arcade.Window):
|
|||||||
color_attachments=[self.game_texture],
|
color_attachments=[self.game_texture],
|
||||||
)
|
)
|
||||||
|
|
||||||
self.renderer = TextureRenderer(self.ctx)
|
self.renderer = renderers.TextureRenderer(self.ctx)
|
||||||
|
|
||||||
def on_update(self, dt):
|
def on_update(self, dt):
|
||||||
gamestate.update(dt)
|
gamestate.update(dt)
|
||||||
@@ -121,6 +67,5 @@ class Game(arcade.Window):
|
|||||||
scaled_height,
|
scaled_height,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
game = Game()
|
game = Game()
|
||||||
arcade.run()
|
arcade.run()
|
||||||
|
|||||||
59
src/renderers.py
Normal file
59
src/renderers.py
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import arcade
|
||||||
|
|
||||||
|
class TextureRenderer:
|
||||||
|
def __init__(self, ctx):
|
||||||
|
self.ctx = ctx
|
||||||
|
|
||||||
|
self.program = ctx.program(
|
||||||
|
vertex_shader="""
|
||||||
|
#version 330
|
||||||
|
|
||||||
|
in vec2 in_vert;
|
||||||
|
in vec2 in_uv;
|
||||||
|
|
||||||
|
out vec2 uv;
|
||||||
|
|
||||||
|
uniform vec2 screen_size;
|
||||||
|
uniform vec4 bounds;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
// Convert quad coordinates from [-1, 1] to [0, 1]
|
||||||
|
vec2 local = in_vert * 0.5 + 0.5;
|
||||||
|
|
||||||
|
// bounds = x, y, width, height in pixels
|
||||||
|
vec2 pixel_pos = bounds.xy + local * bounds.zw;
|
||||||
|
|
||||||
|
// Convert pixels to NDC
|
||||||
|
vec2 ndc = pixel_pos / screen_size * 2.0 - 1.0;
|
||||||
|
|
||||||
|
gl_Position = vec4(ndc, 0.0, 1.0);
|
||||||
|
uv = in_uv;
|
||||||
|
}
|
||||||
|
""",
|
||||||
|
fragment_shader="""
|
||||||
|
#version 330
|
||||||
|
|
||||||
|
uniform sampler2D tex;
|
||||||
|
|
||||||
|
in vec2 uv;
|
||||||
|
out vec4 color;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
color = texture(tex, uv);
|
||||||
|
}
|
||||||
|
""",
|
||||||
|
)
|
||||||
|
|
||||||
|
self.quad = arcade.gl.geometry.quad_2d_fs()
|
||||||
|
|
||||||
|
def render(self, texture, x, y, width, height):
|
||||||
|
self.program["screen_size"] = (self.ctx.screen.width,
|
||||||
|
self.ctx.screen.height)
|
||||||
|
self.program["bounds"] = (x, y, width, height)
|
||||||
|
|
||||||
|
texture.use(0)
|
||||||
|
self.program["tex"] = 0
|
||||||
|
|
||||||
|
self.quad.render(self.program)
|
||||||
|
|
||||||
|
|
||||||
141
src/text.py
Normal file
141
src/text.py
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
|
||||||
|
class Character:
|
||||||
|
def __init__(self, visible, codepoint=None, width=None, y_offset=None, display=None):
|
||||||
|
self.visible = visible
|
||||||
|
if visible:
|
||||||
|
self.codepoint = codepoint # A szöveg atlaszba való index
|
||||||
|
self.width = width # A karakter szélessége
|
||||||
|
self.y_offset = y_offset # A karakter függőleges csúsztatása
|
||||||
|
else:
|
||||||
|
self.display = display # Egy függvény amely akkor fut le amikor a speciális karaktert megjelenítik
|
||||||
|
|
||||||
|
# A szövegtábla tartalmazza az össtes karakter tulajdonságait
|
||||||
|
texttable = {
|
||||||
|
# Szóköz
|
||||||
|
' ': Character(True, 0 , 4, 0 ),
|
||||||
|
|
||||||
|
# Írásjelek
|
||||||
|
'!': Character(True, 33 , 3, 0 ),
|
||||||
|
'"': Character(True, 34 , 4, 0 ),
|
||||||
|
'#': Character(True, 35 , 9, 0 ),
|
||||||
|
'$': Character(True, 36 , 9, 0 ),
|
||||||
|
'%': Character(True, 37 ,10, 0 ),
|
||||||
|
'&': Character(True, 38 , 8, 0 ),
|
||||||
|
'\'': Character(True, 39 , 3, 0 ),
|
||||||
|
'(': Character(True, 40 , 4, -1),
|
||||||
|
')': Character(True, 41 , 4, -1),
|
||||||
|
'*': Character(True, 42 , 4, 0 ),
|
||||||
|
'+': Character(True, 43 , 6, 0 ),
|
||||||
|
',': Character(True, 44 , 3, -2),
|
||||||
|
'-': Character(True, 45 , 4, 0 ),
|
||||||
|
'.': Character(True, 46 , 2, 0 ),
|
||||||
|
'/': Character(True, 47 , 5, 0 ),
|
||||||
|
':': Character(True, 58 , 2, 0 ),
|
||||||
|
';': Character(True, 59 , 3, -2),
|
||||||
|
'<': Character(True, 60 , 7, 0 ),
|
||||||
|
'=': Character(True, 61 , 6, 0 ),
|
||||||
|
'>': Character(True, 62 , 7, 0 ),
|
||||||
|
'?': Character(True, 63 , 5, 0 ),
|
||||||
|
'▪': Character(True, 64 , 3, 0 ),
|
||||||
|
'[': Character(True, 91 , 3, -1),
|
||||||
|
'♩': Character(True, 92 , 6, 0 ),
|
||||||
|
']': Character(True, 93 , 3, -1),
|
||||||
|
'“': Character(True, 124, 5, 0 ),
|
||||||
|
'”': Character(True, 123, 5, 0 ),
|
||||||
|
'●': Character(True, 125, 6, 0 ),
|
||||||
|
'~': Character(True, 126, 7, 0 ),
|
||||||
|
|
||||||
|
# Számjegyek
|
||||||
|
'0': Character(True, 48 , 5, 0 ),
|
||||||
|
'1': Character(True, 49 , 3, 0 ),
|
||||||
|
'2': Character(True, 50 , 5, 0 ),
|
||||||
|
'3': Character(True, 51 , 5, 0 ),
|
||||||
|
'4': Character(True, 52 , 5, 0 ),
|
||||||
|
'5': Character(True, 53 , 5, 0 ),
|
||||||
|
'6': Character(True, 54 , 5, 0 ),
|
||||||
|
'7': Character(True, 55 , 5, 0 ),
|
||||||
|
'8': Character(True, 56 , 5, 0 ),
|
||||||
|
'9': Character(True, 57 , 5, 0 ),
|
||||||
|
|
||||||
|
# Nagy betűk
|
||||||
|
'A': Character(True, 65 , 7, 0 ),
|
||||||
|
'B': Character(True, 66 , 6, 0 ),
|
||||||
|
'C': Character(True, 67 , 6, 0 ),
|
||||||
|
'D': Character(True, 68 , 6, 0 ),
|
||||||
|
'E': Character(True, 69 , 5, 0 ),
|
||||||
|
'F': Character(True, 70 , 5, 0 ),
|
||||||
|
'G': Character(True, 71 , 7, 0 ),
|
||||||
|
'H': Character(True, 72 , 6, 0 ),
|
||||||
|
'I': Character(True, 73 , 2, 0 ),
|
||||||
|
'J': Character(True, 74 , 5, 0 ),
|
||||||
|
'K': Character(True, 75 , 6, 0 ),
|
||||||
|
'L': Character(True, 76 , 5, 0 ),
|
||||||
|
'M': Character(True, 77 , 8, 0 ),
|
||||||
|
'N': Character(True, 78 , 6, 0 ),
|
||||||
|
'O': Character(True, 79 , 6, 0 ),
|
||||||
|
'P': Character(True, 80 , 6, 0 ),
|
||||||
|
'Q': Character(True, 81 , 6, 0 ),
|
||||||
|
'R': Character(True, 82 , 6, 0 ),
|
||||||
|
'S': Character(True, 83 , 6, 0 ),
|
||||||
|
'T': Character(True, 84 , 6, 0 ),
|
||||||
|
'U': Character(True, 85 , 6, 0 ),
|
||||||
|
'V': Character(True, 86 , 7, 0 ),
|
||||||
|
'W': Character(True, 87 , 8, 0 ),
|
||||||
|
'X': Character(True, 88 , 6, 0 ),
|
||||||
|
'Y': Character(True, 89 , 6, 0 ),
|
||||||
|
'Z': Character(True, 90 , 5, 0 ),
|
||||||
|
|
||||||
|
# Kis betűk
|
||||||
|
'a': Character(True, 97 , 5, 0 ),
|
||||||
|
'b': Character(True, 98 , 5, 0 ),
|
||||||
|
'c': Character(True, 99 , 5, 0 ),
|
||||||
|
'd': Character(True, 100, 5, 0 ),
|
||||||
|
'e': Character(True, 101, 5, 0 ),
|
||||||
|
'f': Character(True, 102, 4, 0 ),
|
||||||
|
'g': Character(True, 103, 5, 0 ),
|
||||||
|
'h': Character(True, 104, 5, 0 ),
|
||||||
|
'i': Character(True, 105, 2, 0 ),
|
||||||
|
'j': Character(True, 106, 3, 0 ),
|
||||||
|
'k': Character(True, 107, 5, 0 ),
|
||||||
|
'l': Character(True, 108, 2, 0 ),
|
||||||
|
'm': Character(True, 109, 8, 0 ),
|
||||||
|
'n': Character(True, 110, 5, 0 ),
|
||||||
|
'o': Character(True, 111, 5, 0 ),
|
||||||
|
'p': Character(True, 112, 5, -3),
|
||||||
|
'q': Character(True, 113, 5, -3),
|
||||||
|
'r': Character(True, 114, 4, 0 ),
|
||||||
|
's': Character(True, 115, 5, 0 ),
|
||||||
|
't': Character(True, 116, 3, 0 ),
|
||||||
|
'u': Character(True, 117, 4, 0 ),
|
||||||
|
'v': Character(True, 118, 6, 0 ),
|
||||||
|
'w': Character(True, 119, 8, 0 ),
|
||||||
|
'x': Character(True, 120, 5, 0 ),
|
||||||
|
'y': Character(True, 121, 5, -3),
|
||||||
|
'z': Character(True, 122, 5, 0 ),
|
||||||
|
|
||||||
|
# Magyar ékezetes betűk
|
||||||
|
'Á': Character(True, 1 , 7, 0 ),
|
||||||
|
'á': Character(True, 2 , 5, 0 ),
|
||||||
|
'É': Character(True, 3 , 5, 0 ),
|
||||||
|
'é': Character(True, 4 , 5, 0 ),
|
||||||
|
'Í': Character(True, 5 , 3, 0 ),
|
||||||
|
'í': Character(True, 6 , 3, 0 ),
|
||||||
|
'Ó': Character(True, 7 , 6, 0 ),
|
||||||
|
'ó': Character(True, 8 , 5, 0 ),
|
||||||
|
'Ö': Character(True, 9 , 6, 0 ),
|
||||||
|
'ö': Character(True, 10 , 5, 0 ),
|
||||||
|
'Ő': Character(True, 11 , 6, 0 ),
|
||||||
|
'ő': Character(True, 12 , 5, 0 ),
|
||||||
|
'Ú': Character(True, 13 , 6, 0 ),
|
||||||
|
'ú': Character(True, 14 , 5, 0 ),
|
||||||
|
'Ü': Character(True, 15 , 6, 0 ),
|
||||||
|
'ü': Character(True, 16 , 5, 0 ),
|
||||||
|
'Ű': Character(True, 17 , 6, 0 ),
|
||||||
|
'ű': 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),
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user