private static void Init() { if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0) { throw new SdlException(nameof(SDL.SDL_Init)); } if (SDL_ttf.TTF_Init() != 0) { throw new SdlException(nameof(SDL_ttf.TTF_Init)); } _window = SDL.SDL_CreateWindow("Langton`s Ant", 0, 0, 640, 480, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN); if (_window == IntPtr.Zero) { throw new SdlException(nameof(SDL.SDL_CreateWindow)); } _renderer = SDL.SDL_CreateRenderer( _window, -1, SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC); if (_renderer == IntPtr.Zero) { throw new SdlException(nameof(SDL.SDL_CreateRenderer)); } _font = SDL_ttf.TTF_OpenFont(_fontPath, 14); KeydownHandler = new KeyHandler(); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_ESCAPE, () => _quit = true); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_F5, LoadWorld); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_F2, () => _speed -= 10); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_F3, () => _speed += 10); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_F4, () => _speed = 0); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_z, () => GetWorldRenderer().AddZoom(-10)); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_x, () => GetWorldRenderer().AddZoom(10)); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_c, () => GetWorldRenderer().ResetZoom()); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_RIGHT, () => GetWorldRenderer().MoveZoom(10, 0)); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_UP, () => GetWorldRenderer().MoveZoom(0, -10)); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_LEFT, () => GetWorldRenderer().MoveZoom(-10, 0)); KeydownHandler.Add(SDL.SDL_Keycode.SDLK_DOWN, () => GetWorldRenderer().MoveZoom(0, 10)); }