Make vantage point less janky

main
Elijah C. Voigt 1 year ago
parent 046169bca2
commit fe87c4f10a

@ -91,10 +91,10 @@ impl Plugin for Display3dPlugin {
.or_else(any_component_removed::<Selected>()) .or_else(any_component_removed::<Selected>())
), ),
// vantage point camera when playing against AI // vantage point camera when playing against AI
// vantage_point vantage_point
// .run_if(in_state(GameState::Play)) .run_if(in_state(GameState::Play))
// .run_if(in_state(PlayState::AiBogo).and_then(in_state(TurnState(Side::B)))) .run_if(in_state(PlayState::AiBogo).and_then(in_state(TurnState(Side::B))))
// .run_if(any_component_added::<Selected>().or_else(any_component_removed::<Selected>())), .run_if(any_component_added::<Selected>().or_else(state_changed::<TurnState>)),
// vantage point camera when playing against human // vantage point camera when playing against human
vantage_point vantage_point
.run_if(in_state(GameState::Play)) .run_if(in_state(GameState::Play))
@ -1036,10 +1036,12 @@ fn switch_sides(
fn vantage_point( fn vantage_point(
selected: Query<Entity, With<Selected>>, selected: Query<Entity, With<Selected>>,
mut players: Query<&mut AnimationPlayer, (With<Camera>, With<Display3d>)>, mut players: Query<&mut AnimationPlayer, (With<Camera>, With<Display3d>)>,
events: EventReader<StateTransitionEvent<TurnState>>,
gltfs: Res<Assets<Gltf>>, gltfs: Res<Assets<Gltf>>,
state: Res<State<game::TurnState>>, state: Res<State<game::TurnState>>,
tweaks: Res<Assets<Tweaks>>, tweaks: Res<Assets<Tweaks>>,
tweaks_file: Res<tweak::GameTweaks>, tweaks_file: Res<tweak::GameTweaks>,
mut up: Local<bool>
) { ) {
let tweak = tweaks let tweak = tweaks
.get(tweaks_file.handle.clone()) .get(tweaks_file.handle.clone())
@ -1051,28 +1053,32 @@ fn vantage_point(
players.iter_mut().for_each(|mut player| { players.iter_mut().for_each(|mut player| {
info!("Getting a better view"); info!("Getting a better view");
let animation_key = match state.get() { // play down events on state transitions
game::TurnState(game::Side::A) => { let animation_key = if events.len() > 0 && *up {
if selected.iter().count() == 1 { *up = false;
"display3d_models_animations_turn_up_a" match state.get() {
} else { game::TurnState(game::Side::A) => "display3d_models_animations_turn_down_a",
"display3d_models_animations_turn_down_a" game::TurnState(game::Side::B) => "display3d_models_animations_turn_down_b",
} }
}, // Play up events when selected > 0
game::TurnState(game::Side::B) => { } else if selected.iter().count() == 1 && !*up {
if selected.iter().count() == 1 { *up = true;
"display3d_models_animations_turn_up_b" match state.get() {
} else { game::TurnState(game::Side::A) => "display3d_models_animations_turn_up_a",
"display3d_models_animations_turn_down_b" game::TurnState(game::Side::B) => "display3d_models_animations_turn_up_b",
} }
}, } else {
""
}; };
if animation_key != "" {
let animation_val = tweak.get::<String>(animation_key).unwrap(); let animation_val = tweak.get::<String>(animation_key).unwrap();
let animation = gltf.named_animations.get(animation_val.as_str()).expect("Camera Transition Animation"); let animation = gltf.named_animations.get(animation_val.as_str()).expect("Camera Transition Animation");
player.start_with_transition( player.start_with_transition(
animation.clone(), animation.clone(),
Duration::from_secs_f32(1.00), Duration::from_secs_f32(1.00),
); );
}
}); });
} }

Loading…
Cancel
Save