online multiplayer chess game (note server currently down)
Diffstat (limited to 'piece/Piece.gd')
-rw-r--r--piece/Piece.gd63
1 files changed, 36 insertions, 27 deletions
diff --git a/piece/Piece.gd b/piece/Piece.gd
index 081b269..3196b7c 100644
--- a/piece/Piece.gd
+++ b/piece/Piece.gd
@@ -13,8 +13,7 @@ onready var anim = $AnimationPlayer
onready var rotate = $RotatePlayer
# for pawn promotion
-signal promotion_decided
-var promote_to := ""
+signal promotion_decided(promote_to)
func size() -> void: # size the control
@@ -27,14 +26,20 @@ func size() -> void: # size the control
func _ready():
load_texture()
-
- frame.modulate = Globals.grid.overlay_color
background.color = Globals.grid.overlay_color
if type == Chess.KING:
Events.connect("turn_over", self, "check_in_check")
size()
+ Events.connect("turn_over", self, "turn_over")
+
+
+func turn_over():
+ if Globals.grid.chess.turn == Globals.team:
+ background.color = Globals.grid.overlay_color
+ else:
+ background.color = Globals.grid.premove_color
func check_in_check():
@@ -42,32 +47,36 @@ func check_in_check():
func _pressed(p: String) -> void:
- promote_to = p
- emit_signal("promotion_decided")
- queue_free()
-
-
-func open_promotion_previews():
- var popup := PopupPanel.new()
- popup.name = "previews"
- popup.popup_exclusive = true
- popup.add_stylebox_override("panel", StyleBoxEmpty.new())
- var previews := VBoxContainer.new()
- previews.name = "previews"
- previews.add_constant_override("separation", 0)
- popup.add_child(previews)
- add_child(popup)
- for p in "QNRB":
- var newsprite := PromotionPreview.new()
- newsprite.hint_tooltip = p
- var img_path = "res://assets/pieces/%s/%s%s.png" % [Globals.piece_set, color, p]
- newsprite.texture_normal = load(img_path)
- newsprite.name = p
- newsprite.connect("pressed", self, "_pressed", [p])
- previews.add_child(newsprite)
+ emit_signal("promotion_decided", p.to_lower())
+
+
+func open_promotion_previews(darken: ColorRect):
+ darken.show()
+ var popup = get_node_or_null("previews")
+ if not popup:
+ popup = PopupPanel.new()
+ popup.name = "previews"
+ popup.popup_exclusive = true
+ popup.add_stylebox_override("panel", StyleBoxEmpty.new())
+ var previews := VBoxContainer.new()
+ previews.name = "previews"
+ previews.add_constant_override("separation", 0)
+ popup.add_child(previews)
+ add_child(popup)
+ for p in "QNRB":
+ var newsprite := PromotionPreview.new()
+ newsprite.hint_tooltip = p
+ var img_path = "res://assets/pieces/%s/%s%s.png" % [Globals.piece_set, color, p]
+ newsprite.texture_normal = load(img_path)
+ newsprite.name = p
+ newsprite.connect("pressed", self, "_pressed", [p])
+ previews.add_child(newsprite)
var rect = Rect2(rect_global_position, Vector2(Globals.grid.piece_size.x, Globals.grid.piece_size.y * 4))
popup.popup(rect)
+ yield(self, "promotion_decided")
+ darken.hide()
+ popup.hide()
func load_texture(path := "res://assets/pieces/%s/%s%s.png" % [Globals.piece_set, color, type.to_upper()]) -> void: