Esempio n. 1
0
 protected void ChageDirectionIfNextPositionUnsafe()
 {
     if (!MoveIsSafe(NextPosition))
     {
         directionOption = AI.GetRandomDirectionOption(Node);
     }
 }
Esempio n. 2
0
 public void InitializeFields(PointNode node, GameObject bodySection, string name)
 {
     Node               = node;
     this.bodySection   = bodySection;
     Name               = name;
     directionOption    = AI.GetRandomDirectionOption(node);
     CollisionHappened += CollisionHandler.OnCollisionHappend;
 }
Esempio n. 3
0
    public static DirectionOption GetRandomDirectionOption(PointNode node)
    {
        IEnumerable <PointNode> availableNeighbors = node.NeighborsInAccess;

        if (availableNeighbors.Count() > 0)
        {
            PointNode nextNode = GetRandomElement(ref availableNeighbors);
            return(DirectionOption.IdentifyDirectionOption(node.Position, nextNode.Position));
        }

        return(DirectionOption.IdentifyDirectionOption(node.Position, node.Neighbors.First().Position));
    }
Esempio n. 4
0
        /// <summary>
        /// Move the item to the stack specified in the parameters
        /// </summary>
        /// <param name="ActionStack"></param>
        public void ChangeStack(Stack <HistoryProduct> ActionStack)
        {
            switch (this.ProductTransferDirection)
            {
            case DirectionOption.BACKFROMTHEBASKET:
                this.ProductTransferDirection = DirectionOption.TOBASKET;                    break;

            case DirectionOption.TOBASKET:
                this.ProductTransferDirection = DirectionOption.BACKFROMTHEBASKET;
                break;
            }
            ActionStack.Push(this);
        }
Esempio n. 5
0
    public void InitMenu(List <SelectableTarget> targets)
    {
        options = new DirectionOption[targets.Count + 1];

        GameObject traverseOption = Instantiate(OptionPrefab, OptionsContainer.transform);

        traverseOption.transform.localPosition = new Vector3(0, 0, 0);
        DirectionOption traverseOptionCompenent = traverseOption.GetComponent <DirectionOption>();

        options[0] = traverseOptionCompenent;
        traverseOptionCompenent.InitOption("Walk Here", walkHereSprite, 0);

        float largestWidth = traverseOptionCompenent.GetTextWidth();

        for (int i = 0; i < targets.Count; ++i)
        {
            int adjIndex = i + 1;

            GameObject newOptionObject = Instantiate(OptionPrefab, OptionsContainer.transform);
            newOptionObject.transform.localPosition = new Vector3(0, pixelYOffset * -adjIndex, 0);
            DirectionOption option = newOptionObject.GetComponent <DirectionOption>();

            options[adjIndex] = option;

            option.InitOption(targets[i], adjIndex);

            // Get largest width
            float newWidth = option.GetTextWidth();
            largestWidth = newWidth > largestWidth ? newWidth : largestWidth;
        }

        // + buffer
        largestWidth += pixelOptionBuffer;

        ResizePanelSafe(new Vector2(largestWidth + pixelMainPanelBuffer, (targets.Count + 1) * pixelYOffset + pixelMainPanelBuffer * 1.5f));

        float minW = WindowDimensions.x - pixelMainPanelBuffer;

        for (int i = 0; i < options.Length; ++i)
        {
            options[i].ResizeOption(Mathf.Clamp(largestWidth, minW, largestWidth));
        }
    }
Esempio n. 6
0
 public static Position GetNextPosition(PointNode node, DirectionOption directionOption)
 {
     sbyte[] coords = node.Position.Coordinates;
     coords[directionOption.AxisNumber] += directionOption.Direction;
     return(new Position(coords));
 }
Esempio n. 7
0
 /// <summary>
 /// Bir image dosyasını istenilen boyutta keser.
 /// </summary>
 /// <param name="image">image olarak gönderilecek resmi ifade eder.</param>
 /// <param name="width">Kesilecek olan resmin genişliğini ifade eder.</param>
 /// <param name="height">Kesilecek olan resmin yüksekliğini ifade eder.</param>
 /// <param name="directionOption">Bitmap'ın neresinden kesileceğini ifade eder.</param>
 /// <returns>Bitmap</returns>
 public static Image CutImage(Image image, int width, int height, DirectionOption directionOption)
 {
     using var bitmap     = ImageToBitmap(image);
     using var yeniBitmap = bitmap.Clone(new Rectangle(0, 0, width, height), bitmap.PixelFormat);
     return(BitmapToImage(yeniBitmap));
 }
Esempio n. 8
0
 /// <summary>
 /// Bir Bitmap dosyasını istenilen boyutta keser.
 /// </summary>
 /// <param name="bitmap">Bitmap olarak gönderilecek resmi ifade eder.</param>
 /// <param name="width">Kesilecek olan resmin genişliğini ifade eder.</param>
 /// <param name="height">Kesilecek olan resmin yüksekliğini ifade eder.</param>
 /// <param name="directionOption">Bitmap'ın neresinden kesileceğini ifade eder.</param>
 /// <returns>Bitmap</returns>
 public static Bitmap CutImage(Bitmap bitmap, int width, int height, DirectionOption directionOption)
 {
     return(bitmap.Clone(new Rectangle(0, 0, width, height), bitmap.PixelFormat));
 }
Esempio n. 9
0
        /// <summary>
        /// Bitmap dosyasını istenen yerinden, istenen boyutta yeniden ölçeklendirmek için kullanılır.
        /// </summary>
        /// <param name="bitmap">Bitmap olarak gönderilecek resmi ifade eder.</param>
        /// <param name="imageResizeOption">Biçimlendirme şeklini ifade eder.</param>
        /// <param name="directionOption">Kesilecek bitmapın yerini ifade eder.</param>
        /// <param name="newWidth">Ölçeklendirilmiş bitmapın yeni genişliğini ifade eder.</param>
        /// <param name="newHeight">Ölçeklendirilmiş bitmapın yeni yüksekliğini ifade eder.</param>
        /// <param name="scaleOption">Yüksekliğinmi yoksa genişliğinmi esas alınacağını ifade eder.</param>
        /// <returns>Bitmap</returns>
        public static Bitmap ResizeImage(Bitmap bitmap, ImageResizeOption imageResizeOption, DirectionOption directionOption, int newWidth, int newHeight, ScaleOption scaleOption)
        {
            switch (imageResizeOption)
            {
            case ImageResizeOption.Fit:
                if (bitmap.Height - newHeight > bitmap.Width - newWidth)
                {
                    _rate = newHeight / (float)bitmap.Height;
                    var myNewWidth       = (int)(bitmap.Width * _rate);
                    var newerBitmap      = new Bitmap(myNewWidth, newHeight, PixelFormat.Format64bppArgb);
                    var graphicsFromImge = Graphics.FromImage(newerBitmap);
                    graphicsFromImge.DrawImage(bitmap, new Rectangle(0, 0, myNewWidth, newHeight), new Rectangle(0, 0, bitmap.Width, bitmap.Height), GraphicsUnit.Pixel);
                    return(newerBitmap);
                }
                else
                {
                    _rate = newWidth / (float)bitmap.Width;
                    var myNewHeight = (int)(bitmap.Height * _rate);
                    var newerBitmap = new Bitmap(newWidth, myNewHeight, PixelFormat.Format64bppArgb);
                    using (_graphics = Graphics.FromImage(newerBitmap))
                    {
                        _graphics.DrawImage(bitmap, new Rectangle(0, 0, newWidth, myNewHeight), new Rectangle(0, 0, bitmap.Width, bitmap.Height), GraphicsUnit.Pixel);
                        return(newerBitmap);
                    }
                }

            case ImageResizeOption.Stretch:
                var newlyBitmap = new Bitmap(newWidth, newHeight, PixelFormat.Format64bppArgb);
                using (_graphics = Graphics.FromImage(newlyBitmap))
                {
                    _graphics.DrawImage(bitmap, 0, 0, newWidth, newHeight);
                }
                return(newlyBitmap);

            case ImageResizeOption.Cut:
                _newBitmap = new Bitmap(newWidth, newHeight, PixelFormat.Format64bppArgb);
                using (_graphics = Graphics.FromImage(_newBitmap))
                {
                    DirectionSet(directionOption, bitmap, newWidth, newHeight);
                    _graphics.DrawImage(bitmap, new Rectangle(0, 0, newWidth, newHeight), _leftCoordinate, _topCoordinate, newWidth, newHeight, GraphicsUnit.Pixel);
                }
                return(_newBitmap);

            case ImageResizeOption.Scale:
                if ((newWidth / (float)bitmap.Width > newHeight / (float)bitmap.Height && newWidth / (float)bitmap.Width > 1) || (newWidth / (float)bitmap.Width > newHeight / (float)bitmap.Height && (float)newWidth / bitmap.Width < 1 && (float)newHeight / bitmap.Height < 1))
                {
                    var myImage = ResizeImage(bitmap, ScaleOption.Width, newWidth);
                    return(ResizeImage(myImage, ImageResizeOption.Cut, directionOption, newWidth, newHeight, scaleOption));
                }
                else if (bitmap.Width == bitmap.Height)
                {
                    var myImage = ResizeImage(bitmap, scaleOption, newWidth);
                    return(myImage);
                }
                else
                {
                    //yukseklige gore resim boyutlandirilip sonra fazlalik kesilecek
                    var myImage2 = ResizeImage(bitmap, ScaleOption.Height, newHeight);
                    return(ResizeImage(myImage2, ImageResizeOption.Cut, directionOption, newWidth, newHeight, scaleOption));
                }

            default:
                throw new ArgumentOutOfRangeException(nameof(imageResizeOption), imageResizeOption, null);
            }



            // return new Bitmap(600, 600);
        }
Esempio n. 10
0
        /// <summary>
        /// Bir bitmap resminin istenilen yerine istenilen bir yazının eklenmesini sağlar.
        /// </summary>
        /// <param name="bitmap">Bitmap olarak gönderilecek resmi ifade eder.</param>
        /// <param name="text">Bitmap resmine eklenecek olan yazıyı ifade eder.</param>
        /// <param name="opacity">Yazının opasitesini ifade eder.</param>
        /// <param name="directionOption">Yazının nereye yerleştirileceğini ifade eder.</param>
        /// <param name="textFont">Yazının fontunu ifade eder.</param>
        /// <param name="automatic">Yazının resme eklenmesi işleminin otomatik yapılmasını ifade eder.</param>
        /// <param name="textColor">Yazının rengini ifade eder.</param>
        /// <param name="textBackColor">Yazının arkasında kullanılacak rengi ifade eder.</param>
        /// <param name="brushStyle">Yazının arka planı için kullanılacak brush'ı ifade eder.</param>
        /// <returns>Bitmap</returns>
        public static Bitmap AddTextToImage(Bitmap bitmap, string text, int opacity, DirectionOption directionOption, Font textFont, bool automatic, Color textColor, Color textBackColor, HatchStyle brushStyle)
        {
            using (_brush = new HatchBrush(brushStyle, textColor, textBackColor))
            {
                var imageFrom    = new Bitmap(10, 10);
                var downGraphics = Graphics.FromImage(imageFrom);
                var textSize     = new Size
                {
                    Width  = (int)downGraphics.MeasureString(text, textFont).Width,
                    Height = (int)downGraphics.MeasureString(text, textFont).Height
                };

                _font = new Font(textFont.FontFamily, textFont.Size);
                if ((textSize.Width > bitmap.Width || textSize.Height > bitmap.Height) && automatic)
                {
                    for (var i = 0; i < 101; i++)
                    {
                        _font           = new Font(textFont.FontFamily, textFont.Size * ((float)(100 - i) / 100));
                        textSize.Width  = (int)downGraphics.MeasureString(text, _font).Width;
                        textSize.Height = (int)downGraphics.MeasureString(text, _font).Height;
                        if (textSize.Width <= bitmap.Width && textSize.Height <= bitmap.Height)
                        {
                            break;
                        }
                    }
                }

                imageFrom    = new Bitmap(textSize.Width, textSize.Height);
                downGraphics = Graphics.FromImage(imageFrom);
                downGraphics.DrawString(text, _font, _brush, new Point(0, 0));

                var opacityValue = opacity / 10.0F;

                float[][] matrix = { new float[] { 1, 0, 0, 0, 0 }, new float[] { 0, 1, 0, 0, 0 }, new float[] { 0, 0, 1, 0, 0 }, new[] { 0, 0, 0, opacityValue, 1 }, new float[] { 0, 0, 0, 0, 1 } };

                var colorMatrix    = new ColorMatrix(matrix);
                var imageAttribute = new ImageAttributes();

                imageAttribute.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);

                if (text == "")
                {
                    throw new NullReferenceException("Resmin üstüne konacak yazı girilmemiş.");
                }

                if (directionOption == 0)
                {
                    throw new NullReferenceException("Yazının resmin neresine yerleştirileceği belirlenmedi.");
                }

                var graphicsFromImage = Graphics.FromImage(bitmap);

                graphicsFromImage.InterpolationMode = InterpolationMode.High;
                var pointTo = new Point();
                switch (directionOption)
                {
                case DirectionOption.TopRight:
                    pointTo.X = bitmap.Width - imageFrom.Width;
                    pointTo.Y = 0;

                    break;

                case DirectionOption.BottomLeft:
                    pointTo.X = 0;
                    pointTo.Y = bitmap.Height - imageFrom.Height;

                    break;

                case DirectionOption.TopLeft:
                    pointTo.X = 0;
                    pointTo.Y = 0;

                    break;

                case DirectionOption.BottomRight:
                    pointTo.X = bitmap.Width - imageFrom.Width;
                    pointTo.Y = bitmap.Height - imageFrom.Height;

                    break;

                case DirectionOption.MiddleRight:
                    pointTo.X = bitmap.Width - imageFrom.Width;
                    pointTo.Y = bitmap.Height - (imageFrom.Height - (imageFrom.Height / 2));

                    break;

                case DirectionOption.MiddleLeft:
                    pointTo.X = 0;
                    pointTo.Y = bitmap.Height - (imageFrom.Height - (imageFrom.Height / 2));

                    break;

                case DirectionOption.TopCenter:
                    pointTo.X = bitmap.Width - (imageFrom.Width - (imageFrom.Width / 2));
                    pointTo.Y = 0;

                    break;

                case DirectionOption.BottomCenter:
                    pointTo.X = bitmap.Width - (imageFrom.Width - (imageFrom.Width / 2));
                    pointTo.Y = bitmap.Height - imageFrom.Height;

                    break;

                case DirectionOption.Center:
                    pointTo.X = (bitmap.Width / 2) - (imageFrom.Width / 2);
                    pointTo.Y = (bitmap.Height / 2) - (imageFrom.Height / 2);

                    break;

                default:
                    pointTo.X = 0;
                    pointTo.Y = 0;

                    break;
                }

                //1. parametre imageFrom:(soyut olarak)eklenecek resim
                //2. parametre new Rectangle(pointTo, imageFrom.Size): grafik nesnemizin hangi noktasından itibaren hangi size da resim ekleneceğini gösteren dikdörtgen
                //3. ve 4. parametre 0,0: eklenecek resmin hangi noktasından itibaren çizileceği (yani 1. parametrede alınan fotoğrafı hangi noktasından itibaren ekleyeceğiz)
                //5. ve 6. parametre imageFrom.Width, imageFrom.Height: resim eklenen dikdörtgenin içine hangi boyutlarda eklecek daha küçük değer verilirse resim küçültülerek eklenir
                //7. parametre GraphicsUnit.Pixel: ölçü birimi olrak ne kullanılcak
                //8. parametre imageAttribute: yukarıda belirlenen renk matrix ine göre çizilecek
                graphicsFromImage.DrawImage(imageFrom, new Rectangle(pointTo, imageFrom.Size), 0, 0, imageFrom.Width, imageFrom.Height, GraphicsUnit.Pixel, imageAttribute);
                return(bitmap);
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Bir bitmap dosyasının istenen bir yerine, bir başka bitmap dosyasını eklemek için kullanılır.
        /// </summary>
        /// <param name="imageFrom">Ana resmi ifade eder.</param>
        /// <param name="imageTo">Üzerine eklenecek resmi ifade eder</param>
        /// <param name="opacity">Üzerine eklenecek resmin opasitesini ifade eder.</param>
        /// <param name="imageDirection">Resmin nereye ekleneceğini belirtir.</param>
        /// <returns>Bitmap</returns>
        public static Bitmap AddImageToImage(Bitmap imageFrom, Bitmap imageTo, int opacity, DirectionOption imageDirection)
        {
            if (imageFrom == null)
            {
                throw new NullReferenceException("Üzerine resim konacak olan Bitmap dosyası girilmedi.");
            }

            if (imageTo == null)
            {
                throw new NullReferenceException("Bitmap dosyasının üzerine konulacak olan diğer bitmap dosyası girilmedi.");
            }

            if (imageDirection == 0)
            {
                throw new NullReferenceException("Yazının resmin neresine yerleştirileceği belirlenmedi.");
            }

            var pointTo = new Point();

            var opacityValue = opacity / 10.0F;

            float[][] matrix = { new float[] { 1, 0, 0, 0, 0 }, new float[] { 0, 1, 0, 0, 0 }, new float[] { 0, 0, 1, 0, 0 }, new[] { 0, 0, 0, opacityValue, 1 }, new float[] { 0, 0, 0, 0, 1 } };

            var colorMatrix     = new ColorMatrix(matrix);
            var imageAttributes = new ImageAttributes();

            imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);

            var graphicsFromImage = Graphics.FromImage(imageTo);

            graphicsFromImage.InterpolationMode = InterpolationMode.High;

            DirectionSet(imageDirection, imageTo, imageFrom.Width, imageFrom.Height);

            pointTo.X = _leftCoordinate;
            pointTo.Y = _topCoordinate;

            graphicsFromImage.DrawImage(imageFrom, new Rectangle(pointTo, imageFrom.Size), 0, 0, imageFrom.Width, imageFrom.Height, GraphicsUnit.Pixel, imageAttributes);

            return(imageTo);
        }
Esempio n. 12
0
        /// <summary>
        /// Bitmap dosyasının üzerindeki bir noktayı parametre olarak ifade eder.
        /// </summary>
        /// <param name="directionOption">Enum olarak yönleri ifade eder.</param>
        /// <param name="bitmap">Bitmap olarak gönderilen dosyayı ifade eder.</param>
        /// <param name="newWidth">Bitmap olarak eklenecek objenin genişliğini ifade eder.</param>
        /// <param name="newHeight">Bitmap olarak eklenecek objenin yüksekliğini ifade eder.</param>
        private static void DirectionSet(DirectionOption directionOption, Bitmap bitmap, int newWidth, int newHeight)
        {
            switch (directionOption)
            {
            case DirectionOption.TopLeft:
                _leftCoordinate = 0;
                _topCoordinate  = 0;

                break;

            case DirectionOption.TopCenter:
                _leftCoordinate = Convert.ToInt32(Math.Round(bitmap.Width / (float)2));
                _topCoordinate  = 0;

                break;

            case DirectionOption.TopRight:
                _leftCoordinate = bitmap.Width - newWidth;
                _topCoordinate  = 0;

                break;

            case DirectionOption.BottomLeft:
                _leftCoordinate = 0;
                _topCoordinate  = bitmap.Height - newHeight;

                break;

            case DirectionOption.BottomCenter:
                _leftCoordinate = Convert.ToInt32(Math.Round(bitmap.Width / (float)2));
                _topCoordinate  = bitmap.Height;

                break;

            case DirectionOption.BottomRight:
                _leftCoordinate = bitmap.Width;
                _topCoordinate  = bitmap.Height - newHeight;

                break;

            case DirectionOption.MiddleLeft:
                _leftCoordinate = 0;
                _topCoordinate  = Convert.ToInt32(Math.Round(bitmap.Height / (float)2));

                break;

            case DirectionOption.MiddleRight:
                _leftCoordinate = bitmap.Width;
                _topCoordinate  = Convert.ToInt32(Math.Round(bitmap.Height / (float)2));

                break;

            case DirectionOption.Center:
                _leftCoordinate = Convert.ToInt32(Math.Round((bitmap.Width / (float)2)) - newWidth / (float)2);
                _topCoordinate  = Convert.ToInt32(Math.Round((bitmap.Height / (float)2)) - newHeight / (float)2);

                break;

            case DirectionOption.Right:
                break;

            case DirectionOption.Left:
                break;

            case DirectionOption.Top:
                break;

            case DirectionOption.Bottom:
                break;

            case DirectionOption.Middle:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(directionOption), directionOption, null);
            }
        }
Esempio n. 13
0
 public static Position GetNextPosition(Position pos, DirectionOption dO)
 {
     sbyte[] coords = pos.Coordinates;
     coords[dO.AxisNumber] += dO.Direction;
     return(new Position(coords));
 }
Esempio n. 14
0
 public HistoryProduct(int id, string nm, double prc, int qntt, DirectionOption productTransferDirection)
     : base(id, nm, prc, qntt)
 {
     this.ProductTransferDirection = productTransferDirection;
 }