Package net.cis.client.game.ctrl

Source Code of net.cis.client.game.ctrl.InputCtrl

package net.cis.client.game.ctrl;

import net.cis.client.game.common.model.InputStrings;
import net.cis.client.game.model.InputBinding;
import net.cis.client.game.scenery.ctrl.input.KeyListener;
import net.cis.client.game.scenery.ctrl.input.MouseListener;
import net.cis.client.game.scenery.model.PlayerVehicleUpdates;
import net.cis.client.game.ui.ctrl.MouseInputListener;

import com.jme3.input.InputManager;
import com.jme3.input.controls.AnalogListener;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.input.controls.MouseAxisTrigger;
import com.jme3.input.controls.MouseButtonTrigger;

/**
* Controller to load/initialize/justify input devices. These may be mouse, keyboard, joystick, gamepad or what else.
* Manage changes in input-bindings here.
*/
public class InputCtrl {

  private final InputManager inputManager;
  private final PlayerVehicleUpdates pvu;

  private final InputBinding inputBinding;

  public InputCtrl(InputManager inputManager, PlayerVehicleUpdates pvu) {
    this.inputManager = inputManager;
    this.pvu = pvu;

    inputBinding = new InputBinding();

    inputManager.clearMappings();

    initShipControlMouseListener();
    initShipControlKeyListener();
    initGameControlListener();
  }

  public void initGameControlListener() {
    inputManager.addMapping(InputStrings.FREE_MOUSE,
        new MouseButtonTrigger(inputBinding.getMouseBinding(InputStrings.FREE_MOUSE)));
    inputManager.addListener(new MouseInputListener(inputManager), InputStrings.FREE_MOUSE);
  }

  public void initCameraControlKeyListener(CameraCtrl cameraCtrl) {
    inputManager.addMapping(InputStrings.CAMERA_1ST,
        new KeyTrigger(inputBinding.getKeyBinding(InputStrings.CAMERA_1ST)));
    inputManager.addMapping(InputStrings.CAMERA_3RD,
        new KeyTrigger(inputBinding.getKeyBinding(InputStrings.CAMERA_3RD)));

    inputManager.addListener(cameraCtrl, InputStrings.CAMERA_1ST, InputStrings.CAMERA_3RD);
  }

  private void initShipControlKeyListener() {
    KeyListener keyListener = new KeyListener(pvu);

    inputManager.addMapping(InputStrings.ACCELERATE,
        new KeyTrigger(inputBinding.getKeyBinding(InputStrings.ACCELERATE)));
    inputManager.addMapping(InputStrings.DECELERATE,
        new KeyTrigger(inputBinding.getKeyBinding(InputStrings.DECELERATE)));

    inputManager.addListener(keyListener, InputStrings.ACCELERATE, InputStrings.DECELERATE);
  }

  private void initShipControlMouseListener() {
    MouseListener mouseListener = new MouseListener(pvu);

    bindMouseAxis(inputManager, mouseListener, inputBinding.getMouseBinding(InputStrings.YAW_LEFT),
        InputStrings.YAW_LEFT, true);
    bindMouseAxis(inputManager, mouseListener, inputBinding.getMouseBinding(InputStrings.YAW_RIGHT),
        InputStrings.YAW_RIGHT, false);
    bindMouseAxis(inputManager, mouseListener, inputBinding.getMouseBinding(InputStrings.PITCH_UP),
        InputStrings.PITCH_UP, true);
    bindMouseAxis(inputManager, mouseListener, inputBinding.getMouseBinding(InputStrings.PITCH_DOWN),
        InputStrings.PITCH_DOWN, false);
  }

  private void bindMouseAxis(InputManager inputManager, AnalogListener listener, int axis, String inputString,
      boolean negative) {
    inputManager.addMapping(inputString, new MouseAxisTrigger(axis, negative));
    inputManager.addListener(listener, inputString);
  }
}
TOP

Related Classes of net.cis.client.game.ctrl.InputCtrl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.