|
|
@@ -2,17 +2,63 @@ |
|
|
|
from . import gbe |
|
|
|
import pygame |
|
|
|
|
|
|
|
class NodeInterface(gbe.nodes.NodeSurface): |
|
|
|
def __init__(self, name="Interface", parent=None): |
|
|
|
|
|
|
|
class NodeOptions(gbe.nodes.Node2D): |
|
|
|
def __init__(self, name="Options", parent=None): |
|
|
|
try: |
|
|
|
gbe.nodes.NodeSurface.__init__(self, name, parent) |
|
|
|
gbe.nodes.Node2D.__init__(self, name, parent) |
|
|
|
except gbe.nodes.NodeError as e: |
|
|
|
raise e |
|
|
|
self._options = [] |
|
|
|
self._oindex = 0 |
|
|
|
self._color_select = (255,255,0) |
|
|
|
self._color_idle = (255,255,255) |
|
|
|
|
|
|
|
def add_option(self, font_src, size, text, event, params={}): |
|
|
|
nodeName = "OpText{}".format(len(self._options)) |
|
|
|
nodeOption = gbe.nodes.NodeText(nodeName, self) |
|
|
|
nodeOption.font_src = font_src |
|
|
|
nodeOption.size = size |
|
|
|
nodeOption.text = text |
|
|
|
nodeOption.antialias = False |
|
|
|
|
|
|
|
if len(self._options) == 0: |
|
|
|
nodeOption.set_color(*self._color_select) |
|
|
|
else: |
|
|
|
nodeOption.set_color(*self._color_idle) |
|
|
|
li = len(self._options)-1 |
|
|
|
lp = self._options[li][0].position |
|
|
|
ls = self._options[li][0].size |
|
|
|
nodeOption.position = (lp[0], lp[1] + ls + 1) |
|
|
|
|
|
|
|
def on_render(self): |
|
|
|
size = self.resolution |
|
|
|
self.draw_rect((0, 0, size[0], 10), pygame.Color(255,0,0,128), 1) |
|
|
|
self.draw_circle((int(size[0]/2), int(size[1]/2)), 16, pygame.Color(255,0,0,255), 2, pygame.Color(0,255,0,255)) |
|
|
|
self._options.append([nodeOption, event, params]) |
|
|
|
|
|
|
|
def on_start(self): |
|
|
|
self.listen("KEYPRESSED", self.on_keypressed) |
|
|
|
|
|
|
|
def on_pause(self): |
|
|
|
self.unlisten("KEYPRESSED", self.on_keypressed) |
|
|
|
|
|
|
|
def on_keypressed(self, event, params): |
|
|
|
if params["key_name"] == "w": |
|
|
|
if self._oindex > 0: |
|
|
|
self._options[self._oindex][0].set_color(*self._color_idle) |
|
|
|
self._oindex -= 1 |
|
|
|
self._options[self._oindex][0].set_color(*self._color_select) |
|
|
|
|
|
|
|
elif params["key_name"] == "s": |
|
|
|
if self._oindex < len(self._options) - 1: |
|
|
|
self._options[self._oindex][0].set_color(*self._color_idle) |
|
|
|
self._oindex += 1 |
|
|
|
self._options[self._oindex][0].set_color(*self._color_select) |
|
|
|
|
|
|
|
elif params["key_name"] in ["enter", "return"]: |
|
|
|
if len(self._options) > 0: |
|
|
|
op = self._options[self._oindex] |
|
|
|
self.emit(op[1], op[2]) |
|
|
|
|
|
|
|
elif params["key_name"] == "escape": |
|
|
|
self.emit("QUIT") |
|
|
|
|
|
|
|
|
|
|
|
|