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 }