private void takeDamage(CollisionIdentity identity) { if (identity == null) { return; } if (identity.Damage > 0) { CurrentHealth -= identity.Damage; tookDamage = true; timeBetweenDamage = 0; } }
private void TakeDamage(CollisionIdentity identity) { if (identity == null) { return; } if (identity.Damage > 0) { if (Shield.Shielded) { Shield.AlertHit(); } else { CurrentHealth -= identity.Damage; tookDamage = true; timeBetweenDamage = 0; } } }
public CollisionResult Collide(float s, PhysicsGroupType groupType, PhysicsObject physicsObject, CollisionIdentity identity) { CollisionResult response = CollisionResult.None; if (groupType == PhysicsGroupType.Physical) { response = Weapon.Collide(s, groupType, physicsObject, identity); CollisionResult playerCollision = physicsObject.Collide(s, collision); if (playerCollision) { if (collisionResult) { //Not sure if necessary, but if we have multiple collisions in a single frame, stop all movement. collisionResult.PositionA = collision.Position; collisionResult.VelocityA = Vector2.Zero; } else { collisionResult = playerCollision.Switch(); } response = playerCollision; TakeDamage(identity); } } return(response); }
public CollisionResult Collide(float s, PhysicsGroupType groupType, PhysicsObject physicsObject, CollisionIdentity identity) { CollisionResult response = CollisionResult.None; response = CollideBulletsSimple(s, physicsObject, bullets, bulletIdentity, bulletsToRemove); response = CollideBulletsSimple(s, physicsObject, cannonballs, cannonballIdentity, cannonballsToRemove); response = CollideBulletsSimple(s, physicsObject, snipes, snipeIdentity, snipesToRemove); return(response); }
private CollisionResult CollideBulletsSimple(float s, PhysicsObject physicsObject, List <Circle> list, CollisionIdentity identity, List <Circle> removalList) { CollisionResult response = CollisionResult.None; for (int i = list.Count - 1; i >= 0; i--) { Circle c = list[i]; CollisionResult collisionResult = physicsObject.Collide(s, c); if (collisionResult) { removalList.Add(c); collisionResult.Identity = identity; response = collisionResult; } } return(response); }
private void CollideBulletsSimple(float s, ICollide other, PhysicsGroupType groupType, List <Circle> list, CollisionIdentity identity, List <Circle> removalList) { for (int i = list.Count - 1; i >= 0; i--) { Circle c = list[i]; CollisionResult collisionResult = other.Collide(s, groupType, c, identity); if (collisionResult) { removalList.Add(c); } } }
public CollisionResult Collide(float s, PhysicsGroupType groupType, PhysicsObject physicsObject, CollisionIdentity identity) { CollisionResult response = CollisionResult.None; if (groupType == PhysicsGroupType.Physical) { for (int i = bullets.Count - 1; i >= 0; i--) { Circle bullet = bullets[i]; CollisionResult bulletCollision = physicsObject.Collide(s, bullet); if (bulletCollision) { bullets.RemoveAt(i); //bullet.Position = bulletCollision.PositionB; //bullet.Velocity = bulletCollision.VelocityB; bulletCollision.Identity = bulletIdentity; response = bulletCollision; } } CollisionResult result = physicsObject.Collide(s, collision); if (result) { takeDamage(identity); response = result; } } return(response); }