Yahtzee/GameScene.gd
Yadciel 59f13e7318 Update game UI from OptionButton to LineEdit
Replaced multiple OptionButton instances with LineEdit for input fields, including three_of_a_kind, four_of_a_kind, and chance. Updated related scoring logic and adjusted UI themes and assets to reflect the new input method.
2024-09-21 12:30:37 +02:00

270 lines
9.4 KiB
GDScript

extends Control
var currentPlayer : int
var playerName : Label
var one : OptionButton
var two : OptionButton
var three : OptionButton
var four : OptionButton
var five : OptionButton
var six : OptionButton
var three_of_a_kind : LineEdit
var four_of_a_kind : LineEdit
var full_house : OptionButton
var small_straight : OptionButton
var large_straight : OptionButton
var yahtzee : Button
var chance : LineEdit
var bonus : Label
var score : Label
# Called when the node enters the scene tree for the first time.
func _ready():
currentPlayer = 0
playerName = get_node("ScrollContainer/VBoxContainer/Panel/HBoxContainer/Label")
var players = Player_Manger.get_players()
if players.size() > 0:
playerName.text = players[currentPlayer].name
one = get_node("ScrollContainer/VBoxContainer/One/HBoxContainer/OptionButton")
two = get_node("ScrollContainer/VBoxContainer/Two/HBoxContainer/OptionButton")
three = get_node("ScrollContainer/VBoxContainer/Three/HBoxContainer/OptionButton")
four = get_node("ScrollContainer/VBoxContainer/Four/HBoxContainer/OptionButton")
five = get_node("ScrollContainer/VBoxContainer/Five/HBoxContainer/OptionButton")
six = get_node("ScrollContainer/VBoxContainer/Six/HBoxContainer/OptionButton")
three_of_a_kind = get_node("ScrollContainer/VBoxContainer/Three_of_a_kind/HBoxContainer/LineEdit")
four_of_a_kind = get_node("ScrollContainer/VBoxContainer/Four_of_a_Kind/HBoxContainer/LineEdit")
full_house = get_node("ScrollContainer/VBoxContainer/Full_House/HBoxContainer/OptionButton")
full_house.add_item("")
full_house.add_item("-")
full_house.add_item("25")
small_straight = get_node("ScrollContainer/VBoxContainer/Small_Straight/HBoxContainer/OptionButton")
add_items_to_small_straight(small_straight)
large_straight = get_node("ScrollContainer/VBoxContainer/Large_Straight/HBoxContainer/OptionButton")
add_items_to_large_straight(large_straight)
yahtzee = get_node("ScrollContainer/VBoxContainer/yahtzee/HBoxContainer/ButtonYahtzee")
bonus = get_node("ScrollContainer/VBoxContainer/Bonus/HBoxContainer/LabelScore")
chance = get_node("ScrollContainer/VBoxContainer/chance/HBoxContainer/LineEdit")
score = get_node("ScrollContainer/VBoxContainer/Score/HBoxContainer/LabelScore")
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
calc_bonus()
calc_score()
pass
func _on_button_right_pressed():
save()
var players = Player_Manger.get_players()
currentPlayer += 1
if currentPlayer >= players.size():
currentPlayer = 0
playerName.text = players[currentPlayer].name
load_stats()
pass # Replace with function body.
func calc_bonus():
var players = Player_Manger.get_players()
var total = 0
total += int(int(one.get_item_text(one.get_selected_id())) +
int(two.get_item_text(two.get_selected_id())) +
int(three.get_item_text(three.get_selected_id())) +
int(four.get_item_text(four.get_selected_id())) +
int(five.get_item_text(five.get_selected_id())) +
int(six.get_item_text(six.get_selected_id())))
if total >= 63:
players[currentPlayer].bonus = 35
bonus.text = "35"
else:
players[currentPlayer].bonus = 0
bonus.text = "0"
func calc_score():
var players = Player_Manger.get_players()
players[currentPlayer].score = (int(one.get_item_text(one.get_selected_id())) +
int(two.get_item_text(two.get_selected_id())) +
int(three.get_item_text(three.get_selected_id())) +
int(four.get_item_text(four.get_selected_id())) +
int(five.get_item_text(five.get_selected_id())) +
int(six.get_item_text(six.get_selected_id())) +
int(three_of_a_kind.get_text()) +
int(four_of_a_kind.get_text()) +
int(full_house.get_item_text(full_house.get_selected_id())) +
int(small_straight.get_item_text(small_straight.get_selected_id())) +
int(large_straight.get_item_text(large_straight.get_selected_id())) +
int(yahtzee.text) +
int(chance.get_text()) +
int(bonus.text))
score.text = str(players[currentPlayer].score)
func load_stats():
var players = Player_Manger.get_players()
one.select(players[currentPlayer].one)
two.select(players[currentPlayer].two)
three.select(players[currentPlayer].three)
four.select(players[currentPlayer].four)
five.select(players[currentPlayer].five)
six.select(players[currentPlayer].six)
three_of_a_kind.text = str(players[currentPlayer].three_of_a_kind)
four_of_a_kind.text = str(players[currentPlayer].four_of_a_kind)
full_house.select(players[currentPlayer].full_house)
small_straight.select(players[currentPlayer].small_straight)
large_straight.select(players[currentPlayer].large_straight)
if(players[currentPlayer].yahtzee != 0):
yahtzee.text = str(players[currentPlayer].yahtzee)
else:
yahtzee.text = str("+")
chance.text = str(players[currentPlayer].chance)
bonus.text = str(players[currentPlayer].bonus)
pass
func save():
var players = Player_Manger.get_players()
players[currentPlayer].one = one.get_selected_id()
players[currentPlayer].two = two.get_selected_id()
players[currentPlayer].three = three.get_selected_id()
players[currentPlayer].four = four.get_selected_id()
players[currentPlayer].five = five.get_selected_id()
players[currentPlayer].six = six.get_selected_id()
players[currentPlayer].three_of_a_kind = three_of_a_kind.get_text()
players[currentPlayer].four_of_a_kind = four_of_a_kind.get_text()
players[currentPlayer].full_house = int(full_house.get_selected_id())
players[currentPlayer].small_straight = int(small_straight.get_selected_id())
players[currentPlayer].large_straight = int(large_straight.get_selected_id())
players[currentPlayer].yahtzee = int(yahtzee.text)
players[currentPlayer].bonus = int(bonus.text)
players[currentPlayer].chance = chance.get_text()
players[currentPlayer].score = (players[currentPlayer].one +
players[currentPlayer].two +
players[currentPlayer].three +
players[currentPlayer].four +
players[currentPlayer].five +
players[currentPlayer].six +
int(players[currentPlayer].three_of_a_kind) +
int(players[currentPlayer].four_of_a_kind) +
players[currentPlayer].full_house +
players[currentPlayer].small_straight +
players[currentPlayer].large_straight +
players[currentPlayer].yahtzee +
int(players[currentPlayer].chance) +
players[currentPlayer].bonus)
pass
func _on_button_left_pressed():
save()
var players = Player_Manger.get_players()
currentPlayer -= 1
if currentPlayer < 0:
currentPlayer = players.size() - 1
playerName.text = players[currentPlayer].name
load_stats()
pass # Replace with function body.
func add_items_to_small_straight(oButton: OptionButton):
oButton.add_item("")
oButton.add_item("-")
oButton.add_item("30")
pass # Replace with function body.
func add_items_to_large_straight(oButton: OptionButton):
oButton.add_item("")
oButton.add_item("-")
oButton.add_item("40")
pass # Replace with function body.
func add_items(oButton: OptionButton):
oButton.add_item("")
oButton.add_item("-")
oButton.add_item("0")
oButton.add_item("1")
oButton.add_item("2")
oButton.add_item("3")
oButton.add_item("4")
oButton.add_item("5")
oButton.add_item("6")
oButton.add_item("7")
oButton.add_item("8")
oButton.add_item("9")
oButton.add_item("10")
oButton.add_item("11")
oButton.add_item("12")
oButton.add_item("13")
oButton.add_item("14")
oButton.add_item("15")
oButton.add_item("16")
oButton.add_item("17")
oButton.add_item("18")
oButton.add_item("19")
oButton.add_item("20")
oButton.add_item("21")
oButton.add_item("22")
oButton.add_item("23")
oButton.add_item("24")
oButton.add_item("25")
oButton.add_item("26")
oButton.add_item("27")
oButton.add_item("28")
oButton.add_item("29")
oButton.add_item("30")
oButton.add_item("31")
oButton.add_item("32")
oButton.add_item("33")
oButton.add_item("34")
oButton.add_item("35")
oButton.add_item("36")
oButton.add_item("37")
oButton.add_item("38")
oButton.add_item("39")
oButton.add_item("40")
oButton.add_item("41")
oButton.add_item("42")
oButton.add_item("43")
oButton.add_item("44")
oButton.add_item("45")
oButton.add_item("46")
oButton.add_item("47")
oButton.add_item("48")
oButton.add_item("49")
oButton.add_item("50")
oButton.add_item("51")
oButton.add_item("52")
oButton.add_item("53")
oButton.add_item("54")
oButton.add_item("55")
oButton.add_item("56")
oButton.add_item("57")
oButton.add_item("58")
oButton.add_item("59")
oButton.add_item("60")
oButton.add_item("61")
oButton.add_item("62")
oButton.add_item("63")
oButton.add_item("64")
oButton.add_item("65")
oButton.add_item("66")
oButton.add_item("67")
oButton.add_item("68")
oButton.add_item("69")
oButton.add_item("70")
pass # Replace with function body.
func _on_button_yahtzee_pressed():
Player_Manger.get_players()[currentPlayer].yahtzee += 50
yahtzee.text = str(Player_Manger.get_players()[currentPlayer].yahtzee)
pass # Replace with function body.
func _on_button_yahtzee_minus_pressed():
Player_Manger.get_players()[currentPlayer].yahtzee -= 50
if(Player_Manger.get_players()[currentPlayer].yahtzee != 0):
yahtzee.text = str(Player_Manger.get_players()[currentPlayer].yahtzee)
else:
yahtzee.text = str("+")
pass # Replace with function body.
func _on_button_end_pressed():
get_tree().change_scene_to_file("res://MainMenu.tscn")
pass # Replace with function body.