예제 #1
0
        public override IImage Create(string data, IRgb24BitmapBase image, IRgb24BitmapBase imageText)
        {
            var bitmap = image as IRgb24Bitmap;

            if (bitmap?.FrameCount > 1)
            {
                var bitMatrix   = QRCodeEncoder.Build(data);
                int moduleCount = bitMatrix.Size;
                var images      = Enumerable.Range(0, bitmap.FrameCount).Select(i =>
                {
                    var imgBitMatrix = Binarizer.Binarize(image, moduleCount * 3, moduleCount * 3);
                    //var imgColorMatrix = Colorizer.Colorize(image, moduleCount * 3, moduleCount * 3);
                    var imgColorMatrix = new ColorSquare(moduleCount * 3);
                    var imgMatrix      = Binarizer.Binarize(bitmap.GetFrame(i), moduleCount * 3, moduleCount * 3);
                    var frameMatrix    = Merger.Merge(bitMatrix, QRCodeEncoder.TypeNumber, imgBitMatrix);
                    return(BitMatrixDrawer.Draw(frameMatrix, imgColorMatrix));
                }).ToList();

                if (FrameMerger == null)
                {
                    return(images[0]);
                }

                var frames = images.Select(img => img as IRgb24BitmapFrame).ToList();
                if (frames.Contains(null))
                {
                    return(images[0]);
                }
                return(FrameMerger(frames));
            }
            else
            {
                return(base.Create(data, image, imageText));
            }
        }
    // Use this for initialization
    void Start()
    {
        List <Color> availableColors = new List <Color>(GameController.instance.availableColors.Keys);

        for (int i = 0; i < availableColors.Count; i++)
        {
            GameObject  colorSquare       = Instantiate(colorSquarePrefab, new Vector2(startingPosition.x + gap * i, startingPosition.y), transform.rotation) as GameObject;
            ColorSquare colorSquareScript = colorSquare.GetComponent <ColorSquare>();
            colorSquareScript.SetSquareColor(availableColors[i]);
            colorSquareScript.SetID(i);
        }
    }
 void UpdateSquaresAccordingly(int ID, bool availability)
 {
     GameObject[] colorSquares = GameObject.FindGameObjectsWithTag("ColorSquare");
     foreach (GameObject colorSquare in colorSquares)
     {
         if (colorSquare.GetComponent <ColorSquare>().GetID() == syncSquareIdToChange)
         {
             ColorSquare colorSquareScript = colorSquare.GetComponent <ColorSquare>();
             colorSquareScript.SetIsAvailable(syncAvailabilityChange);
             colorSquareScript.ChangeLook();
         }
     }
 }
    public void OnButtonPressed()
    {
        if (isAvailable)
        {
            isAvailable = false;
            isSelected  = true;

            GameObject   playerShip = null;
            GameObject[] ships      = GameObject.FindGameObjectsWithTag("Player");
            foreach (GameObject ship in ships)
            {
                if (ship.GetComponent <NetworkIdentity>().isLocalPlayer)
                {
                    playerShip = ship;
                }
            }
            //ship color
            playerShip.GetComponent <Ship>().UpdateShipColor(squareColor);
            playerShip.GetComponent <Player_ID>().TransmitColor(squareColor);

            playerShip.GetComponent <ColorSquareManager>().TransmitChange(squareID, isAvailable);

            if (GameController.instance.currentSquareID != -1)
            {
                GameObject[] colorSquares = GameObject.FindGameObjectsWithTag("ColorSquare");
                foreach (GameObject colorSquare in colorSquares)
                {
                    if (colorSquare.GetComponent <ColorSquare>().GetID() == GameController.instance.currentSquareID)
                    {
                        ColorSquare colorSquareScript = colorSquare.GetComponent <ColorSquare>();
                        colorSquareScript.SetIsAvailable(true);
                        colorSquareScript.SetIsSelected(false);
                        colorSquareScript.ChangeLook();
                        playerShip.GetComponent <ColorSquareManager>().TransmitChange(GameController.instance.currentSquareID, true);
                    }
                }
            }
            GameController.instance.currentSquareID = squareID;
            ChangeLook();
        }
    }
예제 #5
0
    void PickRandomColor()
    {
        GameObject[]      colorSquares    = GameObject.FindGameObjectsWithTag("ColorSquare");
        List <GameObject> availableColors = new List <GameObject>();

        foreach (GameObject colorSquare in colorSquares)
        {
            if (colorSquare.GetComponent <ColorSquare>().GetIsAvailable() == true)
            {
                availableColors.Add(colorSquare);
            }
        }
        ColorSquare randomColorSquare = availableColors[Random.Range(0, availableColors.Count)].GetComponent <ColorSquare>();

        randomColorSquare.SetIsSelected(true);
        randomColorSquare.SetIsAvailable(false);
        myTransform.gameObject.GetComponent <Ship>().UpdateShipColor(randomColorSquare.squareColor);
        myTransform.gameObject.GetComponent <Player_ID>().TransmitColor(randomColorSquare.squareColor);
        myTransform.gameObject.GetComponent <ColorSquareManager>().TransmitChange(randomColorSquare.GetID(), false);
        GameController.instance.currentSquareID = randomColorSquare.GetID();
        randomColorSquare.ChangeLook();
    }
예제 #6
0
        public virtual IImage Create(string data, IRgb24BitmapBase image, IRgb24BitmapBase imageText)
        {
            var bitMatrix = QRCodeEncoder.Build(data); //~20 ms



            if (image != null && 2 == 3) //qr code
            {
                int moduleCount    = bitMatrix.Size;
                var imgBitMatrix   = Binarizer.Binarize(image, moduleCount * 3, moduleCount * 3);
                var imgColorMatrix = Colorizer.Colorize(image, moduleCount * 3, moduleCount * 3);
                //var imgColorMatrix = new ColorSquare(moduleCount * 3);
                bitMatrix = Merger.Merge(bitMatrix, QRCodeEncoder.TypeNumber, imgBitMatrix);
                return(BitMatrixDrawer.Draw(bitMatrix, imgColorMatrix));
            }
            else if (image != null) //text on image
            {
                int moduleCount    = bitMatrix.Size;
                var imgColorMatrix = Colorizer.Colorize(image, moduleCount * 3, moduleCount * 3);
                var tripMatrix     = new TripSquare(500);

                for (var i = 0; i < 500; i++)
                {
                    for (var ii = 0; ii < 500; ii++)
                    {
                        tripMatrix[i, ii] = 0;
                    }
                }//~20 ms since else if



                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();

                for (var i = 5; i < 495; i++)
                {
                    for (var ii = 5; ii < 495; ii++)
                    {
                        if (imageText.GetPixel(i, ii) < 12000000)
                        {
                            tripMatrix[ii, i] = 1;
                        }
                        if (imageText.GetPixel(i, ii) < 8000000)
                        {
                            tripMatrix[ii, i] = 2;
                        }
                        if (imageText.GetPixel(i, ii) < 4000000)
                        {
                            tripMatrix[ii, i] = 3;
                        }
                    }
                }//~110 ms for this double loop



                for (var i = 10; i < 500 - 10; i++)
                {
                    for (var ii = 10; ii < 500 - 10; ii++)
                    {
                        /*
                         * if (tripMatrix[i,ii] == 0){
                         *      var minDist = 999;
                         *      for (var iii=i-10;iii<i+11;iii++){
                         *                              for (var iiii=ii-10;iiii<ii+11;iiii++){
                         *                                      if (tripMatrix[iii,iiii] > 0){
                         *                                              var d = (i-iii)*(i-iii)+(ii-iiii)*(ii-iiii);
                         *                                              if (d< minDist){
                         *                                                      minDist = d;
                         *                                              }
                         *                                      }
                         *                              }
                         *                      }
                         *                      if (minDist < 51){
                         *                              tripMatrix[i,ii] = (2*minDist-150)/5;
                         *                      }
                         * }
                         */

                        if (tripMatrix[i, ii] > 0)
                        {
                            for (var iii = i - 10; iii < i + 11; iii++)
                            {
                                for (var iiii = ii - 10; iiii < ii + 11; iiii++)
                                {
                                    if (tripMatrix[iii, iiii] == 0)
                                    {
                                        var d = (i - iii) * (i - iii) + (ii - iiii) * (ii - iiii);
                                        if (d < 51)
                                        {
                                            tripMatrix[iii, iiii] = (2 * d - 150) / 5;
                                        }
                                    }
                                    else if (tripMatrix[iii, iiii] < 0)
                                    {
                                        var d = (i - iii) * (i - iii) + (ii - iiii) * (ii - iiii);
                                        if (d < 51)
                                        {
                                            var dd = (2 * d - 150) / 5;
                                            if (dd < tripMatrix[iii, iiii])
                                            {
                                                tripMatrix[iii, iiii] = dd;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                stopWatch.Stop();
                // Get the elapsed time as a TimeSpan value.
                TimeSpan ts = stopWatch.Elapsed;

                // Format and display the TimeSpan value.
                string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                                                   ts.Hours, ts.Minutes, ts.Seconds,
                                                   ts.Milliseconds / 10);
                Console.WriteLine("QRArtCreatorTime " + elapsedTime);


                return(TripMatrixDrawer.Draw(tripMatrix, imgColorMatrix));
            }
            else
            {
                Console.Out.WriteLine("no image");
                var imgMatrix = new ColorSquare(bitMatrix.Size * 3);
                return(BitMatrixDrawer.Draw(bitMatrix, imgMatrix));
            }
        }
 // Use this for initialization
 void Start()
 {
     colorSquare = GetComponent <ColorSquare>();
 }