package com.indyforge.twod.engine.graphics.rendering.scenegraph.network.scene;
import propra2012.gruppe33.bomberman.GameConstants;
import com.indyforge.foxnet.rmi.pattern.change.Change;
import com.indyforge.twod.engine.graphics.rendering.scenegraph.Scene;
import com.indyforge.twod.engine.graphics.rendering.scenegraph.SceneProcessor;
import com.indyforge.twod.engine.sound.SoundManager;
/**
*
* @author Christopher Probst
*
*/
public final class SceneChange implements Change<SceneProcessor>, GameConstants {
/**
*
*/
private static final long serialVersionUID = 1L;
// The root scene
private final Scene scene;
/**
* Create a new scene change using the given scene.
*
* @param scene
* The scene.
*/
public SceneChange(Scene scene) {
this.scene = scene;
}
/*
* (non-Javadoc)
*
* @see
* com.indyforge.foxnet.rmi.pattern.change.Change#apply(java.lang.Object)
*/
@Override
public void apply(SceneProcessor ctx) {
// Clear scene first
ctx.root(null);
// Do garbage collection!
System.gc();
// Set scene
ctx.root(scene);
/*
* Manage music on client side!
*/
if (scene != null && ctx.hasSession()) {
SoundManager.closeCurrentSounds();
scene.soundManager().playSound(MUSIC_SOUND, 0.4f, false);
}
}
}