Coverage Summary for Class: Building (com.mygdx.game.Entitys)
| Class | Class, % | Method, % | Line, % | 
|---|---|---|---|
| Building | 100% (1/1) | 100% (9/9) | 100% (34/34) | 
1 package com.mygdx.game.Entitys; 2 3 import com.badlogic.gdx.graphics.g2d.Sprite; 4 import com.badlogic.gdx.math.Vector2; 5 import com.mygdx.game.Components.Pirate; 6 import com.mygdx.game.Components.Renderable; 7 import com.mygdx.game.Components.RigidBody; 8 import com.mygdx.game.Components.Transform; 9 import com.mygdx.game.Faction; 10 import com.mygdx.game.Managers.RenderLayer; 11 import com.mygdx.game.Managers.ResourceManager; 12 import com.mygdx.game.Physics.CollisionCallBack; 13 import com.mygdx.game.Physics.CollisionInfo; 14 import com.mygdx.game.Physics.PhysicsBodyType; 15 16 import static com.mygdx.utils.Constants.BUILDING_SCALE; 17 18 /** 19 * Buildings that you see in game. 20 * Changed for Assessment 2 (made class public) 21 */ 22 public class Building extends Entity implements CollisionCallBack { 23 private String buildingName; 24 private static int atlas_id; 25 private boolean isFlag; 26 private final College college; //Added for Assessment 2 27 28 /** 29 * Flags are indestructible and mark college locations. 30 * Amended for Assessment 2: Added College parameter to keep track of parent 31 * @param college added to signify ownership of building 32 */ 33 public Building(College college) { 34 super(); 35 isFlag = false; 36 Transform t = new Transform(); 37 t.setScale(BUILDING_SCALE, BUILDING_SCALE); 38 Pirate p = new Pirate(); 39 atlas_id = ResourceManager.getId("Buildings.txt"); 40 Renderable r = new Renderable(atlas_id, "big", RenderLayer.Transparent); 41 addComponents(t, p, r); 42 this.college = college; 43 } 44 45 /** 46 * Flags are indestructible and mark college locations. 47 * Amended for Assessment 2: Added College parameter to keep track of parent 48 * @param isFlag set to true to create a flag 49 */ 50 Building(College college, boolean isFlag) { 51 this(college); 52 this.isFlag = isFlag; 53 } 54 55 /** 56 * Creates a building with the given name at the specified location. 57 * 58 * @param pos 2D position vector 59 * @param name name of building 60 */ 61 public void create(Vector2 pos, String name) { 62 Sprite s = ResourceManager.getSprite(atlas_id, name); 63 Renderable r = getComponent(Renderable.class); 64 r.setTexture(s); 65 getComponent(Transform.class).setPosition(pos); 66 buildingName = name; 67 68 RigidBody rb = new RigidBody(PhysicsBodyType.Static, r, getComponent(Transform.class)); 69 rb.setCallback(this); 70 addComponent(rb); 71 } 72 73 /** 74 * Replace the building with ruins and mark as broken. 75 * Changed for Assessment 2 76 * - Made public for testing purposes 77 * - Sets destroyer as parent college's most recent attacker. 78 */ 79 public void destroy(Faction conqueror) { 80 if (isFlag) { 81 return; 82 } 83 Sprite s = ResourceManager.getSprite(atlas_id, buildingName + "-broken"); 84 Renderable r = getComponent(Renderable.class); 85 r.setTexture(s); 86 getComponent(Pirate.class).kill(); 87 college.setMostRecentAttacker(conqueror); 88 } 89 90 /** 91 * @return the boolean value of the alive status of the Pirate Component 92 */ 93 public boolean isAlive() { 94 return getComponent(Pirate.class).isAlive(); 95 } 96 97 /** 98 * Destroys the building and marks cannonball for removal. 99 * Amended for Assessment 2, added Faction checks and now ignores flags 100 * @param info CollisionInfo container 101 */ 102 @Override 103 public void EnterTrigger(CollisionInfo info) { 104 if (info.a instanceof CannonBall && isAlive() && !isFlag) { 105 CannonBall a = (CannonBall) info.a; 106 if(a.getFaction() != college.getFaction()){ 107 destroy(a.getFaction()); 108 } 109 a.kill(); 110 } 111 } 112 113 /** 114 * Unused 115 */ 116 @Override 117 public void BeginContact(CollisionInfo info) {} 118 119 /** 120 * Unused 121 */ 122 @Override 123 public void EndContact(CollisionInfo info) {} 124 125 /** 126 * Unused 127 */ 128 @Override 129 public void ExitTrigger(CollisionInfo info) { 130 131 } 132 }