Commit Diff


commit - 615a59ee6e08a93b2f68cf3c4f3945b9bcce5e0b
commit + c7ce3e2243ad46cdd714a200ba04d82a2f380145
blob - f26f4e52a14df63afeb4f2e4eac4468fb0d718e8
blob + 87d64c9e9bb29737d48654df5fefa8bd520e5acf
--- project.godot
+++ project.godot
@@ -14,6 +14,10 @@ config/name="Ciess 2022"
 run/main_scene="res://src/menu.tscn"
 config/icon="res://icon.png"
 
+[autoload]
+
+Pieces="*res://src/pieces.gd"
+
 [physics]
 
 common/enable_pause_aware_picking=true
blob - e3066835befb946b27ce55ad5fd9892fa1fc202a
blob + 4a91a78b46c8739e3be0a85cf309f5b22669fe18
--- src/board.gd
+++ src/board.gd
@@ -1,7 +1,7 @@
 extends Node2D
 
 
-func _on_clickame_click() -> void:
+func _unused_send_ping() -> void:
 	rpc("ping")
 
 remote func ping():
@@ -12,3 +12,38 @@ remote func ping():
 remote func pong():
 	var id := get_tree().get_rpc_sender_id()
 	print("PONG from ", id)
+
+
+func _addpiece(kind: String, black: bool, off: int) -> void:
+	var piece := preload("res://src/piece/piece.tscn").instance()
+	piece.setup(kind, black)
+	$"pieces".add_child(piece)
+	var y := 70
+	if not black:
+		y = 520
+	if kind == "pawn":
+		if not black:
+			y -= 70
+		else:
+			y += 70
+	piece.position = Vector2(off, y)
+
+
+func _on_setup_click() -> void:
+	# remove and re-place (pun intended) all the pieces
+	for child in $"pieces".get_children():
+		$"pieces".remove_child(child)
+		child.queue_free()
+
+	var off := 300
+	for i in 8: # the pawns
+		_addpiece("pawn", true, off)
+		_addpiece("pawn", false, off)
+		off += 63
+
+	var row := ["rook", "knight", "bishop", "king", "queen", "bishop", "knight", "rook"]
+	off = 300
+	for p in row:
+		_addpiece(p, true, off)
+		_addpiece(p, false, off)
+		off += 63
blob - 11e11b59bc0efdbfa9bcb555579c0ca5af33fef1
blob + 6b431e50b18e4357693de5635c0859a7315c7aba
--- src/board.tscn
+++ src/board.tscn
@@ -10,11 +10,13 @@ script = ExtResource( 2 )
 position = Vector2( 523, 293 )
 texture = ExtResource( 1 )
 
-[node name="click-a-me" type="Button" parent="."]
-margin_left = 163.0
-margin_top = 210.0
-margin_right = 204.0
-margin_bottom = 230.0
-text = "click"
+[node name="setup" type="Button" parent="."]
+margin_left = 101.0
+margin_top = 279.0
+margin_right = 190.0
+margin_bottom = 299.0
+text = "Setup Board"
 
-[connection signal="button_down" from="click-a-me" to="." method="_on_clickame_click"]
+[node name="pieces" type="Node2D" parent="."]
+
+[connection signal="button_down" from="setup" to="." method="_on_setup_click"]
blob - /dev/null
blob + 786738051120ed6b5cafda66a090feb8bc218c7b (mode 755)
--- /dev/null
+++ src/genpieces.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+echo "# DO NOT EDIT!"
+echo "# generated with $0"
+echo "extends Node"
+echo
+echo "var pieces = {"
+
+comm="res://assets/"
+for piece in $(find ../assets/ -type d -maxdepth 1 | sort); do
+
+	piece="${piece##../assets/}"
+	if [ "${piece}" = "" -o "${piece}" = board ]; then
+		continue
+	fi
+
+	cat <<EOF
+	"${piece}": {
+		"black": preload("${comm}/${piece}/${piece}B2.png"),
+		"white": preload("${comm}/${piece}/${piece}W2.png"),
+	},
+EOF
+done
+echo "}"
+
+
+cat <<EOF
+
+func getpiece(kind, black):
+	var k := "white"
+	if black:
+		k = "black"
+	return pieces[kind][k]
+EOF
blob - /dev/null
blob + c6b3bd8017ac17cd1d3e351f03931f5720c378e3 (mode 644)
--- /dev/null
+++ src/piece/piece.gd
@@ -0,0 +1,25 @@
+extends StaticBody2D
+
+var hold := false
+
+
+func setup(kind: String, black: bool) -> void:
+#	var t := "white"
+#	if black:
+#		t = "white"
+#	var sprite = Pieces.piece[kind][t]
+	var sprite = Pieces.getpiece(kind, black)
+	$sprite.texture = sprite
+
+
+func _input(event: InputEvent) -> void:
+	if hold and event is InputEventMouseMotion:
+		position = event.position
+
+
+func _on_button_down() -> void:
+	hold = true
+
+
+func _on_button_up() -> void:
+	hold = false
blob - /dev/null
blob + 7189a38f99df4e3324b3f8e082feae5031e73b6a (mode 644)
--- /dev/null
+++ src/piece/piece.tscn
@@ -0,0 +1,22 @@
+[gd_scene load_steps=4 format=2]
+
+[ext_resource path="res://assets/king/kingB2.png" type="Texture" id=1]
+[ext_resource path="res://src/piece/piece.gd" type="Script" id=2]
+
+[sub_resource type="CapsuleShape2D" id=1]
+
+[node name="piece" type="StaticBody2D"]
+script = ExtResource( 2 )
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+shape = SubResource( 1 )
+
+[node name="sprite" type="Sprite" parent="."]
+texture = ExtResource( 1 )
+
+[node name="btn" type="TextureButton" parent="."]
+margin_right = 40.0
+margin_bottom = 40.0
+
+[connection signal="button_down" from="btn" to="." method="_on_button_down"]
+[connection signal="button_up" from="btn" to="." method="_on_button_up"]
blob - /dev/null
blob + 4e913b8967cb4e508b703cdf653ccca269ac8c22 (mode 644)
--- /dev/null
+++ src/pieces.gd
@@ -0,0 +1,36 @@
+# DO NOT EDIT!
+# generated with ./genpieces.sh
+extends Node
+
+var pieces = {
+	"bishop": {
+		"black": preload("res://assets//bishop/bishopB2.png"),
+		"white": preload("res://assets//bishop/bishopW2.png"),
+	},
+	"king": {
+		"black": preload("res://assets//king/kingB2.png"),
+		"white": preload("res://assets//king/kingW2.png"),
+	},
+	"knight": {
+		"black": preload("res://assets//knight/knightB2.png"),
+		"white": preload("res://assets//knight/knightW2.png"),
+	},
+	"pawn": {
+		"black": preload("res://assets//pawn/pawnB2.png"),
+		"white": preload("res://assets//pawn/pawnW2.png"),
+	},
+	"queen": {
+		"black": preload("res://assets//queen/queenB2.png"),
+		"white": preload("res://assets//queen/queenW2.png"),
+	},
+	"rook": {
+		"black": preload("res://assets//rook/rookB2.png"),
+		"white": preload("res://assets//rook/rookW2.png"),
+	},
+}
+
+func getpiece(kind, black):
+	var k := "white"
+	if black:
+		k = "black"
+	return pieces[kind][k]