extends Control ## Grupa przycisków typu checkbox która umożliwia ## wybór tylko jednej opcji @export var rola_cb: ButtonGroup @export var metody_cb: ButtonGroup @onready var netrunner_cb = get_node("Rola/NetrunnerCB") @onready var button_roll = $"../../Top/TopMenu/ButtonRoll" @onready var um_container = get_node("Umiejetnosci/GridContainer") enum Chum { SOLO, NETRUNNER, KORPO, } ## Słownik zawierający szablon dla klasy netrunner var netrunner: Dictionary = {} # Plik z szablonem var NETRUNNER_TEMPLATE = "res://assets/templates/netrunner.json" func _ready() -> void: var stats = get_tree().get_nodes_in_group("stats") button_roll.disabled = true for stat in stats: stat.text = "0" func _draw() -> void: var stats_scene = get_node("Stats") if stats_scene.is_visible_in_tree(): button_roll.disabled = !button_roll.disabled ## Metoda która wczytuje plik json zawierający szablony ## dla odpowiednich klas func load_template(): var file = FileAccess.open(NETRUNNER_TEMPLATE, FileAccess.READ) var json = file.get_as_text() var json_object = JSON.new() json_object.parse(json) netrunner = json_object.data return netrunner func create_character(roll, chum: int) -> void: var stats_group = get_tree().get_nodes_in_group("stats") var template = load_template() var um var player match chum: 1: player = template["netrunner"]["rolls"][roll] um = template["netrunner"]["umiejetnosci"] _: print(":(") player["PW"] = wylicz_pw(player) player["CZL"] = wylicz_czl(player) if chum <= 1: for i in range(stats_group.size()): stats_group[i].text = str(int(player.values()[i])) var labels: Array[Label] var um_place = "%s: %s" for i in range(um.size()): var label: Label = Label.new() label.name = um.keys()[i] label.text = um_place % [(um.keys()[i]), str(int(um.values()[i]))] labels.append(label) for label in labels: um_container.add_child(label) if chum == Chum.NETRUNNER: print("[%s] PW: %d, CZŁ: %d" % ["Netrunner", player["PW"], player["CZL"]]) func wylicz_pw(player) -> int: var bc = player["INT"] var sw = player["SW"] var pw = 10 + (5 * ceil(lerp(bc, sw, 0.5))) return pw func wylicz_czl(player) -> int: var emp = player["EMP"] var czl = emp * 10 return czl func _on_button_roll_pressed() -> void: var roll = str(Global.rolld(10)) var button_pressed = rola_cb.get_pressed_button() var chum match button_pressed.name: "SoloCB": chum = Chum.SOLO "NetrunnerCB": chum = Chum.NETRUNNER "KorpoCB": chum = Chum.KORPO print("Rzut wynosi: %s a klasa to %s" % [roll, chum]) create_character(roll, chum)