I'm trying to move beyond inheritance based design, but I've been doing it like that for 6 years. My current hurdle is this: What's the simplest( or proper) way to update all my objects? Before, everything was a subclass of an Entity class. It was as simple as throwing them into ArrayList and iterating through them all, calling update() on each object. How does this translate in composition? Where the Entity class is within classes that can't be simply passed as each other.
for(Entity e : Entites) // I know this is bad practice, but good for an example
e.update();
// e could be any subclass of entity
Since moving to a component - composition based system I can't do that, as each game object is it's own class. I can't make an ArrayList of my objects and call update on each of them. And as far as I know,
My game objects are setup like this
class Apple implements iEntity {
Entity innerEntity;
public Apple{
innerEntity = new Entity(1); // 1 represents Apple as an identifier
}
@override // From iEntity
public void update(){
}
}
Because Apple no longer extends Entity, I can't load it into an ArrayList with Pears(example). All my other objects are similar. Id' rather not make a AppleManager class for Apples, a PearManager for Pears, and build functionality between them. That just seems messy.
Maybe I'm missing a few points, but that's why I'm here. Before this gets closed for some obscure reason, I googled the heck out of this. Each article explained the advantages of a system like this, but failed explaining beyond that. Thanks and advance dudes.
Enum
instead of magic numbers:enum EntityType = {APPLE, PEAR};
and apply it to your Constructor:innerEntity = new Entity(EntityType.APPLE);
... \$\endgroup\$