This is the class which contains all characters and objects within a level.
CollisionListener is an interface, and CollisionListener.beginContact() is called whenever a character collides with another object.
I'm wondering, since I'm passing level into CollisionListener, does this mean 2 objects are stored in memory?
Or is private Level level inside CollisionListener just a reference to original level? How is this handled internally by JVM?
Since when I modify level inside CollisionListener, the original level is updated too.
public class Level extends World {
private Player player;
private Enemy enemy;
public Level(){
this.setContactListener(
new CollisionListener(this));
player = new Player();
enemy = new Enemy();
}
/**
* Move characters
*/
public update(){
player.update();
enemy.update();
}
}
This is an interface, thats added to my Level object. It needs a reference to a Level object so level.doSomething() can be invoked.
public class CollisionListener implements ContactListener{
private Level level;
public CollisionListener(Level level){
this.level = level;
}
public void beginContact(Contact contact) {
this.level.doSomething();
}
/* other interface methods .. */
}