private void CellStateChanged(object sender, CellStateChangedEventArgs args)
    {
        var p = new PlayfieldPoint(args.Column, args.Row);

        switch (args.NewState)
        {
        case Cell.States.Empty:
            RemoveCell(p);
            break;

        case Cell.States.Disabled:
            break;

        case Cell.States.BlackAndWhite:
            break;

        case Cell.States.Black:
        case Cell.States.BlackJeweledBoth:
        case Cell.States.BlackJeweledHorz:
        case Cell.States.BlackJeweledVert:
        case Cell.States.White:
        case Cell.States.WhiteJeweledBoth:
        case Cell.States.WhiteJeweledHorz:
        case Cell.States.WhiteJeweledVert:
            InstantiateVisual(Playfield.GetCell(p));
            break;

        default:
            break;
        }
    }
    private void CellRemoveStateChanged(object sender, CellRemoveStateChangedEventArgs args)
    {
        var p  = new PlayfieldPoint(args.Column, args.Row);
        var go = InstantiateVisual(Playfield.GetCell(p));

        var delay = args.Row * removingDelayMultiplier;

        go?.ScaleTo(0.0f, 1.0f, removingAnim, delay);
    }
 public void PopulateCell(PlayfieldPoint p, Cell.States state)
 {
     Playfield.GetCell(p).State = state;
 }
 private void RemoveCell(PlayfieldPoint p)
 {
     _tiles[p.Column, p.Row].Destroy();
 }
 public Vector2 ComputePos(PlayfieldPoint point)
 {
     return(ComputePos(point.Column, point.Row));
 }