#![allow(clippy::all)]
#![allow(deprecated)]
use aalo::prelude::*;
use bevy::prelude::*;
use bevy_math::Vec3A;
use haalka::futures_signals::prelude::*;
use strum::{Display, EnumIter};
fn main() {
App::new()
.add_plugins((
DefaultPlugins.set(WindowPlugin {
primary_window: Some(Window {
..default()
}),
..default()
}),
HaalkaFuturesSignalsPlugin,
AaloPlugin::new()
.world()
.flatten_descendants()
.with_inspector(|inspector| {
inspector
.jump_to(("entity", "FloatWrapper", "floatwrapper", ".0"))
}),
))
.register_type::<BoolComponent>()
.register_type::<BoolComponentHolder>()
.register_type::<TestEnum>()
.register_type::<FloatWrapper>()
.register_type::<TestStruct>()
.register_type::<VecHolder>()
.register_type::<MatrixHolder>()
.register_type::<BoolVecHolder>()
.register_type::<NonZeroHolder>()
.add_systems(Startup, (camera, ui_root, setup))
.run();
}
fn camera(mut commands: Commands) {
commands.spawn((Camera2d, IsDefaultUiCamera));
}
#[derive(Clone, PartialEq, Component, Reflect, EnumIter, Display)]
enum TestEnum {
D,
Y(bool, bool),
B(i8),
A(String),
J { a: f32, b: String },
C(BoolComponent),
T(u32),
}
impl Default for TestEnum {
fn default() -> Self {
Self::B(125)
}
}
#[derive(Component, Reflect)]
struct FloatWrapper(f32);
#[derive(Clone, PartialEq, Component, Reflect, Default)]
#[reflect(Default)]
struct BoolComponent(bool, bool);
#[derive(Component, Reflect, Default)]
struct BoolComponentHolder {
bool_1: BoolComponent,
bool_2: BoolComponent,
bool_3: Vec<bool>,
bool_4: (bool, BoolComponent, Vec<bool>),
enum_: TestEnum,
}
#[derive(Component, Reflect)]
struct TestStruct {
ent: Entity,
}
#[derive(Component, Reflect)]
struct VecHolder(pub Vec3A);
#[derive(Component, Reflect)]
struct MatrixHolder(pub Mat4);
#[derive(Component, Reflect)]
struct BoolVecHolder(pub BVec2);
#[derive(Component, Reflect)]
struct NonZeroHolder(pub std::num::NonZeroI64);
fn setup(
mut commands: Commands,
) {
commands.spawn((FloatWrapper(3.4), Name::new("FloatWrapper")));
commands.spawn((BoolComponent::default(), Name::new("BoolComponent")));
commands.spawn((TestEnum::default(), Name::new("TestEnum")));
commands.spawn((
BoolComponentHolder {
bool_3: vec![true, false],
bool_4: (false, default(), vec![false, true]),
..default()
},
Name::new("BoolComponentHolder"),
));
commands.spawn((
Camera2d::default(),
Name::new("camera_lmao"),
));
}
fn ui_root(world: &mut World) {
Column::<Node>::new()
.with_node(|mut node| {
node.width = Val::Percent(100.);
node.height = Val::Percent(100.);
})
.cursor(CursorIcon::System(SystemCursorIcon::Default))
.update_raw_el(|raw_el| {
raw_el
.on_spawn(|world, entity| {
world.spawn((Name::new("test"), TestStruct { ent: entity }));
})
.insert(FloatWrapper(20.))
.insert(BoolComponent::default())
.insert(TestEnum::default())
.insert(BoolComponentHolder {
bool_3: vec![true, false],
bool_4: (false, default(), vec![false, true]),
..default()
})
.insert(Pickable {
should_block_lower: false,
..default()
})
})
.item(
Column::<Node>::new()
.name("column")
.update_raw_el(|raw_el| {
raw_el.insert((
VecHolder(Vec3A::ZERO),
MatrixHolder(Mat4::IDENTITY),
BoolVecHolder(BVec2::TRUE),
NonZeroHolder(std::num::NonZeroI64::new(1).unwrap()),
))
})
.item(El::<Node>::new().name("test 0"))
.item(El::<Node>::new().name("test 1"))
.item(El::<Node>::new().name("test 2"))
.item(El::<Node>::new().name("test 3")),
)
.spawn(world);
}