private void Detach() { if (attachedPiece.TrySnap()) { //visual effects here attachedPiece.Bounce(GameObject.MAX_BOUNCE_PERCENTAGE, true); _puzzle.PiecePlaced(attachedPiece); } else { _puzzle.PieceReplaced(attachedPiece); } attachedPiece = null; }
private void Attach() { GameObject puzzlePiece = _puzzle.GetFirstOverlappingMember(this); if (puzzlePiece != null) { this.attachedPiece = (PuzzlePiece)puzzlePiece; this.attachedPiece.Bounce(GameObject.MIN_BOUNCE_PERCENTAGE, true); _puzzle.PiecePicked((PuzzlePiece)puzzlePiece); } }
internal void PiecePicked(PuzzlePiece puzzlePiece) { this.Remove(puzzlePiece); _attachedPieces.Add(puzzlePiece); }
private Vector2 chopUp(int roughSize, Texture2D texture) { Vector2 finalDim = Vector2.Zero; int timesX = (int)Math.Ceiling((double)(texture.Width / ((double)roughSize))); //rounded up! int timesY = (int)Math.Ceiling((double)(texture.Height / ((double)roughSize))); //rounded up! int actualX = texture.Width / timesX; int actualY = texture.Height / timesY; if (actualX % 2 == 1) actualX--; if (actualY % 2 == 1) actualY--; finalDim.X = timesX * actualX * PuzzlePiece.SCALE_FACTOR; finalDim.Y = timesY * actualY * PuzzlePiece.SCALE_FACTOR; //now slice it up for (int x = 0; x < timesX; x++) { for (int y = 0; y < timesY; y++) { Rectangle pieceRect = new Rectangle(x * actualX, y * actualY, actualX, actualY); PuzzlePiece p = new PuzzlePiece(texture, pieceRect, this, _canvas.TotalOffset); this.Add(p); BackgroundPiece background = new BackgroundPiece(p.Size, _canvas.TotalOffset + Core.PointToVector(pieceRect.Location) * p.ScaleFactor); background.Initialize(Core.game.Content); _completedPieces.Add(background); } } return finalDim; }
internal void PieceReplaced(PuzzlePiece puzzlePiece) { _attachedPieces.Remove(puzzlePiece); this.Add(puzzlePiece); }
internal void PiecePlaced(PuzzlePiece puzzlePiece) { _attachedPieces.Remove(puzzlePiece); _completedPieces.Add(puzzlePiece); }