Coverage Summary for Class: PowerUp (com.mygdx.game.PowerUps)

Class Method, % Line, %
PowerUp 88.9% (8/9) 97.6% (40/41)
PowerUp$1 100% (1/1) 100% (1/1)
Total 90% (9/10) 97.6% (41/42)


1 package com.mygdx.game.PowerUps; 2  3 import com.badlogic.gdx.utils.JsonValue; 4 import com.badlogic.gdx.utils.TimeUtils; 5 import com.mygdx.game.Components.Pirate; 6 import com.mygdx.game.Components.PowerUpAssigned; 7 import com.mygdx.game.Managers.GameManager; 8  9 /** 10  * // Assessment 2 requirement // 11  * A PowerUp that can modify the value of any Ship for a limited or permanent amount of time. 12  */ 13 public class PowerUp { 14  15  private String name; 16  private final int cost; 17  private final String key; 18  private final PowerUpOperation oper; 19  private final float value; 20  private final long duration; 21  private long startTime; 22  private boolean done; 23  24  /** 25  * Create a PowerUp manually, used for testing. 26  * @param key The key of the value to affect 27  * @param operation The way the key is applied to the value 28  * @param value The value that is applied to the key 29  * @param cost The cost of the powerup 30  */ 31  public PowerUp(String key, PowerUpOperation operation, float value, int cost, int duration) { 32  this.key = key; 33  this.oper = operation; 34  this.value = value; 35  this.duration = duration; 36  this.done = false; 37  this.cost = cost ; 38  } 39  40  /** 41  * Create a PowerUp from the settings file 42  * @param settings the json file containing the settings for the power up 43  */ 44  public PowerUp(JsonValue settings) { 45  this.key = settings.getString("key"); 46  this.oper = PowerUpOperation.values()[settings.getInt("operation")]; 47  this.value = settings.getInt("value"); 48  this.duration = settings.getInt("duration"); 49  this.done = false; 50  this.cost = settings.getInt("cost") ; 51  this.name = settings.getString("name"); 52  } 53  54  55  /** 56  * Apply PowerUp modifiers to the Pirate. 57  * @param pirate The Pirate to apply the PowerUp to 58  */ 59  public void EnablePowerUp(Pirate pirate) { 60  switch (oper){ 61  case replace: 62  pirate.setValue(key, value); 63  break; 64  case increment: 65  pirate.setValue(key, pirate.getValue(key) + value); 66  break; 67  case decrement: 68  pirate.setValue(key, pirate.getValue(key) - value); 69  break; 70  case multiply: 71  pirate.multValue(key, value); 72  break; 73  case divide: 74  pirate.multValue(key, 1f/value); 75  break; 76  } 77  startTime = TimeUtils.millis(); 78  } 79  80  /** 81  * Check whether the PowerUp is permanent or temporary. 82  * @return True if the PowerUp is permanent 83  */ 84  public boolean CheckPermanent() { 85  return (duration <= 0); 86  } 87  88  /** 89  * Check whether a PowerUp is done. 90  * @return Whether the PowerUp is done or not 91  */ 92  public boolean CheckPowerUpDone() { 93  return CheckPowerUpDone(null); 94  } 95  96  /** 97  * Check whether a PowerUp is done, and Disable it if so. 98  * @param pirate The Pirate class to disable the PowerUp for 99  * @return Whether the PowerUp is done or not 100  */ 101  public boolean CheckPowerUpDone(Pirate pirate) { 102  if (done) return true; 103  if (duration > 0) { 104  long timeSoFar = TimeUtils.timeSinceMillis(startTime) / 1000; 105  if (timeSoFar >= duration) { 106  if (pirate != null) DisablePowerUp(pirate); 107  return true; 108  } 109  } return false; 110  } 111  112  /** 113  * Remove PowerUp modifiers from a Pirate and reset to default. 114  * @param pirate The Pirate to return to normal 115  */ 116  public void DisablePowerUp(Pirate pirate) { 117  if (duration > 0) pirate.resetToDefault(key); 118  done = true; 119  } 120  121  /** 122  * Removes plunder from the player in order to apply the power-up to themselves 123  */ 124  public void buyPowerUp(){ 125  if (GameManager.getPlayer().getPlunder() >= this.cost) { 126  GameManager.getPlayer().plunder((-this.cost)); 127  GameManager.getPlayer().getComponent(PowerUpAssigned.class).AssignPowerUp(this); 128  } 129  } 130  131  /** 132  * @return the name of the power-up 133  */ 134  public String getName() { 135  return name; 136  } 137 }