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 stats = $Stats @onready var roll_button = $Top/TopMenu/Roll @onready var quit_button = $Top/TopMenu/Quit @onready var um_container = $Umiejetnosci/GridContainer @onready var roll_label = $Stats/Roll2 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_group = get_tree().get_nodes_in_group("stats") for stat in stats_group: stat.text = "0" quit_button.pressed.connect(_on_button_quit_pressed) roll_button.pressed.connect(_on_button_roll_pressed) ## 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 ## Metoda która zapisuje postać func save_character(): pass ## Główna metoda do tworzenia postaci 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 = "{name}: {value}" for i in range(um.size()): var label: Label = Label.new() label.name = um.keys()[i] label.text = um_place.format( {"name": um.keys()[i], "value": int(um.values()[i])}) labels.append(label) if um_container.get_child_count() == 0: for label in labels: um_container.add_child(label) 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 roll_label.text = roll match button_pressed.name: "SoloCB": chum = Chum.SOLO "NetrunnerCB": chum = Chum.NETRUNNER "KorpoCB": chum = Chum.KORPO create_character(roll, chum) func _on_button_quit_pressed() -> void: get_tree().quit()