Coverage Summary for Class: GameScreen (com.mygdx.game.UI)

Class Method, % Line, %
GameScreen 0% (0/7) 0% (0/147)
GameScreen$1 0% (0/2) 0% (0/2)
GameScreen$2 0% (0/2) 0% (0/2)
GameScreen$3 0% (0/2) 0% (0/2)
GameScreen$4 0% (0/2) 0% (0/2)
GameScreen$5 0% (0/2) 0% (0/2)
GameScreen$6 0% (0/2) 0% (0/2)
GameScreen$7 0% (0/2) 0% (0/2)
Total 0% (0/21) 0% (0/161)


1 package com.mygdx.game.UI; 2  3 import com.badlogic.gdx.Gdx; 4 import com.badlogic.gdx.Input; 5 import com.badlogic.gdx.graphics.OrthographicCamera; 6 import com.badlogic.gdx.graphics.Pixmap; 7 import com.badlogic.gdx.scenes.scene2d.Actor; 8 import com.badlogic.gdx.scenes.scene2d.ui.*; 9 import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; 10 import com.badlogic.gdx.utils.JsonValue; 11 import com.badlogic.gdx.utils.ScreenUtils; 12 import com.mygdx.game.Components.ComponentEvent; 13 import com.mygdx.game.Components.PlayerController; 14 import com.mygdx.game.Entitys.Player; 15 import com.mygdx.game.Managers.*; 16 import com.mygdx.game.PirateGame; 17 import com.mygdx.game.PowerUps.PowerUp; 18 import com.mygdx.game.Quests.Quest; 19  20 import java.util.ArrayList; 21 import java.util.HashMap; 22  23 import static com.mygdx.utils.Constants.*; 24  25 public class GameScreen extends Page { 26  private Label healthLabel; 27  private Label money; 28  private Label points; 29  private Label ammo; 30  private final Label questDesc; 31  private final Label questName; 32  33  public ArrayList<TextButton> powerUpButtons; // Added for Assessment 2, keep track of Shop Buttons 34  public Pixmap pixmap; 35  private float accumulator; 36  37  /** 38  * Boots up the actual game: starts PhysicsManager, GameManager, EntityManager, 39  * loads texture atlases into ResourceManager. Draws quest and control info. 40  * 41  * @param parent PirateGame UI screen container 42  * @param id_map the resource id of the tile map 43  */ 44  public GameScreen(PirateGame parent, int id_map) { 45  super(parent); 46  INIT_CONSTANTS(); 47  PhysicsManager.Initialize(false); 48  49  /*int id_ship = ResourceManager.addTexture("ship.png"); 50  int id_map = ResourceManager.addTileMap("Map.tmx"); 51  int atlas_id = ResourceManager.addTextureAtlas("Boats.txt"); 52  int extras_id = ResourceManager.addTextureAtlas("UISkin/skin.atlas"); 53  int buildings_id = ResourceManager.addTextureAtlas("Buildings.txt"); 54  ResourceManager.loadAssets();*/ 55  56  GameManager.SpawnGame(id_map); 57  //QuestManager.addQuest(new KillQuest(c)); 58  59  EntityManager.raiseEvents(ComponentEvent.Awake, ComponentEvent.Start); 60  61  Window questWindow = new Window("Current Quest", parent.skin); 62  63  Quest q = QuestManager.currentQuest(); 64  Table t = new Table(); 65  questName = new Label("NAME", parent.skin); 66  t.add(questName); 67  t.row(); 68  questDesc = new Label("DESCRIPTION", parent.skin); 69  if (q != null) { 70  questName.setText(q.getName()); 71  questDesc.setText(q.getDescription()); 72  } 73  74  t.add(questDesc).left(); 75  questWindow.add(t); 76  actors.add(questWindow); 77  78  Table t1 = new Table(); 79  t1.top().right(); 80  t1.setFillParent(true); 81  actors.add(t1); 82  83  Window tutWindow = new Window("Controls", parent.skin); 84  Table table = new Table(); 85  tutWindow.add(table); 86  t1.add(tutWindow); 87  88  table.add(new Label("Move with", parent.skin)).top().left(); 89  table.add(new Image(parent.skin, "key-w")); 90  table.add(new Image(parent.skin, "key-s")); 91  table.add(new Image(parent.skin, "key-a")); 92  table.add(new Image(parent.skin, "key-d")); 93  table.row(); 94  table.add(new Label("Shoot in direction of mouse", parent.skin)).left(); 95  //table.add(new Image(parent.skin, "space")); 96  table.add(new Image(parent.skin, "mouse")); 97  table.row(); 98  table.add(new Label("Shoot in direction of ship", parent.skin)).left(); 99  table.add(new Image(parent.skin, "space")); 100  table.row(); 101  table.add(new Label("Pause", parent.skin)).left(); // changed to pause for assessment 2 102  table.add(new Image(parent.skin, "key-esc")); 103  104  HashMap<String, PowerUp> powerUps = new HashMap<>(); 105  106  //create power ups 107  for (JsonValue powData : GameManager.getSettings().get("powerups")) { 108  PowerUp pow = new PowerUp(powData); 109  powerUps.put(powData.getString("id"), pow); 110  } 111  112  // start of addition for assessment 2 to add a shop to the UI 113  Table shop = new Table(); 114  Window shopWin = new Window("Shop", parent.skin); 115  Table shopTable = new Table(); 116  117  shop.bottom().right(); 118  shop.setFillParent(true); 119  shop.add(shopWin); 120  shopWin.add(shopTable); 121  shopTable.pad(10); 122  123  powerUpButtons = new ArrayList<>(); 124  125  //power up 1 126  PowerUp pow1 = powerUps.get("1"); 127  TextButton powerUp1 = new TextButton(pow1.getName(), parent.skin); 128  powerUp1.addListener(new ChangeListener() { 129  @Override 130  public void changed(ChangeEvent event, Actor actor) { 131  pow1.buyPowerUp(); 132  } 133  }); 134  powerUpButtons.add(powerUp1); 135  136  //power up 2 137  PowerUp pow2 = powerUps.get("2"); 138  TextButton powerUp2 = new TextButton(pow2.getName(), parent.skin); 139  powerUp2.addListener(new ChangeListener() { 140  @Override 141  public void changed(ChangeEvent event, Actor actor) { 142  pow2.buyPowerUp(); 143  } 144  }); 145  powerUpButtons.add(powerUp2); 146  147  //power up 3 148  PowerUp pow3 = powerUps.get("3"); 149  TextButton powerUp3 = new TextButton(pow3.getName(), parent.skin); 150  powerUp3.addListener(new ChangeListener() { 151  @Override 152  public void changed(ChangeEvent event, Actor actor) { 153  pow3.buyPowerUp(); 154  } 155  }); 156  powerUpButtons.add(powerUp3); 157  158  //power up 4 159  PowerUp pow4 = powerUps.get("4"); 160  TextButton powerUp4 = new TextButton(pow4.getName(), parent.skin); 161  powerUp4.addListener(new ChangeListener() { 162  @Override 163  public void changed(ChangeEvent event, Actor actor) { 164  pow4.buyPowerUp(); 165  } 166  }); 167  powerUpButtons.add(powerUp4); 168  169  //power up 5 170  PowerUp pow5 = powerUps.get("5"); 171  TextButton powerUp5 = new TextButton(pow5.getName(), parent.skin); 172  powerUp5.addListener(new ChangeListener() { 173  @Override 174  public void changed(ChangeEvent event, Actor actor) { 175  pow5.buyPowerUp(); 176  } 177  }); 178  powerUpButtons.add(powerUp5); 179  180  //power up 6 181  PowerUp pow6 = powerUps.get("6"); 182  TextButton powerUp6 = new TextButton(pow6.getName(), parent.skin); 183  powerUp6.addListener(new ChangeListener() { 184  @Override 185  public void changed(ChangeEvent event, Actor actor) { 186  pow6.buyPowerUp(); 187  } 188  }); 189  powerUpButtons.add(powerUp6); 190  191  //power up 7 192  PowerUp pow7 = powerUps.get("7"); 193  TextButton powerUp7 = new TextButton(pow7.getName(), parent.skin); 194  powerUp7.addListener(new ChangeListener() { 195  @Override 196  public void changed(ChangeEvent event, Actor actor) { 197  pow7.buyPowerUp(); 198  } 199  }); 200  powerUpButtons.add(powerUp7); 201  202  //add power ups to shop table 203  for(TextButton button : powerUpButtons) { 204  shopTable.add(button).pad(10); 205  shopTable.row(); 206  } 207  208  Player player = GameManager.getPlayer(); 209  player.getComponent(PlayerController.class).setButtons(powerUpButtons); 210  actors.add(shop); 211  // end of addition for assessment 2 212  } 213  214  /** 215  * Called every frame calls all other functions that need to be called every frame by raising events and update methods 216  * 217  * @param delta delta time 218  */ 219  @Override 220  public void render(float delta) { 221  ScreenUtils.clear(BACKGROUND_COLOUR.x, BACKGROUND_COLOUR.y, BACKGROUND_COLOUR.z, 1); 222  EntityManager.raiseEvents(ComponentEvent.Update, ComponentEvent.Render); 223  224  accumulator += EntityManager.getDeltaTime(); 225  226  // fixed update loop so that physics manager is called regally rather than somewhat randomly 227  while (accumulator >= PHYSICS_TIME_STEP) { 228  PhysicsManager.update(); 229  accumulator -= PHYSICS_TIME_STEP; 230  } 231  232  GameManager.update(); 233  // show end screen if esc is pressed 234  if (Gdx.input.isKeyJustPressed(Input.Keys.ESCAPE)) { 235  parent.pause(); 236  pixmap = Pixmap.createFromFrameBuffer(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 237  parent.setScreen(parent.pause); 238  } 239  super.render(delta); 240  } 241  242  /** 243  * disposed of all stuff it something is missing from this method you will get memory leaks 244  */ 245  @Override 246  public void dispose() { 247  super.dispose(); 248  ResourceManager.cleanUp(); 249  EntityManager.cleanUp(); 250  RenderingManager.cleanUp(); 251  PhysicsManager.cleanUp(); 252  } 253  254  /** 255  * Resize camera, effectively setting the viewport to display game assets 256  * at pixel ratios other than 1:1. 257  * 258  * @param width of camera viewport 259  * @param height of camera viewport 260  */ 261  @Override 262  public void resize(int width, int height) { 263  //((Table) actors.get(0)).setFillParent(false); 264  super.resize(width, height); 265  OrthographicCamera cam = RenderingManager.getCamera(); 266  cam.viewportWidth = width / ZOOM; 267  cam.viewportHeight = height / ZOOM; 268  cam.update(); 269  270  // ((Table) actors.get(0)).setFillParent(true); 271  } 272  273  /** 274  * Update the UI with new values for health, quest status, etc. 275  * also called once per frame but used for actors by my own convention 276  */ 277  //private String prevQuest = ""; 278  @Override 279  protected void update() { 280  super.update(); 281  Player p = GameManager.getPlayer(); 282  283  healthLabel.setText(String.valueOf(p.getHealth())); 284  money.setText(String.valueOf(p.getPlunder())); 285  points.setText(String.valueOf(p.getPoints())); 286  ammo.setText(String.valueOf(p.getAmmo())); 287  if (!QuestManager.anyQuests()) { 288  parent.end.win(); 289  parent.setScreen(parent.end); 290  291  } else { 292  Quest q = QuestManager.currentQuest(); 293  /*if(Objects.equals(prevQuest, "")) { 294  prevQuest = q.getDescription(); 295  } 296  if(!Objects.equals(prevQuest, q.getDescription())) { 297  questComplete.setText("Quest Competed"); 298  prevQuest = ""; 299  }*/ 300  assert q != null; 301  questName.setText(q.getName()); 302  questDesc.setText(q.getDescription()); 303  } 304  if (!p.isAlive()) { 305  parent.setScreen(parent.end); 306  } 307  /*if(!questComplete.getText().equals("")) { 308  showTimer += EntityManager.getDeltaTime(); 309  } 310  if(showTimer >= showDuration) { 311  showTimer = 0; 312  questComplete.setText(""); 313  }*/ 314  } 315  316  /** 317  * Draw UI elements showing player health, plunder, and ammo. 318  */ 319  @Override 320  protected void CreateActors() { 321  Table table = new Table(); 322  table.setFillParent(true); 323  actors.add(table); 324  325  table.add(new Image(parent.skin.getDrawable("heart"))).top().left().size(1.25f * TILE_SIZE); 326  healthLabel = new Label("N/A", parent.skin); 327  table.add(healthLabel).top().left().size(50); 328  329  table.row(); 330  table.setDebug(false); 331  332  table.add(new Image(parent.skin.getDrawable("coin"))).top().left().size(1.25f * TILE_SIZE); 333  money = new Label("N/A", parent.skin); 334  table.add(money).top().left().size(50); 335  336  table.row(); 337  338  table.add(new Image(parent.skin.getDrawable("point"))).top().left().size(1.25f * TILE_SIZE); 339  points = new Label("N/A", parent.skin); 340  table.add(points).top().left().size(50); 341  342  table.row(); 343  344  table.add(new Image(parent.skin.getDrawable("ball"))).top().left().size(1.25f * TILE_SIZE); 345  ammo = new Label("N/A", parent.skin); 346  table.add(ammo).top().left().size(50); 347  348  table.top().left(); 349  } 350 }