diff --git a/assets/templates/netrunner.json b/assets/templates/netrunner.json new file mode 100644 index 0000000..6601c5d --- /dev/null +++ b/assets/templates/netrunner.json @@ -0,0 +1,169 @@ +{ + "netrunner": { + "rolls": { + "1": { + "INT": 5.0, + "REF": 8.0, + "ZW": 7.0, + "TECH": 7.0, + "CHA": 7.0, + "SW": 4.0, + "SZ": 8.0, + "RUCH": 7.0, + "BC": 7.0, + "EMP": 4.0, + "PW": 0.0, + "CZL": 0.0 + }, + "2": { + "INT": 5.0, + "REF": 6.0, + "ZW": 7.0, + "TECH": 5.0, + "CHA": 8.0, + "SW": 3.0, + "SZ": 8.0, + "RUCH": 7.0, + "BC": 5.0, + "EMP": 5.0, + "PW": 0.0, + "CZL": 0.0 + }, + "3": { + "INT": 5.0, + "REF": 6.0, + "ZW": 8.0, + "TECH": 6.0, + "CHA": 6.0, + "SW": 4.0, + "SZ": 7.0, + "RUCH": 6.0, + "BC": 7.0, + "EMP": 4.0, + "PW": 0.0, + "CZL": 0.0 + }, + "4": { + "INT": 5.0, + "REF": 7.0, + "ZW": 7.0, + "TECH": 7.0, + "CHA": 7.0, + "SW": 5.0, + "SZ": 8.0, + "RUCH": 6.0, + "BC": 5.0, + "EMP": 5.0, + "PW": 0.0, + "CZL": 0.0 + }, + "5": { + "INT": 5.0, + "REF": 8.0, + "ZW": 8.0, + "TECH": 5.0, + "CHA": 7.0, + "SW": 3.0, + "SZ": 7.0, + "RUCH": 5.0, + "BC": 5.0, + "EMP": 6.0, + "PW": 0.0, + "CZL": 0.0 + }, + "6": { + "INT": 6.0, + "REF": 6.0, + "ZW": 6.0, + "TECH": 7.0, + "CHA": 8.0, + "SW": 4.0, + "SZ": 7.0, + "RUCH": 7.0, + "BC": 6.0, + "EMP": 6.0, + "PW": 0.0, + "CZL": 0.0 + }, + "7": { + "INT": 6.0, + "REF": 6.0, + "ZW": 6.0, + "TECH": 7.0, + "CHA": 6.0, + "SW": 5.0, + "SZ": 7.0, + "RUCH": 7.0, + "BC": 7.0, + "EMP": 6.0, + "PW": 0.0, + "CZL": 0.0 + }, + "8": { + "INT": 5.0, + "REF": 6.0, + "ZW": 8.0, + "TECH": 6.0, + "CHA": 8.0, + "SW": 4.0, + "SZ": 8.0, + "RUCH": 5.0, + "BC": 7.0, + "EMP": 4.0, + "PW": 0.0, + "CZL": 0.0 + }, + "9": { + "INT": 7.0, + "REF": 6.0, + "ZW": 7.0, + "TECH": 7.0, + "CHA": 6.0, + "SW": 3.0, + "SZ": 6.0, + "RUCH": 5.0, + "BC": 6.0, + "EMP": 5.0, + "PW": 0.0, + "CZL": 0.0 + }, + "10": { + "INT": 7.0, + "REF": 8.0, + "ZW": 6.0, + "TECH": 6.0, + "CHA": 6.0, + "SW": 4.0, + "SZ": 7.0, + "RUCH": 7.0, + "BC": 5.0, + "EMP": 6.0, + "PW": 0.0, + "CZL": 0.0 + } + }, + "umiejetnosci": { + "Atletyka": 2.0, + "Bijatyka": 2.0, + "Język (slang uliczny)": 2.0, + "Koncentracja": 2.0, + "Konwersacja": 2.0, + "Odczytywanie emocji": 2.0, + "Percepcja": 2.0, + "Perswazja": 2.0, + "Pierwsza pomoc": 2.0, + "Skradanie się": 6.0, + "Unik": 6.0, + "Wiedza lokalna": 2.0, + "Wykształcenie": 6.0, + "Broń krótka": 6.0, + "Cyberinżynieria": 6.0, + "Elektronika i zabezpieczenia (x2)": 6.0, + "Kryptografia": 6.0, + "Podstawowe naprawy": 6.0, + "Przeszukiwanie naprawy": 6.0, + "Przeszukiwanie baz danych": 6.0, + "Ukrycie/Znalezienie przedmotu": 6.0 + } + } +} diff --git a/scenes/create_player/new_character/new_character.gd b/scenes/create_player/new_character/new_character.gd index 5423408..c794618 100644 --- a/scenes/create_player/new_character/new_character.gd +++ b/scenes/create_player/new_character/new_character.gd @@ -7,163 +7,24 @@ extends Control @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 szablony dla klasy netrunner -var netrunner: Dictionary = { - 1: { - "INT": 5, - "REF": 8, - "ZW": 7, - "TECH": 7, - "CHA": 7, - "SW": 4, - "SZ": 8, - "RUCH": 7, - "BC": 7, - "EMP": 4, - "PW": 0, - "CZL": 0, - }, - 2: { - "INT": 5, - "REF": 6, - "ZW": 7, - "TECH": 5, - "CHA": 8, - "SW": 3, - "SZ": 8, - "RUCH": 7, - "BC": 5, - "EMP": 5, - "PW": 0, - "CZL": 0, - }, - 3: { - "INT": 5, - "REF": 6, - "ZW": 8, - "TECH": 6, - "CHA": 6, - "SW": 4, - "SZ": 7, - "RUCH": 6, - "BC": 7, - "EMP": 4, - "PW": 0, - "CZL": 0, - }, - 4: { - "INT": 5, - "REF": 7, - "ZW": 7, - "TECH": 7, - "CHA": 7, - "SW": 5, - "SZ": 8, - "RUCH": 6, - "BC": 5, - "EMP": 5, - "PW": 0, - "CZL": 0, - }, - 5: { - "INT": 5, - "REF": 8, - "ZW": 8, - "TECH": 5, - "CHA": 7, - "SW": 3, - "SZ": 7, - "RUCH": 5, - "BC": 5, - "EMP": 6, - "PW": 0, - "CZL": 0, - }, - 6: { - "INT": 6, - "REF": 6, - "ZW": 6, - "TECH": 7, - "CHA": 8, - "SW": 4, - "SZ": 7, - "RUCH": 7, - "BC": 6, - "EMP": 6, - "PW": 0, - "CZL": 0, - }, - 7: { - "INT": 6, - "REF": 6, - "ZW": 6, - "TECH": 7, - "CHA": 6, - "SW": 5, - "SZ": 7, - "RUCH": 7, - "BC": 7, - "EMP": 6, - "PW": 0, - "CZL": 0, - }, - 8: { - "INT": 5, - "REF": 6, - "ZW": 8, - "TECH": 6, - "CHA": 8, - "SW": 4, - "SZ": 8, - "RUCH": 5, - "BC": 7, - "EMP": 4, - "PW": 0, - "CZL": 0, - }, - 9: { - "INT": 7, - "REF": 6, - "ZW": 7, - "TECH": 7, - "CHA": 6, - "SW": 3, - "SZ": 6, - "RUCH": 5, - "BC": 6, - "EMP": 5, - "PW": 0, - "CZL": 0, - }, - 10: { - "INT": 7, - "REF": 8, - "ZW": 6, - "TECH": 6, - "CHA": 6, - "SW": 4, - "SZ": 7, - "RUCH": 7, - "BC": 5, - "EMP": 6, - "PW": 0, - "CZL": 0, - }, +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" + -## !! FUNKCJA TESTOWA !! -func test() -> void: - pass - func _ready() -> void: var stats = get_tree().get_nodes_in_group("stats") - + button_roll.disabled = true - for stat in stats: stat.text = "0" @@ -175,8 +36,73 @@ func _draw() -> void: 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 = Global.rolld(10) + var roll = str(Global.rolld(10)) var button_pressed = rola_cb.get_pressed_button() var chum @@ -189,43 +115,5 @@ func _on_button_roll_pressed() -> void: chum = Chum.KORPO - print("Rzut wynosi: %d a klasa to %s" % [roll, chum]) - character_template(roll, chum) - - -func character_template(roll: int, chum: int) -> void: - var stats_group = get_tree().get_nodes_in_group("stats") - var _netrunner = netrunner.duplicate() - var template - - match chum: - 1: - template = _netrunner.get(roll) - _: - print(":(") - - template["PW"] = wylicz_pw(template) - template["CZL"] = wylicz_czl(template) - - if chum <= 1: - for i in range(stats_group.size()): - stats_group[i].text = str(template.values()[i]) - - if chum == Chum.NETRUNNER: - print("[%s] PW: %d, CZŁ: %d" % ["Netrunner", template["PW"], template["CZL"]]) - - -func wylicz_pw(template: Dictionary) -> int: - var bc = template["INT"] - var sw = template["SW"] - - var pw = 10 + (5 * ceil(lerp(bc, sw, 0.5))) - - return pw - - -func wylicz_czl(template: Dictionary) -> int: - var emp = template["EMP"] - var czl = emp * 10 - - return czl + print("Rzut wynosi: %s a klasa to %s" % [roll, chum]) + create_character(roll, chum) diff --git a/scenes/create_player/new_character/new_character.tscn b/scenes/create_player/new_character/new_character.tscn index 01015d9..368a24e 100644 --- a/scenes/create_player/new_character/new_character.tscn +++ b/scenes/create_player/new_character/new_character.tscn @@ -8,13 +8,7 @@ [node name="NewCharacter" type="Control"] layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 +anchors_preset = 0 theme = ExtResource("1_mks5g") script = ExtResource("2_mks5g") rola_cb = ExtResource("3_xx3y5") @@ -113,3 +107,21 @@ button_group = ExtResource("5_3ifvl") [node name="KompletnyPakiet" type="Label" parent="Metody"] layout_mode = 2 text = "Kompletny Pakiet" + +[node name="Umiejetnosci" type="ScrollContainer" parent="."] +layout_mode = 0 +offset_left = 8.0 +offset_top = 200.0 +offset_right = 584.0 +offset_bottom = 484.0 + +[node name="GridContainer" type="VBoxContainer" parent="Umiejetnosci"] +layout_mode = 2 + +[node name="Umiejetnosci2" type="Label" parent="."] +layout_mode = 0 +offset_left = 16.0 +offset_top = 160.0 +offset_right = 56.0 +offset_bottom = 188.0 +text = "Umiejętności" diff --git a/scenes/global.gd b/scenes/global.gd index 0f5340d..3f13026 100644 --- a/scenes/global.gd +++ b/scenes/global.gd @@ -1,6 +1,4 @@ extends Node -var roll: int = 0 - func rolld(d: int) -> int: return randi_range(1, d)