Still borked, saving my place

rolling back in hopes that it fixes things...
main
Elijah C. Voigt 2 years ago
parent 0972d2ef91
commit 6ce3fffa87

@ -12,14 +12,15 @@ impl Plugin for Display3dPlugin {
.add_systems( .add_systems(
OnExit(GameState::Loading), OnExit(GameState::Loading),
( (
initialize,
fix_skybox.before(initialize), fix_skybox.before(initialize),
initialize,
update_tweaks.run_if(resource_exists::<tweak::GameTweaks>), update_tweaks.run_if(resource_exists::<tweak::GameTweaks>),
), ),
) )
.add_systems( .add_systems(
Update, Update,
( (
debug_textures,
load_assets load_assets
.run_if(in_state(GameState::Loading)) .run_if(in_state(GameState::Loading))
.run_if(on_event::<AssetEvent<Tweaks>>()), .run_if(on_event::<AssetEvent<Tweaks>>()),
@ -37,10 +38,7 @@ impl Plugin for Display3dPlugin {
.or_else(any_component_changed::<BoardIndex>()) .or_else(any_component_changed::<BoardIndex>())
) )
), ),
set_board_model.run_if( set_board_model.run_if(any_component_added::<game::BoardComponent>()),
any_component_added::<game::BoardComponent>()
.or_else(any_component_added::<TilesComponent>())
),
set_valid_move_model.run_if(any_component_added::<game::ValidMove>()), set_valid_move_model.run_if(any_component_added::<game::ValidMove>()),
set_tile_hitbox.run_if(any_component_added::<game::Tile>()), set_tile_hitbox.run_if(any_component_added::<game::Tile>()),
select select
@ -49,8 +47,8 @@ impl Plugin for Display3dPlugin {
.run_if(on_event::<MouseButtonInput>()), .run_if(on_event::<MouseButtonInput>()),
pick_up.run_if(any_component_added::<game::Selected>()), pick_up.run_if(any_component_added::<game::Selected>()),
put_down.run_if(any_component_removed::<game::Selected>()), put_down.run_if(any_component_removed::<game::Selected>()),
setup_capture_piece.run_if(any_component_changed::<Handle<StandardMaterial>>()), // setup_capture_piece.run_if(any_component_changed::<Handle<StandardMaterial>>()),
capture_piece.run_if(any_with_component::<game::Captured>), // capture_piece.run_if(any_with_component::<game::Captured>),
skip_animation skip_animation
.run_if(just_pressed(KeyCode::Enter).or_else(just_pressed(MouseButton::Left))) .run_if(just_pressed(KeyCode::Enter).or_else(just_pressed(MouseButton::Left)))
.run_if(in_state(GameState::Play)), .run_if(in_state(GameState::Play)),
@ -93,9 +91,6 @@ impl Plugin for Display3dPlugin {
#[derive(Debug, Component, PartialEq)] #[derive(Debug, Component, PartialEq)]
pub(crate) struct Display3d; pub(crate) struct Display3d;
#[derive(Debug, Component)]
struct TilesComponent;
#[derive(Debug, Resource, Clone)] #[derive(Debug, Resource, Clone)]
struct AssetsMap { struct AssetsMap {
hitbox_shape: Handle<Mesh>, hitbox_shape: Handle<Mesh>,
@ -146,14 +141,6 @@ fn initialize(mut commands: Commands, board: Res<game::Board>, assets: Res<Asset
SceneBundle { ..default() }, SceneBundle { ..default() },
)) ))
.with_children(|parent| { .with_children(|parent| {
// TEMP: Tiles
parent.spawn((
Display3d,
DisplayState::Display3d,
TilesComponent,
SceneBundle { ..default() },
));
// Hitboxes // Hitboxes
game::tiles().for_each(|(index, tile)| { game::tiles().for_each(|(index, tile)| {
let side = Board::side(index).expect("Spawn valid side"); let side = Board::side(index).expect("Spawn valid side");
@ -307,8 +294,8 @@ fn update_tweaks(
tweaks: Res<Assets<Tweaks>>, tweaks: Res<Assets<Tweaks>>,
mut commands: Commands, mut commands: Commands,
) { ) {
warn!("Updating tweaks!");
if let Some(tweak) = tweaks.get(tweaks_file.handle.clone()) { if let Some(tweak) = tweaks.get(tweaks_file.handle.clone()) {
warn!("Updating tweaks!");
camera_settings.iter_mut().for_each( camera_settings.iter_mut().for_each(
|(entity, mut fog, mut color_grading, mut tonemapping, mut bloom)| { |(entity, mut fog, mut color_grading, mut tonemapping, mut bloom)| {
*fog = tweak *fog = tweak
@ -387,8 +374,7 @@ fn set_board_model(
mut boards: Query< mut boards: Query<
&mut Handle<Scene>, &mut Handle<Scene>,
( (
With<game::BoardComponent>, Added<game::BoardComponent>,
Without<TilesComponent>,
With<Display3d>, With<Display3d>,
), ),
>, >,
@ -400,6 +386,7 @@ fn set_board_model(
.get(tweaks_file.handle.clone()) .get(tweaks_file.handle.clone())
.expect("Load tweakfile"); .expect("Load tweakfile");
boards.iter_mut().for_each(|mut handle| { boards.iter_mut().for_each(|mut handle| {
info!("Setting board model");
let assets_handle = tweak let assets_handle = tweak
.get_handle::<Gltf>("display3d_models_assets_file") .get_handle::<Gltf>("display3d_models_assets_file")
.unwrap(); .unwrap();
@ -511,41 +498,47 @@ fn update_pieces(
let models = gltfs.get(assets_handle).unwrap(); let models = gltfs.get(assets_handle).unwrap();
query.iter_mut().for_each(|(entity, piece, side, board_index, mut transform, mut scene, animation_player)| { query.iter_mut().for_each(|(entity, piece, side, board_index, mut transform, mut scene, animation_player)| {
// Set position of piece // Set position of piece
let new_translation = board_translation(board_index); let new_translation = board_translation(board_index);
if transform.translation != new_translation { if transform.translation != new_translation {
info!("Updating piece transform");
transform.translation = new_translation; transform.translation = new_translation;
} }
// Find name of this piece's model scene if animation_player.is_finished() {
let scene_tweak_name: Option<String> = match (piece, side) { info!("Updating piece object scene");
(Piece::Pawn, Side::A) => {
tweak.get("display3d_models_scenes_pawn_red") // Find name of this piece's model scene
}, let scene_tweak_name: Option<String> = match (piece, side) {
(Piece::Pawn, Side::B) => { (Piece::Pawn, Side::A) => {
tweak.get("display3d_models_scenes_pawn_blue") tweak.get("display3d_models_scenes_pawn_red")
} },
(Piece::Drone, Side::A) => { (Piece::Pawn, Side::B) => {
tweak.get("display3d_models_scenes_drone_red") tweak.get("display3d_models_scenes_pawn_blue")
}, }
(Piece::Drone, Side::B) => { (Piece::Drone, Side::A) => {
tweak.get("display3d_models_scenes_drone_blue") tweak.get("display3d_models_scenes_drone_red")
} },
(Piece::Queen, Side::A) => { (Piece::Drone, Side::B) => {
tweak.get("display3d_models_scenes_queen_red") tweak.get("display3d_models_scenes_drone_blue")
}, }
(Piece::Queen, Side::B) => { (Piece::Queen, Side::A) => {
tweak.get("display3d_models_scenes_queen_blue") tweak.get("display3d_models_scenes_queen_red")
} },
}; (Piece::Queen, Side::B) => {
tweak.get("display3d_models_scenes_queen_blue")
}
};
// Get model scene for this piece // Get model scene for this piece
let scene_handle = models.named_scenes.get(&scene_tweak_name.unwrap()).unwrap(); let scene_handle = models.named_scenes.get(&scene_tweak_name.unwrap()).unwrap();
// Set scene model for this piece // Set scene model for this piece
if *scene != *scene_handle { if *scene != *scene_handle {
warn!("Updating scene for piece {:?}", entity); warn!("Updating scene for piece {:?}", entity);
*scene = scene_handle.clone(); *scene = scene_handle.clone();
}
} }
}); });
} }
@ -655,6 +648,8 @@ fn set_valid_move_model(
.get_handle::<Gltf>("display3d_models_assets_file") .get_handle::<Gltf>("display3d_models_assets_file")
.unwrap(); .unwrap();
if let Some(gltf) = gltfs.get(assets_handle) { if let Some(gltf) = gltfs.get(assets_handle) {
info!("Setting valid move model");
events.iter_mut().for_each(|(mut handle, mut visibility)| { events.iter_mut().for_each(|(mut handle, mut visibility)| {
*handle = gltf *handle = gltf
.named_scenes .named_scenes
@ -688,6 +683,8 @@ fn pick_up(
.get(tweaks_file.handle.clone()) .get(tweaks_file.handle.clone())
.expect("Load tweakfile"); .expect("Load tweakfile");
events.iter_mut().for_each(|(entity, piece, side)| { events.iter_mut().for_each(|(entity, piece, side)| {
info!("Picking up piece");
let assets_handle = tweak let assets_handle = tweak
.get_handle::<Gltf>("display3d_models_assets_file") .get_handle::<Gltf>("display3d_models_assets_file")
.unwrap(); .unwrap();
@ -755,6 +752,8 @@ fn put_down(
.expect("Load tweakfile"); .expect("Load tweakfile");
events.read().for_each(|entity| { events.read().for_each(|entity| {
if let Ok((piece, side)) = query.get_mut(entity) { if let Ok((piece, side)) = query.get_mut(entity) {
info!("Putting down piece");
let assets_handle = tweak let assets_handle = tweak
.get_handle::<Gltf>("display3d_models_assets_file") .get_handle::<Gltf>("display3d_models_assets_file")
.unwrap(); .unwrap();
@ -795,6 +794,8 @@ fn set_tile_hitbox(
mut events: Query<(&mut Transform, &BoardIndex), (With<Display3d>, Added<game::Tile>)>, mut events: Query<(&mut Transform, &BoardIndex), (With<Display3d>, Added<game::Tile>)>,
) { ) {
events.iter_mut().for_each(|(mut transform, index)| { events.iter_mut().for_each(|(mut transform, index)| {
info!("Setting tile hitbox");
*transform = Transform::from_translation(board_translation(index)); *transform = Transform::from_translation(board_translation(index));
}); });
} }
@ -813,6 +814,8 @@ fn skip_animation(
time: Res<Time>, time: Res<Time>,
) { ) {
players.iter_mut().for_each(|mut p| { players.iter_mut().for_each(|mut p| {
info!("Skipping animation");
if let Some(c) = clips.get(p.animation_clip()) { if let Some(c) = clips.get(p.animation_clip()) {
// HACK: We should be able to skip to the end of an animation // HACK: We should be able to skip to the end of an animation
// But implementation details means this is as close as we can get... // But implementation details means this is as close as we can get...
@ -836,6 +839,8 @@ fn switch_sides(
.unwrap(); .unwrap();
let gltf = gltfs.get(assets_handle).expect("Load GLTF content"); let gltf = gltfs.get(assets_handle).expect("Load GLTF content");
players.iter_mut().for_each(|mut player| { players.iter_mut().for_each(|mut player| {
info!("Switching sides");
let animation = match state.get() { let animation = match state.get() {
game::TurnState(game::Side::A) => gltf.named_animations.get( game::TurnState(game::Side::A) => gltf.named_animations.get(
tweak tweak
@ -1289,3 +1294,11 @@ fn debug_selected(
); );
}); });
} }
fn debug_textures(
mut events: EventReader<AssetEvent<StandardMaterial>>,
) {
events.read().for_each(|event| {
info!("New material: {:?}", event);
});
}

@ -138,10 +138,6 @@ pub(crate) fn _any_component_added_or_changed<C: Component>(
!q.is_empty() !q.is_empty()
} }
/// Stores the original value of a component which is modified at runtime
#[derive(Debug, Component)]
pub(crate) struct Original<T: Component>(T);
fn set_window_icon( fn set_window_icon(
// we have to use `NonSend` here // we have to use `NonSend` here
windows: NonSend<WinitWindows>, windows: NonSend<WinitWindows>,

Loading…
Cancel
Save