Coverage Summary for Class: Entity (com.mygdx.game.Entitys)
| Class | Method, % | Line, % |
|---|---|---|
| Entity | 92.3% (12/13) | 73.7% (28/38) |
| Entity$1 | 0% (0/1) | 0% (0/1) |
| Total | 85.7% (12/14) | 71.8% (28/39) |
1 package com.mygdx.game.Entitys; 2 3 import com.mygdx.game.Components.Component; 4 import com.mygdx.game.Components.ComponentEvent; 5 import com.mygdx.game.Components.ComponentType; 6 import com.mygdx.game.Managers.EntityManager; 7 8 import java.util.ArrayList; 9 10 /** 11 * The base class for all entities in the game. 12 * I am calling an entity pretty much anything that the user sees or interacts with except the UI. 13 * However, there is over head with this class so in some cases it's better to just use raw sprites 14 */ 15 public class Entity { 16 private static int entityCount = 0; 17 private String entityName; 18 private final ArrayList<Component> components; 19 20 /** 21 * Constructs the base elements of the object 22 */ 23 public Entity() { 24 components = new ArrayList<>(); 25 entityName = "Entity (" + ++entityCount + ")"; // makes ure by default every entity has a unique name (although it's not automatically important if they don't) 26 EntityManager.addEntity(this); 27 } 28 29 /** 30 * Allocates the correct amount of memory for components 31 * @param numComponents number of components to allocate memory for 32 */ 33 public Entity(int numComponents) { 34 this(); 35 components.ensureCapacity(numComponents); 36 } 37 38 /** 39 * Sets the name of the entity 40 * @param name string to set the name to 41 */ 42 public final void setName(String name) { 43 EntityManager.changeName(entityName, name); 44 entityName = name; 45 } 46 47 /** 48 * @return the name of the Entity 49 */ 50 public final String getName() { 51 return entityName; 52 } 53 54 /** 55 * @param component the component to be added 56 */ 57 public void addComponent(Component component) { 58 components.add(component); 59 component.setParent(this); 60 } 61 62 /** 63 * @param components the components to be added 64 */ 65 public void addComponents(Component... components) { 66 for (Component c : components) { 67 addComponent(c); 68 } 69 } 70 71 /** 72 * gets component of type 73 * @param type the type of the desired component 74 * @return the component not cast 75 */ 76 public Component getComponent(ComponentType type) { 77 for (Component c : components) { 78 if (c.getType() == type) { 79 return c; 80 } 81 } 82 return null; 83 } 84 85 /** 86 * Gets the first component that is of the same type as T 87 * @param type [T].class 88 * @param <T> the type of the desired component 89 * @return the component cast to the appropriate type 90 */ 91 @SuppressWarnings("unchecked") 92 public <T> T getComponent(Class<T> type) { 93 for (Component c : components) { 94 if (type.isInstance(c)) { 95 return (T) c; 96 } 97 } 98 return null; 99 } 100 /* 101 *//** 102 * Gets the list of components that is of the same type as T 103 * Removed for Assesment 2 as never used 104 * @param type [T].class 105 * @param <T> the type of the desired component 106 * @return the components cast to the appropriate type 107 *//* 108 public <T> ArrayList<T> getComponents(Class<T> type) { 109 ArrayList<T> res = new ArrayList<>(); 110 for (Component c : components) { 111 if (type.isInstance(c)) { 112 res.add((T) c); 113 } 114 } 115 return res; 116 }*/ 117 118 119 /** 120 * Raises the appropriate events on each component with exception to rendering 121 */ 122 public final void raiseEvents(ComponentEvent... events) { 123 for (ComponentEvent event : events) { 124 for (Component c : components) { 125 switch (event) { 126 case Awake: 127 c.awake(); 128 break; 129 case Start: 130 c.start(); 131 break; 132 case Update: 133 c.update(); 134 break; 135 } 136 } 137 } 138 } 139 140 /** 141 * Similar to the Component's cleanUp event 142 */ 143 public void cleanUp() { 144 145 } 146 147 /** 148 * Similar to the Component's update event 149 */ 150 public void update() { 151 152 } 153 154 /** 155 * disposes of any components attached to this object 156 */ 157 public void dispose() { 158 for (Component component : components) { 159 component = null; 160 } 161 } 162 163 // public <T> ArrayList<T> getComponents(Class<T> type) { 164 // ArrayList<T> res = new ArrayList<>(); 165 // for (Component c : components) { 166 // if (type.isInstance(c)) { 167 // res.add((T) c); 168 // } 169 // } 170 // return res; 171 // } 172 }