From ad36e8bea5f9fd6a6101478bea87fd1b77e8a0e0 Mon Sep 17 00:00:00 2001 From: ddevin96 Date: Thu, 16 Apr 2026 10:57:25 +0200 Subject: [PATCH 1/7] feat: bump to bevy 18 --- Cargo.toml | 18 +++++++++--------- flockers/Cargo.toml | 3 ++- flockers/src/main.rs | 2 +- flockers/src/visualization/vis_state.rs | 5 ++--- virusnetwork/Cargo.toml | 3 ++- virusnetwork/src/main.rs | 2 +- virusnetwork/src/visualization/vis_state.rs | 5 ++--- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5d99054..132c45f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,15 +2,15 @@ resolver = "2" members = [ - "antsforaging", + # "antsforaging", "flockers", - "flockers_mpi", - "forestfire", - "forestfire_bayesian", - "schelling", - "sir_ga_exploration", - "sugarscape", - "template", + # "flockers_mpi", + # "forestfire", + # "forestfire_bayesian", + # "schelling", + # "sir_ga_exploration", + # "sugarscape", + # "template", "virusnetwork", - "wolfsheepgrass", + # "wolfsheepgrass", ] diff --git a/flockers/Cargo.toml b/flockers/Cargo.toml index 73e0b47..3674974 100644 --- a/flockers/Cargo.toml +++ b/flockers/Cargo.toml @@ -18,7 +18,8 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +# krabmaga = "0.5.*" +krabmaga = {path = "../../krABMaga"} [features] parallel = ["krabmaga/parallel"] diff --git a/flockers/src/main.rs b/flockers/src/main.rs index 5ded40c..6ac8bcb 100644 --- a/flockers/src/main.rs +++ b/flockers/src/main.rs @@ -56,7 +56,7 @@ fn main() { Visualization::default() .with_window_dimensions(1000., 700.) .with_simulation_dimensions(dim.0, dim.1) - .with_background_color(Color::rgb(0., 0., 0.)) + .with_background_color(Color::srgb(0., 0., 0.)) .with_name("Flockers") .start::(VisState, state); } diff --git a/flockers/src/visualization/vis_state.rs b/flockers/src/visualization/vis_state.rs index ac8f738..66a2fa4 100644 --- a/flockers/src/visualization/vis_state.rs +++ b/flockers/src/visualization/vis_state.rs @@ -1,4 +1,4 @@ -use krabmaga::bevy::prelude::Commands; +use krabmaga::bevy::prelude::{Commands, Resource}; use krabmaga::engine::agent::Agent; use krabmaga::engine::location::Real2D; use krabmaga::engine::schedule::Schedule; @@ -12,7 +12,6 @@ use crate::model::bird::Bird; use crate::model::state::Flocker; use crate::visualization::bird_vis::BirdVis; use krabmaga::bevy::ecs as bevy_ecs; -use krabmaga::bevy::ecs::system::Resource; #[derive(Clone, Resource)] pub struct VisState; @@ -43,7 +42,7 @@ impl VisualizationState for VisState { fn get_agent( &self, - agent_render: &Box, + agent_render: &dyn AgentRender, state: &Box<&dyn State>, ) -> Option> { // TODO we don't just need the agent associated to the agent render, we need the correct one so that we diff --git a/virusnetwork/Cargo.toml b/virusnetwork/Cargo.toml index de6ca3a..ac0b245 100644 --- a/virusnetwork/Cargo.toml +++ b/virusnetwork/Cargo.toml @@ -18,7 +18,8 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +# krabmaga = "0.5.*" +krabmaga = {path = "../../krABMaga"} [features] visualization = ["krabmaga/visualization"] diff --git a/virusnetwork/src/main.rs b/virusnetwork/src/main.rs index c72734d..1aaa18e 100644 --- a/virusnetwork/src/main.rs +++ b/virusnetwork/src/main.rs @@ -47,7 +47,7 @@ fn main() { let mut app = Visualization::default() .with_window_dimensions(1000., 700.) .with_simulation_dimensions(dim.0, dim.1) - .with_background_color(Color::rgb(255., 255., 255.)) + .with_background_color(Color::srgb(1., 1., 1.)) .setup::(VisState, epidemic_network); app.add_systems(FixedUpdate, EpidemicNetworkState::render); app.run(); diff --git a/virusnetwork/src/visualization/vis_state.rs b/virusnetwork/src/visualization/vis_state.rs index 5e07d76..1e812b9 100644 --- a/virusnetwork/src/visualization/vis_state.rs +++ b/virusnetwork/src/visualization/vis_state.rs @@ -1,8 +1,7 @@ use crate::model::{node::*, state::EpidemicNetworkState}; use crate::visualization::node::NetNodeVis; use krabmaga::bevy::ecs as bevy_ecs; -use krabmaga::bevy::ecs::system::Resource; -use krabmaga::bevy::prelude::Commands; +use krabmaga::bevy::prelude::{Commands, Resource}; use krabmaga::engine::agent::Agent; use krabmaga::engine::schedule::*; use krabmaga::engine::state::State; @@ -39,7 +38,7 @@ impl VisualizationState for VisState { fn get_agent( &self, - agent_render: &Box, + agent_render: &dyn AgentRender, state: &Box<&dyn State>, ) -> Option> { let state = state From f434eab9e360e727f84519c7ed4e3fce26b3cbd8 Mon Sep 17 00:00:00 2001 From: ddevin96 Date: Thu, 16 Apr 2026 12:04:35 +0200 Subject: [PATCH 2/7] feat: update all examples for bevy 18 - moved already deps to krabamga 0.6.0 --- Cargo.toml | 18 +++++++++--------- antsforaging/Cargo.toml | 2 +- antsforaging/src/main.rs | 4 ++-- antsforaging/src/model/state.rs | 4 +++- antsforaging/src/visualization/ant.rs | 7 ++----- antsforaging/src/visualization/item.rs | 9 +-------- antsforaging/src/visualization/vis_state.rs | 4 ++-- flockers/Cargo.toml | 4 ++-- flockers_mpi/Cargo.toml | 2 +- forestfire/Cargo.toml | 2 +- forestfire/src/main.rs | 2 +- forestfire/src/model/forest.rs | 4 +++- forestfire/src/visualization/custom_systems.rs | 6 ------ forestfire/src/visualization/forest_vis.rs | 4 ++-- forestfire_bayesian/Cargo.toml | 2 +- .../src/visualization/custom_systems.rs | 4 ---- .../src/visualization/forest_vis.rs | 6 ++++-- schelling/Cargo.toml | 2 +- schelling/src/main.rs | 2 +- schelling/src/model/world.rs | 4 +++- schelling/src/visualization/custom_systems.rs | 6 ------ schelling/src/visualization/world_vis.rs | 4 ++-- sir_ga_exploration/Cargo.toml | 2 +- sugarscape/Cargo.toml | 2 +- sugarscape/src/main.rs | 4 ++-- .../src/visualization/environment_vis.rs | 4 ++-- template/Cargo.toml | 2 +- template/src/main.rs | 2 +- template/src/visualization/sea_vis.rs | 4 ++-- virusnetwork/Cargo.toml | 4 ++-- virusnetwork/src/visualization/vis_network.rs | 2 +- wolfsheepgrass/Cargo.toml | 2 +- wolfsheepgrass/src/main.rs | 4 ++-- wolfsheepgrass/src/visualization/vis_state.rs | 4 ++-- 34 files changed, 60 insertions(+), 78 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 132c45f..5d99054 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,15 +2,15 @@ resolver = "2" members = [ - # "antsforaging", + "antsforaging", "flockers", - # "flockers_mpi", - # "forestfire", - # "forestfire_bayesian", - # "schelling", - # "sir_ga_exploration", - # "sugarscape", - # "template", + "flockers_mpi", + "forestfire", + "forestfire_bayesian", + "schelling", + "sir_ga_exploration", + "sugarscape", + "template", "virusnetwork", - # "wolfsheepgrass", + "wolfsheepgrass", ] diff --git a/antsforaging/Cargo.toml b/antsforaging/Cargo.toml index c572f7e..5f61e64 100644 --- a/antsforaging/Cargo.toml +++ b/antsforaging/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] visualization = ["krabmaga/visualization"] diff --git a/antsforaging/src/main.rs b/antsforaging/src/main.rs index 1a67614..cd18213 100644 --- a/antsforaging/src/main.rs +++ b/antsforaging/src/main.rs @@ -48,7 +48,7 @@ pub mod visualization; fn main() { let state = ModelState::new(); let mut app = Visualization::default() - .with_background_color(Color::rgb(255., 255., 255.)) + .with_background_color(Color::srgb(1., 1., 1.)) .with_simulation_dimensions(WIDTH as f32, HEIGHT as f32) .with_window_dimensions(1280., 720.) .with_name("Ants foraging") @@ -57,7 +57,7 @@ fn main() { FixedUpdate, (ToHomeGrid::batch_render, ToFoodGrid::batch_render), ); - app.run() + app.run(); } // #[cfg(not(any(feature = "visualization", feature = "visualization_wasm")))] diff --git a/antsforaging/src/model/state.rs b/antsforaging/src/model/state.rs index b62038b..fa1afa3 100644 --- a/antsforaging/src/model/state.rs +++ b/antsforaging/src/model/state.rs @@ -7,6 +7,8 @@ use crate::{ }; use core::fmt; use core::hash::{Hash, Hasher}; +use krabmaga::bevy::ecs as bevy_ecs; +use krabmaga::bevy::prelude::Component; use krabmaga::engine::fields::field::Field; use krabmaga::engine::fields::sparse_object_grid_2d::SparseGrid2D; use krabmaga::engine::location::Int2D; @@ -34,7 +36,7 @@ impl fmt::Display for ItemType { } } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Component)] pub struct Item { pub id: u32, pub value: ItemType, diff --git a/antsforaging/src/visualization/ant.rs b/antsforaging/src/visualization/ant.rs index b36a734..5cbc5b0 100644 --- a/antsforaging/src/visualization/ant.rs +++ b/antsforaging/src/visualization/ant.rs @@ -1,7 +1,6 @@ use crate::model::ant::Ant; use crate::model::state::ModelState; -use krabmaga::bevy::ecs::component::TableStorage; -use krabmaga::bevy::prelude::{Component, Quat, Transform, Visibility}; +use krabmaga::bevy::prelude::{Quat, Transform, Visibility}; use krabmaga::engine::agent::Agent; use krabmaga::engine::location::Int2D; use krabmaga::engine::state::State; @@ -10,9 +9,7 @@ use krabmaga::visualization::agent_render::{AgentRender, SpriteType}; pub struct AntVis { pub id: u32, } -impl Component for AntVis { - type Storage = TableStorage; -} + impl AgentRender for AntVis { fn sprite(&self, _agent: &Box, _state: &Box<&dyn State>) -> SpriteType { SpriteType::Emoji(String::from("ant")) diff --git a/antsforaging/src/visualization/item.rs b/antsforaging/src/visualization/item.rs index 2ff35c6..c57ac14 100644 --- a/antsforaging/src/visualization/item.rs +++ b/antsforaging/src/visualization/item.rs @@ -1,8 +1 @@ -use krabmaga::bevy::ecs::component::TableStorage; -use krabmaga::bevy::prelude::Component; - -use crate::model::state::Item; - -impl Component for Item { - type Storage = TableStorage; -} +// Item now derives Component in model/state.rs for Bevy 0.18 compatibility. diff --git a/antsforaging/src/visualization/vis_state.rs b/antsforaging/src/visualization/vis_state.rs index 4d6120b..7515139 100644 --- a/antsforaging/src/visualization/vis_state.rs +++ b/antsforaging/src/visualization/vis_state.rs @@ -15,7 +15,7 @@ use crate::model::ant::Ant; use crate::model::state::*; use crate::visualization::ant::AntVis; use krabmaga::bevy::ecs as bevy_ecs; -use krabmaga::bevy::ecs::system::Resource; +use krabmaga::bevy::prelude::Resource; #[derive(Clone, Resource)] pub struct VisState; @@ -48,7 +48,7 @@ impl VisualizationState for VisState { fn get_agent( &self, - agent_render: &Box, + agent_render: &dyn AgentRender, state: &Box<&dyn StateTrait>, ) -> Option> { let state = state.as_any().downcast_ref::().unwrap(); diff --git a/flockers/Cargo.toml b/flockers/Cargo.toml index 3674974..a2f2f56 100644 --- a/flockers/Cargo.toml +++ b/flockers/Cargo.toml @@ -18,8 +18,8 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -# krabmaga = "0.5.*" -krabmaga = {path = "../../krABMaga"} +krabmaga = "0.6.*" + [features] parallel = ["krabmaga/parallel"] diff --git a/flockers_mpi/Cargo.toml b/flockers_mpi/Cargo.toml index c863028..7b0b05b 100644 --- a/flockers_mpi/Cargo.toml +++ b/flockers_mpi/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] distributed_mpi = ["krabmaga/distributed_mpi"] diff --git a/forestfire/Cargo.toml b/forestfire/Cargo.toml index d9fce8b..934370b 100644 --- a/forestfire/Cargo.toml +++ b/forestfire/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] visualization = ["krabmaga/visualization"] diff --git a/forestfire/src/main.rs b/forestfire/src/main.rs index 65ebf69..3c6fb0f 100644 --- a/forestfire/src/main.rs +++ b/forestfire/src/main.rs @@ -45,7 +45,7 @@ fn main() { let mut app = Visualization::default() .with_simulation_dimensions(state.dim.0 as f32, state.dim.1 as f32) .with_window_dimensions(1000., 720.) - .with_background_color(Color::BLACK) + .with_background_color(Color::srgb(0., 0., 0.)) .with_name("Forest Fire Model") .setup::(ForestVis, state); app.add_systems(FixedUpdate, DenseGrid2D::::render); diff --git a/forestfire/src/model/forest.rs b/forestfire/src/model/forest.rs index 99b573a..c734e02 100644 --- a/forestfire/src/model/forest.rs +++ b/forestfire/src/model/forest.rs @@ -1,5 +1,7 @@ use crate::model::spread::Spread; use core::fmt; +use krabmaga::bevy::ecs as bevy_ecs; +use krabmaga::bevy::prelude::Component; use krabmaga::engine::fields::dense_object_grid_2d::DenseGrid2D; use krabmaga::engine::fields::field::Field; use krabmaga::engine::location::Int2D; @@ -28,7 +30,7 @@ impl fmt::Display for Status { } } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Component)] pub struct Tree { pub id: i32, pub status: Status, diff --git a/forestfire/src/visualization/custom_systems.rs b/forestfire/src/visualization/custom_systems.rs index 049c9ed..7657abc 100644 --- a/forestfire/src/visualization/custom_systems.rs +++ b/forestfire/src/visualization/custom_systems.rs @@ -1,15 +1,9 @@ use crate::model::forest::*; -use krabmaga::bevy::ecs::component::TableStorage; -use krabmaga::bevy::prelude::Component; use krabmaga::engine::fields::dense_object_grid_2d::DenseGrid2D; use krabmaga::engine::fields::sparse_object_grid_2d::SparseGrid2D; use krabmaga::engine::location::Int2D; use krabmaga::visualization::fields::object_grid_2d::RenderObjectGrid2D; -impl Component for Tree { - type Storage = TableStorage; -} - impl RenderObjectGrid2D for DenseGrid2D { fn fetch_sparse_grid(_state: &Forest) -> Option<&SparseGrid2D> { None diff --git a/forestfire/src/visualization/forest_vis.rs b/forestfire/src/visualization/forest_vis.rs index 059aab8..375bc90 100644 --- a/forestfire/src/visualization/forest_vis.rs +++ b/forestfire/src/visualization/forest_vis.rs @@ -1,8 +1,8 @@ use crate::model::forest::Forest; use crate::Tree; use krabmaga::bevy::ecs as bevy_ecs; -use krabmaga::bevy::ecs::system::Resource; use krabmaga::bevy::prelude::Commands; +use krabmaga::bevy::prelude::Resource; use krabmaga::engine::agent::Agent; use krabmaga::engine::fields::dense_object_grid_2d::DenseGrid2D; use krabmaga::engine::fields::field::Field; @@ -49,7 +49,7 @@ impl VisualizationState for ForestVis { fn get_agent( &self, - _agent_render: &Box, + _agent_render: &dyn AgentRender, _state: &Box<&dyn State>, ) -> Option> { None diff --git a/forestfire_bayesian/Cargo.toml b/forestfire_bayesian/Cargo.toml index e5665e5..f00ad50 100644 --- a/forestfire_bayesian/Cargo.toml +++ b/forestfire_bayesian/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] bayesian = ["krabmaga/bayesian"] diff --git a/forestfire_bayesian/src/visualization/custom_systems.rs b/forestfire_bayesian/src/visualization/custom_systems.rs index 8318001..8cb2df1 100644 --- a/forestfire_bayesian/src/visualization/custom_systems.rs +++ b/forestfire_bayesian/src/visualization/custom_systems.rs @@ -1,13 +1,9 @@ -use krabmaga::bevy::ecs::component::TableStorage; -use krabmaga::bevy::prelude::Component; use crate::model::forest::*; use krabmaga::engine::fields::dense_object_grid_2d::DenseGrid2D; use krabmaga::engine::fields::sparse_object_grid_2d::SparseGrid2D; use krabmaga::engine::location::Int2D; use krabmaga::visualization::fields::object_grid_2d::RenderObjectGrid2D; -impl Component for Tree { type Storage = TableStorage; } - impl RenderObjectGrid2D for DenseGrid2D { fn fetch_sparse_grid(_state: &Forest) -> Option<&SparseGrid2D> { None diff --git a/forestfire_bayesian/src/visualization/forest_vis.rs b/forestfire_bayesian/src/visualization/forest_vis.rs index 7edddbb..375bc90 100644 --- a/forestfire_bayesian/src/visualization/forest_vis.rs +++ b/forestfire_bayesian/src/visualization/forest_vis.rs @@ -1,6 +1,8 @@ use crate::model::forest::Forest; use crate::Tree; +use krabmaga::bevy::ecs as bevy_ecs; use krabmaga::bevy::prelude::Commands; +use krabmaga::bevy::prelude::Resource; use krabmaga::engine::agent::Agent; use krabmaga::engine::fields::dense_object_grid_2d::DenseGrid2D; use krabmaga::engine::fields::field::Field; @@ -12,7 +14,7 @@ use krabmaga::visualization::fields::object_grid_2d::RenderObjectGrid2D; use krabmaga::visualization::simulation_descriptor::SimulationDescriptor; use krabmaga::visualization::visualization_state::VisualizationState; -#[derive(Clone)] +#[derive(Clone, Resource)] pub struct ForestVis; impl VisualizationState for ForestVis { @@ -47,7 +49,7 @@ impl VisualizationState for ForestVis { fn get_agent( &self, - _agent_render: &Box, + _agent_render: &dyn AgentRender, _state: &Box<&dyn State>, ) -> Option> { None diff --git a/schelling/Cargo.toml b/schelling/Cargo.toml index 03e4812..86d71db 100644 --- a/schelling/Cargo.toml +++ b/schelling/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] visualization = ["krabmaga/visualization"] diff --git a/schelling/src/main.rs b/schelling/src/main.rs index 902059c..5d2018e 100644 --- a/schelling/src/main.rs +++ b/schelling/src/main.rs @@ -49,7 +49,7 @@ fn main() { let mut app = Visualization::default() .with_simulation_dimensions(dim.0 as f32, dim.1 as f32) .with_window_dimensions(1000., 720.) - .with_background_color(Color::WHITE) + .with_background_color(Color::srgb(1., 1., 1.)) .with_name("Schelling Model") .setup::(WorldVis, world); app.add_systems(FixedUpdate, SparseGrid2D::::render); diff --git a/schelling/src/model/world.rs b/schelling/src/model/world.rs index 18b76e8..884f9e6 100644 --- a/schelling/src/model/world.rs +++ b/schelling/src/model/world.rs @@ -1,5 +1,7 @@ use crate::model::updater::Updater; use core::fmt; +use krabmaga::bevy::ecs as bevy_ecs; +use krabmaga::bevy::prelude::Component; use krabmaga::engine::fields::field::Field; use krabmaga::engine::fields::sparse_object_grid_2d::SparseGrid2D; use krabmaga::engine::location::Int2D; @@ -28,7 +30,7 @@ impl fmt::Display for Status { } } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Component)] pub struct Patch { pub id: u32, pub value: Status, diff --git a/schelling/src/visualization/custom_systems.rs b/schelling/src/visualization/custom_systems.rs index 37c6ff9..f91da47 100644 --- a/schelling/src/visualization/custom_systems.rs +++ b/schelling/src/visualization/custom_systems.rs @@ -1,15 +1,9 @@ use crate::model::world::*; -use krabmaga::bevy::ecs::component::TableStorage; -use krabmaga::bevy::prelude::Component; use krabmaga::engine::fields::dense_object_grid_2d::DenseGrid2D; use krabmaga::engine::fields::sparse_object_grid_2d::SparseGrid2D; use krabmaga::engine::location::Int2D; use krabmaga::visualization::fields::object_grid_2d::RenderObjectGrid2D; -impl Component for Patch { - type Storage = TableStorage; -} - impl RenderObjectGrid2D for SparseGrid2D { fn fetch_sparse_grid(state: &World) -> Option<&SparseGrid2D> { Some(&state.field) diff --git a/schelling/src/visualization/world_vis.rs b/schelling/src/visualization/world_vis.rs index 003a0e1..b2df7ff 100644 --- a/schelling/src/visualization/world_vis.rs +++ b/schelling/src/visualization/world_vis.rs @@ -1,8 +1,8 @@ use crate::model::world::World; use crate::Patch; use krabmaga::bevy::ecs as bevy_ecs; -use krabmaga::bevy::ecs::system::Resource; use krabmaga::bevy::prelude::Commands; +use krabmaga::bevy::prelude::Resource; use krabmaga::engine::agent::Agent; use krabmaga::engine::fields::field::Field; use krabmaga::engine::fields::sparse_object_grid_2d::SparseGrid2D; @@ -49,7 +49,7 @@ impl VisualizationState for WorldVis { fn get_agent( &self, - _agent_render: &Box, + _agent_render: &dyn AgentRender, _state: &Box<&dyn State>, ) -> Option> { None diff --git a/sir_ga_exploration/Cargo.toml b/sir_ga_exploration/Cargo.toml index 51e8a05..52a61ff 100644 --- a/sir_ga_exploration/Cargo.toml +++ b/sir_ga_exploration/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] distributed_mpi = ["krabmaga/distributed_mpi"] diff --git a/sugarscape/Cargo.toml b/sugarscape/Cargo.toml index 1aa8f0e..b8dcf2f 100644 --- a/sugarscape/Cargo.toml +++ b/sugarscape/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] visualization = ["krabmaga/visualization"] diff --git a/sugarscape/src/main.rs b/sugarscape/src/main.rs index b52c40e..6c12f77 100644 --- a/sugarscape/src/main.rs +++ b/sugarscape/src/main.rs @@ -38,9 +38,9 @@ fn main() { let mut app = Visualization::default() .with_window_dimensions(1000.0, 600.0) .with_simulation_dimensions(dim.0 as f32, dim.1 as f32) - .with_background_color(Color::WHITE) + .with_background_color(Color::srgb(1., 1., 1.)) .with_name("Sugarscape") .setup::(EnvironmentVis, state); app.add_systems(FixedUpdate, DenseNumberGrid2D::batch_render); - app.run() + app.run(); } diff --git a/sugarscape/src/visualization/environment_vis.rs b/sugarscape/src/visualization/environment_vis.rs index a3042b7..0011af0 100644 --- a/sugarscape/src/visualization/environment_vis.rs +++ b/sugarscape/src/visualization/environment_vis.rs @@ -2,8 +2,8 @@ use crate::model::eater::Eater; use crate::model::state::Environment; use crate::visualization::eater_vis::EaterVis; use krabmaga::bevy::ecs as bevy_ecs; -use krabmaga::bevy::ecs::system::Resource; use krabmaga::bevy::prelude::Commands; +use krabmaga::bevy::prelude::Resource; use krabmaga::engine::agent::Agent; use krabmaga::engine::location::Int2D; use krabmaga::engine::schedule::Schedule; @@ -44,7 +44,7 @@ impl VisualizationState for EnvironmentVis { fn get_agent( &self, - agent_render: &Box, + agent_render: &dyn AgentRender, state: &Box<&dyn State>, ) -> Option> { let mut rng = krabmaga::rand::rng(); diff --git a/template/Cargo.toml b/template/Cargo.toml index 432e6c9..35902a8 100644 --- a/template/Cargo.toml +++ b/template/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] visualization = ["krabmaga/visualization"] diff --git a/template/src/main.rs b/template/src/main.rs index 192fc20..9ebd34e 100644 --- a/template/src/main.rs +++ b/template/src/main.rs @@ -44,7 +44,7 @@ fn main() { Visualization::default() .with_window_dimensions(800., 800.) .with_simulation_dimensions(dim.0, dim.1) - .with_background_color(Color::BLUE) + .with_background_color(Color::srgb(0., 0., 1.)) .with_name("Template") .start::(SeaVis, state); } diff --git a/template/src/visualization/sea_vis.rs b/template/src/visualization/sea_vis.rs index 2fe78ad..77b404c 100644 --- a/template/src/visualization/sea_vis.rs +++ b/template/src/visualization/sea_vis.rs @@ -2,8 +2,8 @@ use crate::model::crab::Crab; use crate::model::sea::Sea; use crate::visualization::crab_vis::CrabVis; use krabmaga::bevy::ecs as bevy_ecs; -use krabmaga::bevy::ecs::system::Resource; use krabmaga::bevy::prelude::Commands; +use krabmaga::bevy::prelude::Resource; use krabmaga::engine::agent::Agent; use krabmaga::engine::location::Real2D; use krabmaga::engine::schedule::Schedule; @@ -41,7 +41,7 @@ impl VisualizationState for SeaVis { fn get_agent( &self, - agent_render: &Box, + agent_render: &dyn AgentRender, state: &Box<&dyn State>, ) -> Option> { let state = state.as_any().downcast_ref::().unwrap(); diff --git a/virusnetwork/Cargo.toml b/virusnetwork/Cargo.toml index ac0b245..92f1327 100644 --- a/virusnetwork/Cargo.toml +++ b/virusnetwork/Cargo.toml @@ -18,8 +18,8 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -# krabmaga = "0.5.*" -krabmaga = {path = "../../krABMaga"} +krabmaga = "0.6.*" + [features] visualization = ["krabmaga/visualization"] diff --git a/virusnetwork/src/visualization/vis_network.rs b/virusnetwork/src/visualization/vis_network.rs index d12ea22..e29cb7b 100644 --- a/virusnetwork/src/visualization/vis_network.rs +++ b/virusnetwork/src/visualization/vis_network.rs @@ -12,7 +12,7 @@ impl NetworkRender for EpidemicNetworkSta fn get_edge_info(edge: &Edge, network: &Network) -> EdgeRenderInfo { EdgeRenderInfo { - line_color: Color::BLACK, + line_color: Color::srgb(0., 0., 0.), line_width: 1., source_loc: network.get_object(edge.u).unwrap().loc, target_loc: network.get_object(edge.v).unwrap().loc, diff --git a/wolfsheepgrass/Cargo.toml b/wolfsheepgrass/Cargo.toml index a004f48..58ce473 100644 --- a/wolfsheepgrass/Cargo.toml +++ b/wolfsheepgrass/Cargo.toml @@ -18,7 +18,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -krabmaga = "0.5.*" +krabmaga = "0.6.*" [features] visualization = ["krabmaga/visualization"] diff --git a/wolfsheepgrass/src/main.rs b/wolfsheepgrass/src/main.rs index 521c651..6910203 100644 --- a/wolfsheepgrass/src/main.rs +++ b/wolfsheepgrass/src/main.rs @@ -49,10 +49,10 @@ fn main() { let state = WsgState::new(dim, initial_animals); let mut app = Visualization::default() - .with_background_color(Color::rgb(255., 255., 255.)) + .with_background_color(Color::srgb(1., 1., 1.)) .with_simulation_dimensions(dim.0 as f32, dim.1 as f32) .with_window_dimensions(1000., 700.) .setup::(VisState, state); app.add_systems(FixedUpdate, DenseNumberGrid2D::batch_render); - app.run() + app.run(); } diff --git a/wolfsheepgrass/src/visualization/vis_state.rs b/wolfsheepgrass/src/visualization/vis_state.rs index d962f2b..7f73269 100644 --- a/wolfsheepgrass/src/visualization/vis_state.rs +++ b/wolfsheepgrass/src/visualization/vis_state.rs @@ -4,8 +4,8 @@ use crate::model::wolf::Wolf; use crate::visualization::sheep_vis::SheepVis; use crate::visualization::wolf_vis::WolfVis; use krabmaga::bevy::ecs as bevy_ecs; -use krabmaga::bevy::ecs::system::Resource; use krabmaga::bevy::prelude::Commands; +use krabmaga::bevy::prelude::Resource; use krabmaga::engine::agent::Agent; use krabmaga::engine::location::Int2D; use krabmaga::engine::schedule::Schedule; @@ -46,7 +46,7 @@ impl VisualizationState for VisState { fn get_agent( &self, - agent_render: &Box, + agent_render: &dyn AgentRender, state: &Box<&dyn State>, ) -> Option> { let state = state.as_any().downcast_ref::().unwrap(); From c3f964836e81dffad97d5ceb77af1ab60b22acb7 Mon Sep 17 00:00:00 2001 From: ddevin96 Date: Thu, 16 Apr 2026 14:41:33 +0200 Subject: [PATCH 3/7] feat: updated readme and correct version --- README.md | 6 +++--- antsforaging/Cargo.toml | 2 +- flockers/Cargo.toml | 3 +-- flockers/src/main.rs | 18 +++++++----------- flockers_mpi/Cargo.toml | 2 +- forestfire/Cargo.toml | 2 +- forestfire_bayesian/Cargo.toml | 2 +- schelling/Cargo.toml | 2 +- sir_ga_exploration/Cargo.toml | 2 +- sugarscape/Cargo.toml | 2 +- template/Cargo.toml | 2 +- virusnetwork/Cargo.toml | 2 +- wolfsheepgrass/Cargo.toml | 2 +- 13 files changed, 21 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index a5894cd..1314097 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,10 @@ This repository hosts working examples of agent-based simulations, based on the | [Ants Foraging](antsforaging) | :heavy_check_mark: | drawing | | [Flockers](flockers) | :heavy_check_mark: | drawing | | [ForestFire](forestfire) | :heavy_check_mark: | drawing | -| [ForestFire_bayesian](forestfire_bayesian) | :heavy_check_mark: | +| [ForestFire_bayesian](forestfire_bayesian) | :heavy_check_mark: | :x: | | [Schelling](schelling) | :heavy_check_mark: | drawing | -| [Sir_bayesian](sir_bayesian) | :heavy_check_mark: | -| [Sir_ga_exploration](sir_ga_exploration) | :heavy_check_mark: | +| [Sir_bayesian](sir_bayesian) | :heavy_check_mark: | :x: | +| [Sir_ga_exploration](sir_ga_exploration) | :heavy_check_mark: | :x: | | [Sugarscape](sugarscape) | :heavy_check_mark: | drawing | | [Template](template) | :heavy_check_mark: | drawing | | [Virus on a Network](virusnetwork) | :heavy_check_mark: | drawing | diff --git a/antsforaging/Cargo.toml b/antsforaging/Cargo.toml index 5f61e64..3db7c97 100644 --- a/antsforaging/Cargo.toml +++ b/antsforaging/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "antsforaging" -version = "0.3.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/flockers/Cargo.toml b/flockers/Cargo.toml index a2f2f56..0775540 100644 --- a/flockers/Cargo.toml +++ b/flockers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flockers" -version = "0.3.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", @@ -20,7 +20,6 @@ readme = "README.md" [dependencies] krabmaga = "0.6.*" - [features] parallel = ["krabmaga/parallel"] distributed_mpi = ["krabmaga/distributed_mpi"] diff --git a/flockers/src/main.rs b/flockers/src/main.rs index 6ac8bcb..c5626e8 100644 --- a/flockers/src/main.rs +++ b/flockers/src/main.rs @@ -1,17 +1,13 @@ // No visualization specific imports #[cfg(not(any(feature = "visualization", feature = "visualization_wasm")))] use { - krabmaga::engine::schedule::Schedule, - // krabmaga::*, - krabmaga::engine::state::State, krabmaga::simulate, - krabmaga::Info, krabmaga::*, - std::time::Duration, }; // Visualization specific imports #[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use { + krabmaga::engine::state::State, crate::visualization::vis_state::VisState, krabmaga::bevy::prelude::Color, krabmaga::visualization::visualization::Visualization, }; @@ -35,16 +31,16 @@ pub static TOROIDAL: bool = true; // Main used when only the simulation should run, without any visualization. #[cfg(not(any(feature = "visualization", feature = "visualization_wasm")))] fn main() { - use krabmaga::simulate_old; + - let step = 200; + let step = 1000; - let dim = (100., 100.); - let num_agents = 1000; + let dim = (1000., 1000.); + let num_agents = 10000; let state = Flocker::new(dim, num_agents); // let _ = simulate!(state, step, 1, Info::Normal); - // let _ = simulate!(state, step, 1); - let _ = simulate_old!(state, step, 1, krabmaga::Info::Normal); + simulate!(state, step, 1); + // let _ = simulate_old!(state, step, 1, krabmaga::Info::Normal); } // Main used when a visualization feature is applied. diff --git a/flockers_mpi/Cargo.toml b/flockers_mpi/Cargo.toml index 7b0b05b..e70dd87 100644 --- a/flockers_mpi/Cargo.toml +++ b/flockers_mpi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flockers_mpi" -version = "0.4.1" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/forestfire/Cargo.toml b/forestfire/Cargo.toml index 934370b..f3d4977 100644 --- a/forestfire/Cargo.toml +++ b/forestfire/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "forestfire" -version = "0.2.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/forestfire_bayesian/Cargo.toml b/forestfire_bayesian/Cargo.toml index f00ad50..7702122 100644 --- a/forestfire_bayesian/Cargo.toml +++ b/forestfire_bayesian/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "forestfire_bayesian" -version = "0.2.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/schelling/Cargo.toml b/schelling/Cargo.toml index 86d71db..6997a8f 100644 --- a/schelling/Cargo.toml +++ b/schelling/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "schelling" -version = "0.3.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/sir_ga_exploration/Cargo.toml b/sir_ga_exploration/Cargo.toml index 52a61ff..1b6053e 100644 --- a/sir_ga_exploration/Cargo.toml +++ b/sir_ga_exploration/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sir_ga_exploration" -version = "0.2.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/sugarscape/Cargo.toml b/sugarscape/Cargo.toml index b8dcf2f..c464528 100644 --- a/sugarscape/Cargo.toml +++ b/sugarscape/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sugarscape" -version = "0.3.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/template/Cargo.toml b/template/Cargo.toml index 35902a8..eb6278a 100644 --- a/template/Cargo.toml +++ b/template/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "template" -version = "0.3.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/virusnetwork/Cargo.toml b/virusnetwork/Cargo.toml index 92f1327..ba2e164 100644 --- a/virusnetwork/Cargo.toml +++ b/virusnetwork/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "virusnetwork" -version = "0.3.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", diff --git a/wolfsheepgrass/Cargo.toml b/wolfsheepgrass/Cargo.toml index 58ce473..6fb6c20 100644 --- a/wolfsheepgrass/Cargo.toml +++ b/wolfsheepgrass/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wolfsheepgrass" -version = "0.3.0" +version = "0.6.0" authors = [ "Carmine Spagnuolo ", "Alessia Antelmi ", From 6b5d84ab8c0786eda81dad2635d41897eb5113d2 Mon Sep 17 00:00:00 2001 From: ddevin96 Date: Thu, 16 Apr 2026 14:42:42 +0200 Subject: [PATCH 4/7] fix: correct format --- flockers/src/main.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/flockers/src/main.rs b/flockers/src/main.rs index c5626e8..9a1a1c4 100644 --- a/flockers/src/main.rs +++ b/flockers/src/main.rs @@ -1,15 +1,11 @@ // No visualization specific imports #[cfg(not(any(feature = "visualization", feature = "visualization_wasm")))] -use { - krabmaga::simulate, - krabmaga::*, -}; +use {krabmaga::simulate, krabmaga::*}; // Visualization specific imports #[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use { - krabmaga::engine::state::State, crate::visualization::vis_state::VisState, krabmaga::bevy::prelude::Color, - krabmaga::visualization::visualization::Visualization, + krabmaga::engine::state::State, krabmaga::visualization::visualization::Visualization, }; use crate::model::state::Flocker; @@ -31,8 +27,6 @@ pub static TOROIDAL: bool = true; // Main used when only the simulation should run, without any visualization. #[cfg(not(any(feature = "visualization", feature = "visualization_wasm")))] fn main() { - - let step = 1000; let dim = (1000., 1000.); From 8cbb05136a253a9d903370c91163955dc296524e Mon Sep 17 00:00:00 2001 From: ddevin96 Date: Thu, 16 Apr 2026 15:01:08 +0200 Subject: [PATCH 5/7] fix: conditional import for basic ci --- antsforaging/src/main.rs | 11 ++--------- antsforaging/src/model/state.rs | 10 +++++++++- schelling/src/model/world.rs | 8 +++++++- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/antsforaging/src/main.rs b/antsforaging/src/main.rs index cd18213..0338940 100644 --- a/antsforaging/src/main.rs +++ b/antsforaging/src/main.rs @@ -8,10 +8,9 @@ use { crate::visualization::vis_state::VisState, krabmaga::bevy::app::FixedUpdate, krabmaga::bevy::prelude::Color, krabmaga::visualization::fields::number_grid_2d::BatchRender, krabmaga::visualization::visualization::Visualization, + crate::model::state::ModelState }; -// Global imports, required in all cases -use crate::model::state::ModelState; pub mod model; @@ -60,13 +59,7 @@ fn main() { app.run(); } -// #[cfg(not(any(feature = "visualization", feature = "visualization_wasm")))] -// use {krabmaga::rand, krabmaga::rand::Rng}; - -// Main used when only the simulation should run, without any visualization. #[cfg(not(any(feature = "visualization", feature = "visualization_wasm")))] fn main() { - let state = ModelState::new(); - - let _ = simulate!(state, STEP, 10); + println!("Visualization features are not enabled. Please enable one of the visualization features to see the simulation in action."); } diff --git a/antsforaging/src/model/state.rs b/antsforaging/src/model/state.rs index fa1afa3..7f8ab70 100644 --- a/antsforaging/src/model/state.rs +++ b/antsforaging/src/model/state.rs @@ -7,8 +7,12 @@ use crate::{ }; use core::fmt; use core::hash::{Hash, Hasher}; + +#[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use krabmaga::bevy::ecs as bevy_ecs; +#[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use krabmaga::bevy::prelude::Component; + use krabmaga::engine::fields::field::Field; use krabmaga::engine::fields::sparse_object_grid_2d::SparseGrid2D; use krabmaga::engine::location::Int2D; @@ -36,7 +40,11 @@ impl fmt::Display for ItemType { } } -#[derive(Copy, Clone, Component)] +#[derive(Copy, Clone)] +#[cfg_attr( + any(feature = "visualization", feature = "visualization_wasm"), + derive(Component) +)] pub struct Item { pub id: u32, pub value: ItemType, diff --git a/schelling/src/model/world.rs b/schelling/src/model/world.rs index 884f9e6..8f1cfaa 100644 --- a/schelling/src/model/world.rs +++ b/schelling/src/model/world.rs @@ -1,6 +1,8 @@ use crate::model::updater::Updater; use core::fmt; +#[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use krabmaga::bevy::ecs as bevy_ecs; +#[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use krabmaga::bevy::prelude::Component; use krabmaga::engine::fields::field::Field; use krabmaga::engine::fields::sparse_object_grid_2d::SparseGrid2D; @@ -30,7 +32,11 @@ impl fmt::Display for Status { } } -#[derive(Copy, Clone, Component)] +#[derive(Copy, Clone)] +#[cfg_attr( + any(feature = "visualization", feature = "visualization_wasm"), + derive(Component) +)] pub struct Patch { pub id: u32, pub value: Status, From 497ba3e992a1fc2ba27ecefd03e433973f89aafc Mon Sep 17 00:00:00 2001 From: ddevin96 Date: Thu, 16 Apr 2026 15:05:31 +0200 Subject: [PATCH 6/7] fix: format and conditional import --- antsforaging/src/main.rs | 9 ++++----- forestfire/src/model/forest.rs | 8 +++++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/antsforaging/src/main.rs b/antsforaging/src/main.rs index 0338940..8bbb1b8 100644 --- a/antsforaging/src/main.rs +++ b/antsforaging/src/main.rs @@ -4,14 +4,13 @@ use krabmaga::simulate; // Visualization specific imports #[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use { - crate::model::to_food_grid::ToFoodGrid, crate::model::to_home_grid::ToHomeGrid, - crate::visualization::vis_state::VisState, krabmaga::bevy::app::FixedUpdate, - krabmaga::bevy::prelude::Color, krabmaga::visualization::fields::number_grid_2d::BatchRender, + crate::model::state::ModelState, crate::model::to_food_grid::ToFoodGrid, + crate::model::to_home_grid::ToHomeGrid, crate::visualization::vis_state::VisState, + krabmaga::bevy::app::FixedUpdate, krabmaga::bevy::prelude::Color, + krabmaga::visualization::fields::number_grid_2d::BatchRender, krabmaga::visualization::visualization::Visualization, - crate::model::state::ModelState }; - pub mod model; // Constants diff --git a/forestfire/src/model/forest.rs b/forestfire/src/model/forest.rs index c734e02..80154e3 100644 --- a/forestfire/src/model/forest.rs +++ b/forestfire/src/model/forest.rs @@ -1,6 +1,8 @@ use crate::model::spread::Spread; use core::fmt; +#[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use krabmaga::bevy::ecs as bevy_ecs; +#[cfg(any(feature = "visualization", feature = "visualization_wasm"))] use krabmaga::bevy::prelude::Component; use krabmaga::engine::fields::dense_object_grid_2d::DenseGrid2D; use krabmaga::engine::fields::field::Field; @@ -30,7 +32,11 @@ impl fmt::Display for Status { } } -#[derive(Copy, Clone, Component)] +#[derive(Copy, Clone)] +#[cfg_attr( + any(feature = "visualization", feature = "visualization_wasm"), + derive(Component) +)] pub struct Tree { pub id: i32, pub status: Status, From ab43e16574f994bc062f9649008a4dd89928bf4d Mon Sep 17 00:00:00 2001 From: ddevin96 Date: Thu, 16 Apr 2026 15:13:31 +0200 Subject: [PATCH 7/7] fix: action deps updated --- .github/workflows/install-deps/action.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/install-deps/action.yml b/.github/workflows/install-deps/action.yml index 54e13c1..ae39eaf 100644 --- a/.github/workflows/install-deps/action.yml +++ b/.github/workflows/install-deps/action.yml @@ -5,7 +5,7 @@ runs: using: 'composite' steps: - name: Cache APT packages - uses: actions/cache@v4 + uses: actions/cache@v5 id: cache-apt with: path: /var/cache/apt/archives/*.deb @@ -20,6 +20,7 @@ runs: sudo apt update sudo apt install -y --download-only \ pkg-config libx11-dev libasound2-dev libudev-dev \ + libwayland-dev libxkbcommon-dev \ libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev \ libxcb-render0-dev libxcb-xfixes0-dev libxcb1-dev \ portaudio19-dev build-essential libpulse-dev libdbus-1-dev \ @@ -31,6 +32,7 @@ runs: sudo apt update sudo apt install -y \ pkg-config libx11-dev libasound2-dev libudev-dev \ + libwayland-dev libxkbcommon-dev \ libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev \ libxcb-render0-dev libxcb-xfixes0-dev libxcb1-dev \ portaudio19-dev build-essential libpulse-dev libdbus-1-dev \