~starkingdoms/starkingdoms

a2850ebac0aef4aaeda111ccf4ae8ea1b35eb5b3 — ghostly_zsh 5 months ago 2d90d28
feat: turn off starfield when zoomed out significantly
2 files changed, 20 insertions(+), 17 deletions(-)

M crates/unified/src/client/starfield.rs
M crates/unified/src/client/zoom.rs
M crates/unified/src/client/starfield.rs => crates/unified/src/client/starfield.rs +5 -11
@@ 1,20 1,11 @@
use bevy::{
    app::{App, Startup, Update},
    asset::{AssetEvent, AssetServer, Assets},
    ecs::{
    app::{App, Startup, Update}, asset::{AssetEvent, AssetServer, Assets}, ecs::{
        //entity::Entity,
        //entity_disabling::Disabled,
        event::EventReader,
        query::{With, Without},
        system::{Commands, Query, Res, Single},
    },
    image::Image,
    log::warn,
    math::{Vec2, Vec3},
    //render::view::visibility::Visibility,
    sprite::{Sprite, SpriteImageMode},
    transform::components::Transform,
    window::{Window, WindowResized},
    }, image::Image, log::warn, math::{Vec2, Vec3}, render::view::Visibility, sprite::{Sprite, SpriteImageMode}, transform::components::Transform, window::{Window, WindowResized}
};

use crate::{


@@ 54,6 45,7 @@ pub fn set_up_starfield(
            ..Default::default()
        })
        .insert(Transform::from_xyz(0.0, 0.0, 5.0))
        .insert(Visibility::Inherited)
        .insert(StarfieldBack);
    commands
        .spawn(Sprite {


@@ 67,6 59,7 @@ pub fn set_up_starfield(
            ..Default::default()
        })
        .insert(Transform::from_xyz(0.0, 0.0, 4.5))
        .insert(Visibility::Inherited)
        .insert(StarfieldMid);
    commands
        .spawn(Sprite {


@@ 82,6 75,7 @@ pub fn set_up_starfield(
            ..Default::default()
        })
        .insert(Transform::from_xyz(0.0, 0.0, 4.0))
        .insert(Visibility::Inherited)
        .insert(StarfieldFront);
}


M crates/unified/src/client/zoom.rs => crates/unified/src/client/zoom.rs +15 -6
@@ 19,7 19,7 @@ fn on_scroll(
    mut scroll_events: EventReader<MouseWheel>,
    window: Single<&Window>,
    starfield_back: Single<
        (&mut Sprite, &mut Transform),
        (&mut Sprite, &mut Transform, &mut Visibility),
        (
            With<StarfieldBack>,
            Without<StarfieldMid>,


@@ 27,7 27,7 @@ fn on_scroll(
        ),
    >,
    starfield_mid: Single<
        (&mut Sprite, &mut Transform),
        (&mut Sprite, &mut Transform, &mut Visibility),
        (
            With<StarfieldMid>,
            Without<StarfieldBack>,


@@ 35,7 35,7 @@ fn on_scroll(
        ),
    >,
    starfield_front: Single<
        (&mut Sprite, &mut Transform),
        (&mut Sprite, &mut Transform, &mut Visibility),
        (
            With<StarfieldFront>,
            Without<StarfieldBack>,


@@ 63,9 63,9 @@ fn on_scroll(
        ),
    >,
) {
    let (mut starfield_back, mut starfield_back_pos) = starfield_back.into_inner();
    let (mut starfield_mid, mut starfield_mid_pos) = starfield_mid.into_inner();
    let (mut starfield_front, mut starfield_front_pos) = starfield_front.into_inner();
    let (mut starfield_back, mut starfield_back_pos, mut visibility_back) = starfield_back.into_inner();
    let (mut starfield_mid, mut starfield_mid_pos, mut visibility_mid) = starfield_mid.into_inner();
    let (mut starfield_front, mut starfield_front_pos, mut visibility_front) = starfield_front.into_inner();
    for event in scroll_events.read() {
        match event.unit {
            MouseScrollUnit::Line | MouseScrollUnit::Pixel => {


@@ 74,6 74,15 @@ fn on_scroll(
                } else {
                    camera.scale *= 1.03;
                }
                if camera.scale.z > 50.0 {
                    *visibility_back = Visibility::Hidden;
                    *visibility_mid = Visibility::Hidden;
                    *visibility_front = Visibility::Hidden;
                } else {
                    *visibility_back = Visibility::Inherited;
                    *visibility_mid = Visibility::Inherited;
                    *visibility_front = Visibility::Inherited;
                }
                starfield_back.custom_size =
                    Some(window.size() * camera.scale.z + Vec2::splat(BACK_STARFIELD_SIZE * 2.0));
                starfield_mid.custom_size =