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
62
63
64
65
66
|
extends Object
const icon_triangle = preload("res://assets/triangle.png")
const icon_waves = preload("res://assets/waves.png")
const icon_triangles = preload("res://assets/triangles.png")
var data = null
func _init():
var file = File.new()
file.open("res://assets/shop.json", File.READ)
var content = file.get_as_text()
file.close()
self.data = parse_json(content)
class Item:
extends Object
var data
var category
var icon
func _init(category, data, icon):
self.category = category
self.data = data
self.icon = icon
func id():
return data["id"]
func insert_in_tree(tree, parent=null):
var item = tree.create_item(parent)
item.set_text(0, data["name"])
item.set_tooltip(0, data["desc"])
item.set_metadata(0, data)
item.set_icon_max_width(0, 20)
if self.icon != null:
item.set_icon(0, self.icon)
return item
func insert_in_shop(tree, parent=null):
var item = self.insert_in_tree(tree, parent)
item.set_text(1, str(data["cost"]))
func _get_icon(category):
if category == "solid":
return self.icon_triangle
elif category == "gas":
return self.icon_waves
elif category == "precursor":
pass
elif category == "life":
return self.icon_triangles
func get(id):
for cat in self.data.keys():
for item in self.data[cat]:
if item["id"] == id:
return Item.new(cat, item, self._get_icon(cat))
return null
func category(id):
for cat in self.data.keys():
for item in self.data[cat]:
if item["id"] == id:
return cat
|