commit c7ce3e2243ad46cdd714a200ba04d82a2f380145 from: Omar Polo date: Fri Aug 19 20:47:52 2022 UTC cose programmose 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 < 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]