public override int GetHashCode() { unchecked { var hashCode = All.GetHashCode(); hashCode = hashCode * 397 ^ (KeyboardMouse != null ? KeyboardMouse.GetHashCode() : 0); hashCode = hashCode * 397 ^ (Gamepad != null ? Gamepad.GetHashCode() : 0); hashCode = hashCode * 397 ^ (Touch != null ? Touch.GetHashCode() : 0); return hashCode; } }
static void Main(string[] args) { Console.Title = "Generate CLI"; Log("Seed? "); var Seed = string.Empty; while (true) { var Key = Console.ReadKey(); if (Key.Key == ConsoleKey.Enter) { Console.WriteLine(); break; } else if (Key.Key == ConsoleKey.Backspace) { Console.Write(" "); if (Seed.Length != 0) { Seed = Seed.Substring(0, Seed.Length - 1); Console.Write("\b"); } continue; } Seed += Key.KeyChar; } Worker.Master = new Master(Seed.ASCIIBytes()); Constants.Load(); using (Window = new LoopWindow()) using (Renderer = new Renderer(Window)) using (Overlay = new Overlay(Renderer.Device, Renderer.AntiAliasedBackBuffer)) using (Chunks = new ChunkLoader()) using (Sun.Main = new Sun(Constants.SunSeed)) using (Skybox.Main = new Skybox(Constants.SkySeed)) using (var Loop = Window.Loop()) { KeyboardMouse.StartCapture(); Watch = new System.Diagnostics.Stopwatch(); Watch.Start(); while (!Close && Loop.NextFrame()) { Frame(); } } }
/// <summary> /// Main logic here /// </summary> private static int RunAndReturn(Options options) { AllocConsole(); ISerialAdaptor serial; try { serial = new DotNetSerialAdaptor(options.ComPort); } catch (Exception) { Console.Error.WriteLine($"Cannot open port {options.ComPort}!"); return(-1); } _keyboardMouse = new KeyboardMouse(serial); _keyboardMouse.SetMouseResolution(options.Width, options.Height); Program._options = options; _form = CreateForm(options.Width, options.Height); _form.FormClosed += (s, e) => { _keyboardMouse.Dispose(); System.Environment.Exit(0); }; Console.CancelKeyPress += (s, e) => { _keyboardMouse.Dispose(); _form.Dispose(); System.Environment.Exit(0); }; _form.MouseMove += MouseMoveEventHandler; _form.MouseWheel += MouseScrollEventHandler; _form.MouseDown += (s, e) => { MousePressReleaseHelper(e, true); }; _form.MouseUp += (s, e) => { MousePressReleaseHelper(e, false); }; _form.KeyDown += (s, e) => { KeyboardPressReleaseHelper(e, true); }; _form.PreviewKeyDown += (s, e) => { e.IsInputKey = true; }; _form.KeyUp += (s, e) => { KeyboardPressReleaseHelper(e, false); }; MouseThrottleStopwatch.Start(); _form.ShowDialog(); return(0); }