Beispiel #1
0
        public void LoadLevelData()
        {
            LevelData = new List <LevelData>();
            // dump all single player save slots
            var rawLevelData = MemoryUtils.DumpSaveSlots(Gecko, 0, SaveSlotsAddress, 768);

            // read data from slots
            var j = 0;

            while (j < rawLevelData.Length)
            {
                var levelNumber = rawLevelData[j];

                // check if an empty save slot
                if (levelNumber == uint.MaxValue)
                {
                    break;
                }

                var clearState = rawLevelData[j + 1];
                var scroll     = Convert.ToBoolean(rawLevelData[j + 2]);

                // add to the list
                LevelData.Add(new LevelData(levelNumber, clearState, scroll));

                // move to next slot
                j += 3;
            }
        }
Beispiel #2
0
        public void ReloadWeapons()
        {
            _weapons.Clear();
            EquippedWeapon = Gecko.peek((uint)GearAddress.EquippedWeapon + Offset);
            var weaponData = MemoryUtils.DumpSaveSlots(Gecko, Offset, (uint)GearAddress.Weapons, 5120);
            // read data from slots
            var j = 0;

            while (j < weaponData.Length)
            {
                var id = weaponData[j];

                // check if an empty save slot
                if (id.Equals(uint.MaxValue))
                {
                    break;
                }

                var number    = weaponData[j + 1];
                var sub       = (SubWeapon)weaponData[j + 2];
                var special   = (SpecialWeapon)weaponData[j + 3];
                var turfInked = weaponData[j + 4];
                var timestamp = weaponData[j + 7];
                var newFlag   = weaponData[j + 8] == 0x0;

                AddWeapon(new Weapon(id, number, sub, special, turfInked, timestamp, newFlag));
                // move to next slot
                j += 10;
            }
        }