dash and wgui sounds
This commit is contained in:
1
uidev/assets/sound/wgui_button_press.mp3
Symbolic link
1
uidev/assets/sound/wgui_button_press.mp3
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../wlx-overlay-s/src/assets/sound/wgui_button_press.mp3
|
||||
1
uidev/assets/sound/wgui_button_release.mp3
Symbolic link
1
uidev/assets/sound/wgui_button_release.mp3
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../wlx-overlay-s/src/assets/sound/wgui_button_release.mp3
|
||||
1
uidev/assets/sound/wgui_mouse_enter.mp3
Symbolic link
1
uidev/assets/sound/wgui_mouse_enter.mp3
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../wlx-overlay-s/src/assets/sound/wgui_mouse_enter.mp3
|
||||
@@ -18,6 +18,7 @@ use vulkano::{
|
||||
sync::GpuFuture,
|
||||
};
|
||||
use wgui::{
|
||||
assets::AssetProvider,
|
||||
event::{MouseButtonIndex, MouseDownEvent, MouseMotionEvent, MouseUpEvent, MouseWheelEvent},
|
||||
gfx::{WGfx, cmd::WGfxClearMode},
|
||||
renderer_vk::{self},
|
||||
@@ -27,7 +28,7 @@ use winit::{
|
||||
event_loop::ControlFlow,
|
||||
keyboard::{KeyCode, PhysicalKey},
|
||||
};
|
||||
use wlx_common::timestep::Timestep;
|
||||
use wlx_common::{audio, timestep::Timestep};
|
||||
|
||||
use crate::{
|
||||
rate_limiter::RateLimiter,
|
||||
@@ -59,12 +60,15 @@ fn init_logging() {
|
||||
.init();
|
||||
}
|
||||
|
||||
fn load_testbed() -> anyhow::Result<Box<dyn Testbed>> {
|
||||
fn load_testbed(audio_sample_player: &mut audio::SamplePlayer) -> anyhow::Result<Box<dyn Testbed>> {
|
||||
let mut assets = Box::new(assets::Asset {});
|
||||
audio_sample_player.register_wgui_samples(assets.as_mut())?;
|
||||
|
||||
let name = std::env::var("TESTBED").unwrap_or_default();
|
||||
Ok(match name.as_str() {
|
||||
"dashboard" => Box::new(TestbedDashboard::new()?),
|
||||
"" => Box::new(TestbedGeneric::new()?),
|
||||
_ => Box::new(TestbedAny::new(&name)?),
|
||||
"" => Box::new(TestbedGeneric::new(assets)?),
|
||||
_ => Box::new(TestbedAny::new(assets, &name)?),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -98,7 +102,9 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
let mut scale = window.scale_factor() as f32;
|
||||
|
||||
let mut testbed = load_testbed()?;
|
||||
let mut audio_system = audio::AudioSystem::new();
|
||||
let mut audio_sample_player = audio::SamplePlayer::new();
|
||||
let mut testbed = load_testbed(&mut audio_sample_player)?;
|
||||
|
||||
let mut mouse = Vec2::ZERO;
|
||||
|
||||
@@ -291,6 +297,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
width: (swapchain_size[0] as f32 / scale) as _,
|
||||
height: (swapchain_size[1] as f32 / scale) as _,
|
||||
timestep_alpha: timestep.alpha,
|
||||
audio_system: &mut audio_system,
|
||||
audio_sample_player: &mut audio_sample_player,
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
|
||||
@@ -1,13 +1,24 @@
|
||||
use wgui::layout::Layout;
|
||||
use wgui::layout::{Layout, LayoutUpdateResult};
|
||||
use wlx_common::audio;
|
||||
|
||||
pub mod testbed_any;
|
||||
pub mod testbed_dashboard;
|
||||
pub mod testbed_generic;
|
||||
|
||||
pub struct TestbedUpdateParams {
|
||||
pub struct TestbedUpdateParams<'a> {
|
||||
pub width: f32,
|
||||
pub height: f32,
|
||||
pub timestep_alpha: f32,
|
||||
pub audio_system: &'a mut audio::AudioSystem,
|
||||
pub audio_sample_player: &'a mut audio::SamplePlayer,
|
||||
}
|
||||
|
||||
impl<'a> TestbedUpdateParams<'a> {
|
||||
pub fn process_layout_result(&mut self, res: LayoutUpdateResult) {
|
||||
self
|
||||
.audio_sample_player
|
||||
.play_wgui_samples(self.audio_system, res.sounds_to_play);
|
||||
}
|
||||
}
|
||||
|
||||
pub trait Testbed {
|
||||
|
||||
@@ -9,7 +9,7 @@ use wgui::{
|
||||
assets::AssetPath,
|
||||
font_config::WguiFontConfig,
|
||||
globals::WguiGlobals,
|
||||
layout::{Layout, LayoutParams},
|
||||
layout::{Layout, LayoutParams, LayoutUpdateParams},
|
||||
parser::{ParseDocumentParams, ParserState},
|
||||
};
|
||||
|
||||
@@ -21,7 +21,7 @@ pub struct TestbedAny {
|
||||
}
|
||||
|
||||
impl TestbedAny {
|
||||
pub fn new(name: &str) -> anyhow::Result<Self> {
|
||||
pub fn new(assets: Box<assets::Asset>, name: &str) -> anyhow::Result<Self> {
|
||||
let path = if name.ends_with(".xml") {
|
||||
AssetPath::FileOrBuiltIn(name)
|
||||
} else {
|
||||
@@ -29,7 +29,7 @@ impl TestbedAny {
|
||||
};
|
||||
|
||||
let globals = WguiGlobals::new(
|
||||
Box::new(assets::Asset {}),
|
||||
assets,
|
||||
wgui::globals::Defaults::default(),
|
||||
&WguiFontConfig::default(),
|
||||
PathBuf::new(), // cwd
|
||||
@@ -48,11 +48,12 @@ impl TestbedAny {
|
||||
}
|
||||
|
||||
impl Testbed for TestbedAny {
|
||||
fn update(&mut self, params: TestbedUpdateParams) -> anyhow::Result<()> {
|
||||
self.layout.update(
|
||||
Vec2::new(params.width, params.height),
|
||||
params.timestep_alpha,
|
||||
)?;
|
||||
fn update(&mut self, mut params: TestbedUpdateParams) -> anyhow::Result<()> {
|
||||
let res = self.layout.update(&mut LayoutUpdateParams {
|
||||
size: Vec2::new(params.width, params.height),
|
||||
timestep_alpha: params.timestep_alpha,
|
||||
})?;
|
||||
params.process_layout_result(res);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::testbed::{Testbed, TestbedUpdateParams};
|
||||
use dash_frontend::{
|
||||
frontend,
|
||||
frontend::{self, FrontendUpdateParams},
|
||||
settings::{self, SettingsIO},
|
||||
};
|
||||
use wgui::layout::Layout;
|
||||
@@ -70,13 +70,15 @@ impl TestbedDashboard {
|
||||
}
|
||||
|
||||
impl Testbed for TestbedDashboard {
|
||||
fn update(&mut self, params: TestbedUpdateParams) -> anyhow::Result<()> {
|
||||
self.frontend.update(
|
||||
&mut (), /* nothing */
|
||||
params.width,
|
||||
params.height,
|
||||
params.timestep_alpha,
|
||||
)
|
||||
fn update(&mut self, mut params: TestbedUpdateParams) -> anyhow::Result<()> {
|
||||
let res = self.frontend.update(FrontendUpdateParams {
|
||||
data: &mut (), /* nothing */
|
||||
width: params.width,
|
||||
height: params.height,
|
||||
timestep_alpha: params.timestep_alpha,
|
||||
})?;
|
||||
params.process_layout_result(res);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn layout(&mut self) -> &mut Layout {
|
||||
|
||||
@@ -17,7 +17,7 @@ use wgui::{
|
||||
font_config::WguiFontConfig,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
layout::{Layout, LayoutParams, Widget},
|
||||
layout::{Layout, LayoutParams, LayoutUpdateParams, Widget},
|
||||
parser::{Fetchable, ParseDocumentExtra, ParseDocumentParams, ParserState},
|
||||
taffy,
|
||||
task::Tasks,
|
||||
@@ -73,11 +73,11 @@ fn handle_button_click(button: Rc<ComponentButton>, label: Widget, text: &'stati
|
||||
}
|
||||
|
||||
impl TestbedGeneric {
|
||||
pub fn new() -> anyhow::Result<Self> {
|
||||
pub fn new(assets: Box<assets::Asset>) -> anyhow::Result<Self> {
|
||||
const XML_PATH: AssetPath = AssetPath::BuiltIn("gui/various_widgets.xml");
|
||||
|
||||
let globals = WguiGlobals::new(
|
||||
Box::new(assets::Asset {}),
|
||||
assets,
|
||||
wgui::globals::Defaults::default(),
|
||||
&WguiFontConfig::default(),
|
||||
PathBuf::new(), // cwd
|
||||
@@ -223,10 +223,12 @@ impl Testbed for TestbedGeneric {
|
||||
let data = self.data.clone();
|
||||
let mut data = data.borrow_mut();
|
||||
|
||||
self.layout.update(
|
||||
Vec2::new(params.width, params.height),
|
||||
params.timestep_alpha,
|
||||
)?;
|
||||
let res = self.layout.update(&mut LayoutUpdateParams {
|
||||
size: Vec2::new(params.width, params.height),
|
||||
timestep_alpha: params.timestep_alpha,
|
||||
})?;
|
||||
|
||||
params.process_layout_result(res);
|
||||
|
||||
for task in self.tasks.drain() {
|
||||
self.process_task(&task, &mut params, &mut data)?;
|
||||
|
||||
Reference in New Issue
Block a user