28 lines
943 B
C#
28 lines
943 B
C#
using Godot;
|
|
|
|
public partial class PuzzleTile : Sprite2D
|
|
{
|
|
// Public properties so the GameBoard can read/write them
|
|
public int GridX { get; set; }
|
|
public int GridY { get; set; }
|
|
public bool IsMoving { get; private set; } = false;
|
|
|
|
private int _tileSize = 128;
|
|
|
|
// The board will call this method when it calculates a valid move
|
|
public void SlideTo(int targetX, int targetY)
|
|
{
|
|
// Calculate distance for animation speed
|
|
float distance = Mathf.Abs(targetX != GridX ? targetX - GridX : targetY - GridY) * _tileSize;
|
|
float tweenDuration = distance / 600.0f;
|
|
|
|
GridX = targetX;
|
|
GridY = targetY;
|
|
Vector2 targetPixelPos = new Vector2(GridX * _tileSize, GridY * _tileSize);
|
|
|
|
IsMoving = true;
|
|
Tween tween = CreateTween();
|
|
tween.TweenProperty(this, "position", targetPixelPos, tweenDuration);
|
|
tween.Finished += () => IsMoving = false;
|
|
}
|
|
} |