64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
import arcade
|
|
import assets
|
|
import text
|
|
import controls
|
|
|
|
# Választható menüelem több menüelem közt, ha nincs valamelyik irányba másik menüelem, az irányra None értéket adunk
|
|
class MenuItem:
|
|
def __init__(self, label, x, y, left, right, up, down, action, data=None, back_func=None):
|
|
self.left = left
|
|
self.right = right
|
|
self.up = up
|
|
self.down = down
|
|
self.action = action
|
|
self.back = back_func
|
|
self.data = data
|
|
self.x = x
|
|
self.y = y
|
|
self.text = text.TextRenderer(x, y)
|
|
self.selected = False
|
|
self.text.reset(label)
|
|
self.text.type_all()
|
|
|
|
def select(self):
|
|
self.selected = True
|
|
|
|
def update(self):
|
|
if not self.selected:
|
|
return
|
|
|
|
if controls.is_control_pressed(4) and self.action: # Választ
|
|
self.action(self.data)
|
|
return
|
|
|
|
if controls.is_control_pressed(5) and self.back: # Vissza
|
|
self.back(self.data)
|
|
return
|
|
|
|
if controls.is_control_pressed(0) and self.up: # Fel
|
|
controls.depress(0)
|
|
self.selected = False
|
|
self.up.select()
|
|
elif controls.is_control_pressed(1) and self.down: # Le
|
|
controls.depress(1)
|
|
self.selected = False
|
|
self.down.select()
|
|
elif controls.is_control_pressed(2) and self.left: # Bal
|
|
controls.depress(2)
|
|
self.selected = False
|
|
self.left.select()
|
|
elif controls.is_control_pressed(3) and self.right: # Jobb
|
|
controls.depress(3)
|
|
self.selected = False
|
|
self.right.select()
|
|
|
|
def render(self):
|
|
self.text.render()
|
|
|
|
if self.selected:
|
|
arcade.draw_texture_rect(
|
|
assets.sprites["cursor"],
|
|
arcade.LBWH(self.x - 16, self.y - 6, 16, 16),
|
|
pixelated=True
|
|
)
|