示例#1
0
文件: Player.cs 项目: elib/jigsaw
        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;
        }
示例#2
0
文件: Player.cs 项目: elib/jigsaw
 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);
     }
 }
示例#3
0
文件: Puzzle.cs 项目: elib/jigsaw
 internal void PiecePicked(PuzzlePiece puzzlePiece)
 {
     this.Remove(puzzlePiece);
     _attachedPieces.Add(puzzlePiece);
 }
示例#4
0
文件: Puzzle.cs 项目: elib/jigsaw
        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;
        }
示例#5
0
文件: Puzzle.cs 项目: elib/jigsaw
 internal void PieceReplaced(PuzzlePiece puzzlePiece)
 {
     _attachedPieces.Remove(puzzlePiece);
     this.Add(puzzlePiece);
 }
示例#6
0
文件: Puzzle.cs 项目: elib/jigsaw
 internal void PiecePlaced(PuzzlePiece puzzlePiece)
 {
     _attachedPieces.Remove(puzzlePiece);
     _completedPieces.Add(puzzlePiece);
 }