commit - 615a59ee6e08a93b2f68cf3c4f3945b9bcce5e0b
commit + c7ce3e2243ad46cdd714a200ba04d82a2f380145
blob - f26f4e52a14df63afeb4f2e4eac4468fb0d718e8
blob + 87d64c9e9bb29737d48654df5fefa8bd520e5acf
--- project.godot
+++ project.godot
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
extends Node2D
-func _on_clickame_click() -> void:
+func _unused_send_ping() -> void:
rpc("ping")
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
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
+#!/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
+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
+[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
+# 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]