Example #1
0
        public void Execute()
        {
            if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_Init));
            }

            var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN);

            if (window == IntPtr.Zero)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow),
                                () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var renderer = SDL.SDL_CreateRenderer(
                window, -1,
                SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC);

            if (renderer == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(SDL.SDL_CreateRenderer),
                    () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var background = Resources.LoadTextureFromBitmap(Resources.GetFilePath(@"lesson2/background.bmp"), renderer);
            var image      = Resources.LoadTextureFromBitmap(Resources.GetFilePath(@"lesson2/image.bmp"), renderer);

            if (background == IntPtr.Zero || image == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(Resources.LoadTextureFromBitmap),
                    () => ReleaseAndQuit(window, renderer, background, image));
            }

            SDL.SDL_RenderClear(renderer);

            uint format;
            int  x, y, iW, iH, bW, bH, access;

            SDL.SDL_QueryTexture(background, out format, out access, out bW, out bH);
            SdlDrawing.RenderTexture(background, renderer, 0, 0);
            SdlDrawing.RenderTexture(background, renderer, bW, 0);
            SdlDrawing.RenderTexture(background, renderer, 0, bH);
            SdlDrawing.RenderTexture(background, renderer, bW, bH);

            SDL.SDL_QueryTexture(image, out format, out access, out iW, out iH);
            x = WIDTH / 2 - iW / 2;
            y = HEIGHT / 2 - iH / 2;

            SdlDrawing.RenderTexture(image, renderer, x, y);

            SDL.SDL_RenderPresent(renderer);
            SDL.SDL_Delay(5 * 1000);

            ReleaseAndQuit(window, renderer, background, image);
        }
        public void Execute()
        {
            if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_Init));
            }

            SDL_image.IMG_Init(SDL_image.IMG_InitFlags.IMG_INIT_PNG);

            if (SDL_ttf.TTF_Init() != 0)
            {
                SdlLogger.Fatal(nameof(SDL_ttf.TTF_Init));
            }

            var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN);

            if (window == IntPtr.Zero)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow),
                                () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var renderer = SDL.SDL_CreateRenderer(
                window, -1,
                SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC);

            if (renderer == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(SDL.SDL_CreateRenderer),
                    () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var font = SDL_ttf.TTF_OpenFont(Resources.GetFilePath("lesson6/long_pixel-7.ttf"), 16);

            if (font == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(Resources.LoadTextureFromImage),
                    () => ReleaseAndQuit(window, renderer, IntPtr.Zero, IntPtr.Zero));
            }

            var colorWhite = new SDL.SDL_Color();

            colorWhite.r = 255;
            colorWhite.g = 255;
            colorWhite.b = 255;

            var image = SdlDrawing.CreateTextureFromText(@"SDL2_TTF - крутота!", font, colorWhite, renderer);

            var quit = false;
            int x, y, iW = 100, iH = 100;

            x = WIDTH / 2 - iW / 2;
            y = HEIGHT / 2 - iH / 2;

            var e = new SDL.SDL_Event();

            while (!quit)
            {
                // event handling
                while (SDL.SDL_PollEvent(out e) > 0)
                {
                    if (e.type == SDL.SDL_EventType.SDL_QUIT)
                    {
                        quit = true;
                    }

                    if (e.type == SDL.SDL_EventType.SDL_KEYDOWN)
                    {
                        switch (e.key.keysym.sym)
                        {
                        case SDL.SDL_Keycode.SDLK_ESCAPE:
                            quit = true;
                            break;
                        }
                    }
                }

                // rendering
                SDL.SDL_RenderClear(renderer);

                SdlDrawing.RenderTexture(image, renderer, x, y);

                SDL.SDL_RenderPresent(renderer);
            }

            ReleaseAndQuit(window, renderer, font, image);
        }
        public void Execute()
        {
            if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_Init));
            }

            SDL_image.IMG_Init(SDL_image.IMG_InitFlags.IMG_INIT_PNG);

            var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN);

            if (window == IntPtr.Zero)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow),
                                () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var renderer = SDL.SDL_CreateRenderer(
                window, -1,
                SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC);

            if (renderer == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(SDL.SDL_CreateRenderer),
                    () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var image = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson5/image.png"), renderer);

            if (image == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(Resources.LoadTextureFromImage),
                    () => ReleaseAndQuit(window, renderer, IntPtr.Zero, image));
            }

            var quit = false;
            int x, y, iW = 100, iH = 100, useClip = 0;

            x = WIDTH / 2 - iW / 2;
            y = HEIGHT / 2 - iH / 2;

            var clips = new SDL.SDL_Rect[4];

            for (var i = 0; i < clips.Length; i++)
            {
                clips[i] = new SDL.SDL_Rect
                {
                    x = i / 2 * iW,
                    y = i % 2 * iH,
                    w = iW,
                    h = iH,
                };
            }

            var e = new SDL.SDL_Event();

            while (!quit)
            {
                // event handling
                while (SDL.SDL_PollEvent(out e) > 0)
                {
                    if (e.type == SDL.SDL_EventType.SDL_QUIT)
                    {
                        quit = true;
                    }

                    if (e.type == SDL.SDL_EventType.SDL_KEYDOWN)
                    {
                        switch (e.key.keysym.sym)
                        {
                        case SDL.SDL_Keycode.SDLK_LEFT:
                            useClip = useClip > 0 ? useClip - 1 : clips.Length - 1;
                            break;

                        case SDL.SDL_Keycode.SDLK_RIGHT:
                            useClip = useClip < clips.Length - 1 ? useClip + 1 : 0;
                            break;

                        case SDL.SDL_Keycode.SDLK_ESCAPE:
                            quit = true;
                            break;
                        }
                    }
                }

                // rendering
                SDL.SDL_RenderClear(renderer);

                SdlDrawing.RenderTexture(image, renderer, x, y, clips[useClip]);

                SDL.SDL_RenderPresent(renderer);
            }

            ReleaseAndQuit(window, renderer, IntPtr.Zero, image);
        }
Example #4
0
 public override void Render()
 {
     SdlDrawing.RenderTexture(_texture, _renderer, _target.X, _target.Y);
 }
Example #5
0
        public void Execute()
        {
            if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_Init));
            }

            SDL_image.IMG_Init(SDL_image.IMG_InitFlags.IMG_INIT_PNG);

            var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN);

            if (window == IntPtr.Zero)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow),
                                () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var renderer = SDL.SDL_CreateRenderer(
                window, -1,
                SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC);

            if (renderer == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(SDL.SDL_CreateRenderer),
                    () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var background = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson3/background.png"), renderer);
            var image      = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson3/image.png"), renderer);

            if (background == IntPtr.Zero || image == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(Resources.LoadTextureFromImage),
                    () => ReleaseAndQuit(window, renderer, background, image));
            }

            SDL.SDL_RenderClear(renderer);

            var  xTiles = WIDTH / TILE_SIZE;
            var  yTiles = HEIGHT / TILE_SIZE;
            uint format;
            int  x, y, iW, iH, access;

            for (var i = 0; i < xTiles * yTiles; i++)
            {
                x = (i % xTiles) * TILE_SIZE;
                y = (i / xTiles) * TILE_SIZE;

                SdlDrawing.RenderTexture(background, renderer, x, y, TILE_SIZE, TILE_SIZE);
            }

            SDL.SDL_QueryTexture(image, out format, out access, out iW, out iH);
            x = WIDTH / 2 - iW / 2;
            y = HEIGHT / 2 - iH / 2;

            SdlDrawing.RenderTexture(image, renderer, x, y);

            SDL.SDL_RenderPresent(renderer);
            SDL.SDL_Delay(5 * 1000);

            ReleaseAndQuit(window, renderer, background, image);
        }
        public void Execute()
        {
            if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_Init));
            }

            SDL_image.IMG_Init(SDL_image.IMG_InitFlags.IMG_INIT_PNG);

            var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN);

            if (window == IntPtr.Zero)
            {
                SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow),
                                () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var renderer = SDL.SDL_CreateRenderer(
                window, -1,
                SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC);

            if (renderer == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(SDL.SDL_CreateRenderer),
                    () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
            }

            var background = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson3/background.png"), renderer);
            var image      = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson4/image.png"), renderer);

            if (background == IntPtr.Zero || image == IntPtr.Zero)
            {
                SdlLogger.Fatal(
                    nameof(Resources.LoadTextureFromImage),
                    () => ReleaseAndQuit(window, renderer, background, image));
            }


            var  quit   = false;
            var  xTiles = WIDTH / TILE_SIZE;
            var  yTiles = HEIGHT / TILE_SIZE;
            uint format;
            int  x, y, iW, iH, access;
            var  e = new SDL.SDL_Event();

            while (!quit)
            {
                // event handling
                while (SDL.SDL_PollEvent(out e) > 0)
                {
                    if (e.type == SDL.SDL_EventType.SDL_QUIT)
                    {
                        quit = true;
                    }

                    if (e.type == SDL.SDL_EventType.SDL_KEYDOWN)
                    {
                        quit = true;
                    }

                    if (e.type == SDL.SDL_EventType.SDL_MOUSEBUTTONDOWN)
                    {
                        quit = true;
                    }
                }

                // rendering
                SDL.SDL_RenderClear(renderer);

                for (var i = 0; i < xTiles * yTiles; i++)
                {
                    x = (i % xTiles) * TILE_SIZE;
                    y = (i / xTiles) * TILE_SIZE;

                    SdlDrawing.RenderTexture(background, renderer, x, y, TILE_SIZE, TILE_SIZE);
                }

                SDL.SDL_QueryTexture(image, out format, out access, out iW, out iH);
                x = WIDTH / 2 - iW / 2;
                y = HEIGHT / 2 - iH / 2;

                SdlDrawing.RenderTexture(image, renderer, x, y);

                SDL.SDL_RenderPresent(renderer);
            }

            ReleaseAndQuit(window, renderer, background, image);
        }