# Action/Collision Handlers
```java
//Model detects collision betweem stuff, calls
obj1.collided(obj2);
obj2.collided(obj1);
GameObject {
colidded(Object2 obj2) {
HandlerThing e = collisionFunctionMap.get(obj2.getType..Id..idk());
e.handleCollision(obj2);
// We could also do something like
for (String key : collisionFunctionMap.keySet()) {
if (obj2.isA(key)) {
HandlerThing e = collisionFunctionMap.get
e.handleCollision(obj2);
}
}
// ^^ Same thing but with lamda
for (String key : collisionFunctionMape.keySet()) {
map.computeIfPresent(key, (e, s) -> {
s.handleCollision(obj2);
});
}
}
class SetImage implements CollisionHandler, ActionHandler {
public E(GameObject, ModelRef, Payload) {
this.gameoObject = ...
//...
}
@Override (from collision handler)
handleCollision(Obj2 obj) {
// Do stuff with the references it has
modelRef.setImageID(payload);
}
@Override(from action Handler)
// This class can be called with or without a collision object
handle() {
...
.
}
```