Inputs remain in queue while active, allowing interrupts and queued inputs to be more cleanly handled

This commit is contained in:
Sam
2021-03-14 11:19:22 -04:00
parent b5d501199d
commit be27289a7f
14 changed files with 50 additions and 221 deletions

View File

@ -506,6 +506,13 @@ pub fn handle_input(data: &JoinData, update: &mut StateUpdate, input: InputKind)
}
}
pub fn attempt_input(data: &JoinData, update: &mut StateUpdate) {
// TODO: look into using first() when it becomes stable
if let Some(input) = data.controller.queued_inputs.iter().next() {
handle_input(data, update, *input);
}
}
/*pub fn handle_ability1_input(data: &JoinData, update: &mut StateUpdate) {
if data.inputs.primary.is_pressed() {
handle_ability_pressed(data, update, AbilityKey::Mouse1);
@ -620,6 +627,13 @@ pub fn handle_interrupt(data: &JoinData, update: &mut StateUpdate, attacks_inter
handle_dodge_input(data, update);
}
pub fn input_is_pressed(data: &JoinData, ability_info: AbilityInfo) -> bool {
//data.controller.queued_inputs.contains(ability_info.input)
ability_info
.input
.map_or(false, |i| data.controller.queued_inputs.contains(&i))
}
pub fn ability_key_is_pressed(data: &JoinData, ability_key: AbilityKey) -> bool {
match ability_key {
AbilityKey::Mouse1 =>