Пример #1
0
    private void OnGUI()
    {
        Vector3 p = Camera.main.WorldToScreenPoint(SpawnObject.transform.position);
        Vector3 e = Camera.main.WorldToScreenPoint(SpawnEndObject.transform.position);

        p.y = Screen.height - p.y;
        e.y = Screen.height - e.y;

        if (state == ShowDeckState)
        {
            int fullItemWidth = BigSize + Spacing;

            float scaledBigFrameOffsetX = Scale(14) * BigScale;
            float scaledBigFrameOffsetY = Scale(13) * BigScale;
            float scaledBigFrameWidth   = BigSize + (Scale(30) * BigScale);
            float scaledBigFrameHeight  = BigSize + (Scale(27) * BigScale);

            float scaledSmallFrameOffsetX = Scale(5) * SmallScale;
            float scaledSmallFrameOffsetY = Scale(5) * SmallScale;
            float scaledSmallFrameWidth   = SmallSize + (Scale(10) * SmallScale);
            float scaledSmallFrameHeight  = SmallSize + (Scale(9) * SmallScale);

            float width = (fullItemWidth * size) + p.x + (Screen.width - e.x - Spacing);
            scrollViewVector = GUI.BeginScrollView(new Rect(0, p.y - 20, Screen.width, scaledBigFrameHeight + Scale(25)), scrollViewVector, new Rect(0, 0, width, scaledBigFrameHeight));

            p.y = 10;

            float firstImageOffsetY  = p.y + (Scale(7) * BigScale);
            float secondImageOffsetY = p.y + SmallSize + (Scale(13 + 7) * BigScale);

            p.x -= scaledBigFrameOffsetX - scaledSmallFrameOffsetX;

            int imageIndex = 0;
            for (int i = 0; i < size; ++i)
            {
                ScaleMode scaleMode = ScaleMode.ScaleAndCrop;

                Rect imageRect = CalculatePosition(p, p.y, scaledBigFrameWidth + 200);

                GUI.BeginGroup(imageRect);

                GUI.DrawTexture(new Rect(scaledBigFrameOffsetX, scaledBigFrameOffsetY, BigSize, BigSize), textures[imageIndex], scaleMode);
                GUI.DrawTexture(new Rect(0, 0, scaledBigFrameWidth, scaledBigFrameHeight), FrameObject, ScaleMode.StretchToFill);

                ++imageIndex;
                float x = scaledBigFrameOffsetX - Scale(9);
                GUI.DrawTexture(new Rect(x, firstImageOffsetY, SmallSize, SmallSize), textures[imageIndex], scaleMode);
                GUI.DrawTexture(new Rect(x - scaledSmallFrameOffsetX, firstImageOffsetY - scaledSmallFrameOffsetY, scaledSmallFrameWidth, scaledSmallFrameHeight), FrameObject, ScaleMode.StretchToFill);

                ++imageIndex;
                GUI.DrawTexture(new Rect(x, secondImageOffsetY, SmallSize, SmallSize), textures[imageIndex], scaleMode);
                GUI.DrawTexture(new Rect(x - scaledSmallFrameOffsetX, secondImageOffsetY - scaledSmallFrameOffsetY, scaledSmallFrameWidth, scaledSmallFrameHeight), FrameObject, ScaleMode.StretchToFill);
                ++imageIndex;

                GroupControl       groupControl = new GroupControl();
                ImageViewWithFrame frame        = new ImageViewWithFrame();
                frame.BigSize      = BigSize;
                frame.FrameTexture = FrameObject;
                frame.ImageTexture = textures[imageIndex];
                frame.RightMargin  = 30;

                frame.MeasureSize();
                //frame.Render();
                groupControl.Items.Add(frame);

                frame              = new ImageViewWithFrame();
                frame.BigSize      = SmallSize;
                frame.FrameTexture = FrameObject;
                frame.ImageTexture = textures[imageIndex];
                frame.LeftMargin   = x - scaledSmallFrameOffsetX;
                frame.TopMargin    = firstImageOffsetY - scaledSmallFrameOffsetY;

                frame.MeasureSize();
                //frame.Render();
                groupControl.Items.Add(frame);

                frame              = new ImageViewWithFrame();
                frame.BigSize      = SmallSize;
                frame.FrameTexture = FrameObject;
                frame.ImageTexture = textures[imageIndex];
                frame.LeftMargin   = x - scaledSmallFrameOffsetX;
                frame.TopMargin    = secondImageOffsetY - scaledSmallFrameOffsetY;

                frame.MeasureSize();
                //frame.Render();
                groupControl.Items.Add(frame);

                groupControl.Render();

                GUI.EndGroup();

                p.x += fullItemWidth;
            }

            GUI.EndScrollView(true);
        }

        if (Input.GetMouseButtonDown(0) && !isMousePressed && mouseTimeout <= 0)
        {
            mouseTimeout = 30;

            isMousePressed = true;

            MouseDown();
        }
        else
        {
            isMousePressed = false;

            if (mouseTimeout > 0)
            {
                --mouseTimeout;
            }
        }
    }