Coverage Summary for Class: Weather (com.mygdx.game.Entitys)
| Class | Class, % | Method, % | Line, % | 
|---|---|---|---|
| Weather | 100% (1/1) | 100% (3/3) | 100% (11/11) | 
1 package com.mygdx.game.Entitys; 2 3 import com.badlogic.gdx.math.Vector2; 4 import com.badlogic.gdx.utils.TimeUtils; 5 import com.mygdx.game.Components.RigidBody; 6 import com.mygdx.game.Managers.GameManager; 7 import com.mygdx.utils.Utilities; 8 9 /** 10 * Added for Assessment 2 in order to meet weather condition requirements 11 */ 12 public class Weather extends Obstacle { 13 14 private final float speed; 15 private final long freq; 16 17 private long lastDir; 18 private Vector2 dir; 19 20 /** 21 * Creates a Weather Object 22 * @param damage The damage dealt to an object which collides with this weather effect 23 * @param hitRate The rate at which damage is dealt 24 */ 25 public Weather(float damage, float hitRate) { 26 super("storm", true, damage, hitRate, -1); 27 28 speed = GameManager.getSettings().get("Weather").getFloat("maxSpeed"); 29 freq = GameManager.getSettings().get("Weather").getInt("moveFreq"); 30 31 lastDir = 0; 32 newDir(); 33 } 34 35 /** 36 * Called once every frame 37 */ 38 @Override 39 public void update() { 40 super.update(); 41 42 if (TimeUtils.timeSinceMillis(lastDir) > freq) newDir(); 43 getComponent(RigidBody.class).setVelocity(dir); 44 } 45 46 /** 47 * Determines a new direction for the weather effect to move in 48 */ 49 private void newDir() { 50 dir = Utilities.randomPos(-1, 1); 51 dir = new Vector2(dir.x * speed, dir.y * speed); 52 lastDir = TimeUtils.millis(); 53 } 54 55 }