Esempio n. 1
0
        /// <summary>
        /// Run the stress test
        /// </summary>
        protected override void StressTest()
        {
            var game = (StressTest)RB.Game;

            Random.InitState(0);

            for (int i = 0; i < mStressLevel; i++)
            {
                var wiggle = GetWiggle();

                var randRect = new Rect2i(
                    (int)(Random.Range(-game.spriteSheet.grid.cellSize.width * 0.75f, RB.DisplaySize.width - (game.spriteSheet.grid.cellSize.width * 0.25f)) + wiggle.x),
                    (int)(Random.Range(-game.spriteSheet.grid.cellSize.height * 0.75f, RB.DisplaySize.height - (game.spriteSheet.grid.cellSize.height * 0.25f)) + wiggle.y),
                    Random.Range(8, 64),
                    Random.Range(8, 64));

                int type = Random.Range(0, 5);
                if (type == 0)
                {
                    RB.DrawLine(new Vector2i(randRect.x, randRect.y), new Vector2i(randRect.x + randRect.width, randRect.y + randRect.height), mRandomColor[i]);
                }
                else if (type == 1)
                {
                    RB.DrawRect(randRect, mRandomColor[i]);
                }
                else if (type == 2)
                {
                    RB.DrawRectFill(randRect, mRandomColor[i]);
                }
                else if (type == 3)
                {
                    RB.DrawTriangleFill(
                        new Vector2i(randRect.x, randRect.y),
                        new Vector2i(randRect.x + randRect.width, randRect.y),
                        new Vector2i(randRect.x + (randRect.width / 2), randRect.y + randRect.height),
                        mRandomColor[i]);
                }
                else if (type == 4)
                {
                    RB.DrawTriangle(
                        new Vector2i(randRect.x, randRect.y),
                        new Vector2i(randRect.x + randRect.width, randRect.y),
                        new Vector2i(randRect.x + (randRect.width / 2), randRect.y + randRect.height),
                        mRandomColor[i]);
                }
            }
        }
Esempio n. 2
0
        private void DrawShapes(int x, int y)
        {
            var demo = (DemoReel)RB.Game;

            RB.CameraSet(new Vector2i(-x, -y - 66));

            DemoUtil.DrawOutputFrame(new Rect2i(0, 0, 263, 27), -1, mOutputFrame, mOutputBackground);

            for (int i = 0; i < mShapeSize.Length; i++)
            {
                mShapeSize[i].x = (int)((Mathf.Sin((RB.Ticks / 20.0f) + i) * 6) + 8);
                mShapeSize[i].y = (int)((Mathf.Sin((RB.Ticks / 2 / 20.0f) + i) * 6) + 8);
            }

            RB.DrawRect(new Rect2i(-mShapeSize[0].x + 13, -mShapeSize[0].y + 13, mShapeSize[0].x * 2, mShapeSize[0].y * 2), DemoUtil.IndexToRGB(6));
            RB.DrawRectFill(new Rect2i(40 - mShapeSize[1].x + 13, -mShapeSize[1].y + 13, mShapeSize[1].x * 2, mShapeSize[1].y * 2), DemoUtil.IndexToRGB(27));
            RB.DrawEllipse(new Vector2i(80 + 13, 13), new Vector2i(mShapeSize[2].x, mShapeSize[2].y), DemoUtil.IndexToRGB(8));
            RB.DrawEllipseFill(new Vector2i(120 + 13, 13), new Vector2i(mShapeSize[3].x, mShapeSize[3].y), DemoUtil.IndexToRGB(23));
            RB.DrawEllipseInvertedFill(new Vector2i(160 + 13, 13), new Vector2i(mShapeSize[4].x, mShapeSize[4].y), DemoUtil.IndexToRGB(2));
            Rect2i triRect = new Rect2i(-mShapeSize[5].x + 210, -mShapeSize[5].y + 13, mShapeSize[5].x * 2, mShapeSize[5].y * 2);

            RB.DrawTriangle(new Vector2i(triRect.x + (triRect.width / 2), triRect.y), new Vector2i(triRect.x, triRect.y + triRect.height), new Vector2i(triRect.x + triRect.width, triRect.y + triRect.height), DemoUtil.IndexToRGB(15));
            triRect = new Rect2i(-mShapeSize[6].x + 250, -mShapeSize[6].y + 13, mShapeSize[6].x * 2, mShapeSize[6].y * 2);
            RB.DrawTriangleFill(new Vector2i(triRect.x, triRect.y), new Vector2i(triRect.x + triRect.width, triRect.y), new Vector2i(triRect.x + (triRect.width / 2), triRect.y + triRect.height), DemoUtil.IndexToRGB(9));

            RB.CameraReset();

            mFormatStr.Set("@C// Draw primitive shapes\n");
            mFormatStr.Append("@[email protected](@Knew @MRect2i@N(@L").Append(-mShapeSize[0].x + 13).Append("@N, @L").Append(-mShapeSize[0].y + 13).Append("@N, @L").Append(mShapeSize[0].x * 2).Append("@N, @L").Append(mShapeSize[0].y * 2).Append("@N), @I6);\n");
            mFormatStr.Append("@[email protected](@Knew @MRect2i(@L").Append(40 - mShapeSize[1].x + 13).Append("@N, @L").Append(-mShapeSize[1].y + 13).Append("@N, @L").Append(mShapeSize[1].x * 2).Append("@N, @L").Append(mShapeSize[1].y * 2).Append("@N), @I27);\n");
            mFormatStr.Append("@[email protected](@Knew @MVector2i(@L").Append(80 + 13).Append("@N, @L13@N), @Knew @MVector2i@N(@L").Append(mShapeSize[2].x).Append("@N, @L").Append(mShapeSize[2].y).Append("@N), @I8);\n");
            mFormatStr.Append("@[email protected](@Knew @MVector2i@N(@L").Append(120 + 13).Append("@N, @L13@N), @Knew @MVector2i@N(@L").Append(mShapeSize[3].x).Append("@N, @L").Append(mShapeSize[3].y).Append("@N),\n   @I31);\n");
            mFormatStr.Append("@[email protected](@Knew @MVector2i@N(@L").Append(160 + 13).Append("@N, @L13@N),\n    @Knew @MVector2i@N(@L").Append(mShapeSize[4].x).Append("@N, @L").Append(mShapeSize[4].y).Append("@N), @I2);");

            RB.Print(new Vector2i(x, y), DemoUtil.IndexToRGB(5), DemoUtil.HighlightCode(mFormatStr, mFinalStr));
        }
Esempio n. 3
0
        private void DrawSpritePacking(int x, int y)
        {
            var demo = (DemoReel)RB.Game;

            mFormatStr.Set(
                "@DRetroBlit features a sprite packer that can cram your folders\n" +
                "full of sprites into optimal sprite sheets! To use it simply\n" +
                "create a sprite pack file (.sp) and point it to your sprite folder.");

            RB.Print(new Vector2i(4, 4), DemoUtil.IndexToRGB(25), DemoUtil.HighlightCode(mFormatStr, mFinalStr));

            y += 16;

            int indent       = 16;
            int row          = 0;
            int rowSpacing   = 9;
            int imageSpacing = 3;
            int fileColor    = 5;
            int folderColor  = 3;
            int alphaSprite  = 7;

            // Draw sprite pack file
            RB.CameraSet(new Vector2i(-170, -16));
            RB.DrawRectFill(new Rect2i(x - 4, y - 4, 108, 112), DemoUtil.IndexToRGB(2));

            mFormatStr.Set("@C// Source folder(s)\n");
            mFormatStr.Append("@C// relative to project\n");
            mFormatStr.Append("@C// root\n");
            mFormatStr.Append("@MSOURCE_FOLDER@N=@LSprites@N\n\n");
            mFormatStr.Append("@C// Output size\n");
            mFormatStr.Append("@MOUTPUT_WIDTH@N=@L96@N\n");
            mFormatStr.Append("@MOUTPUT_HEIGHT@N=@L96@N\n\n");
            mFormatStr.Append("@C// Trim empty space\n");
            mFormatStr.Append("@MTRIM@N=@Ltrue@N");

            RB.Print(new Vector2i(x, y), DemoUtil.IndexToRGB(fileColor), "DemoSpritePack.sp");
            RB.DrawLine(new Vector2i(x, y + rowSpacing + 2), new Vector2i(x + 100, y + rowSpacing + 2), DemoUtil.IndexToRGB(3));
            RB.Print(new Vector2i(x, y + rowSpacing + rowSpacing), DemoUtil.IndexToRGB(fileColor), DemoUtil.HighlightCode(mFormatStr, mFinalStr));

            RB.DrawRectFill(new Rect2i(-32, 60, 6 * 3, 6), DemoUtil.IndexToRGB(5));
            RB.DrawRectFill(new Rect2i(-26, 54, 6, 6 * 3), DemoUtil.IndexToRGB(5));

            // Draw file listing
            RB.CameraSet(new Vector2i(-4, -16));
            RB.SpriteSheetSet(0);
            RB.DrawRectFill(new Rect2i(x - 4, y - 4, 120, 266), DemoUtil.IndexToRGB(2));

            mFormatStr.Set(
                "@DYour sprite source folders can be anywhere, but it's best to keep\n" +
                "them out of your @NAssets@D folder so that Unity does not put your\n" +
                "source sprites into the game @NAsset Resources@D!\n" +
                "\n" +
                "When you change your source sprites be sure to manually re-import\n" +
                "your sprite pack because Unity can't detect sprite changes outside\n" +
                "of the @NAssets@D folder!");

            RB.Print(new Vector2i(x - 4, y - 4 + 270), DemoUtil.IndexToRGB(25), DemoUtil.HighlightCode(mFormatStr, mFinalStr));

            RB.Print(new Vector2i(x, y + row), DemoUtil.IndexToRGB(folderColor), "Sprites/");
            row += rowSpacing;

            RB.Print(new Vector2i(x + indent, y + row), DemoUtil.IndexToRGB(folderColor), "Characters/");
            row += rowSpacing;

            RB.SpriteSheetSet(1);
            RB.DrawSprite(alphaSprite, new Vector2i(x + (indent * 2), y + row));
            RB.SpriteSheetSet(0);
            RB.DrawSprite(mSpriteHero1, new Vector2i(x + (indent * 2), y + row));
            row += mSpriteHero1.Size.height + imageSpacing;
            RB.Print(new Vector2i(x + (indent * 2), y + row), DemoUtil.IndexToRGB(fileColor), "Hero1.png");
            row += rowSpacing;

            RB.SpriteSheetSet(1);
            RB.DrawSprite(alphaSprite, new Vector2i(x + (indent * 2), y + row));
            RB.SpriteSheetSet(0);
            RB.DrawSprite(mSpriteHero2, new Vector2i(x + (indent * 2), y + row));
            row += mSpriteHero2.Size.height + imageSpacing;
            RB.Print(new Vector2i(x + (indent * 2), y + row), DemoUtil.IndexToRGB(fileColor), "Hero2.png");
            row += rowSpacing;

            RB.Print(new Vector2i(x + indent, y + row), DemoUtil.IndexToRGB(folderColor), "Terrain/");
            row += rowSpacing;

            RB.SpriteSheetSet(1);
            RB.DrawSprite(alphaSprite, new Vector2i(x + (indent * 2), y + row));
            RB.SpriteSheetSet(0);
            RB.DrawSprite(mSpriteDirtCenter, new Vector2i(x + (indent * 2), y + row));
            row += mSpriteDirtCenter.Size.height + imageSpacing;
            RB.Print(new Vector2i(x + (indent * 2), y + row), DemoUtil.IndexToRGB(fileColor), "DirtCenter.png");
            row += rowSpacing;

            RB.SpriteSheetSet(1);
            RB.DrawSprite(alphaSprite, new Vector2i(x + (indent * 2), y + row));
            RB.SpriteSheetSet(0);
            RB.DrawSprite(mSpriteDirtSide, new Vector2i(x + (indent * 2), y + row));
            row += mSpriteDirtSide.Size.height + imageSpacing;
            RB.Print(new Vector2i(x + (indent * 2), y + row), DemoUtil.IndexToRGB(fileColor), "DirtSide.png");
            row += rowSpacing;

            RB.SpriteSheetSet(1);
            RB.DrawSprite(alphaSprite, new Vector2i(x + (indent * 2), y + row));
            RB.SpriteSheetSet(0);
            RB.DrawSprite(mSpriteGrassTop, new Vector2i(x + (indent * 2), y + row));
            row += mSpriteGrassTop.Size.height + imageSpacing;
            RB.Print(new Vector2i(x + (indent * 2), y + row), DemoUtil.IndexToRGB(fileColor), "GrassTop.png");
            row += rowSpacing;

            RB.SpriteSheetSet(1);
            RB.DrawSprite(alphaSprite, new Vector2i(x + (indent * 2), y + row));
            RB.SpriteSheetSet(0);
            RB.DrawSprite(mSpriteGrassTopRight, new Vector2i(x + (indent * 2), y + row));
            row += mSpriteGrassTopRight.Size.height + imageSpacing;
            RB.Print(new Vector2i(x + (indent * 2), y + row), DemoUtil.IndexToRGB(fileColor), "GrassTopRight.png");
            row += rowSpacing;

            RB.SpriteSheetSet(0);
            RB.DrawSprite(mSpriteWater, new Vector2i(x + (indent * 2), y + row));
            row += mSpriteWater.Size.height + imageSpacing;
            RB.Print(new Vector2i(x + (indent * 2), y + row), DemoUtil.IndexToRGB(fileColor), "Water.png");
            row += rowSpacing;

            RB.Print(new Vector2i(x + indent, y + row), DemoUtil.IndexToRGB(folderColor), "Other/");
            row += rowSpacing;
            RB.Print(new Vector2i(x + (indent * 3), y + row), DemoUtil.IndexToRGB(folderColor), "...\n...\n...");

            // Draw packed sprite sheet
            RB.CameraSet(new Vector2i(-168, -172));
            RB.DrawRectFill(new Rect2i(x, y, RB.SpriteSheetSize().width + 4, RB.SpriteSheetSize().height + 4), DemoUtil.IndexToRGB(2));

            RB.SpriteSheetSet(1);
            for (int gx = 0; gx < 6; gx++)
            {
                for (int gy = 0; gy < 6; gy++)
                {
                    RB.DrawSprite(alphaSprite, new Vector2i(x + 2 + (gx * 16), y + 2 + (gy * 16)));
                }
            }

            RB.SpriteSheetSet(0);
            RB.DrawCopy(new Rect2i(0, 0, RB.SpriteSheetSize().width, RB.SpriteSheetSize().height), new Vector2i(x + 2, y + 2));

            Vector2i p0 = new Vector2i((RB.SpriteSheetSize().width / 2) + 6, 8);
            Vector2i p1 = new Vector2i(p0.x - 10, p0.y - 10);
            Vector2i p2 = new Vector2i(p0.x + 10, p0.y - 10);

            RB.DrawTriangleFill(p0, p1, p2, DemoUtil.IndexToRGB(5));
            RB.DrawRectFill(new Rect2i(p0.x - 6, p1.y - 10, 11, 10), DemoUtil.IndexToRGB(5));

            RB.CameraReset();
        }