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(); } }
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; } }
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; }
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(); }
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; } }
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(); } }
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(); }
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)"); } }
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(); }
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(); } }
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(); } }
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(); } }
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(); } }
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; } }
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(); } }
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(); } }
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(); }
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); }; }
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(); } }
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(); } }
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(); } }
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; }
public World() { Window = new RenderWindow(new VideoMode(800, 600, 32), "ur a faget", Styles.Default); Window.Closed += (s, e) => Window.Close(); }
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(); } }
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(); }
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); }
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(); }
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)"); } }
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(); }
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(); }; }