package net.cis.client.game.ctrl;
import net.cis.client.game.common.ctrl.IObjectController;
import net.cis.client.game.common.model.InputStrings;
import net.cis.client.game.common.model.co.ControlledCamera;
import net.cis.client.game.common.model.co.ControlledCamera.CameraType;
import net.cis.client.game.common.util.GlobalObjectStore;
import net.cis.client.game.scenery.factory.CameraFactory;
import net.cis.common.model.base.BaseFactory;
import net.cis.common.model.base.CameraDefinition;
import com.jme3.input.controls.ActionListener;
public class CameraCtrl implements ActionListener {
private final CameraFactory cameraFactory;
private final CameraDefinition cameraDef;
private ControlledCamera currentCamera;
public CameraCtrl(GameApplication gameApp) {
cameraFactory = new CameraFactory(gameApp.getCamera());
// FIXME: load from persistence
cameraDef = BaseFactory.eINSTANCE.createCameraDefinition();
currentCamera = cameraFactory.createControlledObject(cameraDef, true);
GlobalObjectStore.<IObjectController>getObject(IObjectController.class).addCamera(currentCamera, true);
}
@Override
public void onAction(String name, boolean isPressed, float tpf) {
if (isPressed)
return;
IObjectController objectController = GlobalObjectStore.<IObjectController>getObject(IObjectController.class);
if (name.equals(InputStrings.CAMERA_1ST)) {
if (currentCamera.cameraType.equals(CameraType.FirstPerson))
return;
objectController.removeControlledObjectFromScene(currentCamera);
cameraFactory.setCreatedCamera(CameraType.FirstPerson);
currentCamera = cameraFactory.createControlledObject(cameraDef, true);
objectController.addCamera(currentCamera, true);
} else if (name.equals(InputStrings.CAMERA_3RD)) {
if (currentCamera.cameraType.equals(CameraType.ThirdPerson))
return;
objectController.removeControlledObjectFromScene(currentCamera);
cameraFactory.setCreatedCamera(CameraType.ThirdPerson);
currentCamera = cameraFactory.createControlledObject(cameraDef, true);
objectController.addCamera(currentCamera, true);
}
}
}