Ejemplo n.º 1
0
        public void PainElementalTest_Final2()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, @"data\painelemental_test.wad"))
            {
                var demo = new Demo(@"data\painelemental_test_final2.lmp");
                demo.Options.Version = GameVersion.Final2;
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastHash = 0;
                var aggHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastHash = DoomDebug.GetMobjHash(world);
                    aggHash  = DoomDebug.CombineHash(aggHash, lastHash);
                }

                Assert.AreEqual(0x6984f76fu, (uint)lastHash);
                Assert.AreEqual(0x50ba7933u, (uint)aggHash);
            }
        }
Ejemplo n.º 2
0
        public void Doom2Demo2()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO2"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x45384a05u, (uint)lastMobjHash);
                Assert.AreEqual(0xde6d3531u, (uint)aggMobjHash);
                Assert.AreEqual(0x49c96600u, (uint)lastSectorHash);
                Assert.AreEqual(0x82f0e2d0u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 3
0
        public void NightmareTest()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2))
            {
                var demo    = new Demo(@"data\nightmare_test.lmp");
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastHash = 0;
                var aggHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastHash = DoomDebug.GetMobjHash(world);
                    aggHash  = DoomDebug.CombineHash(aggHash, lastHash);
                }

                Assert.AreEqual(0x9278a07au, (uint)lastHash);
                Assert.AreEqual(0xb2d9a9a0u, (uint)aggHash);
            }
        }
Ejemplo n.º 4
0
        public void TntDemo3()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Tnt))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO3"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0xb289efaeu, (uint)lastMobjHash);
                Assert.AreEqual(0x08d04ef6u, (uint)aggMobjHash);
                Assert.AreEqual(0x8ab75d90u, (uint)lastSectorHash);
                Assert.AreEqual(0x08d5fbb0u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 5
0
        public void PlutoniaDemo1_Final2()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Plutonia))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO1"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x919a2c10u, (uint)lastMobjHash);
                Assert.AreEqual(0x50740a10u, (uint)aggMobjHash);
                Assert.AreEqual(0x67f448a4u, (uint)lastSectorHash);
                Assert.AreEqual(0x7cbaf2f8u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 6
0
        public void Doom2Demo3_Final2()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2))
            {
                var demo = new Demo(resource.Wad.ReadLump("DEMO3"));
                demo.Options.Version = GameVersion.Final2;
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x6daadf6du, (uint)lastMobjHash);
                Assert.AreEqual(0xdfba83c6u, (uint)aggMobjHash);
                Assert.AreEqual(0xfe1f6052u, (uint)lastSectorHash);
                Assert.AreEqual(0x6f6e779eu, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 7
0
        public void Map06Crusher()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2))
            {
                var demo    = new Demo(@"demos\map06_crusher_test.lmp");
                var players = DoomTest.GetDefaultPlayers(demo.Options);
                var cmds    = Enumerable.Range(0, Player.MaxPlayerCount).Select(i => new TicCmd()).ToArray();
                var game    = new DoomGame(players, resource, demo.Options);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    game.Update(cmds);
                    lastMobjHash   = DoomDebug.GetMobjHash(game.World);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(game.World);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x302bc4e3u, (uint)lastMobjHash);
                Assert.AreEqual(0xe4050462u, (uint)aggMobjHash);
                Assert.AreEqual(0x3ce914d8u, (uint)lastSectorHash);
                Assert.AreEqual(0x549ea480u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 8
0
        public void E1M8Boss()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom1))
            {
                var demo = new Demo(@"demos\e1m8_boss_test.lmp");
                demo.Options.GameMode = resource.Wad.GameMode;
                var players = DoomTest.GetDefaultPlayers(demo.Options);
                var cmds    = Enumerable.Range(0, Player.MaxPlayerCount).Select(i => new TicCmd()).ToArray();
                var game    = new DoomGame(players, resource, demo.Options);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    game.Update(cmds);
                    lastMobjHash   = DoomDebug.GetMobjHash(game.World);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(game.World);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0xb01c44f9u, (uint)lastMobjHash);
                Assert.AreEqual(0x1a4918bbu, (uint)aggMobjHash);
                Assert.AreEqual(0xa7bac3ceu, (uint)lastSectorHash);
                Assert.AreEqual(0xda0067d0u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 9
0
        public void RevenantTest()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, @"data\revenant_test.wad"))
            {
                var demo    = new Demo(@"data\revenant_test.lmp");
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastHash = 0;
                var aggHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    world.Options.GameTic++; // To avoid desync due to revenant missile.
                    lastHash = DoomDebug.GetMobjHash(world);
                    aggHash  = DoomDebug.CombineHash(aggHash, lastHash);
                }

                Assert.AreEqual(0x8b9fe3aeu, (uint)lastHash);
                Assert.AreEqual(0x24e038d7u, (uint)aggHash);
            }
        }
Ejemplo n.º 10
0
        public void Doom1Demo3()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom1))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO3"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0xcdce0d85u, (uint)lastMobjHash);
                Assert.AreEqual(0x9e5f7780u, (uint)aggMobjHash);
                Assert.AreEqual(0x553d0ec9u, (uint)lastSectorHash);
                Assert.AreEqual(0x9991bb03u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 11
0
        public void Doom1SharewareDemo3()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom1Shareware))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO3"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x893f32d2u, (uint)lastMobjHash);
                Assert.AreEqual(0x22b21b86u, (uint)aggMobjHash);
                Assert.AreEqual(0xfef34aafu, (uint)lastSectorHash);
                Assert.AreEqual(0xa881ce6fu, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 12
0
        public void LocalDoorTest()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, @"data\localdoor_test.wad"))
            {
                var demo    = new Demo(@"data\localdoor_test.lmp");
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x9d6c0abeu, (uint)lastMobjHash);
                Assert.AreEqual(0x7e1bb5f2u, (uint)aggMobjHash);
                Assert.AreEqual(0xfdf3e7a0u, (uint)lastSectorHash);
                Assert.AreEqual(0x0a0f1980u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 13
0
        public void PlatformTest()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, @"data\platform_test.wad"))
            {
                var demo    = new Demo(@"data\platform_test.lmp");
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x3da2f507u, (uint)lastMobjHash);
                Assert.AreEqual(0x3402f715u, (uint)aggMobjHash);
                Assert.AreEqual(0xc71b4d00u, (uint)lastSectorHash);
                Assert.AreEqual(0x2fb8dd00u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 14
0
        public void Map07Boss()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2))
            {
                var demo    = new Demo(@"demos\map07_boss_test.lmp");
                var players = DoomTest.GetDefaultPlayers(demo.Options);
                var cmds    = Enumerable.Range(0, Player.MaxPlayerCount).Select(i => new TicCmd()).ToArray();
                var game    = new DoomGame(players, resource, demo.Options);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    game.Update(cmds);
                    lastMobjHash   = DoomDebug.GetMobjHash(game.World);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(game.World);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x4c4e952fu, (uint)lastMobjHash);
                Assert.AreEqual(0x56d1d836u, (uint)aggMobjHash);
                Assert.AreEqual(0x44469690u, (uint)lastSectorHash);
                Assert.AreEqual(0x1b989de0u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 15
0
        public void MementoMoriDemo3()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, WadPath.MementoMori))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO3"));
                var players = DoomTest.GetDefaultPlayers(demo.Options);
                var cmds    = Enumerable.Range(0, Player.MaxPlayerCount).Select(i => new TicCmd()).ToArray();
                var game    = new DoomGame(players, resource, demo.Options);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    game.Update(cmds);
                    lastMobjHash   = DoomDebug.GetMobjHash(game.World);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(game.World);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x2c3bf1e3u, (uint)lastMobjHash);
                Assert.AreEqual(0x40d3fc5cu, (uint)aggMobjHash);
                Assert.AreEqual(0xdc871ca2u, (uint)lastSectorHash);
                Assert.AreEqual(0x388e5e4fu, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 16
0
        public void TntBloodDemo3()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, WadPath.TntBlood))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO3"));
                var players = DoomTest.GetDefaultPlayers(demo.Options);
                var cmds    = Enumerable.Range(0, Player.MaxPlayerCount).Select(i => new TicCmd()).ToArray();
                var game    = new DoomGame(players, resource, demo.Options);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    game.Update(cmds);
                    lastMobjHash   = DoomDebug.GetMobjHash(game.World);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(game.World);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x9d24c7d8u, (uint)lastMobjHash);
                Assert.AreEqual(0xd37240f4u, (uint)aggMobjHash);
                Assert.AreEqual(0xf3f4db97u, (uint)lastSectorHash);
                Assert.AreEqual(0xa0acc43eu, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 17
0
        public void PlutoniaDemo2()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Plutonia))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO2"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    world.Options.GameTic++; // To avoid desync due to revenant missile.
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x5d8b0a25u, (uint)lastMobjHash);
                Assert.AreEqual(0x780eb548u, (uint)aggMobjHash);
                Assert.AreEqual(0x027a2765u, (uint)lastSectorHash);
                Assert.AreEqual(0xdc23992bu, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 18
0
        public void Doom1Demo4()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom1))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO4"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x89d50ff6u, (uint)lastMobjHash);
                Assert.AreEqual(0xb1a634c8u, (uint)aggMobjHash);
                Assert.AreEqual(0x8a94e89au, (uint)lastSectorHash);
                Assert.AreEqual(0x2e1bf98du, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 19
0
        public void PlutoniaDemo3()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Plutonia))
            {
                var demo = new Demo(resource.Wad.ReadLump("DEMO3"));
                demo.Options.Version = GameVersion.Final2;
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0xa69f484fu, (uint)lastMobjHash);
                Assert.AreEqual(0xa62991cbu, (uint)aggMobjHash);
                Assert.AreEqual(0x796a4b06u, (uint)lastSectorHash);
                Assert.AreEqual(0xfa506444u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 20
0
        public void Doom2Demo1()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO1"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x8541f2acu, (uint)lastMobjHash);
                Assert.AreEqual(0xe60b0af3u, (uint)aggMobjHash);
                Assert.AreEqual(0x3376327bu, (uint)lastSectorHash);
                Assert.AreEqual(0x4140c1c2u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 21
0
        public void ShotgunTest()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, @"data\shotgun_test.wad"))
            {
                var demo    = new Demo(@"data\shotgun_test.lmp");
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastHash = 0;
                var aggHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastHash = DoomDebug.GetMobjHash(world);
                    aggHash  = DoomDebug.CombineHash(aggHash, lastHash);
                }

                Assert.AreEqual(0x3dd50799u, (uint)lastHash);
                Assert.AreEqual(0x4ddd814fu, (uint)aggHash);
            }
        }
Ejemplo n.º 22
0
        public void TntDemo1()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Tnt))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO1"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    if (!demo.ReadCmd(cmds))
                    {
                        break;
                    }

                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);
                }

                Assert.AreEqual(0x428a3538u, (uint)lastMobjHash);
                Assert.AreEqual(0x7bd7efb1u, (uint)aggMobjHash);
                Assert.AreEqual(0x5da0944cu, (uint)lastSectorHash);
                Assert.AreEqual(0x9a9aa180u, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 23
0
        public void PointInSubsectorMap01()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2))
            {
                var options = new GameOptions();
                var players = DoomTest.GetDefaultPlayers();
                var world   = new World(resource, options, players);
                var map     = new Map(resource, world);

                var ok    = 0;
                var count = 0;

                foreach (var subsector in map.Subsectors)
                {
                    for (var i = 0; i < subsector.SegCount; i++)
                    {
                        var seg = map.Segs[subsector.FirstSeg + i];

                        var p1x = seg.Vertex1.X.ToDouble();
                        var p1y = seg.Vertex1.Y.ToDouble();
                        var p2x = seg.Vertex2.X.ToDouble();
                        var p2y = seg.Vertex2.Y.ToDouble();

                        var dx     = p2x - p1x;
                        var dy     = p2y - p1y;
                        var length = Math.Sqrt(dx * dx + dy * dy);

                        var centerX = (p1x + p2x) / 2;
                        var centerY = (p1y + p2y) / 2;
                        var stepX   = dy / length;
                        var stepY   = -dx / length;

                        var targetX = centerX + 3 * stepX;
                        var targetY = centerY + 3 * stepY;

                        var fx = Fixed.FromDouble(targetX);
                        var fy = Fixed.FromDouble(targetY);

                        var result = Geometry.PointInSubsector(fx, fy, map);

                        if (result == subsector)
                        {
                            ok++;
                        }
                        count++;
                    }
                }

                Assert.IsTrue((double)ok / count >= 0.995);
            }
        }
Ejemplo n.º 24
0
        public void LoadMap01()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2))
            {
                var options = new GameOptions();
                var players = DoomTest.GetDefaultPlayers();
                var world   = new World(resource, options, players);
                var map     = new Map(resource, world);

                var mapMinX = map.Lines.Min(line => Fixed.Min(line.Vertex1.X, line.Vertex2.X).ToDouble());
                var mapMaxX = map.Lines.Max(line => Fixed.Max(line.Vertex1.X, line.Vertex2.X).ToDouble());
                var mapMinY = map.Lines.Min(line => Fixed.Min(line.Vertex1.Y, line.Vertex2.Y).ToDouble());
                var mapMaxY = map.Lines.Max(line => Fixed.Max(line.Vertex1.Y, line.Vertex2.Y).ToDouble());

                for (var i = 0; i < map.Sectors.Length; i++)
                {
                    var sector = map.Sectors[i];
                    var sLines = map.Lines.Where(line => line.FrontSector == sector || line.BackSector == sector).ToArray();

                    CollectionAssert.AreEqual(sLines, sector.Lines);

                    var minX = sLines.Min(line => Fixed.Min(line.Vertex1.X, line.Vertex2.X).ToDouble()) - maxRadius;
                    minX = Math.Max(minX, mapMinX);
                    var maxX = sLines.Max(line => Fixed.Max(line.Vertex1.X, line.Vertex2.X).ToDouble()) + maxRadius;
                    maxX = Math.Min(maxX, mapMaxX);
                    var minY = sLines.Min(line => Fixed.Min(line.Vertex1.Y, line.Vertex2.Y).ToDouble()) - maxRadius;
                    minY = Math.Max(minY, mapMinY);
                    var maxY = sLines.Max(line => Fixed.Max(line.Vertex1.Y, line.Vertex2.Y).ToDouble()) + maxRadius;
                    maxY = Math.Min(maxY, mapMaxY);

                    var bboxTop    = (map.BlockMap.OriginY + BlockMap.MapBlockSize * (sector.BlockBox[Box.Top] + 1)).ToDouble();
                    var bboxBottom = (map.BlockMap.OriginY + BlockMap.MapBlockSize * sector.BlockBox[Box.Bottom]).ToDouble();
                    var bboxLeft   = (map.BlockMap.OriginX + BlockMap.MapBlockSize * sector.BlockBox[Box.Left]).ToDouble();
                    var bboxRight  = (map.BlockMap.OriginX + BlockMap.MapBlockSize * (sector.BlockBox[Box.Right] + 1)).ToDouble();

                    Assert.IsTrue(bboxLeft <= minX);
                    Assert.IsTrue(bboxRight >= maxX);
                    Assert.IsTrue(bboxTop >= maxY);
                    Assert.IsTrue(bboxBottom <= minY);

                    Assert.IsTrue(Math.Abs(bboxLeft - minX) <= 128);
                    Assert.IsTrue(Math.Abs(bboxRight - maxX) <= 128);
                    Assert.IsTrue(Math.Abs(bboxTop - maxY) <= 128);
                    Assert.IsTrue(Math.Abs(bboxBottom - minY) <= 128);
                }
            }
        }
Ejemplo n.º 25
0
        public void RequiemDemo1_Final2()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, WadPath.Requiem))
            {
                var demo = new Demo(resource.Wad.ReadLump("DEMO1"));
                demo.Options.Version = GameVersion.Final2;
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    demo.ReadCmd(cmds);
                    world.Update();
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);

                    if (world.levelTime == 18003)
                    {
                        break;
                    }
                }

                Assert.AreEqual(0x62d5d8f5u, (uint)lastMobjHash);
                Assert.AreEqual(0x05ce9c00u, (uint)aggMobjHash);
                Assert.AreEqual(0x94015cdau, (uint)lastSectorHash);
                Assert.AreEqual(0x1ae3ca8eu, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 26
0
        public void RequiemDemo3()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, WadPath.Requiem))
            {
                var demo    = new Demo(resource.Wad.ReadLump("DEMO3"));
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = players.Select(player => player.Cmd).ToArray();
                var world   = new World(resource, demo.Options, players);

                var lastMobjHash   = 0;
                var aggMobjHash    = 0;
                var lastSectorHash = 0;
                var aggSectorHash  = 0;

                while (true)
                {
                    demo.ReadCmd(cmds);
                    world.Update();
                    world.Options.GameTic++; // To avoid desync due to revenant missile.
                    lastMobjHash   = DoomDebug.GetMobjHash(world);
                    aggMobjHash    = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    lastSectorHash = DoomDebug.GetSectorHash(world);
                    aggSectorHash  = DoomDebug.CombineHash(aggSectorHash, lastSectorHash);

                    if (world.levelTime == 52487)
                    {
                        break;
                    }
                }

                Assert.AreEqual(0xb76035c8u, (uint)lastMobjHash);
                Assert.AreEqual(0x87651774u, (uint)aggMobjHash);
                Assert.AreEqual(0xa2d7d335u, (uint)lastSectorHash);
                Assert.AreEqual(0xabf7609au, (uint)aggSectorHash);
            }
        }
Ejemplo n.º 27
0
        public void MultiLevelTest()
        {
            using (var resource = CommonResource.CreateDummy(WadPath.Doom2, @"data\multi_level_test.wad"))
            {
                var demo    = new Demo(@"data\multi_level_test.lmp");
                var players = DoomTest.GetDefaultPlayers();
                var cmds    = Enumerable.Range(0, Player.MaxPlayerCount).Select(i => new TicCmd()).ToArray();
                var game    = new DoomGame(players, resource, demo.Options);

                var lastMobjHash = 0;
                var aggMobjHash  = 0;

                // MAP01
                {
                    for (var i = 0; i < 801; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                        lastMobjHash = DoomDebug.GetMobjHash(game.World);
                        aggMobjHash  = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    }

                    Assert.AreEqual(0xc88d8c72u, (uint)lastMobjHash);
                    Assert.AreEqual(0x50d51db4u, (uint)aggMobjHash);
                }

                // Intermission
                {
                    for (var i = 0; i < 378; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                    }
                }

                // MAP02
                {
                    for (var i = 0; i < 334; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                        lastMobjHash = DoomDebug.GetMobjHash(game.World);
                        aggMobjHash  = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    }

                    Assert.AreEqual(0xeb24ae67u, (uint)lastMobjHash);
                    Assert.AreEqual(0xa08bf6ceu, (uint)aggMobjHash);
                }

                // Intermission
                {
                    for (var i = 0; i < 116; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                    }
                }

                // MAP03
                {
                    for (var i = 0; i < 653; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                        lastMobjHash = DoomDebug.GetMobjHash(game.World);
                        aggMobjHash  = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    }

                    Assert.AreEqual(0xb4d74694u, (uint)lastMobjHash);
                    Assert.AreEqual(0xd813ac0fu, (uint)aggMobjHash);
                }

                // Intermission
                {
                    for (var i = 0; i < 131; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                    }
                }

                // MAP04
                {
                    for (var i = 0; i < 469; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                        lastMobjHash = DoomDebug.GetMobjHash(game.World);
                        aggMobjHash  = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    }

                    Assert.AreEqual(0xaf214214u, (uint)lastMobjHash);
                    Assert.AreEqual(0xad054ab5u, (uint)aggMobjHash);
                }

                // Intermission
                {
                    for (var i = 0; i < 236; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                    }
                }

                // MAP05
                {
                    for (var i = 0; i < 312; i++)
                    {
                        demo.ReadCmd(cmds);
                        game.Update(cmds);
                        lastMobjHash = DoomDebug.GetMobjHash(game.World);
                        aggMobjHash  = DoomDebug.CombineHash(aggMobjHash, lastMobjHash);
                    }

                    Assert.AreEqual(0xeb01a1fau, (uint)lastMobjHash);
                    Assert.AreEqual(0x0e4e66ffu, (uint)aggMobjHash);
                }
            }
        }