summaryrefslogtreecommitdiff
path: root/scripts/storage.gd
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/storage.gd')
-rw-r--r--scripts/storage.gd66
1 files changed, 26 insertions, 40 deletions
diff --git a/scripts/storage.gd b/scripts/storage.gd
index bbac5e2..dd7d10e 100644
--- a/scripts/storage.gd
+++ b/scripts/storage.gd
@@ -1,13 +1,10 @@
extends Control
-var Items = preload("res://scripts/items.gd")
-
+const Items = preload("res://scripts/items.gd")
var items
-var storage = {}
var tree
func _ready():
- self.items = Items.new()
self.tree = get_node("panel/items")
self.tree.create_item()
self.tree.set_columns(2)
@@ -15,47 +12,36 @@ func _ready():
self.tree.set_column_title(1, "Amount")
self.tree.set_column_titles_visible(true)
self.tree.set_column_expand(1, false)
- self.tree.set_column_min_width(1,50)
+ self.tree.set_column_min_width(1,60)
self.tree.set_hide_root(true)
self.tree.set_select_mode(Tree.SELECT_ROW)
+ self.items = Items.new()
-func _update_item(id, amount):
- var child = self.tree.get_root().get_children()
- while child != null:
- var meta = child.get_metadata(0)
- if meta == id:
- if amount == 0:
- self.tree.get_root().remove_child(child)
- else:
- child.set_text(1, str(amount))
- return
- child = child.get_next()
-
-
-func _add_item(id, amount):
- var root = self.tree.get_root()
- var item = self.tree.create_item(root)
- item.set_text(0, self.items.get(id)["name"])
- item.set_text(1, str(amount))
- item.set_metadata(0, id)
-
-func update_storage(update):
- for k in update.keys():
- print("key: ", k)
- if self.storage.has(k):
- if self.storage[k] != update[k]:
- _update_item(k, update[k])
- if update[k] == 0:
- self.storage.erase(k)
- else:
- self.storage[k] = update[k]
- else:
- self.storage[k] = update[k]
- _add_item(k, update[k])
-
-
func get_selected():
var itm = self.tree.get_selected()
if itm != null and itm.is_selected(0):
return itm.get_metadata(0)
return null
+
+func update_storage(id, amount):
+ var root = self.tree.get_root()
+ if root == null:
+ return
+ var node = root.get_children()
+ while node != null:
+ var meta = node.get_metadata(0)
+ if meta["id"] == id:
+ break
+ node = node.get_next()
+
+ if amount == 0:
+ if node != null:
+ root.remove_child(node)
+ self.tree.update()
+ else:
+ if node == null:
+ var item = items.get(id)
+ node = item.insert_in_tree(tree, root)
+ node.set_text(1, str(amount))
+
+ \ No newline at end of file