Coverage Summary for Class: Renderable (com.mygdx.game.Components)
| Class | Class, % | Method, % | Line, % |
|---|---|---|---|
| Renderable | 100% (1/1) | 81.8% (9/11) | 64.7% (22/34) |
1 package com.mygdx.game.Components; 2 3 import com.badlogic.gdx.graphics.g2d.Sprite; 4 import com.badlogic.gdx.math.MathUtils; 5 import com.badlogic.gdx.math.Vector2; 6 import com.mygdx.game.Managers.RenderLayer; 7 import com.mygdx.game.Managers.RenderingManager; 8 import com.mygdx.game.Managers.ResourceManager; 9 10 /** 11 * Add the ability for the object to be shown 12 */ 13 public class Renderable extends Component { 14 protected Sprite sprite; 15 private boolean isVisible; 16 17 /** 18 * Called in other constructors, loads no textures by itself. 19 */ 20 public Renderable() { 21 super(); 22 isVisible = true; 23 type = ComponentType.Renderable; 24 sprite = new Sprite(); 25 RenderingManager.addItem(this, RenderLayer.Transparent); 26 } 27 28 /** 29 * Associates Renderable with the given texture sprite and layer. 30 * @param texId the id of the texture the sprite will take on 31 * @param layer the rendering layer 32 */ 33 public Renderable(int texId, RenderLayer layer) { 34 this(); 35 sprite = new Sprite(ResourceManager.getTexture(texId)); 36 RenderingManager.addItem(this, layer); 37 } 38 39 /** 40 * Associates Renderable with the given sprite from a texture atlas and a layer. 41 * @param atlasId the id of the texture atlas containing the sprite 42 * @param texName the name of the texture the sprite will take on 43 * @param layer the rendering layer 44 */ 45 public Renderable(int atlasId, String texName, RenderLayer layer) { 46 this(); 47 sprite = new Sprite(ResourceManager.getSprite(atlasId, texName)); 48 RenderingManager.addItem(this, layer); 49 } 50 51 /** 52 * Locates the sprite at the position of the parent's Transform component. 53 */ 54 @Override 55 public void update() { 56 super.update(); 57 if (sprite == null) { 58 return; 59 } 60 Transform c = parent.getComponent(Transform.class); 61 if (c == null) { 62 return; 63 } 64 Vector2 p = c.getPosition(); 65 Vector2 s = c.getScale(); 66 67 sprite.setPosition(p.x, p.y); 68 sprite.setRotation(MathUtils.radiansToDegrees * c.getRotation()); 69 sprite.setScale(s.x, s.y); 70 } 71 72 /** 73 * Checks if the sprite exists and should be visible, then renders it 74 */ 75 @Override 76 public void render() { 77 super.render(); 78 if (sprite == null || !isVisible) { 79 return; 80 } 81 sprite.draw(RenderingManager.getBatch()); 82 } 83 84 /** 85 * Called once after the update loop has finished. 86 */ 87 @Override 88 public void cleanUp() { 89 super.cleanUp(); 90 } 91 92 /** 93 * @return the Sprite for this object 94 */ 95 public Sprite getSprite() { 96 return sprite; 97 } 98 99 /** 100 * Assigns a new texture compatible with textures sourced from atlas 101 * @param s the sprite contain the texture 102 */ 103 public void setTexture(Sprite s) { 104 Sprite a = getSprite(); 105 a.setTexture(s.getTexture()); 106 a.setU(s.getU()); 107 a.setV(s.getV()); 108 a.setU2(s.getU2()); 109 a.setV2(s.getV2()); 110 } 111 112 /** 113 * @return whether the object should currently be visible 114 */ 115 public boolean isVisible() { 116 return isVisible; 117 } 118 119 /** 120 * Changes the visibility to active 121 */ 122 public void show() { 123 isVisible = true; 124 } 125 126 /** 127 * Changes the visibility to inactive 128 */ 129 public void hide() { 130 isVisible = false; 131 } 132 133 //public void toggleVisibility() { 134 // isVisible = !isVisible; 135 //} 136 }