Ejemplo n.º 1
0
        public void ConstantField()
        {
            InitTest();

            var boolTrue  = new MemoryFieldConstant <bool>("BoolTrue", true);
            var boolFalse = new MemoryFieldConstant <bool>("BoolFalse", false);

            drvPool.Add(boolTrue);
            drvPool.Add(boolFalse);

            memory.Refresh();

            Assert.AreEqual(0, actionLogbook.Count);

            Assert.True(drvPool.ReadAs <bool>("BoolTrue"));
            Assert.False(drvPool.ReadAs <bool>("BoolFalse"));
        }
Ejemplo n.º 2
0
        public void CounterField()
        {
            InitTest();

            int iCounter = 0;

            var fieldCounter = new MemoryFieldFunc <int>("Counter", (pool) =>
            {
                iCounter++;
                return(iCounter);
            });

            drvPool.Add(fieldCounter);
            memory.Refresh();

            Assert.AreEqual(1, drvPool.ReadAs <int>("Counter"));
            Assert.AreEqual(2, drvPool.ReadAs <int>("Counter"));
            Assert.AreEqual(3, drvPool.ReadAs <int>("Counter"));
            Assert.AreEqual(4, drvPool.ReadAs <int>("Counter"));
            Assert.AreEqual(5, drvPool.ReadAs <int>("Counter"));
            Assert.AreEqual(6, drvPool.ReadAs <int>("Counter"));
            Assert.AreEqual(7, drvPool.ReadAs <int>("Counter"));
        }
Ejemplo n.º 3
0
        public void FieldDynamic()
        {
            InitTest();

            var FieldFuel  = new MemoryField <float>("FuelCapacity", MemoryAddress.Dynamic, 0, 0x3160, 4);
            var FieldIndex = new MemoryField <int>("Index", MemoryAddress.Dynamic, 0, 0x8, 4); // +0x8 = driver index

            drvPool.Add(FieldIndex);
            drvPool.Add(FieldFuel);

            memory.Refresh();

            Assert.True(FieldIndex.HasChanged());
            Assert.True(FieldFuel.HasChanged());

            // only 1 read from pool:
            Assert.AreEqual(1, actionLogbook.Count);
            Assert.AreEqual(0x7154C0, actionLogbook[0].Address);
            Assert.AreEqual(0x6000, actionLogbook[0].Size);

            // And read some values in different types:
            Assert.AreEqual(0, drvPool.ReadAs <int>("Index"));
            Assert.AreEqual(0, drvPool.ReadAs <uint>("Index"));
            Assert.AreEqual(0.0f, drvPool.ReadAs <float>("Index"));

            Assert.AreEqual(100.0f, drvPool.ReadAs <float>("FuelCapacity"));
            Assert.AreEqual(100, drvPool.ReadAs <int>("FuelCapacity"));
            Assert.AreEqual(100.0, drvPool.ReadAs <double>("FuelCapacity"));

            memory.Refresh();

            Assert.False(FieldIndex.HasChanged());
            Assert.False(FieldFuel.HasChanged());

            Assert.AreEqual(2, actionLogbook.Count);
            Assert.AreEqual(0x7154C0, actionLogbook[0].Address);
            Assert.AreEqual(0x6000, actionLogbook[0].Size);
            Assert.AreEqual(0x7154C0, actionLogbook[1].Address);
            Assert.AreEqual(0x6000, actionLogbook[1].Size);
        }
Ejemplo n.º 4
0
        public void FieldStaticAbsoluteSignature()
        {
            InitTest();

            var plrMemoryPtr = new MemoryFieldSignature <int>("Player", MemoryAddress.StaticAbsolute,
                                                              "A0XXXXXXXX8B0D????????F6D81BC0", new[] { 0 }, 0x6000);

            drvPool.Add(plrMemoryPtr);

            memory.Scanner.Enable();
            memory.Refresh();
            memory.Scanner.Disable();

            Assert.True(plrMemoryPtr.HasChanged());

            int preRescanCount = actionLogbook.Count;

            Assert.Greater(actionLogbook.Count, 1);
            Assert.AreEqual(0x7154C0, actionLogbook[actionLogbook.Count - 3].Address); // pool itself
            Assert.AreEqual(0x6000, actionLogbook[actionLogbook.Count - 3].Size);
            Assert.AreEqual(0x71528C, actionLogbook[actionLogbook.Count - 2].Address); // our sig ptr scan
            Assert.AreEqual(0x4, actionLogbook[actionLogbook.Count - 2].Size);
            Assert.AreEqual(0x7154C0, actionLogbook[actionLogbook.Count - 1].Address); // our sig
            Assert.AreEqual(0x6000, actionLogbook[actionLogbook.Count - 1].Size);

            Assert.AreEqual(0x7154C0, drvPool.ReadAs <int>("Player"));
            Assert.AreEqual(0x7154C0, plrMemoryPtr.Address);

            Assert.AreEqual(actionLogbook.Count, preRescanCount);

            // It will only refresh the contents of the pointer
            memory.Refresh();

            Assert.False(plrMemoryPtr.HasChanged());

            int postRescanCount = actionLogbook.Count;

            Assert.AreEqual(2, postRescanCount - preRescanCount);

            Assert.AreEqual(0x7154C0, actionLogbook[actionLogbook.Count - 5].Address); // pool itself
            Assert.AreEqual(0x6000, actionLogbook[actionLogbook.Count - 5].Size);
            Assert.AreEqual(0x71528C, actionLogbook[actionLogbook.Count - 4].Address); // our sig ptr scan
            Assert.AreEqual(0x4, actionLogbook[actionLogbook.Count - 4].Size);
            Assert.AreEqual(0x7154C0, actionLogbook[actionLogbook.Count - 3].Address); // our sig
            Assert.AreEqual(0x6000, actionLogbook[actionLogbook.Count - 3].Size);

            Assert.AreEqual(0x7154C0, actionLogbook[actionLogbook.Count - 2].Address); // pool itself
            Assert.AreEqual(0x6000, actionLogbook[actionLogbook.Count - 2].Size);
            Assert.AreEqual(0x7154C0, actionLogbook[actionLogbook.Count - 1].Address); // our result from sig
            Assert.AreEqual(0x6000, actionLogbook[actionLogbook.Count - 1].Size);
        }