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); }
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(); } }
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); }
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); }
public void Delete(SolidBody body) { if (body is DynamicObject) { dBasket.Add(body); } else { sBasket.Add(body); } }
public void Add(SolidBody body) { if (body is DynamicObject) { dList.Add((DynamicObject)body); } else { sList.Add(body); } }
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); } } }
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); }
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); }
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); }
/**########################################## * 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); }
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); }
public bool CanGoThrough(SolidBody sb) { return(!canBlockMe); }
public bool LetsPass(SolidBody sb) { return(!blocks); }
public void Test_SolidBodyState() { SolidBody solidBody = new SolidBody(new StubPlayer()); Assert.IsNotNull(solidBody.State); }
public void Test_CreateSolidBody() { SolidBody solidBody = new SolidBody(new StubPlayer()); Assert.IsNotNull(solidBody.Body); }
public bool LetsPass(SolidBody sb) { return !blocks; }
public bool CanGoThrough(SolidBody sb) { return !canBlockMe; }