Skip to content

Commit

Permalink
Automatically attach and detach new controllers.
Browse files Browse the repository at this point in the history
  • Loading branch information
steffen-wilke committed Nov 7, 2020
1 parent 6ba6af3 commit c6fb37b
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/de/gurkenlabs/litiengine/entities/EntityControllers.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package de.gurkenlabs.litiengine.entities;

import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;

/**
Expand Down Expand Up @@ -33,11 +34,20 @@ public <T extends IEntityController> T getController(Class<T> clss) {
}

public <T extends IEntityController> void clearControllers(Class<T> clss) {
this.controllers.entrySet().removeIf(e -> clss.isAssignableFrom(e.getKey()));
Optional<Class<? extends IEntityController>> typeKey = this.controllers.keySet().stream().filter(x -> clss.isAssignableFrom(clss)).findFirst();
if (typeKey.isPresent()) {
IEntityController controller = this.controllers.get(typeKey.get());
controller.detach();
this.controllers.remove(typeKey.get());
}
}

public <T extends IEntityController> void addController(T controller) {
controllers.put(controller.getClass(), controller);

if (controller.getEntity().isLoaded()) {
controller.attach();
}
}

public <T extends IEntityController> void setController(Class<T> clss, T controller) {
Expand Down

0 comments on commit c6fb37b

Please sign in to comment.