public KeyInfo(int group, KeyType type, string name, KeyGetter retrieveFunc) { Assert.AssertTrue(IsKeyTypeValid(type)); Name = name; RangeType = KeyRangeType.Single; Type = type; RangeStart = default; RangeEnd = default; Group = group; Getter = retrieveFunc; }
public KeyInfo(int group, KeyType type, string name, byte rangeStart, byte rangeEnd, KeyGetter retrieveFunc) { Assert.AssertTrue(IsKeyTypeValid(type)); Name = name; RangeType = KeyRangeType.Range; Type = type; RangeStart = rangeStart; RangeEnd = rangeEnd; Group = group; Getter = retrieveFunc; }
static void Main() { var framerate = 60; // How many ticks a second will occur var keyListener = new Listener(); // Create the listener KeyGetter.Run(keyListener); // Start the listener thread Console.CursorVisible = false; // Hide the cursor Console.Title = "BlockBreaker"; // Set the title of the console window // Setup filepath to highscores ResourceManager.HighscoresPath = AppDomain.CurrentDomain.BaseDirectory; ResourceManager.HighscoresPath += "../../highscores.xml"; // Create score handlers var scorewriter = new XMLScoreWriter(); var renderer = new Renderer(new Register()); var display = new Display(); // Create Portraits var mainMenu = new MenuPortrait(); var highscores = new HighscoresPortrait(); var enterName = new EnterNamePortrait(); var mainGame = new GamePortrait(); var endGame = new EndGamePortrait(scorewriter); var instructions = new InstructionsPortrait(); // Assign keypress events keyListener.KeyGot += mainMenu.OnKeyPress; keyListener.KeyGot += highscores.OnKeyPress; keyListener.KeyGot += enterName.OnKeyPress; keyListener.KeyGot += mainGame.OnKeyPress; keyListener.KeyGot += endGame.OnKeyPress; keyListener.KeyGot += instructions.OnKeyPress; // Set up manager var portraitManager = new Manager(renderer, display, (int)PageHandles.MainMenu, mainMenu); portraitManager.AddPortrait((int)PageHandles.Highscores, highscores); portraitManager.AddPortrait((int)PageHandles.GiveName, enterName); portraitManager.AddPortrait((int)PageHandles.MainGame, mainGame); portraitManager.AddPortrait((int)PageHandles.EndGame, endGame); portraitManager.AddPortrait((int)PageHandles.Instructions, instructions); while (true) { portraitManager.Tick(); Thread.Sleep(1000 / framerate); } }
private static void Main() { var finished = false; // Signals when the program should end Console.CursorVisible = false; // Makes the cursor invisible var display = new BasicDisplay(); // Chosen display var keyGetter = new KeyGetter(); // Chosen KeyGetter var options = new[] // Options to choose from { "Play", "Options", "Instructions", "Scoreboard", "Exit" }; var mainMenu = new Menu.Menu(display, keyGetter); // New menu mainMenu.SetOptions(options); // Assign the options var instructions = new Instructions(); var optionsObject = new Options.Options.Options(); var game = new Play(); var scoreboard = new Scoreboard(); var exiter = new Exit(); mainMenu.OptionSelected += instructions.OnOptionSelected; mainMenu.OptionSelected += optionsObject.OnOptionSelected; mainMenu.OptionSelected += game.OnOptionSelected; mainMenu.OptionSelected += scoreboard.OnOptionSelected; mainMenu.OptionSelected += exiter.OnOptionSelected; while (!finished) // Main program loop { mainMenu.GetSelection(); // Get selection } }
public ListCustomKeys(IList <TValue> list, KeyGetter getter) { myList = list; customKeys = new Dictionary <TKey, int>(); this.getter = getter; }
static void Main(string[] args) { var keyListener = new Listener(); // Create the listener KeyGetter.Run(keyListener); // Start the listener thread }
public Database(string path, KeyValidator <TKey> keyValidator, long offset = 0, long pageSize = 0, bool sortable = true, LoggerInterface logger = null) { if (typeof(T).GetFields(BindingFlags.NonPublic).Any(f => !f.FieldType.IsValueType)) { throw new Exception("Structure fields can be only value type."); } valueSize = Marshal.SizeOf <T>(); fileSize = new FileInfo(path).Length; if ((fileSize - offset) % valueSize != 0) { throw new Exception("Database is corrupted."); } validateKey = keyValidator; this.sortable = sortable; this.pageSize = pageSize - pageSize % valueSize; this.offset = offset; this.path = path; this.logger = logger ?? new LoggerInterface(); this.progress = new ProgressLogger(this.logger); accessor = new MemoryAccessor(path, 0, this.pageSize); idIsIndex = typeof(T).GetCustomAttribute <IdIsIndexAttribute>() != null; if (!idIsIndex) { var idField = typeof(T).GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public).First(f => f.GetCustomAttribute <IdAttribute>() != null); if (idField.GetCustomAttribute <FixedBufferAttribute>() != null) { if (typeof(TKey) == typeof(string)) { getKey = i => (TKey)(object)GetKeyString(accessor, i, idField.GetCustomAttribute <FixedBufferAttribute>().Length); setKey = (TKey key, ref T val) => SetKeyString((string)(object)key, ref val); } else if (typeof(TKey) == typeof(Array)) { getKey = i => (TKey)(object)GetKeyArray(accessor, i, idField.GetCustomAttribute <FixedBufferAttribute>().Length, idField.GetCustomAttribute <FixedBufferAttribute>().ElementType); setKey = (TKey key, ref T val) => SetKeyArray((Array)(object)key, ref val); } else { throw new Exception("Fixed array key field should be String or Array."); } } else { getKey = i => GetKey(accessor, i); setKey = (TKey key, ref T val) => SetKey(key, ref val); } keyOffset = Marshal.OffsetOf <T>(idField.Name).ToInt32(); } else { getKey = i => typeof(TKey) == typeof(long) ? (TKey)(object)i : throw new ArgumentException("Index of IdIsIndex table should be long."); setKey = (TKey key, ref T val) => throw new InvalidOperationException("Unable to set key for IdIsIndex database."); keyOffset = 0; } }