41 lines
1.2 KiB
GDScript
41 lines
1.2 KiB
GDScript
extends Control
|
|
|
|
func update_desc():
|
|
var sel: TreeItem = $v/Tree.get_selected()
|
|
if sel:
|
|
var desc = sel.get_metadata(0).description
|
|
$v/desc.text = desc
|
|
else:
|
|
$v/desc.text = ""
|
|
func display_journal():
|
|
if visible:
|
|
$v/Tree.clear()
|
|
var queue = []
|
|
for k in world.quests:
|
|
queue.push_back({"obj": k, "parent": null})
|
|
while queue.size() > 0:
|
|
var item = queue[0]
|
|
queue.pop_front()
|
|
var ti: TreeItem
|
|
if item.parent == null:
|
|
ti = $v/Tree.create_item()
|
|
else:
|
|
ti = $v/Tree.create_item(item.parent)
|
|
ti.set_text(0, "Quest: " + item.obj.get_title())
|
|
ti.set_metadata(0, {"description": item.obj.get_description()})
|
|
if item.obj.is_complete():
|
|
ti.set_text(1, "COMPLETE")
|
|
for o in item.obj._objectives:
|
|
var te: TreeItem = $v/Tree.create_item(ti)
|
|
te.set_text(0, "Task: " + o.get_title())
|
|
if o.is_complete():
|
|
te.set_text(1, "COMPLETE")
|
|
te.set_metadata(0, {"description": o.get_title()})
|
|
for o in item.obj._children:
|
|
queue.push_back({"obj": o, "parent": ti})
|
|
update_desc()
|
|
func _ready():
|
|
connect("visibility_changed", self, "display_journal")
|
|
$v/okbutton.connect("pressed", self, "hide")
|
|
$v/Tree.connect("item_selected", self, "update_desc")
|