Coverage Summary for Class: Component (com.mygdx.game.Components)

Class Class, % Method, % Line, %
Component 100% (1/1) 72.7% (8/11) 81.8% (18/22)


1 package com.mygdx.game.Components; 2  3 import com.mygdx.game.Entitys.Entity; 4 import com.mygdx.game.Managers.EntityManager; 5  6 import java.util.ArrayList; 7 import java.util.Arrays; 8  9 /** 10  * Base class for the Components 11  */ 12 public abstract class Component { 13  protected ComponentType type; 14  protected Entity parent; 15  protected ArrayList<ComponentType> requirements; 16  protected boolean reqsMet; 17  18  /** 19  * sets up the Component 20  */ 21  protected Component() { 22  reqsMet = false; 23  type = ComponentType.Unknown; 24  parent = null; 25  requirements = new ArrayList<>(); 26  EntityManager.addComponent(this); 27  } 28  29  /** 30  * @param e the Entity to set the parent of this component to 31  */ 32  public void setParent(Entity e) { 33  parent = e; 34  } 35  36  /** 37  * @return the parent of this component 38  */ 39  public Entity getParent() { 40  return parent; 41  } 42  43  /** 44  * Sets the required components 45  * @param reqs take a guess 46  */ 47  public final void setRequirements(ComponentType... reqs) { 48  requirements.addAll(Arrays.asList(reqs)); 49  } 50  51  /** 52  * Checks if the passed requirements exist will crash if they aren't 53  */ 54  private void checkRequirements() { 55  if (reqsMet) { 56  return; 57  } 58  for (ComponentType t : requirements) { 59  Component c = parent.getComponent(t); 60  if (c == null) { 61  throw new RuntimeException("Component: " + t.name() + " Is not found for " + type.name()); 62  } 63  } 64  reqsMet = true; 65  } 66  67  /** 68  * @return the type of the component 69  */ 70  public final ComponentType getType() { 71  return type; 72  } 73  74  /** 75  * Called once before start prior to the update loop. 76  */ 77  public void awake() { 78  checkRequirements(); 79  } 80  81  /** 82  * Called once after awake but prior to the update loop. 83  */ 84  public void start() { 85  checkRequirements(); 86  } 87  88  /** 89  * Called once after the update loop has finished. 90  */ 91  public void cleanUp() { 92  checkRequirements(); 93  } 94  95  /** 96  * Called once per frame 97  */ 98  public void update() { 99  checkRequirements(); 100  } 101  102  /** 103  * Called once per frame used exclusively for rendering 104  */ 105  public void render() { 106  checkRequirements(); 107  } 108 }