summaryrefslogtreecommitdiff
path: root/scripts/storage.gd
blob: bbac5e29c1c170850347ee54c09e2b0be98b5dbc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
extends Control

var 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)
  self.tree.set_column_title(0, "Item")
  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_hide_root(true)
  self.tree.set_select_mode(Tree.SELECT_ROW)

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