Example #1
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);
        }
Example #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();
            }
        }
Example #3
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);
        }
Example #4
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);
        }
Example #5
0
 public void Delete(SolidBody body)
 {
     if (body is DynamicObject)
     {
         dBasket.Add(body);
     }
     else
     {
         sBasket.Add(body);
     }
 }
Example #6
0
 public void Add(SolidBody body)
 {
     if (body is DynamicObject)
     {
         dList.Add((DynamicObject)body);
     }
     else
     {
         sList.Add(body);
     }
 }
Example #7
0
 public static void Solve(DynamicObject d, SolidBody s)
 {
     if (d is Circle)
     {
         if (s is Room)
         {
             Solve((Circle)d, (Room)s);
         }
         else
         if (s is GravityTrap)
         {
             Solve((Circle)d, (GravityTrap)s);
         }
     }
 }
Example #8
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);
        }
Example #9
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);
        }
Example #10
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);
        }
Example #11
0
    /**##########################################
     *          GAME RELATED
     * */

    public bool isAccesibleBy(Entity entity)
    {
        if (!walkable)
        {
            return(false);
        }

        SolidBody esb = entity.GetComponent <SolidBody>();

        SolidBody[] toPass = GetComponentsInChildren <SolidBody>();

        bool allLetMePass = true;

        foreach (SolidBody sb in toPass)
        {
            allLetMePass = sb.LetsPass(esb);
            if (!allLetMePass)
            {
                break;
            }
        }

        if (allLetMePass)
        {
            return(allLetMePass);
        }
        else
        {
            bool canGoThroughAll = true;
            foreach (SolidBody sb in toPass)
            {
                canGoThroughAll = esb.CanGoThrough(sb);
                if (!canGoThroughAll)
                {
                    break;
                }
            }
            return(canGoThroughAll);
        }

        return(walkable);
    }
Example #12
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);
        }
Example #13
0
 public bool CanGoThrough(SolidBody sb)
 {
     return(!canBlockMe);
 }
Example #14
0
 public bool LetsPass(SolidBody sb)
 {
     return(!blocks);
 }
Example #15
0
        public void Test_SolidBodyState()
        {
            SolidBody solidBody = new SolidBody(new StubPlayer());

            Assert.IsNotNull(solidBody.State);
        }
Example #16
0
        public void Test_CreateSolidBody()
        {
            SolidBody solidBody = new SolidBody(new StubPlayer());

            Assert.IsNotNull(solidBody.Body);
        }
Example #17
0
 public bool LetsPass(SolidBody sb)
 {
     return !blocks;
 }
Example #18
0
 public bool CanGoThrough(SolidBody sb)
 {
     return !canBlockMe;
 }