Coverage Summary for Class: ObstacleControl (com.mygdx.game.Components)
| Class | Class, % | Method, % | Line, % |
|---|---|---|---|
| ObstacleControl | 100% (1/1) | 100% (2/2) | 92.9% (13/14) |
1 package com.mygdx.game.Components; 2 3 import com.badlogic.gdx.utils.TimeUtils; 4 import com.mygdx.game.Entitys.Obstacle; 5 import com.mygdx.game.Entitys.Player; 6 import com.mygdx.game.Physics.CollisionInfo; 7 8 /** 9 * // Added for Assessment 2 Requirements // 10 * Makes an Entity act as an Obstacle to the Player, causing damage upon collision in a variety of differing ways. 11 */ 12 public class ObstacleControl extends Component { 13 private final float hitDamage; 14 private final float hitRate; 15 private final int hitLimit; 16 17 private long lastHit; 18 private int hitCount; 19 20 /** 21 * Generate an obstacle controller component. 22 * @param damage The damage that the obstacle does per 'hit' 23 * @param hitRate The rate at which 'hits' occur while colliding 24 * @param hitLimit The number of 'hits' required to break the obstacle 25 */ 26 public ObstacleControl(float damage, float hitRate, int hitLimit) { 27 this.hitDamage = damage; 28 this.hitRate = hitRate * 1000f; 29 this.hitLimit = hitLimit; 30 31 lastHit = 0; 32 hitCount = 0; 33 } 34 35 /** 36 * Attempts to perform a collision action 37 * @param collision the collision info to be attempted 38 * @param enter boolean that determines whether the collision is allowed 39 */ 40 public void TryHit(CollisionInfo collision, boolean enter) { 41 boolean doHit = (enter || (TimeUtils.timeSinceMillis(lastHit) >= hitRate && hitRate > 0)); 42 if (collision.a instanceof Player && doHit) { 43 Player player = (Player) collision.a; 44 player.getComponent(Pirate.class).takeDamage(hitDamage); 45 lastHit = TimeUtils.millis(); 46 hitCount++; 47 if (hitCount >= hitLimit && hitLimit > 0) { 48 ((Obstacle) parent).kill(); 49 } 50 } 51 } 52 }