online multiplayer chess game (note server currently down)
Diffstat (limited to 'pieces/Piece.gd')
-rw-r--r--pieces/Piece.gd32
1 files changed, 14 insertions, 18 deletions
diff --git a/pieces/Piece.gd b/pieces/Piece.gd
index 55d680d..22a6d84 100644
--- a/pieces/Piece.gd
+++ b/pieces/Piece.gd
@@ -1,4 +1,4 @@
-extends Node2D
+extends Control
class_name Piece, "res://assets/pieces/california/wP.png"
var real_position := Vector2.ZERO
@@ -14,22 +14,26 @@ onready var tween := $Tween
onready var anim := $AnimationPlayer
onready var rotate := $RotatePlayer
onready var colorrect := $ColorRect
-onready var frame := $Frame
+onready var frame := $Sprite/Frame
func _ready() -> void:
team = "w" if white else "b"
- sprite.position = Globals.grid.piece_size / 2
var tmp: Array = Utils.get_node_name(self)
mininame = tmp[0]
shortname = tmp[1]
- frame.position = Globals.grid.piece_size / 2
+ rect_min_size = Globals.grid.piece_size
+ rect_size = rect_min_size
+ rect_pivot_offset = Globals.grid.piece_size / 2
frame.modulate = Globals.grid.overlay_color
colorrect.color = Globals.grid.overlay_color
- colorrect.rect_size = Globals.grid.piece_size
load_texture()
+func set_zindex(zindex: int):
+ VisualServer.canvas_item_set_z_index(get_canvas_item(), zindex)
+
+
func load_texture(path := "%s%s%s.png" % [Globals.grid.ASSETS_PATH, team, shortname.to_upper()]) -> void:
sprite.texture = load(path)
@@ -45,19 +49,11 @@ func clear_clicked() -> void:
Globals.grid.clear_fx()
-func algebraic_take_notation(position: Vector2, startpos: Vector2 = real_position) -> String:
- var starter := shortname if shortname != "p" else Utils.to_algebraic(startpos)[0]
- return starter + "x" + Utils.to_algebraic(position)
-
-
-func algebraic_move_notation(position: Vector2) -> String:
- var starter := shortname if shortname != "p" else ""
- return starter + Utils.to_algebraic(position)
-
-
func move(newpos: Vector2) -> void: # dont use directly; use moveto
- tween.interpolate_property(self, "position", position, newpos * Globals.grid.piece_size, 0.3, Tween.TRANS_BACK)
- var signresult := int(sign(newpos.x * Globals.grid.piece_size.x - global_position.x))
+ tween.interpolate_property(
+ self, "rect_position", rect_position, newpos * Globals.grid.piece_size, 0.3, Tween.TRANS_BACK
+ )
+ var signresult := int(sign((newpos.x * Globals.grid.piece_size.x) - rect_global_position.x))
if signresult == 1:
rotate.play("Right")
elif signresult == -1:
@@ -209,7 +205,7 @@ func took(instant := false) -> void: # called when piece is taken
Globals.grid.matrix[real_position.y][real_position.x] = null
if !instant:
SoundFx.play("Capture")
- anim.play("Take")
+ anim.play("Took")
func set_frame(value := true) -> void: