Close() публичный Метод

Close (destroy) the window. The Window instance remains valid and you can call Create to recreate the window
public Close ( ) : void
Результат void
Пример #1
0
        public static void Main()
        {
            VideoMode videoMode = VideoMode.DesktopMode;
            videoMode.Width = 800;
            videoMode.Height = 600;
            using (RenderWindow renderWindow = new RenderWindow(videoMode, "SFML Test"))
            {
                renderWindow.SetFramerateLimit(60);

                Game.Window = renderWindow;
                Game.Init();

                renderWindow.Closed += (sender, e) =>
                {
                    renderWindow.Close();
                };

                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                while (renderWindow.IsOpen)
                {
                    renderWindow.DispatchEvents();

                    float dTime = stopwatch.ElapsedMilliseconds / 1000f;
                    stopwatch.Restart();
                    Game.ElapsedTime += dTime;

                    if (false && Game.Entities.OfType<Enemy>().Count() < 3)
                    {
                        Game.Entities.Add(new Enemy(Game.Player)
                        {
                            Position = Vector2.Random(renderWindow.Size.X, renderWindow.Size.Y)
                        });
                    }

                    if (Keyboard.IsKeyPressed(Keyboard.Key.Escape))
                    {
                        renderWindow.Close();
                    }

                    // Update code goes here
                    foreach (Entity entity in Game.Entities.ToArray())
                    {
                        entity.Update(dTime);
                    }

                    // Rendering code goes here
                    renderWindow.Clear();

                    foreach (Entity entity in Game.Entities.OrderBy(e => e.RenderPriority))
                    {
                        renderWindow.Draw(entity);
                    }
                    renderWindow.Display();
                }
                renderWindow.Close();
            }
        }
Пример #2
0
        public static void Main(string[] args)
        {
            var win = new RenderWindow(new VideoMode(800, 600), "Some Crappy Zombie Thing");
            win.Closed += (sender, e) => win.Close ();
            var curtime = DateTime.Now;
            double dt = 0;
            double frametime;
            win.SetVisible (true);
            EntityManager.Add (new RectangleTestEntity(true));
            EntityManager.Add (new DebugInfo());
            EntityManager.Add (new TileEntity("data/graphics/test_tileset.xml", 0, 1));
            EntityManager.Add (new TileEntity("data/graphics/test_tileset.xml", "45down", new Vector2f(35, 40), 1));
            Entity ent = new Entity();
            ent.OnDraw += (sender, e) => e.Surface.Draw (new Text("Loooooonnnnggg Teeeexxxttt") {Position = new Vector2f(700, 500)});
            EntityManager.Add (ent);
            EntityManager.InitializeWindow (win);

            while(win.IsOpen ())
            {
                win.DispatchEvents();
                EntityManager.Draw (win);
                win.Display ();
                frametime = (DateTime.Now-curtime).TotalMilliseconds;
                dt += frametime;
                while (dt >= EntityManager.TimeStep)
                {
                    //Console.WriteLine (dt.ToString ());
                    EntityManager.Update (dt, frametime);
                    dt -= EntityManager.TimeStep;
                }
                curtime = DateTime.Now;
            }
        }
Пример #3
0
        static int Main(string[] args)
        {
            // The Screen or Window
            VideoMode videoMode = new VideoMode(1024, 768);
            RenderWindow window = new RenderWindow(videoMode,
                "Learn SFML");
            window.Closed += new EventHandler(window_Closed);
            window.MouseButtonPressed += new EventHandler<MouseButtonEventArgs>(window_MouseButtonPressed);
            window.MouseMoved += new EventHandler<MouseMoveEventArgs>(window_MouseMoved);
            window.KeyPressed += new EventHandler<KeyEventArgs>(window_KeyPressed);

            Start();

            Console.Out.WriteLine("Engine Started Successfully!");

            while (window.IsOpen()
                && !quit)
            {
                window.DispatchEvents();

                // Draw
                currentScreen.Draw(window);
                window.Display();
            }
            window.Close();

            return 0;
        }
Пример #4
0
        public Game(uint width = 1365, uint height = 768)
        {
            if (!File.Exists(IniFileName))
            {
                MessageBox.Show(string.Format("Brak pliku {0}!", IniFileName));
                Environment.Exit(1);
            }

            ReadIniFile(IniFileName);

            Players = new Dictionary<int, PlayerInstance>();

            Width = width;
            Height = height;

            var settings = new ContextSettings { AntialiasingLevel = 8 };
            Window = new RenderWindow(new VideoMode(Width, Height), "Nano War", Styles.Close, settings);

            Window.Closed += (s, a) =>
                {
                    GameClient.GameClient.Dispose();
                    Window.Close();
                };
            Window.SetVerticalSyncEnabled(true);
            Window.SetKeyRepeatEnabled(false);

            StateMachine = new StateMachine();
            AudioManager = new AudioManager();
        }
Пример #5
0
        static void Initialize()
        {
            Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" + Environment.CurrentDirectory + "\\libs");
            dtClock = new Stopwatch();
            textFps = new Text("0", new Font(new FileStream("assets\\fonts\\arial.ttf", FileMode.Open, FileAccess.Read)));
            window = new RenderWindow(new VideoMode(1280, 768), "Test", Styles.Default);
            window.SetFramerateLimit(60);
            window.SetTitle("NATE");
            tiles = new TileManager("assets\\tilemaps\\rpgtiles.png", 32);
            iMap = new MapInterface();
            //map = new Map(new Vector2i(32, 32), ((int)tiles.image.Size.X / tiles.tileSize) * ((int)tiles.image.Size.Y / tiles.tileSize), true); -- for random
            //map = new Map(new Vector2i(32, 32), ((int)tiles.image.Size.X / tiles.tileSize) * ((int)tiles.image.Size.Y / tiles.tileSize), false); -- blank
            map = iMap.ReadMap("map1.ntm");
            
            scaling = new Vector2f(2, 2);
            textureCollection = new Texture[(tiles.image.Size.X / tiles.tileSize) * (tiles.image.Size.Y / tiles.tileSize)];
            camera = new Camera();
            camera.speed = 1000;

            window.Closed += (s, a) => window.Close();
            window.KeyPressed += (s, a) => { if (a.Code == Keyboard.Key.Z) { iMap.WriteMap("map0.ntm", map); } };
            window.MouseWheelMoved += (s, a) => { scaling.X += a.Delta * 0.075f; scaling.Y += a.Delta * 0.075f; };

            dtClock.Start();

            for (int i = 0; i < (tiles.image.Size.X / tiles.tileSize) * (tiles.image.Size.Y / tiles.tileSize); i++)
            {
                textureCollection[i] = tiles.GetTile(i);
                textureCollection[i].Smooth = false;
            }
        }
Пример #6
0
        static void Main(string[] args)
        {
            var videoMode = new VideoMode(1000, 700);
            var contextSettings = new ContextSettings(0, 0, 4);
            RenderWindow window = new RenderWindow(videoMode, "Luda Diaria", Styles.Default, contextSettings);
            window.SetActive(true);
            window.Closed += (sender, e) => window.Close();
            Global.Window = window;

            Randomizer.Generator = new Random(42);

            var input = InputManager.Instance;
            input.Init();

            StateManager.Instance.CurrentState = new LoadingState();

            var lastTick = DateTime.Now;
            const float maxTimeStep = 0.5f;

            while (window.IsOpen())
            {
                float dt = (float)((DateTime.Now - lastTick).TotalSeconds);
                lastTick = DateTime.Now;

                window.DispatchEvents();
                window.Clear(Color.Black);

                if (input.IsKeyPressed(Keyboard.Key.Escape))
                {
                    window.Close();
                }

                while (dt > 0)
                {
                    //---UPDATE
                    var deltatTime = dt < maxTimeStep ? dt : maxTimeStep;
                    StateManager.Instance.CurrentState.Update(deltatTime);
                    dt -= maxTimeStep;
                }
                //---DRAW

                StateManager.Instance.CurrentState.Draw(window, RenderStates.Default);
                window.Display();
            }
        }
Пример #7
0
        public Example()
        {
            // Create a TextDisplay to render onto our window
            _example = new TextDisplay(Width, Height);

            // Setup an SFML window
            _window = new RenderWindow(new VideoMode(Width * _example.CharacterWidth, Height * _example.CharacterHeight), "Texter Example", Styles.Close);
            _window.SetFramerateLimit(60);
            _window.Closed += (sender, e) => _window.Close();
        }
Пример #8
0
        public void Run()
        {
            TextureLoader.Init();

            Window = new RenderWindow(videoMode, title, Styles.Close);
            States = new RenderStates(RenderStates.Default);

            Window.Closed += (s, e) =>
            {
                Console.WriteLine("Closing...");
                Window.Close();
            };

            Window.SetVerticalSyncEnabled(true);

            defaultView = Window.DefaultView;
            gameView = Window.DefaultView;
            gameView.Viewport = new FloatRect(0, 0, .85f, .85f);

            BackgroundColor = new Color(100, 149, 237); // dat cornflower blue
            Tilemap = new Tilemap(this);

            SelectedTileID = 1;

            var timer = new Stopwatch();
            while (Window.IsOpen)
            {
                timer.Restart();

                Window.DispatchEvents();

                var mouse = Mouse.GetPosition(Window);

                //if (Mouse.IsButtonPressed(Mouse.Button.Right))
                //    gameView.Move(new Vector2f(prevMouse.X - mouse.X, prevMouse.Y - mouse.Y));

                Tilemap.Update(Frametime);

                Window.Clear(BackgroundColor);

                Window.SetView(gameView);
                Tilemap.Draw(Window, States);
                Window.SetView(defaultView);

                Debug.Draw(Window);

                Window.Display();

                prevMouse = mouse;

                timer.Stop();
                Frametime = (float)timer.Elapsed.TotalMilliseconds;
                Window.SetTitle($"{title} ({(1d / timer.Elapsed.TotalSeconds):0}fps)");
            }
        }
Пример #9
0
        public static void Main(string[] args)
        {
            Window = new RenderWindow(new VideoMode(640, 480), "", Styles.Close);
            Window.SetFramerateLimit(60);

            Window.Closed += (sender, eventArgs) => Window.Close();

            Window.Resized += (sender, eventArgs) =>
            {
                var view = new View();
                view.Size = new Vector2f(eventArgs.Width, eventArgs.Height);
                view.Center = view.Size / 2;
                Window.SetView(view);
            };

            Machine = new VirtualMachine(512 * 1024);

            var prog = File.ReadAllBytes("bios.bin");
            for (var i = 0; i < prog.Length; i++)
                Machine.Memory[i] = prog[i];

            var kbd = new Devices.Keyboard(0x02, Window);
            Machine.Attach(kbd);

            var display = new Devices.Display(0x06, Machine, Window);
            Machine.Attach(display);

            var hdd = new Devices.HardDrive(0x08, "disk.img");
            Machine.Attach(hdd);

            var running = true;

            var stepThread = new Thread(() =>
            {
                while (running)
                {
                    Machine.Step();
                }
            });

            stepThread.Start();

            while (Window.IsOpen())
            {
                Window.DispatchEvents();

                Window.Clear();
                Window.Draw(display);
                Window.Display();
            }

            running = false;
            stepThread.Join();
            Machine.Dispose();
        }
Пример #10
0
        public static void Loop()
        {
            gameWindow = new RenderWindow(new VideoMode(WindowWidth, WindowHeight), WindowTitle);
            gameWindow.Closed += (sender, args) => gameWindow.Close();

            while (gameWindow.IsOpen()) {
                gameWindow.DispatchEvents();
                gameWindow.Clear();

                starfield.Draw(ref gameWindow);
                player.Draw(ref gameWindow);

                gameWindow.Display();
            }
        }
Пример #11
0
        public static void Main(string[] args)
        {
            RenderWindow window = new RenderWindow(new VideoMode(1280, 720), "Titan");
            GameWorld game = new GameWorld();

            game.createWorld();
            window.Closed += (sender, eventArgs) => window.Close();
            window.SetFramerateLimit(60);

            while (window.IsOpen())
            {
                window.DispatchEvents();
                game.update(window);
                game.render(window);
                window.Display();
            }
        }
Пример #12
0
        static void Main(string[] args)
        {
            Window = new RenderWindow(new VideoMode(1280, 720), "Collapse");
            Window.SetFramerateLimit(60);
            Window.Closed += (sender, eventArgs) => Window.Close();

            Map = new TileMap(200, 90);
            for (var y = 85; y < 100; y++)
            {
                for (var x = 0; x < 200; x++)
                {
                    Map[x, y] = Tile.Floor;
                }
            }

            Window.MouseMoved += (sender, eventArgs) =>
            {
                var mousePosF = Window.MapPixelToCoords(new Vector2i(eventArgs.X, eventArgs.Y));
                var mousePos = new Vector2i((int)mousePosF.X / TileSize, (int)mousePosF.Y / TileSize);

                if (Mouse.IsButtonPressed(Mouse.Button.Left))
                {
                    Map[mousePos.X, mousePos.Y] = Tile.Block;
                }

                if (Mouse.IsButtonPressed(Mouse.Button.Right))
                {
                    Map[mousePos.X, mousePos.Y] = Tile.None;
                }

                if (Mouse.IsButtonPressed(Mouse.Button.Middle))
                {
                    Map[mousePos.X, mousePos.Y] = Tile.Floor;
                }
            };

            while (Window.IsOpen())
            {
                Window.DispatchEvents();

                Window.Clear(new Color(100, 149, 237));
                Window.Draw(Map);
                Window.Display();
            }
        }
Пример #13
0
        public static void Main(string[] args)
        {
            RenderWindow window = new RenderWindow(new VideoMode(1280, 720), "SFML Window");
            window.Closed += (sender, eventArgs) => window.Close();

            while (window.IsOpen())
            {
                window.DispatchEvents();

                // TODO: Insert Update Code Here

                window.Clear(CornflowerBlue);

                // TODO: Insert Draw Code Here

                window.Display();
            }
        }
Пример #14
0
        public static void Initialize()
        {
            var style = Styles.Titlebar | Styles.Close;
            if (GameOptions.Resizable)
                style |= Styles.Resize;

            size = new Vector2f(GameOptions.Width, GameOptions.Height);

            Window = new RenderWindow(new VideoMode(GameOptions.Width, GameOptions.Height), GameOptions.Caption, style);
            Window.SetFramerateLimit(GameOptions.Framerate);
            Window.SetVerticalSyncEnabled(GameOptions.Vsync);

            if (GameOptions.Icon != "")
            {
                Texture texture = Assets.LoadTexture(GameOptions.Icon);
                Window.SetIcon(texture.Size.X, texture.Size.Y, texture.CopyToImage().Pixels);
            }

            Window.Closed += (sender, args) => Window.Close();
            Window.Resized += (sender, args) => Resize(new Vector2f(args.Width, args.Height));
            Window.MouseButtonPressed += (sender, args) => DispatchEvent(new MouseButtonInputArgs(args.Button, true, args.X, args.Y));
            Window.MouseButtonReleased += (sender, args) => DispatchEvent(new MouseButtonInputArgs(args.Button, false, args.X, args.Y));
            Window.MouseWheelMoved += (sender, args) => DispatchEvent(new MouseWheelInputArgs(args.Delta, args.X, args.Y));
            Window.MouseMoved += (sender, args) => DispatchEvent(new MouseMoveInputArgs(args.X, args.Y));
            Window.TextEntered += (sender, args) => DispatchEvent(new TextInputArgs(args.Unicode));

            Window.KeyPressed += (sender, args) =>
            {
                if (args.Code == Keyboard.Key.Unknown || keyStates[(int)args.Code]) // repeated key press
                    return;
                keyStates[(int)args.Code] = true;
                DispatchEvent(new KeyInputArgs(args.Code, true, args.Control, args.Shift));
            };

            Window.KeyReleased += (sender, args) =>
            {
                if (args.Code != Keyboard.Key.Unknown)
                    keyStates[(int)args.Code] = false;
                DispatchEvent(new KeyInputArgs(args.Code, false, args.Control, args.Shift));
            };
        }
		/// <summary>
		/// The list of actions performed for a key pressed
		/// </summary>
		public static void KeyPressedActions(RenderWindow window, KeyEventArgs keyPressed)
		{
			switch (keyPressed.Code)
			{
				case Keyboard.Key.Escape:
					window.Close();
					break;

				case Keyboard.Key.Delete:
					/*You can insert actions here for that particular case*/
					break;

				case Keyboard.Key.A:
					/*You can insert actions here for that particular case*/
					break;

				/*Etc...*/

				default:
					break;
			}
		}
Пример #16
0
        static void Main(string[] args)
        {
            Log.GlobalLevel = Log.Level.Debug;

            RenderWindow app = new RenderWindow(new VideoMode(800, 600), "HP!",
                Styles.Default, new ContextSettings(0, 0, 4));
            app.SetFramerateLimit(60);
            app.Closed += delegate { app.Close(); };
            app.SetVisible(true);
            app.SetActive(true);

            L.I("Assuming assets in \"assets\"");
            Assets assets = new Assets("assets");
            LoadAnimations(assets);

            Level level1 = assets.Level("level1.json");
            Game game = new Game(assets, level1);
            var view = new View();

            int lastFrameTime = Environment.TickCount;
            while (app.IsOpen) {
                app.DispatchEvents();

                float aspect = (float)app.Size.X / app.Size.Y;
                float targetWidth = 20, targetHeight = targetWidth / aspect;
                view.Reset(new FloatRect(0, 0, targetWidth, targetHeight));
                app.SetView(view);

                int ticks = Environment.TickCount;
                float delta = (ticks - lastFrameTime) / 1000F;
                lastFrameTime = ticks;

                game.Update(delta);
                game.Render(app);

                app.Display();
            }
        }
Пример #17
0
        static void Main(string[] args)
        {
            Texture textureBack = new Texture(File.ReadAllBytes(@"assets/back.png"));

            textureBack.Smooth = true;

            Sprite spriteBack = new Sprite(textureBack, new IntRect(0, 0, 800, 500));

            Texture textureLock = new Texture(File.ReadAllBytes(@"assets/lock.png"));

            textureLock.Smooth = true;

            Sprite spriteLock = new Sprite(textureLock, new IntRect(0, 0, 80, 80));

            spriteLock.Position = new Vector2f(76, 68);

            icons = new List<Sprite>();

            for (int index = 0; index < 15; index++)
            {
                int col = index % 5;

                int row = (index - col) / 5;

                Texture textureIcon = new Texture(File.ReadAllBytes(String.Format(@"assets/buttons/{0:00}.png", index + 1)));

                textureIcon.Smooth = true;

                Sprite spriteIcon = new Sprite(textureIcon, new IntRect(0, 0, 72, 72));

                spriteIcon.Position = new Vector2f(80 + col * 72 + col * 70, 72 + row * 72 + row * 70);

                icons.Add(spriteIcon);
            }

            ContextSettings context = new ContextSettings();

            context.DepthBits = 32;

            RenderWindow window = new RenderWindow(new VideoMode(800, 500), String.Empty, Styles.Default, context);

            window.SetActive();

            window.SetVisible(true);

            window.SetKeyRepeatEnabled(true);

            window.SetMouseCursorVisible(true);

            window.SetVerticalSyncEnabled(false);

            window.Closed += new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    window.Close();

                    window.Dispose();
                }
            );

            window.GainedFocus += new EventHandler(
                delegate(object sender, EventArgs e)
                {

                }
            );

            window.LostFocus += new EventHandler(
                delegate(object sender, EventArgs e)
                {

                }
            );

            window.KeyPressed += new EventHandler<KeyEventArgs>(
                delegate(object sender, KeyEventArgs e)
                {
                    if (e.Code == Keyboard.Key.Escape)
                    {
                        /*
                        sound.Stop();

                        sound.Dispose();

                        buffer.Dispose();
                        */

                        window.Close();

                        window.Dispose();
                    }

                    if (e.Code == Keyboard.Key.Right)
                    {
                        if (col < 4)
                        {
                            col += 1;
                        }
                    }

                    if (e.Code == Keyboard.Key.Left)
                    {
                        if (col > 0)
                        {
                            col -= 1;
                        }
                    }

                    if (e.Code == Keyboard.Key.Up)
                    {
                        if (row > 0)
                        {
                            row -= 1;
                        }
                    }

                    if (e.Code == Keyboard.Key.Down)
                    {
                        if (row < 2)
                        {
                            row += 1;
                        }
                    }

                    spriteLock.Position = new Vector2f(80 + col * 72 + col * 70 - 4, 72 + row * 72 + row * 70 - 4);
                }
            );

            window.KeyReleased += new EventHandler<KeyEventArgs>(
                delegate(object sender, KeyEventArgs e)
                {

                }
            );

            window.TouchBegan += new EventHandler<TouchEventArgs>(
                delegate(object sender, TouchEventArgs e)
                {

                }
            );

            window.TouchEnded += new EventHandler<TouchEventArgs>(
                delegate(object sender, TouchEventArgs e)
                {

                }
            );

            window.TouchMoved += new EventHandler<TouchEventArgs>(
                delegate(object sender, TouchEventArgs e)
                {

                }
            );

            window.JoystickConnected += new EventHandler<JoystickConnectEventArgs>(
                delegate(object sender, JoystickConnectEventArgs e)
                {

                }
            );

            window.JoystickDisconnected += new EventHandler<JoystickConnectEventArgs>(
                delegate(object sender, JoystickConnectEventArgs e)
                {

                }
            );

            window.JoystickButtonPressed += new EventHandler<JoystickButtonEventArgs>(
                delegate(object sender, JoystickButtonEventArgs e)
                {
                    //File.AppendAllText(@"joystick.log", Convert.ToString(e.Button) + ":JoystickButtonPressed\n");

                    // A		0
                    // B		1
                    // X		2
                    // Y		3
                    // BACK		6
                    // START	7
                }
            );

            window.JoystickButtonReleased += new EventHandler<JoystickButtonEventArgs>(
                delegate(object sender, JoystickButtonEventArgs e)
                {
                    //File.AppendAllText(@"joystick.log", Convert.ToString(e.Button) + ":JoystickButtonReleased\n");
                }
            );

            window.JoystickMoved += new EventHandler<JoystickMoveEventArgs>(
                delegate(object sender, JoystickMoveEventArgs e)
                {
                    //File.AppendAllText(@"joystick.log", Convert.ToString(e.Axis) + ":" + Convert.ToString(e.JoystickId) + ":" + Convert.ToString(e.Position) + "\n");

                    // RIGHT	PovX	+100
                    // LEFT		PovX	-100
                    if (e.Axis == Joystick.Axis.PovX)
                    {
                        if (e.Position.Equals(+100.0f))
                        {
                            // RIGHT
                            if (col < 4)
                            {
                                col += 1;
                            }
                        }

                        if (e.Position.Equals(-100.0f))
                        {
                            // LEFT
                            if (col > 0)
                            {
                                col -= 1;
                            }
                        }
                    }

                    // UP		PovY	+100
                    // DOWN		PovY	-100
                    if (e.Axis == Joystick.Axis.PovY)
                    {
                        if (e.Position.Equals(+100.0f))
                        {
                            // UP
                            if (row > 0)
                            {
                                row -= 1;
                            }
                        }

                        if (e.Position.Equals(-100.0f))
                        {
                            // DOWN
                            if (row < 2)
                            {
                                row += 1;
                            }
                        }
                    }

                    spriteLock.Position = new Vector2f(80 + col * 72 + col * 70 - 4, 72 + row * 72 + row * 70 - 4);
                }
            );

            while (window.IsOpen)
            {
                window.DispatchEvents();

                window.Clear();

                window.Draw(spriteBack);

                foreach (Sprite icon in icons)
                {
                    window.Draw(icon);
                }

                window.Draw(spriteLock);

                window.Display();
            }
        }
Пример #18
0
        public static void Initialize()
        {
            var style = Styles.Titlebar | Styles.Close;
            size = new Vector2f(Configuration.Width, Configuration.Height);

            Window = new RenderWindow(new VideoMode(Configuration.Width, Configuration.Height), "Open Empires", style);
            Window.SetFramerateLimit(Configuration.Framerate);
            Window.SetVerticalSyncEnabled(Configuration.VSync);

            Window.Closed += (sender, args) => Window.Close();
            Window.Resized += (sender, args) => Resize(new Vector2f(args.Width, args.Height));
            /*Window.MouseButtonPressed += (sender, args) => DispatchEvent(new MouseButtonInputArgs(args.Button, true, args.X, args.Y));
            Window.MouseButtonReleased += (sender, args) => DispatchEvent(new MouseButtonInputArgs(args.Button, false, args.X, args.Y));
            Window.MouseWheelMoved += (sender, args) => DispatchEvent(new MouseWheelInputArgs(args.Delta, args.X, args.Y));
            Window.MouseMoved += (sender, args) => DispatchEvent(new MouseMoveInputArgs(args.X, args.Y));*/

            Window.MouseMoved += new EventHandler<MouseMoveEventArgs>(Window_MouseMoved);
            Window.MouseWheelMoved += (sender, args) =>
            {
                /* Mouse wheel zoom implementation where the view will zoom
                 * towards the area the cursor is pointing to
                 */
                var mousePos = Mouse.GetPosition(Window);
                float relX = (float) mousePos.X / Window.Size.X - 0.5f;
                float relY = (float) mousePos.Y / Window.Size.Y - 0.5f;

                GameView.Move(new Vector2f {
                    X = relX * GameView.Size.X,
                    Y = relY * GameView.Size.Y
                });

                GameView.Zoom(1 - (args.Delta * 0.1f));

                GameView.Move(new Vector2f {
                    X = -relX * GameView.Size.X,
                    Y = -relY * GameView.Size.Y
                });
            };

            Window.KeyPressed += (sender, args) =>
            {
                KeyStates[(int)args.Code] = true;
            };

            Window.KeyReleased += (sender, args) =>
            {
                KeyStates[(int)args.Code] = false;
            };

            Blendomatic.ReadBlendomatic(new System.IO.FileStream("blendomatic.dat", System.IO.FileMode.Open));
            map = new Map();

            GameView = new View(DefaultView);
            GameView.Center = new Vector2f((map.Width/2)*96, 0);

            var blend = Blendomatic.BlendingModes[2];
            var tile = blend.Tiles[12];

            var img = new Image(97, 49);
            for (var y = 0; y < img.Size.Y; y++)
                for (var x = 0; x < img.Size.X; x++)
                    img.SetPixel((uint)x, (uint)y, new Color(255, 0, 0, 0));

            var i = 0;
            for (var y = 0; y < img.Size.X; y++)
            {
                var bytesPerRow = y < 24 ? 1 + (4 * y) : 97 - (4 * (y - 24));

                var startX = 48 - (bytesPerRow / 2);
                for (var x = 0; x < bytesPerRow; x++)
                    img.SetPixel((uint)(startX + x), (uint)y, new Color(0, 0, 0, tile[i++]));
            }

            var slpFile = new SLPFile();
            slpFile.LoadFile("textures/ter15002.slp");

            var spritewidth = slpFile.GetFrame(0).m_Width;
            var spriteheight = slpFile.GetFrame(0).m_Height;

            var imgg = new Image((uint)spritewidth, (uint)(spriteheight ), slpFile.GetFrame(0).GetRGBAArray());

            for (var y = 0; y < imgg.Size.Y; y++)
                for (var x = 0; x < imgg.Size.X; x++)
                {
                    var col = imgg.GetPixel((uint)x, (uint)y);
                    col.A = (byte)(Math.Min(255, (128-img.GetPixel((uint)x, (uint)y).A)*2));

                    if (img.GetPixel((uint)x, (uint)y).R == 255)
                        col.A = 0;

                    imgg.SetPixel((uint)x, (uint)y, col);
                }

            selected = new Sprite(new Texture(imgg));

            /* blend sand to forest now */

            var blend2 = Blendomatic.BlendingModes[2];
            var tile2 = blend2.Tiles[12];

            var img2 = new Image(97, 49);
            for (var y = 0; y < img2.Size.Y; y++)
                for (var x = 0; x < img2.Size.X; x++)
                    img2.SetPixel((uint)x, (uint)y, new Color(255, 0, 0, 0));

            var i2 = 0;
            for (var y = 0; y < img.Size.X; y++)
            {
                var bytesPerRow = y < 24 ? 1 + (4 * y) : 97 - (4 * (y - 24));

                var startX = 48 - (bytesPerRow / 2);
                for (var x = 0; x < bytesPerRow; x++)
                    img2.SetPixel((uint)(startX + x), (uint)y, new Color(0, 0, 0, tile[i2++]));
            }

            var slpFile2 = new SLPFile();
            slpFile2.LoadFile("textures/ter15017.slp");

            var spritewidth2 = slpFile2.GetFrame(0).m_Width;
            var spriteheight2 = slpFile2.GetFrame(0).m_Height;

            var imgg2 = new Image((uint)spritewidth2, (uint)(spriteheight2), slpFile2.GetFrame(0).GetRGBAArray());

            for (var y = 0; y < imgg2.Size.Y; y++)
                for (var x = 0; x < imgg2.Size.X; x++)
                {
                    var col = imgg2.GetPixel((uint)x, (uint)y);
                    col.A = (byte)(Math.Min(255, (128 - img.GetPixel((uint)x, (uint)y).A) * 2));

                    if (img2.GetPixel((uint)x, (uint)y).R == 255)
                        col.A = 0;

                    imgg2.SetPixel((uint)x, (uint)y, col);
                }

            selected2 = new Sprite(new Texture(imgg2));

            EntManager = new EntityManager();
        }
Пример #19
0
        private static void LoadContentInitialize()
        {
            window = new RenderWindow(
                new VideoMode(800, 600), "Project Title");

            windowSize = new Vector2f(800, 600);
            window.SetFramerateLimit(60);
            window.Closed += (a, b) => { window.Close(); };

            camera2D = new View(cameraPos, new Vector2f(640, 480));



            tempIdleN = new Sprite(new Texture("Content/tempIdleN.png"));
            tempIdleS = new Sprite(new Texture("Content/tempIdleS.png"));
            tempIdleEW = new Sprite(new Texture("Content/tempIdleEW.png"));
            background = new Sprite(new Texture("Content/background.png"));
            basicLevelDec = new Sprite(new Texture("Content/basicLevel_decorMap.png"));


            basicLevelCol = new Texture("Content/basicLevel_collisionMap.png");
            backgroundTexture = basicLevelCol;
            map = backgroundTexture.CopyToImage();

            font = new Font("Content/Font1.ttf");

            click = new SoundBuffer("Content/click.wav");
            SaD = new SoundBuffer("Content/SaD.wav");
            fart = new SoundBuffer("Content/fart.wav");
            crunch = new SoundBuffer("Content/crunch.wav");

            window.TextEntered += (object sender, TextEventArgs e) =>
            {

                if (Keyboard.IsKeyPressed(Keyboard.Key.Back))
                {
                    if (clientPlayer.textCapture.Length > 0)
                        clientPlayer.textCapture = clientPlayer.textCapture.Substring(0, clientPlayer.textCapture.Length - 1);
                }
                else if (Keyboard.IsKeyPressed(Keyboard.Key.Return))
                {
                }
                else if (Keyboard.IsKeyPressed(Keyboard.Key.LControl))
                {
                }
                else if (Keyboard.IsKeyPressed(Keyboard.Key.Tab))
                {
                }
                else
                {
                    clientPlayer.textCapture += e.Unicode;
                }

            };

            window.Closed += (object sender, EventArgs e) =>
            {
                client.Disconnect("Exit");
                System.Threading.Thread.Sleep(100);

            };

        }
Пример #20
0
        public static void Main()
        {
            Window = new RenderWindow(new VideoMode(1280, 720), "", Styles.Default, new ContextSettings(0, 0, 4));
            Window.SetFramerateLimit(FrameRate);

            #region Event Handlers
            Window.Closed += (sender, eventArgs) => Window.Close();

            Window.GainedFocus += (sender, args) => HasFocus = true;
            Window.LostFocus += (sender, args) => HasFocus = false;

            Window.Resized += (sender, args) =>
            {
                if (args.Width < MinWidth || args.Height < MinHeight)
                {
                    Window.Size = new Vector2u(Math.Max(args.Width, MinWidth), Math.Max(args.Height, MinHeight));
                    return;
                }

                HudCamera = new Camera(new FloatRect(0, 0, args.Width, args.Height));
                Camera = new Camera(new FloatRect(0, 0, args.Width, args.Height));
                Camera.Zoom = Zoom;
            };

            Window.MouseButtonPressed += (sender, args) => DispatchEvent(new MouseButtonInputArgs(args.Button, true, args.X, args.Y));
            Window.MouseButtonReleased += (sender, args) => DispatchEvent(new MouseButtonInputArgs(args.Button, false, args.X, args.Y));
            Window.MouseWheelMoved += (sender, args) => DispatchEvent(new MouseWheelInputArgs(args.Delta, args.X, args.Y));
            Window.MouseMoved += (sender, args) => DispatchEvent(new MouseMoveInputArgs(args.X, args.Y));
            Window.TextEntered += (sender, args) => DispatchEvent(new TextInputArgs(args.Unicode));
            Window.KeyPressed += (sender, args) => DispatchEvent(new KeyInputArgs(args.Code, true, args.Control, args.Shift));
            Window.KeyReleased += (sender, args) => DispatchEvent(new KeyInputArgs(args.Code, false, args.Control, args.Shift));
            #endregion

            HasFocus = true;
            HudCamera = new Camera(Window.DefaultView);
            Camera = new Camera(Window.DefaultView);
            Camera.Zoom = Zoom;

            Font = new Font("Data/OpenSans-Regular.ttf");

            SetState(new Game());

            var watch = Stopwatch.StartNew();
            var accumulator = 0f;

            while (Window.IsOpen())
            {
                var dt = (float)watch.Elapsed.TotalSeconds;
                watch.Restart();
                accumulator += dt;

                dt *= TimeScale;

                Window.DispatchEvents();
                State.Update(dt);

                if (accumulator >= FrameTime)
                {
                    accumulator -= FrameTime;

                    Camera.Apply(Window);
                    State.Draw(Window);

                    HudCamera.Apply(Window);
                    State.DrawHud(Window);

                    Assets.ResetSoundCounters();
                }

                Window.Display();
            }
        }
Пример #21
0
        private static void UpdateDraw(RenderWindow window)
        {
            //float ratio = 800 / 600;
            window.Size = new Vector2u(800u, 600u);

            window.Clear(Color.Black);
            window.DispatchEvents();
            UpdateSoundInstances();

            Input.Update();
            updateWorldMousePos();
            gamestate.Update();

            gamestate.Draw();
            window.SetView(GuiCamera);

            window.SetView(Camera);

            window.Display();

            Input.refreshState(); //Always call last

            if (Input.isKeyDown(Keyboard.Key.Escape))
            {
                if (dm.Mailman != null)
                {
                    dm.Close();
                }
                window.Close();
            }
        }
Пример #22
0
		public static void Main(string[] args) {

			//Inicjalizacja okna
			window = new RenderWindow(new VideoMode(1280, 720, 32), "Praca inzynierska", Styles.Close);
			window.Closed += (o, e) => window.Close();
			window.KeyPressed += (o, e) => { if ( e.Code == Keyboard.Key.Escape ) { window.Close(); } };
			origWindowSize = window.Size;

			DisplayTitle();

			WriteLine("Title displayed!");

			//inicjalizacja mapy
			WriteLine("Start map creating!");
			const int mapSize = 50;
			map = new Map.Map(mapSize, new MapSeed((int)(mapSize / 5.0), (int)(mapSize / 10.0), (int)(mapSize / 15.0)));

			window.MouseMoved += map.Map_MouseMoved;
			window.MouseWheelScrolled += map.Map_MouseWheelScrolled;
			WriteLine("Map created!");

			WriteLine("Start creating GUI!");
			//Tworzenie GUI
			gui = new GUI() { new Button {
											   Name = "Close Button",
											   IsActive = true,
											   ButtonTexture = new Sprite(NormalButtonTexture),
											   ButtonText = new Text("Zamknij!", font) {
																						   CharacterSize = 20,
																						   Color = Color.Black
																					   },
											   Position = new Vector2f(20, window.Size.Y - 60),
											   MouseButtonPressedHandler = (s, e) => {
																			   if ( Mouse.IsButtonPressed(Mouse.Button.Left) ) window.Close();
																		   }
										   },
								new BuildButton() {
													  Name = "Build Button",
													  IsActive = true,
													  ButtonTexture = new Sprite(NormalButtonTexture),
													  ButtonText = new Text("Buduj", font) {
																							   CharacterSize = 20,
																							   Color = Color.Black
																						   },
													  Position = new Vector2f(20, window.Size.Y - 120)
												  }
							};

			window.KeyPressed += gui.Window_KeyPressed;
			window.KeyReleased += gui.Window_KeyReleased;
			window.MouseButtonPressed += gui.Window_MouseButtonPressed;
			window.MouseButtonReleased += gui.Window_MouseButtonReleased;
			window.MouseMoved += gui.Window_MouseMoved;
			window.MouseWheelScrolled += gui.Window_MouseWheelScrolled;
			WriteLine("GUI created!");

			WriteLine("Start creating colony!");
			Colony colony = new Colony(map, window);
			map.UpdateTime += colony.UpdateTime;
			colony.AddColonist(new Men() {
											 Name = "Adam",
											 MoveSpeed = 5,
											 Location = map[10, 20],
											 TextureSelected = new Sprite(MenTextureSelected),
											 TextureNotSelected = new Sprite(MenTexture),
											 IsSelected = false,
											 HP = new FuzzyHP(50f) {
																	   MaxHP = 50f
																   },
											 Strength = 5f,
											 Mining = 3f,
											 Constructing = 4f,
											 Accuracy = 4.5f,
										 });
			colony.AddConstruct(new Construct(2, 3, map[3, 3], Color.Magenta) {
																				  MaxConstructPoints = 200
																			  });

			WriteLine("Colony created!");
			
			/*WriteLine("Start creating path!");
			WriteLine("Searching for start and end point!");
			//tymczasowe sprawdzenie wyznaczanie sciezki
			IList<MapField> path;
		    MapField start = null,
		             stop  = null;

            //Wyszukanie pierwszego dostepnego pola
            foreach ( MapField field in map.Where(field => field.IsAvaliable) ) {
	            start = field;
	            break;
            }

            //wyszukanie ostatniego dostepnego pola
            foreach ( MapField field in map.Reverse().Where(field => field.IsAvaliable) ) {
	            stop = field;
	            break;
            }
			WriteLine("Sstart and end point found!");

			try { //próba wyznaczenia sciezki miedzy wyznaczonymi polami
                path = PathFinding.AStar(start, stop, PathFinding.Metric.EuclideanDistance);
			} catch ( FieldNotAvaliableException ) {
				WriteLine($"Texture [{start.MapPosition.X}, {start.MapPosition.Y}] is avaliable = {start.IsAvaliable}");
                WriteLine($"Texture [{stop.MapPosition.X}, {stop.MapPosition.Y}] is avaliable = {stop.IsAvaliable}");
                WriteLine("But path between this field dose not exists!");
				path = null;
			}
			WriteLine("Path created!");*/

			WriteLine("Start creating herd!");
			MapField mapField;
			int center = map.Size / 2;
			do {
				int x = rand.Next(center - center / 2, center + center / 2);
				int y = rand.Next(center - center / 2, center + center / 2);
				mapField = map[x, y];
			} while ( !mapField.IsAvaliable );
			WriteLine($"Start from - {mapField}");

			Herd herd = new Herd(mapField, 5);

			map.UpdateTime += herd.UpdateTime;
			foreach ( Animal animal in herd ) { map.UpdateTime += animal.UpdateTime; }
			WriteLine("Herd created!");

			time.Start();

            //Główna petla gry
            while ( window.IsOpen ) {
				window.DispatchEvents();
				window.Clear();

				time.Stop();

				map.Update(time.Elapsed);

				time.Restart();

				window.Draw(map);

				/*if ( path != null ) {
					foreach ( Sprite val in path.Select(field => new Sprite(SelectedTexture) {
																	 Position = field.ScreenPosition
																 }) ) {
						window.Draw(val);
					}
				}*/

				window.Draw(colony);

	            window.Draw(herd);
	            //window.Draw(an);

				window.Draw(gui);

				window.Display();
			}
		}
Пример #23
0
        private static void LoadContentInitialize()
        {
            Char1Model = new Model();
            Char1Model.name = "Character_1_Model";
            Char1Model.gibArmFile = "gibArm.png";
            Char1Model.gibBodyFile = "gibBody.png";
            Char1Model.gibHeadFile = "gibHead.png";
            Char1Model.gibLowerLegFile = "gibLowerLeg.png";
            Char1Model.gibUpperLegFile = "gibUpperLeg.png";
            Char1Model.idleFile = "idle.png";
            Char1Model.jumpDownFile = "jumpDown.png";
            Char1Model.jumpUpFile = "jumpUp.png";
            Char1Model.runFile = "run.png";
            Char1Model.pistolHand = "pistolHand.png";

            Char2Model = new Model();
            Char2Model.name = "Character_2_Model";
            Char2Model.gibArmFile = "char2_gibArm.png";
            Char2Model.gibBodyFile = "char2_gibBody.png";
            Char2Model.gibHeadFile = "char2_gibHead.png";
            Char2Model.gibLowerLegFile = "char2_gibLowerLeg.png";
            Char2Model.gibUpperLegFile = "char2_gibUpperLeg.png";
            Char2Model.idleFile = "char2_idle.png";
            Char2Model.jumpDownFile = "char2_jumpDown.png";
            Char2Model.jumpUpFile = "char2_jumpUp.png";
            Char2Model.runFile = "char2_run.png";
            Char2Model.pistolHand = "char2_pistolHand.png";

            window = new RenderWindow(
                new VideoMode(800, 600), "Project Iris", Styles.Resize);

            window.SetFramerateLimit(60);
            window.SetMouseCursorVisible(false);
            window.Closed += (o, e) =>
            {
                dm.Close();
                window.Close();
            };

            window.GainedFocus += (o, e) =>
            {
                Input.isActive = true;
            };
            window.LostFocus += (o, e) =>
            {
                Input.isActive = false;
            };

            Camera = new View(window.DefaultView);
            Camera.Size = new Vector2f(800 / 2, 600 / 2);
            GuiCamera = new View(window.DefaultView);
            GuiCamera.Size = new Vector2f(800 / 2, 600 / 2);
            soundInstances = new List<SoundInstance>() { };
            dm = new Deathmatch();
            mm = new Menu();
            gamestate = mm;
        }
Пример #24
0
 public World()
 {
     Window = new RenderWindow(new VideoMode(800, 600, 32), "ur a faget", Styles.Default);
     Window.Closed += (s, e) => Window.Close();
 }
Пример #25
0
        static void Main()
        {
            window = new RenderWindow(new VideoMode(1280, 720), "", Styles.Close);
            window.SetFramerateLimit(60);
            window.Closed += (sender, eventArgs) => window.Close();

            shipTex = new Texture("Ship.png");
            asteroidTex = new Texture("Asteroid.png");

            var shipSpr = new Sprite(shipTex);
            shipSpr.Origin = new Vector2f(shipTex.Size.X / 2f, shipTex.Size.Y / 2f);

            var asteroidSpr = new Sprite(asteroidTex);
            asteroidSpr.Origin = new Vector2f(asteroidTex.Size.X / 2f, asteroidTex.Size.Y / 2f);

            world = new World(new Vector2(0, 0));

            var debugView = new SFMLDebugView(world);
            debugView.AppendFlags(DebugViewFlags.Shape);

            CreateBounds(20, 11.25f);

            var ship = CreateShip();
            ship.Position = new Vector2(3, 1);
            ship.Rotation = 1.7f;

            var ship2 = CreateShip();
            ship2.Position = new Vector2(3, 1);
            ship2.Rotation = 1.7f;

            var asteroid = CreateAsteroid();
            asteroid.Position = new Vector2(4, 4);

            window.KeyPressed += (sender, eventArgs) =>
            {
                if (eventArgs.Code == Keyboard.Key.Space)
                {
                    CreateBullets(ship);
                }
            };

            while (window.IsOpen())
            {
                window.DispatchEvents();

                if (Keyboard.IsKeyPressed(Keyboard.Key.W))
                {
                    ship.ApplyForce(ship.GetWorldVector(new Vector2(0.0f, -25.0f)));
                }

                if (Keyboard.IsKeyPressed(Keyboard.Key.S))
                {
                    ship.ApplyForce(ship.GetWorldVector(new Vector2(0.0f, 25.0f)));
                }

                if (Keyboard.IsKeyPressed(Keyboard.Key.A))
                {
                    ship.ApplyTorque(-10);
                }

                if (Keyboard.IsKeyPressed(Keyboard.Key.D))
                {
                    ship.ApplyTorque(10);
                }

                world.Step(1f / 60);

                window.Clear(Color.Black);

                shipSpr.Position = new Vector2f(ship.Position.X * 64, ship.Position.Y * 64);
                shipSpr.Rotation = (ship.Rotation * (180 / (float)Math.PI));
                window.Draw(shipSpr);

                asteroidSpr.Position = new Vector2f(asteroid.Position.X * 64, asteroid.Position.Y * 64);
                asteroidSpr.Rotation = (asteroid.Rotation * (180 / (float)Math.PI));
                window.Draw(asteroidSpr);

                var start = ship.Position;
                var step = (float)(2 * Math.PI) / 200;
                byte col = 0;
                var line = new VertexArray(PrimitiveType.Lines, 2);
                line[0] = new Vertex(new Vector2f(start.X * 64, start.Y * 64), Color.White);
                for (var dir = 0f; dir <= 2 * Math.PI; dir += step)
                {
                    float min = 100;
                    byte res = 255;
                    var point = start + LengthDir(dir, 20);
                    world.RayCast((f, p, n, fr) =>
                    {
                        if (fr > min)
                            return 1;

                        min = fr;
                        res = (byte)(fr * 255);
                        point = p;
                        return fr;
                    }, start, point);

                    line[0] = new Vertex(new Vector2f(start.X * 64, start.Y * 64), new Color(col, 0, 0));
                    line[1] = new Vertex(new Vector2f(point.X * 64, point.Y * 64), new Color(col, 0, 0));
                    window.Draw(line);
                    col++;
                }

                debugView.Draw(window);

                window.Display();
            }
        }
Пример #26
0
        static void Main(string[] args)
        {
            Running = true;

            IPAddress ipAddress;
            while (true)
            {
                Console.Clear();
                Console.Write("IP to server: ");
                string line = Console.ReadLine();

                if (IPAddress.TryParse(line, out ipAddress))
                {
                    break;
                }
                else
                {
                    Console.WriteLine("Invalid IP address, press enter to try again.");
                    Console.ReadKey(true);
                }
            }

            Console.Clear();
            Console.WriteLine("Got IP: " + ipAddress.ToString());

            NetworkManager.Initialize(ipAddress.ToString());

            wnd = new RenderWindow(new VideoMode(800, 480), "HAPPY NEW CHRISTMAS", Styles.Close);

            wnd.SetMouseCursorVisible(true);
            wnd.SetFramerateLimit(120);
            wnd.Closed += (sender, eventArgs) =>
                              {
                                  wnd.Close();
                                  NetworkManager.Disconnect();
                              };

            wnd.KeyPressed += OnKeyPressed;
            wnd.MouseButtonPressed += OnMouseButtonPressed;
            wnd.MouseButtonReleased += OnMouseButtonReleased;
            wnd.MouseMoved += OnMouseMoved;

            Initialize();

            Stopwatch stopwatch = Stopwatch.StartNew();
            while (wnd.IsOpen() && Running)
            {
                var frameTime = (float) stopwatch.Elapsed.TotalSeconds;
                stopwatch.Restart();

                wnd.DispatchEvents();
                Update(frameTime);
                Draw(frameTime);
            }

            Running = false;

            wnd.Close();
        }
Пример #27
0
        static void Main()
        {
            Console.Title = "Tetraquark Console";
            Running = true;

            const string ConfigFile = "cfg.yaml";
            if (File.Exists(ConfigFile)) {
                Console.WriteLine("Loading config file {0}", ConfigFile);
                Settings.Load(File.ReadAllText(ConfigFile));
            }

            GameWatch = new Stopwatch();
            GameWatch.Start();
            PackMgr.Mount("Default.zip");

            string[] Files = PackMgr.GetFiles();
            for (int i = 0; i < Files.Length; i++) {
                if (Files[i].StartsWith("resources/fonts/"))
                    ResourceMgr.Register<Font>(PackMgr.OpenFile(Files[i]), Path.GetFileNameWithoutExtension(Files[i]));
                else if (Files[i].StartsWith("resources/textures/"))
                    ResourceMgr.Register<Texture>(PackMgr.OpenFile(Files[i]), Path.GetFileNameWithoutExtension(Files[i]));
            }

            Scales.Init(new Vector2f(ResX, ResY));

            // OpenTK
            ToolkitOptions TOpt = ToolkitOptions.Default;
            TOpt.Backend = PlatformBackend.PreferNative;
            TOpt.EnableHighResolution = true;
            Toolkit.Init(TOpt);
            // SFML
            VideoMode VMode = new VideoMode((uint)Scales.XRes, (uint)Scales.YRes, (uint)BitsPerPixel);
            ContextSettings CSet = new ContextSettings((uint)DepthBits, (uint)StencilBits);
            CSet.MajorVersion = 4;
            CSet.MinorVersion = 2;
            CSet.AntialiasingLevel = (uint)Samples;
            Styles S = Styles.None;
            if (Border)
                S |= Styles.Titlebar | Styles.Close;
            RenderWindow RWind = new RenderWindow(VMode, "Tetraquark", S, CSet);
            RWind.Closed += (Snd, E) => Running = false;
            RWind.SetKeyRepeatEnabled(false);
            // OpenTK
            IWindowInfo WindInfo = Utilities.CreateWindowsWindowInfo(RWind.SystemHandle);
            var GfxMode = new GraphicsMode(new ColorFormat(BitsPerPixel), DepthBits, StencilBits, Samples, new ColorFormat(0));
            var GfxCtx = new GraphicsContext(GfxMode, WindInfo, (int)CSet.MajorVersion, (int)CSet.MinorVersion,
                GfxCtxFlags.Default);
            GfxCtx.MakeCurrent(WindInfo);
            GfxCtx.LoadAll();
            RWind.ResetGLStates();

            //GL.Enable(EnableCap.FramebufferSrgb);

            Renderer.Init(RWind);
            Stopwatch Clock = new Stopwatch();
            Clock.Start();

            while (Running) {
                RWind.DispatchEvents();
                while (Clock.ElapsedMilliseconds < 10)
                    ;
                float Dt = (float)Clock.ElapsedMilliseconds / 1000;
                Clock.Restart();
                Renderer.Update(Dt);
                Renderer.Draw(RWind);
                RWind.Display();
            }

            RWind.Close();
            RWind.Dispose();
            Console.WriteLine("Flushing configs");
            File.WriteAllText(ConfigFile, Settings.Save());
            Environment.Exit(0);
        }
Пример #28
0
 static void OnClose(object sender, EventArgs e)
 {
     // Close the window when OnClose event is received
     SFML.Graphics.RenderWindow window = (SFML.Graphics.RenderWindow)sender;
     window.Close();
 }
Пример #29
0
        public void Run()
        {
            GameHelper.SetGame(this);

            Window = new RenderWindow(mode, title, Styles.Close);
            RStates = new RenderStates(RenderStates.Default);

            Window.Closed += (s, e) =>
            {
                Console.WriteLine("Closing");
                Window.Close();
            };

            Window.SetVerticalSyncEnabled(true);

            BackgroundColor = new Color(100, 149, 237);

            World = new World.World(this);

            World.AddObject(new Box(this, new Vector2f(50, 50), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(300, 200), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(450, 350), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(100, 250), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(200, 150), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(150, 400), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(400, 100), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(500, 250), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(600, 300), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(350, 450), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(650, 500), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(400, 100), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(250, 350), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(400, 100), new Vector2f(64, 64), Color.White));
            World.AddObject(new Box(this, new Vector2f(650, 50), new Vector2f(64, 64), Color.White));

            Lighting = new Lighting(this);
            var light = new PointLight(this, new Vector2f(100, 10), Color.Blue, 100f, 32);

            Lighting.AddLight(light);

            Stopwatch timer = new Stopwatch();
            while (Window.IsOpen)
            {
                timer.Restart();

                Window.DispatchEvents();

                Window.Clear(BackgroundColor);

                World.Update(Frametime);
                Lighting.Update(Frametime);

                light.Position = new Vector2f(Mouse.GetPosition(Window).X, Mouse.GetPosition(Window).Y);

                World.Draw(Window, RStates);
                Lighting.Draw(Window, RStates);

                Debug.Draw(Window);

                Window.Display();

                timer.Stop();
                Frametime = (float)timer.Elapsed.TotalMilliseconds;
                Window.SetTitle($"{title} ({Math.Round(Frametime, 1):0.0}ms)");
            }
        }
Пример #30
0
        private static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += (sender, e) => DumpError((Exception)e.ExceptionObject);

            var speed = VmSpeed.Medium;
            var running = true;

            Config = ConfigFile.Load("VmConfig.xml");

            TextDisplay.Initialize(CharWidth, CharHeight);

            window = new RenderWindow(new VideoMode(200 * CharWidth, 81 * CharHeight), "", Styles.Close);
            window.SetFramerateLimit(Config.Framerate);
            window.Closed += (sender, e) => window.Close();

            display = new TextDisplay(200, 80);
            memory = new Memory();
            machine = new VirtualMachine(memory);

            statusDisplay = new TextDisplay(200, 1);

            machine.AttachDevice(new Devices.Motherboard(machine, display));

            var devMap = new Dictionary<string, Type>()
            {
                { "Controller", typeof(Devices.Controller) },
                { "Keyboard", typeof(Devices.Keyboard) },
                { "HardDrive", typeof(Devices.HardDrive) },
                { "Speaker", typeof(Devices.Speaker) },
            };

            foreach (var devConfig in Config.Devices)
            {
                var devName = devConfig.Name.ToString();
                if (!devMap.ContainsKey(devName))
                    continue;

                var devEnabledAttr = devConfig.Attribute("Enabled");
                var devEnabled = devEnabledAttr == null || devEnabledAttr.Value.ToLower() == "true";

                if (!devEnabled)
                    continue;

                var device = (Device)Activator.CreateInstance(devMap[devName], window, machine, devConfig);
                machine.AttachDevice(device);
            }

            var file = Config.DefaultFile;
            if (args.Length > 0)
                file = args[0];

            if (error == null)
                Load(file);

            window.KeyPressed += (sender, eventArgs) =>
            {
                if (eventArgs.Code == Config.Pause)
                    running = !running;

                if (eventArgs.Code == Config.ChangeSpeed)
                    speed = (VmSpeed)(((int)speed + 1) % 4);

                if (eventArgs.Code == Config.Reload)
                    Load(file);
            };

            var previousSteps = new LinkedList<int>();

            var ipX = 0;
            var ipY = 0;
            var spX = 0;
            var spY = 0;

            while (window.IsOpen())
            {
                window.DispatchEvents();

                #region Stepping
                var requestedSteps = 0;
                var steps = 0;

                switch (speed)
                {
                    case VmSpeed.Slow:
                        requestedSteps = Config.Slow;
                        break;
                    case VmSpeed.Medium:
                        requestedSteps = Config.Medium;
                        break;
                    case VmSpeed.Fast:
                        requestedSteps = Config.Fast;
                        break;
                    case VmSpeed.Unlimited:
                        requestedSteps = int.MaxValue; // "unlimited"
                        break;
                }

                if (running && error == null)
                {
                    try
                    {
                        var stopwatch = Stopwatch.StartNew();
                        while (stopwatch.Elapsed.TotalSeconds < (0.95 / Config.Framerate))
                        {
                            if (steps >= requestedSteps)
                                break;

                            for (var i = 0; i < 100; i++, steps++)
                            {
                                machine.Step();
                            }
                        }
                    }
                    catch (VmException e)
                    {
                        error = e.Message;
                    }
                }

                previousSteps.AddLast(steps);
                if (previousSteps.Count > Config.Framerate)
                    previousSteps.RemoveFirst();
                #endregion

                display.DrawImage(0, 0, memory);

                #region IP and SP markers
                display.Set(ipX, ipY, Character.Create(background: 0));
                display.Set(spX, spY, Character.Create(background: 0));

                var ip = machine.IP / 2;
                ipX = ip % 200;
                ipY = ip / 200;
                var sp = machine.SP / 2;
                spX = sp % 200;
                spY = sp / 200;

                if (ipY < 80)
                    display.Set(ipX, ipY, Character.Create(background: 255));
                if (spY < 80)
                    display.Set(spX, spY, Character.Create(background: 255));
                #endregion

                var statusString = "Paused";

                if (error != null)
                    statusString = string.Format("ERROR: {0}", error);
                else if (machine.Flags.HasFlag(VirtualMachine.Flag.Trap))
                    statusString = "Trapped";
                else if (running)
                    statusString = string.Format("Running: {0} instructions per second ({1})", previousSteps.Sum(), speed);

                statusDisplay.Clear(Character.Create(' '));
                statusDisplay.DrawText(0, 0, statusString, Character.Create(foreground: 255));

                display.Draw(window, new Vector2f(0, 0));
                statusDisplay.Draw(window, new Vector2f(0, 80 * CharHeight));

                window.Display();
            }

            machine.Dispose();
        }
Пример #31
0
        public static void RegisterEvents(RenderWindow window)
        {
            window.KeyPressed += (sender, args) =>
            {
                if (args.Code != Keyboard.Key.Unknown)
                {
                    Press(args.Code);
                }
            };

            window.TextEntered += (sender, args) =>
            {
                OnTextEntered(args.Unicode[0]);
            };

            window.JoystickButtonPressed += (sender, args) =>
            {
                Press(args.JoystickId, args.Button);
            };

               window.MouseButtonPressed += (sender, args) =>
            {
                Press(args.Button);
            };

            /*window.GainedFocus += (sender, args) => { Game.HasFocus = true; };
            window.LostFocus += (sender, args) => { Game.HasFocus = false; };*/

            window.Closed += (sender, args) => { window.Close(); };
        }