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 }