Example #1
0
    private void Slide()
    {
        var     hexCoordinate     = emptyGrids.Pop();
        Vector2 coordinate        = hexCoordinate.coordinate;
        Vector2 desiredCoordinate = new Vector2(coordinate.x, coordinate.y - 1);

        if (desiredCoordinate.y >= 0)
        {
            var targetCoordinate = GetHexCoordinateByCoordinate(desiredCoordinate);
            if (targetCoordinate != null && !emptyGrids.Contains(targetCoordinate))
            {
                Hexagon hexagon = hexagons[targetCoordinate];
                if (hexagon != null)
                {
                    hexagons[targetCoordinate] = null;
                    hexagons[hexCoordinate]    = hexagon;
                    hexagon.HexCoordinate      = hexCoordinate;
                    emptyGrids.Push(targetCoordinate);
                    hexagon.transform.position = hexCoordinate.position;
                    // hexagon.Move(hexCoordinate, MoveType.SLIDING);
                    // yield return new WaitForSeconds(0.09f);
                }
            }
        }
        else
        {
            Hexagon hexagon = CreateHexagon(hexCoordinate);
            hexagons[hexCoordinate] = hexagon;
        }

        if (emptyGrids.Count == 0)
        {
            sliding.End();
        }
    }