Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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
            }
        }
Exemplo n.º 5
0
 public ListCustomKeys(IList <TValue> list, KeyGetter getter)
 {
     myList      = list;
     customKeys  = new Dictionary <TKey, int>();
     this.getter = getter;
 }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            var keyListener = new Listener(); // Create the listener

            KeyGetter.Run(keyListener);       // Start the listener thread
        }
Exemplo n.º 7
0
        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;
            }
        }