online multiplayer chess game (note server currently down)
Diffstat (limited to 'Debug.gd')
-rw-r--r--Debug.gd68
1 files changed, 68 insertions, 0 deletions
diff --git a/Debug.gd b/Debug.gd
new file mode 100644
index 0000000..e4f7f1a
--- /dev/null
+++ b/Debug.gd
@@ -0,0 +1,68 @@
+extends Node2D
+
+var refs := [] # = [[ node : object, variable : string, (code : string) ]]
+var style: StyleBox = load("res://ui/theme/transpanel.tres")
+var font: Font = load("res://ui/ubuntu-bold-regular.tres")
+var debug := false # in debug mode or not
+var expr := Expression.new()
+
+const offset := Vector2(10, 10)
+const vertical := 15
+
+
+func create_timer():
+ get_tree().create_timer(.1).connect("timeout", self, "update")
+
+
+func _ready() -> void:
+ z_index = 5 # put on top
+ create_timer()
+ font = font.duplicate()
+ font.size = vertical * 0.8
+ visible = debug
+
+
+func monitor(node: Object, what: String, code := "") -> void: # code doesnt really work well with ternarys
+ refs.append([node, what, code] if code else [node, what])
+ calculate_size()
+
+
+func calculate_size() -> Rect2:
+ var xminsize := 0.0
+ for set in refs: # find the chonkiest text
+ var tmp := font.get_string_size(get_string(set)).x
+ xminsize = tmp if tmp > xminsize else xminsize
+ return Rect2(Vector2.ZERO, Vector2(xminsize + offset.x, (refs.size()) * vertical) + offset)
+
+
+func update() -> void:
+ create_timer()
+ .update()
+
+
+func _draw() -> void:
+ if !debug:
+ return
+ draw_style_box(style, calculate_size())
+ var i = len(refs)
+ while i > 0:
+ i -= 1
+ var pos := Vector2(offset.x, (i + 1) * vertical)
+ draw_string(font, pos, get_string(refs[i]))
+
+
+func get_string(set: Array) -> String:
+ var node: Object = set[0]
+ if !is_instance_valid(node):
+ refs.erase(set)
+ return "invalid!"
+ var what: String = set[1]
+ var gotten = node.get(what)
+ var val: String = str(gotten) if typeof(gotten) != TYPE_DICTIONARY else to_json(gotten)
+ if len(set) == 3:
+ var err := expr.parse(set[2])
+ if err != OK:
+ Log.err(expr.get_error_text())
+ return ""
+ val = str(expr.execute([], node, true))
+ return "%s: %s" % [what, val]