示例#1
0
        public void Test_ThrowGrenade()
        {
            RoyalGameModel model       = new RoyalGameModel();
            var            grenade     = BuilderGameObject.CreateGrenade(model, new PointF(50, 50), new Vec2(0, 10), new GrenadeBullet());
            SolidBody      bodyGrenade = grenade.Components.GetComponent <SolidBody>();
            PointF         start       = bodyGrenade.Shape.Location;

            //прошла 1 секунда
            model.Field.Step(1f, 6, 3);
            grenade.Update(new TimeQuantPassed(1000));
            PointF step1 = bodyGrenade.Shape.Location;

            Assert.AreNotEqual(start, step1);
            //прошла 2 секунда
            model.Field.Step(1f, 6, 3);
            grenade.Update(new TimeQuantPassed(1000));
            PointF step2 = bodyGrenade.Shape.Location;

            Assert.AreNotEqual(step1, step2);
            //прошла 3 секунда
            model.Field.Step(1f, 6, 3);
            grenade.Update(new TimeQuantPassed(1000));
            PointF step3 = bodyGrenade.Shape.Location;

            Assert.AreNotEqual(step2, step3);
            //прошла 4 секунда
            model.Field.Step(1f, 6, 3);
            grenade.Update(new TimeQuantPassed(1000));
            PointF step4 = bodyGrenade.Shape.Location;

            Assert.AreNotEqual(step3, step4);
        }
示例#2
0
        public void Test_UpdateComponent_GoTo()
        {
            var model = new RoyalGameModel();
            //var model = new MockRoyalGameModel();
            //model.Field = new Box2DX.Dynamics.World()
            var player = BuilderGameObject.CreateGamer(model, new System.Drawing.PointF());

            var body = new SolidBody(player);

            player.Components.Add(body);
            player.Setup();

            float    speed    = 8;
            Movement movement = new Movement(player, speed);

            movement.Setup();
            player.Update(new GoTo(player.ID, new Direction(DirectionHorisontal.Left, DirectionVertical.Down)));

            var vector = body.Body.GetLinearVelocity();

            if (vector.X != -speed || vector.Y != -speed)
            {
                Assert.Fail();
            }
        }
示例#3
0
        public void CreateGrenadeTest()
        {
            var x        = 10;
            var y        = 10;
            var location = new PointF(x, y);
            var model    = new RoyalGameModel();
            var obj      = BuilderGameObject.CreateGrenade(model, location, new Box2DX.Common.Vec2(x, y), new GrenadeBullet());

            var body      = obj.Components.GetComponent <SolidBody>();
            var explosion = obj.Components.GetComponent <Explosion>();

            Assert.IsNotNull(body);
            Assert.IsNotNull(explosion);

            Assert.AreEqual(location, body.Shape.Location);
            Assert.AreEqual(obj, model.gameObjects[obj.ID]);
            Assert.AreEqual(TypesGameObject.Grenade, obj.Type);
            Assert.AreEqual(TypesBehaveObjects.Active, obj.TypeBehave);

            for (int i = 0; i < 10; i++)
            {
                model.MakeStep(i);
            }
            Assert.IsTrue((body.Shape.Location.X - x) > 0);
            Assert.IsTrue((body.Shape.Location.Y - y) > 0);
        }
示例#4
0
        public void CreateGamerTest()
        {
            var location = new PointF(10, 10);
            var model    = new RoyalGameModel();
            var obj      = BuilderGameObject.CreateGamer(model, location);

            var solidBody     = obj.Components.GetComponent <SolidBody>();
            var healthy       = obj.Components.GetComponent <Healthy>();
            var collector     = obj.Components.GetComponent <Collector>();
            var currentWeapon = obj.Components.GetComponent <CurrentWeapon>();
            var statistics    = obj.Components.GetComponent <Statistics>();

            Assert.IsNotNull(solidBody);
            Assert.IsNotNull(healthy);
            Assert.IsNotNull(collector);
            Assert.IsNotNull(currentWeapon);
            Assert.IsNotNull(statistics);

            Assert.AreEqual(obj, model.Players.First());
            Assert.AreEqual(obj, model.gameObjects[obj.ID]);
            Assert.AreEqual(location, solidBody.Shape.Location);
            Assert.AreEqual(location, (obj as Gamer).Location);

            Assert.AreEqual(TypesGameObject.Player, obj.Type);
            Assert.AreEqual(false, (obj as Gamer).Destroyed);
            Assert.AreEqual(TypesBehaveObjects.Active, obj.TypeBehave);
        }
示例#5
0
        public void Test_ThrowGrenadeAndDamage()
        {
            RoyalGameModel model   = new RoyalGameModel();
            Gamer          player  = BuilderGameObject.CreateGamer(model, new PointF(70, 100));
            Healthy        healthy = player.Components.GetComponent <Healthy>();
            float          startHp = healthy.HP;
            //player.Setup();

            var       grenade     = BuilderGameObject.CreateGrenade(model, new PointF(50, 50), new Vec2(20, 50), new GrenadeBullet());
            SolidBody bodyGrenade = grenade.Components.GetComponent <SolidBody>();
            PointF    startStep   = bodyGrenade.Shape.Location;

            //смотрим как движется граната
            for (int i = 0; i < 44; i++)
            {
                model.Field.Step(0.1f, 6, 3);
                grenade.Update(new TimeQuantPassed(100));
                player.Update(new TimeQuantPassed(100));
                PointF endStep = bodyGrenade.Shape.Location;
                Debug.WriteLine($"{endStep.X}:{endStep.Y}");
                Assert.AreEqual(startHp, healthy.HP);
            }

            model.Field.Step(0.1f, 6, 3);
            grenade.Update(new TimeQuantPassed(100));
            player.Update(new TimeQuantPassed(100));
            Assert.AreEqual(startHp - 50, healthy.HP);
        }
示例#6
0
        public void Test_AddOutgoingMessage()
        {
            var model = new RoyalGameModel();
            int count = model.outgoingMessages.Count;

            model.AddOutgoingMessage(new ObjectMoved(10, new PointF(10, 50)));
            Assert.AreEqual(count + 1, model.outgoingMessages.Count);
        }
示例#7
0
        public void TestRoomContactListener_Add()
        {
            var Room    = new RoyalGameModel();
            var box     = BuilderGameObject.CreateBox(Room, new PointF(55, 70));
            var player1 = BuilderGameObject.CreateGamer(Room, new PointF(50, 70));

            SolidBody solid = (SolidBody)player1.Components.GetComponent <SolidBody>();

            Room.Field.Step(1 / 60, 6, 3);
            Assert.AreEqual(1, solid.CoveredObjects.Count);
        }
示例#8
0
        public void Test_AddGameObject()
        {
            var model = new RoyalGameModel();
            int count = model.gameObjects.Count;
            var stone = BuilderGameObject.CreateStone(model, new PointF(30, 20));

            stone.Setup();

            model.AddOrUpdateGameObject(stone);
            Assert.AreEqual(count + 1, model.gameObjects.Count);
        }
示例#9
0
        public void CreateStoneTest()
        {
            var location = new PointF(10, 10);
            var model    = new RoyalGameModel();
            var obj      = BuilderGameObject.CreateStone(model, location);

            var solidBody = obj.Components.GetComponent <SolidBody>();

            Assert.IsNotNull(solidBody);

            Assert.AreEqual(location, solidBody.Shape.Location);
            Assert.AreEqual(obj, model.gameObjects[obj.ID]);
            Assert.AreEqual(TypesGameObject.Stone, obj.Type);
            Assert.AreEqual(TypesBehaveObjects.Passive, obj.TypeBehave);
        }
示例#10
0
        public void CreateBushTest()
        {
            var location = new PointF(10, 10);
            var model    = new RoyalGameModel();
            var obj      = BuilderGameObject.CreateBush(model, location);

            var body = obj.Components.GetComponent <TransparentBody>();

            Assert.IsNotNull(body);

            Assert.AreEqual(location, body.Shape.Location);
            Assert.AreEqual(obj, model.gameObjects[obj.ID]);
            Assert.AreEqual(TypesGameObject.Bush, obj.Type);
            Assert.AreEqual(TypesBehaveObjects.Passive, obj.TypeBehave);
        }
示例#11
0
        public void CreateDeathZoneTest()
        {
            var diameter = 15F;
            var model    = new RoyalGameModel();
            var obj      = BuilderGameObject.CreateDeathZone(model, diameter);

            var body       = obj.Components.GetComponent <BodyZone>();
            var damageZone = obj.Components.GetComponent <DamageZone>();

            Assert.IsNotNull(body);
            Assert.IsNotNull(damageZone);

            Assert.AreEqual(obj, model.gameObjects[obj.ID]);
            Assert.AreEqual(TypesGameObject.DeathZone, obj.Type);
            Assert.AreEqual(TypesBehaveObjects.Active, obj.TypeBehave);
        }
示例#12
0
        public void TestRoomContactListener_RemoveObject()
        {
            var Room = new RoyalGameModel();

            var box = BuilderGameObject.CreateBox(Room, new PointF(55, 70));

            box.Setup();
            Room.AddOrUpdateGameObject(box);

            var player1 = BuilderGameObject.CreateGamer(Room, new PointF(50, 70));

            SolidBody solid = player1.Components.GetComponent <SolidBody>();

            Room.Field.Step(1f / 60f, 6, 3);
            solid.Parent.Model.Field.DestroyBody(solid.Body);
            Assert.AreEqual(solid.CoveredObjects.Count, 0);
        }
示例#13
0
        public void SetupTest()
        {
            var model = new RoyalGameModel();
            var obj   = new GameObject(model, TypesGameObject.Grenade, TypesBehaveObjects.Active);
            var body  = new SolidBody(obj);

            obj.Components.Add(body);
            var explosion = new Explosion(obj, new GrenadeBullet());

            obj.Components.Add(explosion);

            Assert.IsFalse(explosion.Parent.Destroyed);
            obj.Setup();

            obj.Update(new TimeQuantPassed(10000));
            Assert.IsTrue(explosion.Parent.Destroyed);
        }
示例#14
0
        public void TestRoomContactListener_Remove()
        {
            var Room = new RoyalGameModel();

            var box = BuilderGameObject.CreateBox(Room, new PointF(55, 70));

            box.Setup();
            Room.AddOrUpdateGameObject(box);

            var player1 = BuilderGameObject.CreateGamer(Room, new PointF(50, 70));

            SolidBody solid = player1.Components.GetComponent <SolidBody>();

            solid.Body.SetLinearVelocity(new Vec2(0, 40f));
            Room.Field.Step(2, 6, 3);
            //только после 2 перемещения срабатывает потеря наслоения
            Room.Field.Step(1f / 60f, 6, 3);
            Assert.AreEqual(solid.CoveredObjects.Count, 0);
        }
示例#15
0
        public void CreateGrenadeCollectionTest()
        {
            var location = new PointF(10, 10);
            var model    = new RoyalGameModel();
            var obj      = BuilderGameObject.CreateGrenadeCollection(model, location);

            var solidBody = obj.Components.GetComponent <SolidBody>();
            var throw_    = obj.Components.GetComponent <Throw>();
            var magazin   = obj.Components.GetComponent <Magazin>();

            Assert.IsNotNull(solidBody);
            Assert.IsNotNull(throw_);
            Assert.IsNotNull(magazin);

            Assert.AreEqual(location, solidBody.Shape.Location);
            Assert.AreEqual(obj, model.gameObjects[obj.ID]);
            Assert.AreEqual(TypesGameObject.Weapon, obj.Type);
            Assert.AreEqual(TypesWeapon.GrenadeCollection, (obj as IWeapon).TypeWeapon);
            Assert.AreEqual(TypesBehaveObjects.Active, obj.TypeBehave);
        }
示例#16
0
        public void CreateAssaultRiffleTest()
        {
            var location = new PointF(10, 10);
            var model    = new RoyalGameModel();
            var obj      = BuilderGameObject.CreateAssaultRiffle(model, location);

            var solidBody = obj.Components.GetComponent <SolidBody>();
            var shot      = obj.Components.GetComponent <Shot>();
            var magazin   = obj.Components.GetComponent <Magazin>();

            Assert.IsNotNull(solidBody);
            Assert.IsNotNull(shot);
            Assert.IsNotNull(magazin);

            Assert.AreEqual(location, solidBody.Shape.Location);
            Assert.AreEqual(obj, model.gameObjects[obj.ID]);
            Assert.AreEqual(TypesGameObject.Weapon, obj.Type);
            Assert.AreEqual(TypesWeapon.AssaultRifle, (obj as IWeapon).TypeWeapon);
            Assert.AreEqual(TypesBehaveObjects.Active, obj.TypeBehave);
        }
示例#17
0
        public void Test_PickUpWeapon()
        {
            var Room = new RoyalGameModel();

            var gun = BuilderGameObject.CreateGun(Room, new PointF(50, 70));

            var player1 = BuilderGameObject.CreateGamer(Room, new PointF(50, 70));

            Room.Players.Add(player1);

            Room.Field.Step(1f / 60f, 6, 3);

            //поднимаем оружие
            player1.Update(new TryPickUp(player1.ID));
            player1.Update(new TimeQuantPassed(1));
            var collector = player1.Components.GetComponent <Collector>();

            var received_gun = collector.GetWeapon(TypesWeapon.Gun);

            Assert.AreEqual(gun, received_gun);
        }
示例#18
0
        public void Test_Dispose()
        {
            var Room = new RoyalGameModel();
            var gun  = BuilderGameObject.CreateGun(Room, new PointF(50, 70));

            var player1 = BuilderGameObject.CreateGamer(Room, new PointF(50, 70));

            Room.Field.Step(1f / 60f, 6, 3);

            //поднимаем оружие
            player1.Update(new TryPickUp(player1.ID));
            player1.Update(new TimeQuantPassed(1));
            var collector = player1.Components.GetComponent <Collector>();

            Assert.IsNotNull(collector.GetWeapon(TypesWeapon.Gun));
            Assert.IsNull(gun.Components.GetComponent <SolidBody>());

            int objectsInMap = Room.Field.GetBodyCount();

            //уничтожаем игрока
            player1.Update(new GotDamage(player1.ID, 100));
            player1.Dispose();

            Assert.AreEqual(objectsInMap, Room.Field.GetBodyCount());
            Assert.IsNotNull(gun.Components.GetComponent <SolidBody>());

            //отслеживаем движение
            var    bodyGun   = gun.Components.GetComponent <SolidBody>();
            PointF startStep = bodyGun.Shape.Location;

            for (int i = 0; i < 45; i++)
            {
                Room.Field.Step(0.1f, 6, 3);
                gun.Update(new TimeQuantPassed(100));
                PointF endStep = bodyGun.Shape.Location;
                Debug.WriteLine($"{endStep.X}:{endStep.Y}");
                Assert.AreNotEqual(startStep, endStep);
                startStep = endStep;
            }
        }
示例#19
0
        public void Test_UpdateComponent_MakeShot()
        {
            //создаем коллекцию объектов для теста
            var Room = new RoyalGameModel();

            var gun     = BuilderGameObject.CreateGun(Room, new PointF(50, 70));
            var player1 = BuilderGameObject.CreateGamer(Room, new PointF(50, 70));
            var player2 = BuilderGameObject.CreateGamer(Room, new PointF(35, 75));

            Room.Field.Step(1f / 60f, 6, 3);
            //поднимаем оружие
            player1.Update(new TryPickUp(player1.ID));
            player1.Update(new TimeQuantPassed(1));
            CurrentWeapon currentWeapon = player1.Components.GetComponent <CurrentWeapon>();

            Assert.IsNotNull(currentWeapon.GetCurrentWeapon);
            //делаем выстрел
            player1.Update(new MakeShot(player1.ID, new PointF(35, 75)));
            player1.Update(new TimeQuantPassed(100));
            //проверяем
            player2.Update(new TimeQuantPassed(100));
            Healthy healtySecondGamer = player2.Components.GetComponent <Healthy>();

            Assert.AreEqual(92, healtySecondGamer.HP);

            //делаем 2 выстрел
            player1.Update(new MakeShot(player1.ID, new PointF(35, 75)));
            player1.Update(new TimeQuantPassed(401));
            //выстрел не должен произойти
            player2.Update(new TimeQuantPassed(401));
            Assert.AreEqual(92, healtySecondGamer.HP);

            Thread.Sleep(550);
            //делаем 3 выстрел
            player1.Update(new MakeShot(player1.ID, new PointF(35, 75)));
            player1.Update(new TimeQuantPassed(100));
            //выстрел должен произойти
            player2.Update(new TimeQuantPassed(100));
            Assert.AreEqual(healtySecondGamer.HP, 84);
        }
示例#20
0
        public void Test_UpdateComponent_TimeQuantPassed()
        {
            var Room    = new RoyalGameModel();
            var player1 = BuilderGameObject.CreateGamer(Room, new PointF(50, 70));

            SolidBody  solid        = player1.Components.GetComponent <SolidBody>();
            RectangleF compareShape = solid.Shape;

            Assert.AreEqual(solid.Shape, compareShape);
            Vec2 compareVec = solid.Body.GetPosition();

            solid.Body.SetLinearVelocity(new Vec2(40f, 0));

            int quantTime = 60;

            Room.Field.Step((float)quantTime / 1000f, 8, 3);
            var A = solid.Body.GetPosition();

            Assert.AreNotEqual(A, compareVec);

            player1.Update(new TimeQuantPassed(quantTime));
            Assert.AreNotEqual(solid.Shape, compareVec);
        }
示例#21
0
 public void Test_CreateModel()
 {
     IGameModel model = new RoyalGameModel(2);
 }