Пример #1
0
        public Draggable AddPiece(Piece piece, MonoField field)
        {
            var       fieldAnchorMin = ((RectTransform)field.transform).anchorMin;
            var       fieldAnchorMax = ((RectTransform)field.transform).anchorMax;
            var       fieldSize      = new Vector2(1, 1);
            Draggable draggablePiece = null;

            if (piece.Type == pType.Wall || piece.Type == pType.Hole || piece.Type == pType.Endpoint)
            {
                Draggable staticPiece = null;
                if (piece.Type == pType.Wall)
                {
                    staticPiece = Instantiate(configuration.wallPrefab, pieceTransform);
                }
                if (piece.Type == pType.Hole)
                {
                    staticPiece = Instantiate(configuration.holePrefab, pieceTransform);
                }
                if (piece.Type == pType.Endpoint)
                {
                    staticPiece = Instantiate(configuration.endpointPrefab, pieceTransform);
                }
                staticPiece.Setup(fieldAnchorMin, fieldAnchorMax, this, piece);
                draggablePiece = staticPiece;
            }
            else if (piece.Type == pType.Magnet)
            {
                var magnet = Instantiate(configuration.magnetPrefab, pieceTransform);
                magnet.Setup(fieldAnchorMin, fieldAnchorMax, this, piece, piece.MagnetStrength, piece.MagnetPolarity);
                draggablePiece = magnet;
            }
            else if (piece.Type == pType.Player)
            {
                var player = Instantiate(configuration.playerPrefab, pieceTransform);
                player.Setup(fieldAnchorMin, fieldAnchorMax, this, piece, piece.MagnetStrength, piece.MagnetPolarity);
                draggablePiece = player;
            }
            else if (piece.Type == pType.Door)
            {
                var door = Instantiate(configuration.doorPrefab, pieceTransform);
                door.Setup(fieldAnchorMin, fieldAnchorMax, this, piece, piece.MagnetStrength, piece.MagnetPolarity);
                draggablePiece = door;
            }
            else if (piece.Type == pType.Lock)
            {
                var lockObj = Instantiate(configuration.lockPrefab, pieceTransform);
                lockObj.Setup(fieldAnchorMin, fieldAnchorMax, this, piece, piece.MagnetStrength, piece.MagnetPolarity);
                draggablePiece = lockObj;
            }
            else
            {
                return(null);
            }
            var position = Place(draggablePiece, field);

            if (position == null)
            {
                Destroy(draggablePiece.gameObject);
                return(null);
            }
            return(draggablePiece);
        }
Пример #2
0
 public abstract Vector3?Place(Draggable piece, MonoField square);