changed node naming system to post-creation
This commit is contained in:
parent
efe158f83f
commit
258b2613d5
@ -38,11 +38,10 @@ class Editor:
|
|||||||
lambda z: self.font.render(str(z), True, (255, 255, 255)),
|
lambda z: self.font.render(str(z), True, (255, 255, 255)),
|
||||||
self.ZOOMS
|
self.ZOOMS
|
||||||
))
|
))
|
||||||
self.is_creating_node: bool = False
|
self.is_renaming_node: bool = False
|
||||||
self.state: State = State.STOPPING
|
self.state: State = State.STOPPING
|
||||||
self.graph = Graph()
|
self.graph = Graph()
|
||||||
self.typing_text: str = ""
|
self.typing_text: str = ""
|
||||||
self.node_candidate_pos: tuple[int, int] = None
|
|
||||||
self.node_radius: int = 10
|
self.node_radius: int = 10
|
||||||
self.line_size: int = int(self.node_radius / 5)
|
self.line_size: int = int(self.node_radius / 5)
|
||||||
self.edge_detect_radius: int = 3 * self.line_size
|
self.edge_detect_radius: int = 3 * self.line_size
|
||||||
@ -77,13 +76,12 @@ class Editor:
|
|||||||
self.width = event.x
|
self.width = event.x
|
||||||
self.height = event.y
|
self.height = event.y
|
||||||
elif event.type == pygame.KEYDOWN:
|
elif event.type == pygame.KEYDOWN:
|
||||||
if self.is_creating_node:
|
if self.is_renaming_node:
|
||||||
if event.key == pygame.K_ESCAPE:
|
if event.key == pygame.K_ESCAPE:
|
||||||
self.is_creating_node = False
|
self.is_renaming_node = False
|
||||||
self.node_candidate_pos = None
|
|
||||||
self.typing_text = ""
|
self.typing_text = ""
|
||||||
elif event.key == pygame.K_RETURN:
|
elif event.key == pygame.K_RETURN:
|
||||||
self.create_node()
|
self.rename_nodes()
|
||||||
elif event.key == pygame.K_BACKSPACE:
|
elif event.key == pygame.K_BACKSPACE:
|
||||||
self.typing_text = self.typing_text[:-1]
|
self.typing_text = self.typing_text[:-1]
|
||||||
else:
|
else:
|
||||||
@ -101,6 +99,10 @@ class Editor:
|
|||||||
self.zoom_out()
|
self.zoom_out()
|
||||||
elif event.key == pygame.K_BACKSPACE:
|
elif event.key == pygame.K_BACKSPACE:
|
||||||
self.deleted_selected_objects()
|
self.deleted_selected_objects()
|
||||||
|
elif event.key == pygame.K_RETURN:
|
||||||
|
if len(self.selected_nodes) > 0:
|
||||||
|
self.typing_text = "" if len(self.selected_nodes) > 1 else self.graph.nodes[self.selected_nodes[0]].name
|
||||||
|
self.is_renaming_node = True
|
||||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||||
if event.button == 2:
|
if event.button == 2:
|
||||||
self.mid_drag_pos = event.pos
|
self.mid_drag_pos = event.pos
|
||||||
@ -112,8 +114,7 @@ class Editor:
|
|||||||
else:
|
else:
|
||||||
self.select_object(keys[pygame.K_LSHIFT] or keys[pygame.K_RSHIFT])
|
self.select_object(keys[pygame.K_LSHIFT] or keys[pygame.K_RSHIFT])
|
||||||
elif event.button == 3:
|
elif event.button == 3:
|
||||||
self.node_candidate_pos = self.screen_to_world(event.pos[0], event.pos[1])
|
self.create_node(self.screen_to_world(event.pos[0], event.pos[1]))
|
||||||
self.is_creating_node = True
|
|
||||||
elif event.button == 4:
|
elif event.button == 4:
|
||||||
self.zoom_in()
|
self.zoom_in()
|
||||||
elif event.button == 5:
|
elif event.button == 5:
|
||||||
@ -200,8 +201,8 @@ class Editor:
|
|||||||
pygame.draw.rect(self.win, (80, 80, 80), [0, 0, mouse_txt.get_width() + 10, mouse_txt.get_height() + 10])
|
pygame.draw.rect(self.win, (80, 80, 80), [0, 0, mouse_txt.get_width() + 10, mouse_txt.get_height() + 10])
|
||||||
self.win.blit(mouse_txt, [5, 5])
|
self.win.blit(mouse_txt, [5, 5])
|
||||||
|
|
||||||
if self.is_creating_node:
|
if self.is_renaming_node:
|
||||||
self.render_node_creator()
|
self.render_node_renamer()
|
||||||
|
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
|
|
||||||
@ -246,7 +247,7 @@ class Editor:
|
|||||||
|
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
|
|
||||||
def render_node_creator(self) -> None:
|
def render_node_renamer(self) -> None:
|
||||||
width = self.width / 2
|
width = self.width / 2
|
||||||
height = self.height / 2
|
height = self.height / 2
|
||||||
x0 = (self.width - width) / 2
|
x0 = (self.width - width) / 2
|
||||||
@ -254,8 +255,8 @@ class Editor:
|
|||||||
|
|
||||||
line_height = height / 6
|
line_height = height / 6
|
||||||
|
|
||||||
nc_txt = self.loading_font.render("NODE CREATOR", True, (255, 255, 255))
|
nc_txt = self.loading_font.render("RENAME NODE", True, (255, 255, 255))
|
||||||
name_txt = self.loading_font.render("Name:", True, (255, 255, 255))
|
name_txt = self.loading_font.render("New name:", True, (255, 255, 255))
|
||||||
txt = self.loading_font.render(self.typing_text, True, (255, 255, 255))
|
txt = self.loading_font.render(self.typing_text, True, (255, 255, 255))
|
||||||
|
|
||||||
pygame.draw.rect(self.win, (0, 0, 0), [x0, y0, width, height])
|
pygame.draw.rect(self.win, (0, 0, 0), [x0, y0, width, height])
|
||||||
@ -397,17 +398,20 @@ class Editor:
|
|||||||
def clear_selection(self) -> None:
|
def clear_selection(self) -> None:
|
||||||
self.selected_nodes = []
|
self.selected_nodes = []
|
||||||
self.selected_edges = []
|
self.selected_edges = []
|
||||||
|
|
||||||
def create_node(self) -> None:
|
def rename_nodes(self) -> None:
|
||||||
self.graph.add_node(self.node_candidate_pos[0], self.node_candidate_pos[1], self.typing_text)
|
for node in self.selected_nodes:
|
||||||
|
self.graph.nodes[node].rename_node(self.typing_text)
|
||||||
self.typing_text = ""
|
self.typing_text = ""
|
||||||
self.node_candidate_pos = None
|
self.is_renaming_node = False
|
||||||
self.is_creating_node = False
|
|
||||||
|
def create_node(self, pos, typing_text = "") -> None:
|
||||||
|
self.graph.add_node(pos[0], pos[1], typing_text)
|
||||||
if len(self.selected_nodes) == 1:
|
if len(self.selected_nodes) == 1:
|
||||||
self.previously_created_nodes.append(self.selected_nodes[0])
|
self.previously_created_nodes.append(self.selected_nodes[0])
|
||||||
self.select_node(self.graph.number_of_nodes() - 1)
|
self.select_node(self.graph.number_of_nodes() - 1)
|
||||||
|
|
||||||
def create_edge(self, node_1: int, node_2: int):
|
def create_edge(self, node_1: int, node_2: int) -> None:
|
||||||
n1 = self.graph.nodes[node_1]
|
n1 = self.graph.nodes[node_1]
|
||||||
n2 = self.graph.nodes[node_2]
|
n2 = self.graph.nodes[node_2]
|
||||||
self.graph.add_edge(node_1, node_2, ((n1.x - n2.x) ** 2 + (n1.z - n2.z) ** 2) ** 0.5)
|
self.graph.add_edge(node_1, node_2, ((n1.x - n2.x) ** 2 + (n1.z - n2.z) ** 2) ** 0.5)
|
||||||
|
@ -9,8 +9,8 @@ class Graph:
|
|||||||
self.edges: list[Edge] = []
|
self.edges: list[Edge] = []
|
||||||
self.nodes: list[Node] = []
|
self.nodes: list[Node] = []
|
||||||
|
|
||||||
def add_node(self, x: int, z: int, name: str) -> None:
|
def add_node(self, x: int, z: int, name: str = "") -> None:
|
||||||
self.nodes.append(Node(x, z, name, len(self.nodes)))
|
self.nodes.append(Node(x, z, len(self.nodes), name))
|
||||||
|
|
||||||
def add_edge(self, start_index: int, end_index: int, length: float) -> None:
|
def add_edge(self, start_index: int, end_index: int, length: float) -> None:
|
||||||
self.edges.append(Edge(start_index, end_index, length, len(self.edges)))
|
self.edges.append(Edge(start_index, end_index, length, len(self.edges)))
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
class Node:
|
class Node:
|
||||||
def __init__(self, x: int, z: int, name: str, index: int):
|
def __init__(self, x: int, z: int, index: int, name: str = ""):
|
||||||
self.x: int = x
|
self.x: int = x
|
||||||
self.z: int = z
|
self.z: int = z
|
||||||
self.index: int = index
|
self.index: int = index
|
||||||
self.name: str = name
|
self.name: str = name
|
||||||
|
|
||||||
|
def rename_node(self, name: str):
|
||||||
|
self.name = name
|
Loading…
Reference in New Issue
Block a user