Intial commit

This commit is contained in:
2020-05-15 20:02:56 -04:00
commit ad966789c5
284 changed files with 6546 additions and 0 deletions

View File

@ -0,0 +1,224 @@
tool
extends Control
signal back_BTN_pressed
signal close_BTN_pressed
onready var _Graph = self.get_node("VBoxContainer/GraphEdit")
onready var _Human_Readable_LBL = self.get_node("VBoxContainer/VBoxContainer/Human_Readable_LBL")
var _Editor_TSCN = preload("res://addons/EXP-System-Dialog/Dialog Editor/Editor/Editor.tscn")
var _LineNode = preload("res://addons/EXP-System-Dialog/Dialog Editor/Nodes/Line/Line_Node.tscn")
var _NodeTemplate= preload("res://addons/EXP-System-Dialog/Resource_NodeTemplate/EXP_NodeTemplate.gd")
var _did : int = -1
var _Editor
var _Load_Template : EditorFileDialog
var _Save_Template_As : EditorFileDialog
var _Story_Editor
var _Target_Node
#Virtual Methods
func _ready():
self._setup_dialogs()
self._Editor = _Editor_TSCN.instance()
self.add_child(self._Editor)
#Callback Methods
func _on_Add_Node_BTN_pressed():
var new_nid = self._Story_Editor.create_node(self._did, "line")
var new_line_node = self._LineNode.instance()
new_line_node.offset += self._Graph.scroll_offset
new_line_node.set_nid(new_nid)
new_line_node.connect("erased", self, "_on_Node_erased")
new_line_node.connect("changed_offset", self, "_on_Node_changed_offset")
new_line_node.connect("text_changed", self, "_on_Node_text_changed")
new_line_node.connect("pressed_save", self, "_on_Node_pressed_save")
new_line_node.connect("pressed_load", self, "_on_Node_pressed_load")
new_line_node.connect("pressed_editor", self, "_on_Node_pressed_editor")
new_line_node.connect("changed_slots", self, "_on_Node_changed_slots")
new_line_node.connect("changed_size", self, "_on_Node_changed_size")
var slot_count = self._Story_Editor.get_node_property(self._did, new_nid, "slot_amount")
self._Story_Editor.set_node_property(self._did, new_nid, "rect_size", new_line_node.rect_size)
new_line_node.set_slot_amount(slot_count)
self._Graph.add_child(new_line_node)
func _on_Back_BTN_pressed():
self.emit_signal("back_BTN_pressed")
func _on_Close_BTN_pressed():
self.emit_signal("close_BTN_pressed")
func _on_GraphEdit_connection_request(from, from_slot, to, to_slot):
self._Graph.connect_node(from, from_slot, to, to_slot)
var from_node = self._Graph.get_node(from)
var to_node = self._Graph.get_node(to)
var from_node_nid = from_node.get_nid()
var to_node_nid = to_node.get_nid()
self._Story_Editor.set_link(self._did, from_node_nid, from_slot, to_node_nid)
func _on_GraphEdit_disconnection_request(from, from_slot, to, to_slot):
self._Graph.disconnect_node(from, from_slot, to, to_slot)
var from_node = self._Graph.get_node(from)
var from_node_nid = from_node.get_nid()
self._Story_Editor.erase_link(self._did, from_node_nid, from_slot)
func _on_Load_Template_file_selected(filename):
var file_data = load(filename)
if not file_data.TYPE == "EXP_Dialog_Node_Template_editor":
return
self._Target_Node.set_text(file_data.template)
func _on_Node_changed_offset(nid, new_offset):
self._Story_Editor.set_node_property(self._did, nid, "graph_offset", new_offset)
func _on_Node_changed_size(changed_node):
var changed_node_nid = changed_node.get_nid()
self._Story_Editor.set_node_property(self._did, changed_node_nid, "rect_size", changed_node.rect_size)
func _on_Node_changed_slots(changed_node):
var changed_node_nid = changed_node.get_nid()
self._unlink_nid_from_story(changed_node_nid)
self._disconnect_all_from(changed_node)
self._Story_Editor.set_node_property(self._did, changed_node_nid, "slot_amount",
changed_node.get_slot_amount())
func _on_Node_erased(deleted_node):
var deleted_nid = deleted_node.get_nid()
self._unlink_nid_from_story(deleted_nid)
self._Story_Editor.erase_node(self._did, deleted_nid)
self._disconnect_all_from(deleted_node)
deleted_node.queue_free()
func _on_Node_pressed_editor(node):
self._Editor.set_target_node(node)
self._Editor.visible = true
func _on_Node_pressed_load(node):
self._Target_Node = node
self._Load_Template.popup_centered_ratio(0.7)
func _on_Node_pressed_save(node):
self._Target_Node = node
self._Save_Template_As.popup_centered_ratio(0.7)
func _on_Node_text_changed(nid, new_text):
self._Story_Editor.set_node_property(self._did, nid, "text", new_text)
func _on_Save_Template_As_file_selected(filename):
var save_file = _NodeTemplate.new()
save_file.template = self._Target_Node.get_text()
ResourceSaver.save(filename, save_file)
func _on_Story_Editor_dialog_edit_pressed(story_editor, did : int):
self._Story_Editor = story_editor
self._did = did
self._Human_Readable_LBL.text = self._Story_Editor.get_dialog_property(self._did, "human_readable_description")
self._clear_nodes()
self._populate_graph()
self._link_node_connections()
#Private Methods
func _clear_nodes():
self._Graph.clear_connections()
var children = self._Graph.get_children()
for child in children:
if child is GraphNode:
child.free()
func _disconnect_all_from(node):
var node_name = node.name
var connection_list = self._Graph.get_connection_list()
for connection in connection_list:
if connection["from"] == node.name or connection["to"] == node.name:
self._Graph.disconnect_node(connection["from"], connection["from_port"],
connection["to"], connection["to_port"])
func _link_node_connections():
var node_IDs = self._Story_Editor.get_nids(self._did)
for nID in node_IDs:
var slots = self._Story_Editor.get_link_slots(self._did, nID)
for slot in slots:
var to_node_nid = self._Story_Editor.get_nid_link_from(self._did, nID, slot)
var to = "NID " + str(to_node_nid)
var from = "NID " + str(nID)
self._Graph.connect_node(from, slot, to, 0)
func _populate_graph():
var node_IDs = self._Story_Editor.get_nids(self._did)
for nID in node_IDs:
var new_node : GraphNode
match self._Story_Editor.get_node_property(self._did, nID, "type"):
"line":
new_node = _LineNode.instance()
var slot_count = self._Story_Editor.get_node_property(self._did, nID, "slot_amount")
new_node.set_slot_amount(slot_count)
self._Graph.add_child(new_node)
new_node.connect("erased", self, "_on_Node_erased")
var new_text = self._Story_Editor.get_node_property(self._did, nID, "text")
var new_rect_size = self._Story_Editor.get_node_property(self._did, nID, "rect_size")
new_node.rect_size = new_rect_size
new_node.set_text(new_text)
new_node.connect("text_changed", self, "_on_Node_text_changed")
new_node.connect("pressed_save", self, "_on_Node_pressed_save")
new_node.connect("pressed_load", self, "_on_Node_pressed_load")
new_node.connect("pressed_editor", self, "_on_Node_pressed_editor")
new_node.connect("changed_slots", self, "_on_Node_changed_slots")
new_node.connect("changed_size", self, "_on_Node_changed_size")
new_node.set_nid(nID)
new_node.offset = self._Story_Editor.get_node_property(self._did, nID, "graph_offset")
new_node.connect("changed_offset", self, "_on_Node_changed_offset")
func _setup_dialogs():
self._Load_Template = EditorFileDialog.new()
self._Load_Template.mode = EditorFileDialog.MODE_OPEN_FILE
self._Load_Template.add_filter("*.res ; Template files")
self._Load_Template.resizable = true
self._Load_Template.access = EditorFileDialog.ACCESS_RESOURCES
self._Load_Template.current_dir = "res://"
self._Load_Template.connect("file_selected", self, "_on_Load_Template_file_selected")
self.add_child(self._Load_Template)
self._Save_Template_As = EditorFileDialog.new()
self._Save_Template_As.mode = EditorFileDialog.MODE_SAVE_FILE
self._Save_Template_As.add_filter("*.res ; Template files")
self._Save_Template_As.resizable = true
self._Save_Template_As.access = EditorFileDialog.ACCESS_RESOURCES
self._Save_Template_As.current_dir = "res://"
self._Save_Template_As.connect("file_selected", self, "_on_Save_Template_As_file_selected")
self.add_child(self._Save_Template_As)
func _unlink_nid_from_story(removed_nid):
self._Story_Editor.erase_all_links(self._did, removed_nid)
var nIDs = self._Story_Editor.get_nids(self._did)
for nID in nIDs:
var node_slots = self._Story_Editor.get_link_slots(self._did, nID)
for slot in node_slots:
var to_node_nid = self._Story_Editor.get_nid_link_from(self._did, nID, slot)
if to_node_nid == removed_nid:
self._Story_Editor.erase_link(self._did, nID, slot)