Search in sources :

Example 1 with InputDevice

use of com.b3dgs.lionengine.InputDevice in project lionengine by b3dgs.

the class StateHandler method update.

/*
     * Updatable
     */
@Override
public void update(double extrp) {
    if (current != null) {
        for (final InputDevice input : inputs) {
            updateInput(StateInputDirectionalUpdater.class, InputDeviceDirectional.class, input);
            updateInput(StateInputPointerUpdater.class, InputDevicePointer.class, input);
        }
        current.update(extrp);
        final State old = current;
        for (final InputDevice input : inputs) {
            current = checkNext(InputDeviceDirectional.class, input);
            if (!old.equals(current)) {
                break;
            }
            current = checkNext(InputDevicePointer.class, input);
            if (!old.equals(current)) {
                break;
            }
        }
        if (!old.equals(current)) {
            old.exit();
        }
    }
}
Also used : InputDevice(com.b3dgs.lionengine.InputDevice) State(com.b3dgs.lionengine.game.State) InputDeviceDirectional(com.b3dgs.lionengine.io.InputDeviceDirectional) InputDevicePointer(com.b3dgs.lionengine.io.InputDevicePointer)

Example 2 with InputDevice

use of com.b3dgs.lionengine.InputDevice in project lionengine by b3dgs.

the class Loader method handle.

/**
 * Handle the sequence with its screen until no more sequence to run.
 *
 * @param config The configuration used.
 * @param sequenceClass The the next sequence to start.
 * @param arguments The sequence arguments list if needed by its constructor.
 * @throws LionEngineException If an exception occurred.
 */
private static void handle(Config config, Class<? extends Sequencable> sequenceClass, Object... arguments) {
    final Screen screen = Graphics.createScreen(config);
    try {
        screen.start();
        screen.awaitReady();
        final Context context = new ContextWrapper(screen);
        Sequencable nextSequence = UtilSequence.create(sequenceClass, context, arguments);
        while (nextSequence != null) {
            final Sequencable sequence = nextSequence;
            final String sequenceName = sequence.getClass().getName();
            Verbose.info(SEQUENCE_START, sequenceName);
            sequence.start(screen);
            Verbose.info(SEQUENCE_END, sequenceName);
            nextSequence = sequence.getNextSequence();
            sequence.onTerminated(nextSequence != null);
        }
    } finally {
        screen.dispose();
        config.getDevices().forEach(InputDevice::close);
    }
}
Also used : Context(com.b3dgs.lionengine.Context) InputDevice(com.b3dgs.lionengine.InputDevice) Screen(com.b3dgs.lionengine.graphic.Screen)

Example 3 with InputDevice

use of com.b3dgs.lionengine.InputDevice in project lionengine by b3dgs.

the class DeviceControllerConfig method create.

/**
 * Create device controller from configuration.
 *
 * @param services The services reference (must not be <code>null</code>).
 * @param media The media configuration (must not be <code>null</code>).
 * @return The created controller.
 * @throws LionEngineException If unable to read node.
 */
public static DeviceController create(Services services, Media media) {
    final Context context = services.get(Context.class);
    final DeviceController controller = new DeviceControllerModel();
    final Collection<DeviceControllerConfig> configs = DeviceControllerConfig.imports(services, media);
    for (final DeviceControllerConfig config : configs) {
        final InputDevice device = context.getInputDevice(config.getDevice());
        if (device instanceof DevicePush) {
            final DevicePush push = (DevicePush) device;
            config.getHorizontal().forEach(h -> controller.addHorizontal(push, new DeviceActionModel(h, push)));
            config.getVertical().forEach(v -> controller.addVertical(push, new DeviceActionModel(v, push)));
            config.getFire().entrySet().forEach(e -> e.getValue().forEach(c -> controller.addFire(device, e.getKey(), new DeviceActionModel(c, push))));
        }
        if (device instanceof DevicePointer) {
            final DevicePointer pointer = (DevicePointer) device;
            controller.addHorizontal(pointer, () -> pointer.getMoveX());
            controller.addVertical(pointer, () -> -pointer.getMoveY());
        }
        if (config.isDisabled()) {
            controller.setDisabled(device.getName(), true, true);
        }
    }
    return controller;
}
Also used : Context(com.b3dgs.lionengine.Context) DevicePush(com.b3dgs.lionengine.io.DevicePush) LionEngineException(com.b3dgs.lionengine.LionEngineException) DevicePointer(com.b3dgs.lionengine.io.DevicePointer) DevicePush(com.b3dgs.lionengine.io.DevicePush) Collection(java.util.Collection) Check(com.b3dgs.lionengine.Check) Set(java.util.Set) HashMap(java.util.HashMap) DeviceControllerModel(com.b3dgs.lionengine.io.DeviceControllerModel) DeviceController(com.b3dgs.lionengine.io.DeviceController) Configurer(com.b3dgs.lionengine.game.Configurer) DeviceMapper(com.b3dgs.lionengine.io.DeviceMapper) ArrayList(java.util.ArrayList) InputDevice(com.b3dgs.lionengine.InputDevice) HashSet(java.util.HashSet) Constant(com.b3dgs.lionengine.Constant) Context(com.b3dgs.lionengine.Context) DeviceAxis(com.b3dgs.lionengine.io.DeviceAxis) List(java.util.List) XmlReader(com.b3dgs.lionengine.XmlReader) Services(com.b3dgs.lionengine.game.feature.Services) Map(java.util.Map) Media(com.b3dgs.lionengine.Media) DeviceActionModel(com.b3dgs.lionengine.io.DeviceActionModel) DeviceControllerModel(com.b3dgs.lionengine.io.DeviceControllerModel) InputDevice(com.b3dgs.lionengine.InputDevice) DeviceController(com.b3dgs.lionengine.io.DeviceController) DevicePointer(com.b3dgs.lionengine.io.DevicePointer) DeviceActionModel(com.b3dgs.lionengine.io.DeviceActionModel)

Example 4 with InputDevice

use of com.b3dgs.lionengine.InputDevice in project lionengine by b3dgs.

the class DeviceControllerModel method update.

@Override
public void update(double extrp) {
    for (final InputDevice device : devices) {
        device.update(extrp);
    }
    axisHorizontal = 0.0;
    for (int i = 0; i < horizontalCount; i++) {
        final DeviceAction action = horizontal.get(i);
        if (!Boolean.TRUE.equals(disabledHorizontal.get(actionToDevice.get(action)))) {
            axisHorizontal += action.getAction();
        }
    }
    axisVertical = 0.0;
    for (int i = 0; i < verticalCount; i++) {
        final DeviceAction action = vertical.get(i);
        if (!Boolean.TRUE.equals(disabledVertical.get(actionToDevice.get(action)))) {
            axisVertical += vertical.get(i).getAction();
        }
    }
    for (final List<DeviceAction> actions : fire.values()) {
        final int n = actions.size();
        for (int i = 0; i < n; i++) {
            final DeviceAction action = actions.get(i);
            if (Double.compare(action.getAction(), 0) <= 0) {
                fired.put(action, Boolean.FALSE);
            }
        }
    }
}
Also used : InputDevice(com.b3dgs.lionengine.InputDevice)

Aggregations

InputDevice (com.b3dgs.lionengine.InputDevice)4 Context (com.b3dgs.lionengine.Context)2 Check (com.b3dgs.lionengine.Check)1 Constant (com.b3dgs.lionengine.Constant)1 LionEngineException (com.b3dgs.lionengine.LionEngineException)1 Media (com.b3dgs.lionengine.Media)1 XmlReader (com.b3dgs.lionengine.XmlReader)1 Configurer (com.b3dgs.lionengine.game.Configurer)1 State (com.b3dgs.lionengine.game.State)1 Services (com.b3dgs.lionengine.game.feature.Services)1 Screen (com.b3dgs.lionengine.graphic.Screen)1 DeviceActionModel (com.b3dgs.lionengine.io.DeviceActionModel)1 DeviceAxis (com.b3dgs.lionengine.io.DeviceAxis)1 DeviceController (com.b3dgs.lionengine.io.DeviceController)1 DeviceControllerModel (com.b3dgs.lionengine.io.DeviceControllerModel)1 DeviceMapper (com.b3dgs.lionengine.io.DeviceMapper)1 DevicePointer (com.b3dgs.lionengine.io.DevicePointer)1 DevicePush (com.b3dgs.lionengine.io.DevicePush)1 InputDeviceDirectional (com.b3dgs.lionengine.io.InputDeviceDirectional)1 InputDevicePointer (com.b3dgs.lionengine.io.InputDevicePointer)1