package gameEngine.entites;
import gameEngine.entites.gameComponents.GameComponent;
import gameEngine.entites.gameComponents.Mesh;
import gameEngine.entites.gameComponents.TextMesh;
import gameEngine.scenes.GameScene;
import gameEngine.views.Window;
import java.util.ArrayList;
import java.util.List;
public class GameObject extends Entity {
public final List<GameComponent> gameComponents = new ArrayList<>();
public enum Connectiontype {Mesh, MoveImage}
public List<Connectiontype> ComponentConnections = new ArrayList<>();
public GameObject(String id) {
super(id);
}
public void addComponent(GameComponent component) {
for (GameComponent existingComponent : gameComponents) {
if (existingComponent.getClass().equals(component.getClass())) {
System.out.println("Component already exists: " + component.getClass().getSimpleName());
return;
}
}
this.gameComponents.add(component);
System.out.println("Component added: " + component.getClass().getSimpleName());
}
public void removeComponent(GameComponent component) {
boolean removed = this.gameComponents.remove(component);
if (removed) {
System.out.println("Component removed: " + component.getClass().getSimpleName());
} else {
System.out.println("Component not found: " + component.getClass().getSimpleName());
}
}
public void initComponents() {
for (GameComponent component : gameComponents) {
component.init();
}
}
public void updateComponents() {
for (GameComponent component : gameComponents) {
component.update();
}
}
public <T extends GameComponent> T getComponent(Class<T> componentClass){
for (GameComponent gameComponent :gameComponents) {
if (componentClass.isInstance(gameComponent)) {
return componentClass.cast(gameComponent);
}
}
return null;
}
}