online multiplayer chess game (note server currently down)
Diffstat (limited to 'Debug.gd')
| -rw-r--r-- | Debug.gd | 68 |
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] |