Skip to content

Commit

Permalink
fixed: shuffle animation bug
Browse files Browse the repository at this point in the history
  • Loading branch information
BeytullahKalay committed Mar 23, 2023
1 parent 1c2e507 commit 94c2ded
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 19 deletions.
3 changes: 1 addition & 2 deletions Assets/Scenes/SampleScene.unity
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,8 @@ MonoBehaviour:
m_EditorClassIdentifier:
gridX: 10
gridY: 10
tilePrefab: {fileID: 4929073597715599317, guid: 75842fb40bcd53e47b54542ff3067725, type: 3}
timeBetweenSpawns: 0.15
timeBetweenSingleSpawns: 0.1
timeBetweenSingleSpawns: 0.05
startYPosition: 1
columnFallSpeed: 12
ease: 5
Expand Down
2 changes: 1 addition & 1 deletion Assets/_Scripts/Pooler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ private void Awake()
}, block =>
{
Destroy(block.gameObject);
}, false, 100,500);
}, false, 100,700);
}
}
1 change: 1 addition & 0 deletions Assets/_Scripts/Shuffle.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public void ShuffleTiles()

grid[x, y] = tile;
tile.TileVal.SetGridPosition(x, y, false);
tile.TileVal.Tween.Kill();
tile.transform.DOMove(new Vector3(x, y, 0), animationDuration).SetEase(Ease.InOutBack)
.OnComplete(() => { _gm.SpawnerStates = SpawnerStates.Playable; });

Expand Down
6 changes: 5 additions & 1 deletion Assets/_Scripts/Tile/Tile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@ public class Tile : MonoBehaviour, ISpawnable, IDestroyable
[SerializeField] private TileSpriteHolder tileSpriteHolder;

public TileVal TileVal;

private TileGridLayout _tileGridLayout;

private Pooler _pooler;

public SpriteRenderer SpriteRenderer { get; private set; }

private void Awake()
{
_tileGridLayout = TileGridLayout.Instance;
_pooler = Pooler.Instance;
SpriteRenderer = GetComponent<SpriteRenderer>();
TileVal = new TileVal(SpriteRenderer, tileSpriteHolder, gameObject);
}
Expand Down Expand Up @@ -59,7 +63,7 @@ public List<Tile> GetDestructArea()
public void Destroy()
{
_tileGridLayout.SetGridNull(TileVal.GridPosition);
Pooler.Instance.TilePool.Release(gameObject);
_pooler.TilePool.Release(gameObject);
}

private List<Tile> GetNeighbours(Vector2Int tilePos)
Expand Down
23 changes: 13 additions & 10 deletions Assets/_Scripts/Tile/TileVal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,49 +4,52 @@
public struct TileVal
{
public Vector2Int GridPosition;



private SpriteRenderer _spriteRenderer;
private GameObject _object;
private TileSpriteHolder _tileSpriteHolder;

public TileType TileType { get; private set; }
public Tween Tween { get; set; }

public TileVal(SpriteRenderer spriteRenderer,TileSpriteHolder tileSpriteHolder,GameObject gameObject,Vector2Int gridPosition = default)
public TileVal(SpriteRenderer spriteRenderer, TileSpriteHolder tileSpriteHolder, GameObject gameObject,
Vector2Int gridPosition = default)
{
GridPosition = gridPosition;
_spriteRenderer = spriteRenderer;
_object = gameObject;
_tileSpriteHolder = tileSpriteHolder;
TileType = TileType.Blue;

Tween = null;

Initialize();
}

public void Initialize()
{
Tween?.Kill();
var tileSprite = _tileSpriteHolder.GetRandomTileSprites();
TileType = tileSprite.TileType;
_spriteRenderer.sprite = tileSprite.DefaultSprite;
_spriteRenderer.sortingOrder = GridPosition.y;
_object.name = $"({GridPosition.x},{GridPosition.y})";
}

public void SetGridPosition(int x, int y,bool playAnimation)
public void SetGridPosition(int x, int y, bool playAnimation)
{
GridPosition = new Vector2Int(x, y);
_spriteRenderer.sortingOrder = y;
_object.name = $"({GridPosition.x},{GridPosition.y})";

var obj = _object; // defined for dotween unexpected this object error.

if (playAnimation)
{
obj.transform.DOMoveY(y, 10).SetSpeedBased().SetEase(Ease.InQuad).OnComplete(() =>
Tween?.Kill();
Tween = obj.transform.DOMoveY(y, 10).SetSpeedBased().SetEase(Ease.InQuad).OnComplete(() =>
{
obj.transform.DOMoveY(obj.transform.position.y + .15f, .065f).SetLoops(2, LoopType.Yoyo);
});
}
}


}
}
12 changes: 7 additions & 5 deletions Assets/_Scripts/TileGridLayout.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,12 @@ private IEnumerator SetupCO(float timeBetweenSpawns)
var tileGameObject = _pooler.TilePool.Get();
tileGameObject.transform.position = new Vector2(x, y);
tileGameObject.transform.SetParent(column.transform);

Utilities.SetLocalPositionY(tileGameObject.transform);
var tileScript = tileGameObject.GetComponent<Tile>();
tileScript.SetGridPosition(x, y);
Grid[x, y] = tileScript;

EventManager.UpdateTileSpritesOf?.Invoke(tileScript.GetDestructArea());
}

Expand Down Expand Up @@ -91,7 +91,7 @@ public void RefillTileGrid()
{
if (Grid[x, checkIndex] == null) emptySpacesUnderTile++;
}

if (emptySpacesUnderTile > 0)
{
var block = Grid[x, y];
Expand All @@ -112,16 +112,18 @@ private IEnumerator RefillCO(float timeBetweenSpawns)
for (var x = 0; x < gridX; x++)
{
if (Grid[x, y] != null) continue;
var spawnPosition = Utilities.GetTopOfScreenY(_camera) + startYPosition;

var spawnPosition = Utilities.GetTopOfScreenY(_camera) + startYPosition;
var tileGameObject = _pooler.TilePool.Get();
tileGameObject.transform.position = new Vector2(x, spawnPosition);
tileGameObject.transform.SetParent(transform);

var tileScript = tileGameObject.GetComponent<Tile>();
tileScript.SetGridPosition(x, y, true);
Grid[x, y] = tileScript;

yield return new WaitForSeconds(timeBetweenSpawns);

EventManager.UpdateAllTileSprites?.Invoke();
}
}
Expand Down

0 comments on commit 94c2ded

Please sign in to comment.