2026-01-04 08:43:50 +01:00
|
|
|
extends Control
|
|
|
|
|
|
|
|
|
|
## Grupa przycisków typu checkbox która umożliwia
|
|
|
|
|
## wybór tylko jednej opcji
|
2026-01-05 13:36:23 +01:00
|
|
|
@export var rola_cb: ButtonGroup
|
|
|
|
|
@export var metody_cb: ButtonGroup
|
2026-01-04 08:43:50 +01:00
|
|
|
|
2026-01-11 19:31:26 +01:00
|
|
|
@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
|
2026-01-04 08:43:50 +01:00
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
enum Chum {
|
|
|
|
|
SOLO,
|
|
|
|
|
NETRUNNER,
|
|
|
|
|
KORPO,
|
2026-01-04 08:43:50 +01:00
|
|
|
}
|
|
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
## Słownik zawierający szablon dla klasy netrunner
|
|
|
|
|
var netrunner: Dictionary = {}
|
|
|
|
|
# Plik z szablonem
|
|
|
|
|
var NETRUNNER_TEMPLATE = "res://assets/templates/netrunner.json"
|
|
|
|
|
|
2026-01-04 08:43:50 +01:00
|
|
|
|
|
|
|
|
func _ready() -> void:
|
2026-01-11 19:31:26 +01:00
|
|
|
var stats_group = get_tree().get_nodes_in_group("stats")
|
2026-01-07 14:18:34 +01:00
|
|
|
|
2026-01-11 19:31:26 +01:00
|
|
|
for stat in stats_group:
|
2026-01-04 08:43:50 +01:00
|
|
|
stat.text = "0"
|
2026-01-11 19:31:26 +01:00
|
|
|
|
2026-01-04 08:43:50 +01:00
|
|
|
|
2026-01-11 19:31:26 +01:00
|
|
|
|
|
|
|
|
quit_button.pressed.connect(_on_button_quit_pressed)
|
|
|
|
|
roll_button.pressed.connect(_on_button_roll_pressed)
|
2026-01-04 08:43:50 +01:00
|
|
|
|
|
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
## Metoda która wczytuje plik json zawierający szablony
|
|
|
|
|
## dla odpowiednich klas
|
|
|
|
|
func load_template():
|
|
|
|
|
var file = FileAccess.open(NETRUNNER_TEMPLATE, FileAccess.READ)
|
2026-01-04 08:43:50 +01:00
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
var json = file.get_as_text()
|
|
|
|
|
var json_object = JSON.new()
|
2026-01-04 08:43:50 +01:00
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
json_object.parse(json)
|
|
|
|
|
netrunner = json_object.data
|
|
|
|
|
|
|
|
|
|
return netrunner
|
2026-01-04 08:43:50 +01:00
|
|
|
|
|
|
|
|
|
2026-01-11 19:31:26 +01:00
|
|
|
## Metoda która zapisuje postać
|
|
|
|
|
func save_character():
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Główna metoda do tworzenia postaci
|
2026-01-07 14:18:34 +01:00
|
|
|
func create_character(roll, chum: int) -> void:
|
2026-01-04 08:43:50 +01:00
|
|
|
var stats_group = get_tree().get_nodes_in_group("stats")
|
2026-01-07 14:18:34 +01:00
|
|
|
var template = load_template()
|
|
|
|
|
var um
|
|
|
|
|
var player
|
2026-01-04 08:43:50 +01:00
|
|
|
|
|
|
|
|
match chum:
|
|
|
|
|
1:
|
2026-01-07 14:18:34 +01:00
|
|
|
player = template["netrunner"]["rolls"][roll]
|
|
|
|
|
um = template["netrunner"]["umiejetnosci"]
|
2026-01-04 08:43:50 +01:00
|
|
|
_:
|
|
|
|
|
print(":(")
|
2026-01-05 13:36:23 +01:00
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
player["PW"] = wylicz_pw(player)
|
|
|
|
|
player["CZL"] = wylicz_czl(player)
|
2026-01-05 13:36:23 +01:00
|
|
|
|
2026-01-04 08:43:50 +01:00
|
|
|
if chum <= 1:
|
|
|
|
|
for i in range(stats_group.size()):
|
2026-01-07 14:18:34 +01:00
|
|
|
stats_group[i].text = str(int(player.values()[i]))
|
|
|
|
|
|
|
|
|
|
var labels: Array[Label]
|
2026-01-11 19:31:26 +01:00
|
|
|
var um_place = "{name}: {value}"
|
2026-01-07 14:18:34 +01:00
|
|
|
|
|
|
|
|
for i in range(um.size()):
|
|
|
|
|
var label: Label = Label.new()
|
|
|
|
|
label.name = um.keys()[i]
|
2026-01-11 19:31:26 +01:00
|
|
|
label.text = um_place.format(
|
|
|
|
|
{"name": um.keys()[i], "value": int(um.values()[i])})
|
2026-01-07 14:18:34 +01:00
|
|
|
labels.append(label)
|
|
|
|
|
|
2026-01-11 19:31:26 +01:00
|
|
|
if um_container.get_child_count() == 0:
|
|
|
|
|
for label in labels:
|
|
|
|
|
um_container.add_child(label)
|
2026-01-05 13:36:23 +01:00
|
|
|
|
|
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
func wylicz_pw(player) -> int:
|
|
|
|
|
var bc = player["INT"]
|
|
|
|
|
var sw = player["SW"]
|
2026-01-05 13:36:23 +01:00
|
|
|
|
|
|
|
|
var pw = 10 + (5 * ceil(lerp(bc, sw, 0.5)))
|
|
|
|
|
|
|
|
|
|
return pw
|
|
|
|
|
|
|
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
func wylicz_czl(player) -> int:
|
|
|
|
|
var emp = player["EMP"]
|
2026-01-05 13:36:23 +01:00
|
|
|
var czl = emp * 10
|
|
|
|
|
|
|
|
|
|
return czl
|
2026-01-07 14:18:34 +01:00
|
|
|
|
|
|
|
|
func _on_button_roll_pressed() -> void:
|
|
|
|
|
var roll = str(Global.rolld(10))
|
|
|
|
|
var button_pressed = rola_cb.get_pressed_button()
|
|
|
|
|
var chum
|
|
|
|
|
|
2026-01-11 19:31:26 +01:00
|
|
|
roll_label.text = roll
|
|
|
|
|
|
2026-01-07 14:18:34 +01:00
|
|
|
match button_pressed.name:
|
|
|
|
|
"SoloCB":
|
|
|
|
|
chum = Chum.SOLO
|
|
|
|
|
"NetrunnerCB":
|
|
|
|
|
chum = Chum.NETRUNNER
|
|
|
|
|
"KorpoCB":
|
|
|
|
|
chum = Chum.KORPO
|
|
|
|
|
|
|
|
|
|
create_character(roll, chum)
|
2026-01-11 19:31:26 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
func _on_button_quit_pressed() -> void:
|
|
|
|
|
get_tree().quit()
|