Skip to content

Commit

Permalink
Merge pull request #34 from fian46/undo_redo
Browse files Browse the repository at this point in the history
Undo redo
  • Loading branch information
fian46 authored Oct 1, 2020
2 parents a0dd28b + e28196f commit d8b1176
Show file tree
Hide file tree
Showing 22 changed files with 620 additions and 268 deletions.
42 changes: 37 additions & 5 deletions addons/btree/Editor/create.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ tool
extends MenuButton

var pop = null
var undo_redo:UndoRedo = null

const Runtime = preload("res://addons/btree/Runtime/runtime.gd")
const error_no_task = "No function start with \"task_*(task)\" please create one !"
Expand All @@ -13,13 +14,46 @@ var wait_scene = preload("res://addons/btree/Editor/wait_node/wait_node.tscn")
var general_fcall_scene = preload("res://addons/btree/Editor/general_fcall/general_fcall.tscn")
var general_decorator_scene = preload("res://addons/btree/Editor/general_decorator/general_decorator.tscn")
var inverter = preload("res://addons/btree/Editor/inverter/inverter.tscn")
var general_decorator_script = preload("res://addons/btree/Editor/general_decorator/general_decorator.gd")
var pop_pos = Vector2.ZERO
export(NodePath) var graph_path:NodePath
export(NodePath) var hint_path:NodePath
var drop_offset = Vector2.ZERO

func id_pressed(id):
var graph = get_node(graph_path)
var zoom = graph.zoom
var test_node = create_node(id)
graph.add_child(test_node)
var generated_name = test_node.name
graph.remove_child(test_node)
test_node.queue_free()
undo_redo.create_action("add_node")
undo_redo.add_do_method(self, "add_node", id, generated_name, drop_offset)
undo_redo.add_undo_method(self, "del_node", generated_name)
undo_redo.commit_action()
return

func add_node(id, name, offset):
var graph = get_node(graph_path)
var node = create_node(id)
node.name = name
node.offset = offset
(node as GraphNode).connect("dragged", graph, "node_dragged", [node])
(node as GraphNode).connect("resize_request", graph, "resize_request", [node])
if node is general_decorator_script:
node.undo_redo = undo_redo
graph.add_child(node)
return

func del_node(gname):
var graph = get_node(graph_path)
var node = graph.get_node_or_null(gname)
node.queue_free()
return

func create_node(id):
var graph = get_node(graph_path)
var inst = null
match id:
Runtime.TNodeTypes.TASK:
Expand Down Expand Up @@ -68,9 +102,7 @@ func id_pressed(id):
inst.as_random_sequence()
Runtime.TNodeTypes.INVERTER:
inst = inverter.instance()
inst.offset = (graph.scroll_offset / zoom) + (graph.get_local_mouse_position() / zoom)
graph.add_child(inst)
return
return inst

func _ready():
pop = get_popup()
Expand All @@ -87,7 +119,7 @@ func _ready():
pop.add_item("While Node", Runtime.TNodeTypes.WHILE)
pop.add_item("Wait Node", Runtime.TNodeTypes.WAIT)
pop.add_item("Race Node", Runtime.TNodeTypes.RACE)
pop.add_item("Random Selector", Runtime.TNodeTypes.SELECTOR)
pop.add_item("Random Sequence", Runtime.TNodeTypes.SEQUENCE)
pop.add_item("Random Selector", Runtime.TNodeTypes.RANDOM_SELECTOR)
pop.add_item("Random Sequence", Runtime.TNodeTypes.RANDOM_SEQUENCE)
pop.add_item("Inverter", Runtime.TNodeTypes.INVERTER)
return
2 changes: 1 addition & 1 deletion addons/btree/Editor/editor.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ margin_left = 119.0
margin_right = 172.0
margin_bottom = 20.0
text = "Create"
items = [ "Task", null, 0, false, false, 1, 0, null, "", false, "Selector", null, 0, false, false, 3, 0, null, "", false, "Sequence", null, 0, false, false, 2, 0, null, "", false, "Priority Selector", null, 0, false, false, 4, 0, null, "", false, "Priority Condition", null, 0, false, false, 5, 0, null, "", false, "Paralel", null, 0, false, false, 6, 0, null, "", false, "Mute", null, 0, false, false, 7, 0, null, "", false, "Repeat", null, 0, false, false, 8, 0, null, "", false, "While Node", null, 0, false, false, 9, 0, null, "", false, "Wait Node", null, 0, false, false, 10, 0, null, "", false, "Race Node", null, 0, false, false, 11, 0, null, "", false, "Random Selector", null, 0, false, false, 3, 0, null, "", false, "Random Sequence", null, 0, false, false, 2, 0, null, "", false, "Inverter", null, 0, false, false, 14, 0, null, "", false ]
items = [ "Task", null, 0, false, false, 1, 0, null, "", false, "Selector", null, 0, false, false, 3, 0, null, "", false, "Sequence", null, 0, false, false, 2, 0, null, "", false, "Priority Selector", null, 0, false, false, 4, 0, null, "", false, "Priority Condition", null, 0, false, false, 5, 0, null, "", false, "Paralel", null, 0, false, false, 6, 0, null, "", false, "Mute", null, 0, false, false, 7, 0, null, "", false, "Repeat", null, 0, false, false, 8, 0, null, "", false, "While Node", null, 0, false, false, 9, 0, null, "", false, "Wait Node", null, 0, false, false, 10, 0, null, "", false, "Race Node", null, 0, false, false, 11, 0, null, "", false, "Random Selector", null, 0, false, false, 12, 0, null, "", false, "Random Sequence", null, 0, false, false, 13, 0, null, "", false, "Inverter", null, 0, false, false, 14, 0, null, "", false ]
script = ExtResource( 1 )
graph_path = NodePath("../../graph")
hint_path = NodePath("../../footer/hint")
Expand Down
15 changes: 3 additions & 12 deletions addons/btree/Editor/general_decorator/general_decorator.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@ tool
extends GraphNode

const Runtime = preload("res://addons/btree/Runtime/runtime.gd")

var type = -1
var undo_redo:UndoRedo

func _ready():
$slot0/Add.connect("pressed", self, "add_pressed")
$slot0/Del.connect("pressed", self, "del_pressed")
connect("close_request", self, "close_request")
connect("resize_request", self, "resize_request")
return

func _enter_tree():
Expand Down Expand Up @@ -53,15 +52,11 @@ func label():
return l

func add_pressed():
add_child(label())
set_slot(get_child_count() - 1, false, 0, Color.blue, true, 0, Color.blue, null, null)
get_parent().gd_add_slot(name)
return

func del_pressed():
if get_child_count() > 1:
get_parent().slot_removed(name, get_connection_output_count() - 1)
clear_slot(get_child_count() - 1)
remove_child(get_child(get_child_count()-1))
get_parent().gd_del_slot(name)
return

func get_data():
Expand Down Expand Up @@ -89,7 +84,3 @@ func set_data(data):
func close_request():
get_parent().child_delete(self)
return

func resize_request(new_minsize):
rect_size = new_minsize
return
3 changes: 3 additions & 0 deletions addons/btree/Editor/general_decorator/general_decorator.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ slot/0/right_enabled = false
slot/0/right_type = 0
slot/0/right_color = Color( 1, 1, 1, 1 )
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}

[node name="slot0" type="HBoxContainer" parent="."]
margin_left = 16.0
Expand Down
18 changes: 3 additions & 15 deletions addons/btree/Editor/general_fcall/general_fcall.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@ tool
extends GraphNode

const Runtime = preload("res://addons/btree/Runtime/runtime.gd")

var type = Runtime.TNodeTypes.TASK
var load_function = ""
var params = []
var param_scene = preload("res://addons/btree/Editor/task/param.tscn")


func _ready():
connect("close_request", self, "self_close")
connect("resize_request", self, "self_resize")
$Input/Add.connect("pressed", self, "add_pressed")
return

Expand All @@ -34,10 +31,10 @@ func _enter_tree():
opt.selected = 0
for i in params:
var input = param_scene.instance()
input.set_id($Params.get_child_count())
input.connect("remove_me", self, "remove_param")
input.call_deferred("set_value", i)
$Params.add_child(input)
input.update_label()
return

func as_task():
Expand All @@ -57,10 +54,6 @@ func as_while():
set_slot(0, true, 0, Color.blue, true, 0, Color.blue)
return

func self_resize(new_minsize):
rect_size = new_minsize
return

func update():
if not get_parent():
return
Expand Down Expand Up @@ -129,14 +122,9 @@ func get_data():
return ret_data

func add_pressed():
var input = param_scene.instance()
input.set_id($Params.get_child_count())
input.connect("remove_me", self, "remove_param")
$Params.add_child(input)
get_parent().add_param(name)
return

func remove_param(param):
$Params.remove_child(param)
for i in range($Params.get_child_count()):
$Params.get_child(i).set_id(i)
get_parent().del_param(name, param.get_index())
return
1 change: 1 addition & 0 deletions addons/btree/Editor/general_fcall/general_fcall.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ text = "Function Name : "
margin_left = 113.0
margin_right = 142.0
margin_bottom = 20.0
size_flags_horizontal = 3

[node name="Input" type="HBoxContainer" parent="."]
margin_left = 16.0
Expand Down
Loading

0 comments on commit d8b1176

Please sign in to comment.