Chess/generator.gd
2025-04-15 11:52:21 -07:00

87 lines
2.6 KiB
GDScript

extends FlowContainer
@export var BoardXSize = 8
@export var BoardYSize = 8
@export var TileXSize: float = 50
@export var TileYSize: float = 50
@export var PlayRegularGame: bool = true
signal SendLocation(Location: String)
@export var Pawn: PackedScene
@export var Bishop: PackedScene
@export var Rook: PackedScene
@export var Knight: PackedScene
@export var Queen: PackedScene
@export var King: PackedScene
func _ready():
# stop negative numbers from happening
if BoardXSize < 0 || BoardYSize < 0:
return
var NumberX: int = 0
var NumberY: int = 0
# Set up the board
while NumberY != BoardYSize:
self.size.y += TileYSize + 5
self.size.x += TileXSize + 5
while NumberX != BoardXSize:
var temp = Button.new()
temp.set_custom_minimum_size(Vector2(TileXSize, TileYSize))
temp.connect("pressed", func():
SendLocation.emit(temp.name))
temp.set_name(str(NumberX) + "-" + str(NumberY))
add_child(temp)
NumberX += 1
NumberY += 1
NumberX = 0
if PlayRegularGame == true:
RegularGame()
# 1 = black
# 0 = white
func RegularGame():
get_node("0-0").add_child(Summon(Rook, 1))
get_node("1-0").add_child(Summon(Knight, 1))
get_node("2-0").add_child(Summon(Bishop, 1))
get_node("3-0").add_child(Summon(Queen, 1))
get_node("4-0").add_child(Summon(King, 1))
get_node("5-0").add_child(Summon(Bishop, 1))
get_node("6-0").add_child(Summon(Knight, 1))
get_node("7-0").add_child(Summon(Rook, 1))
get_node("0-1").add_child(Summon(Pawn, 1))
get_node("1-1").add_child(Summon(Pawn, 1))
get_node("2-1").add_child(Summon(Pawn, 1))
get_node("3-1").add_child(Summon(Pawn, 1))
get_node("4-1").add_child(Summon(Pawn, 1))
get_node("5-1").add_child(Summon(Pawn, 1))
get_node("6-1").add_child(Summon(Pawn, 1))
get_node("7-1").add_child(Summon(Pawn, 1))
get_node("0-6").add_child(Summon(Pawn, 0))
get_node("1-6").add_child(Summon(Pawn, 0))
get_node("2-6").add_child(Summon(Pawn, 0))
get_node("3-6").add_child(Summon(Pawn, 0))
get_node("4-6").add_child(Summon(Pawn, 0))
get_node("5-6").add_child(Summon(Pawn, 0))
get_node("6-6").add_child(Summon(Pawn, 0))
get_node("7-6").add_child(Summon(Pawn, 0))
get_node("0-7").add_child(Summon(Rook, 0))
get_node("1-7").add_child(Summon(Knight, 0))
get_node("2-7").add_child(Summon(Bishop, 0))
get_node("3-7").add_child(Summon(Queen, 0))
get_node("4-7").add_child(Summon(King, 0))
get_node("5-7").add_child(Summon(Bishop, 0))
get_node("6-7").add_child(Summon(Knight, 0))
get_node("7-7").add_child(Summon(Rook, 0))
func Summon(Scene: PackedScene, color: int):
var Piece = Scene.instantiate()
Piece.Spawned(color)
# This is the point, ignore the warning
Piece.position = Vector2(TileXSize / 2, TileYSize / 2)
return Piece