| from . import gbe | from . import gbe | ||||
| import pygame | 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: | try: | ||||
| gbe.nodes.NodeSurface.__init__(self, name, parent) | |||||
| gbe.nodes.Node2D.__init__(self, name, parent) | |||||
| except gbe.nodes.NodeError as e: | except gbe.nodes.NodeError as e: | ||||
| raise 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") | |||||