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 save_button = $Top/TopMenu/Save @onready var roll_label = $Top/TopMenu/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) save_button.pressed.connect(_on_button_save_pressed) print(Player.stats) ## 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(): var group_stats = get_tree().get_nodes_in_group("stats") for stat in group_stats: print(stat.text) ## Główna metoda do tworzenia postaci func create_character(): var stats_group = get_tree().get_nodes_in_group("stats") var template = load_template() var roll = str(Global.rolld(10)) #var button_pressed = rola_cb.get_pressed_button() var player: Dictionary = {} var chum = 1 roll_label.text = roll #match button_pressed.name: #"SoloCB": #chum = Chum.SOLO #"NetrunnerCB": #chum = Chum.NETRUNNER #"KorpoCB": #chum = Chum.KORPO match chum: 1: if not player.has("stats"): player["stats"] = template["netrunner"]["rolls"][roll] if not player.has("um"): player["um"] = template["netrunner"]["um"] _: print(":(") player["stats"]["PW"] = wylicz_pw(player) player["stats"]["CZL"] = wylicz_czl(player) if chum <= 1: for i in range(stats_group.size()): stats_group[i].text = str(int(player["stats"].values()[i])) var labels: Array[Label] var um_place = "{name}: {value}" for i in range(player["um"].size()): var label: Label = Label.new() label.name = player["um"].keys()[i] label.text = um_place.format( {"name": player["um"].keys()[i], "value": int(player["um"].values()[i])} ) labels.append(label) func wylicz_pw(_player) -> int: var bc = _player["stats"]["INT"] var sw = _player["stats"]["SW"] var pw = 10 + (5 * ceil(lerp(bc, sw, 0.5))) return pw func wylicz_czl(_player) -> int: var emp = _player["stats"]["EMP"] var czl = emp * 10 return czl func _on_button_roll_pressed() -> void: create_character() func _on_button_quit_pressed() -> void: get_tree().quit() func _on_button_save_pressed() -> void: save_character()