bevy/examples/input/gamepad_input_events.rs
KDecay 51509a9a3e Change gamepad.rs tuples to normal structs (#4519)
# Objective

- Part of the splitting process of #3692.

## Solution

- Remove / change the tuple structs inside of `gamepad.rs` of `bevy_input` to normal structs.

## Reasons

- It made the `gamepad_connection_system` cleaner.
- It made the `gamepad_input_events.rs` example cleaner (which is probably the most notable change for the user facing API).
- Tuple structs are not descriptive (`.0`, `.1`).
- Using tuple structs for more than 1 field is a bad idea (This means that the `Gamepad` type might be fine as a tuple struct, but I still prefer normal structs over tuple structs).

Feel free to discuss this change as this is more or less just a matter of taste.

## Changelog

### Changed

- The `Gamepad`, `GamepadButton`, `GamepadAxis`, `GamepadEvent` and `GamepadEventRaw` types are now normal structs instead of tuple structs and have a `new()` function.

## Migration Guide

- The `Gamepad`, `GamepadButton`, `GamepadAxis`, `GamepadEvent` and `GamepadEventRaw` types are now normal structs instead of tuple structs and have a `new()` function. To migrate change every instantiation to use the `new()` function instead and use the appropriate field names instead of `.0` and `.1`.
2022-05-02 13:20:55 +00:00

36 lines
1 KiB
Rust

use bevy::{
input::gamepad::{GamepadEvent, GamepadEventType},
prelude::*,
};
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_system(gamepad_events)
.run();
}
fn gamepad_events(mut gamepad_event: EventReader<GamepadEvent>) {
for event in gamepad_event.iter() {
match event.event_type {
GamepadEventType::Connected => {
info!("{:?} Connected", event.gamepad);
}
GamepadEventType::Disconnected => {
info!("{:?} Disconnected", event.gamepad);
}
GamepadEventType::ButtonChanged(button_type, value) => {
info!(
"{:?} of {:?} is changed to {}",
button_type, event.gamepad, value
);
}
GamepadEventType::AxisChanged(axis_type, value) => {
info!(
"{:?} of {:?} is changed to {}",
axis_type, event.gamepad, value
);
}
}
}
}