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 }