diff --git a/assets/kenney_game-icons/PNG/White/1x/gear.png b/assets/kenney_game-icons/PNG/White/1x/gear.png new file mode 100644 index 0000000..d49bbbd --- /dev/null +++ b/assets/kenney_game-icons/PNG/White/1x/gear.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95b7231229fb620b331f0aea2ae7bc4a227ec0206ff599f662442d7dcbbdd58b +size 15475 diff --git a/assets/kenney_game-icons/PNG/White/1x/home.png b/assets/kenney_game-icons/PNG/White/1x/home.png new file mode 100644 index 0000000..94ea198 --- /dev/null +++ b/assets/kenney_game-icons/PNG/White/1x/home.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dffeefba0b527a13c9c8ade069736fb292a145f7ecce05dfccf597c90d5a1a2e +size 15069 diff --git a/assets/kenney_game-icons/PNG/White/1x/information.png b/assets/kenney_game-icons/PNG/White/1x/information.png new file mode 100644 index 0000000..daa32b6 --- /dev/null +++ b/assets/kenney_game-icons/PNG/White/1x/information.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91f0f3916aea0a63373f073aa1c7d9e6fdba5b60b6f1ecb8a79049650564ce8f +size 15121 diff --git a/assets/kenney_game-icons/PNG/White/1x/musicOff.png b/assets/kenney_game-icons/PNG/White/1x/musicOff.png new file mode 100644 index 0000000..f61d336 --- /dev/null +++ b/assets/kenney_game-icons/PNG/White/1x/musicOff.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f45b0a638fbe50aa7db97be5023bc4f1d8e9bafe570bf50e4fd5695c7e43a2b0 +size 15263 diff --git a/assets/kenney_game-icons/PNG/White/1x/musicOn.png b/assets/kenney_game-icons/PNG/White/1x/musicOn.png new file mode 100644 index 0000000..f1b59ca --- /dev/null +++ b/assets/kenney_game-icons/PNG/White/1x/musicOn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:479859cecc0caf9560c0b10139e02eef7f538cfdfc29433aadce0628b7e43b4b +size 15197 diff --git a/assets/kenney_game-icons/PNG/White/1x/power.png b/assets/kenney_game-icons/PNG/White/1x/power.png new file mode 100644 index 0000000..b4cb831 --- /dev/null +++ b/assets/kenney_game-icons/PNG/White/1x/power.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2293017f5026e35643d0888b874469b555e44926576477c484a45afb998a5f7e +size 15372 diff --git a/assets/kenney_game-icons/PNG/White/1x/question.png b/assets/kenney_game-icons/PNG/White/1x/question.png new file mode 100644 index 0000000..128dc05 --- /dev/null +++ b/assets/kenney_game-icons/PNG/White/1x/question.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7790632728a5c2fd047fef09a93c6643379f5702e799d4a74a59a2b8a6d82956 +size 15265 diff --git a/assets/kenney_game-icons/README.md b/assets/kenney_game-icons/README.md new file mode 100644 index 0000000..cb76dca --- /dev/null +++ b/assets/kenney_game-icons/README.md @@ -0,0 +1,5 @@ +# Kenney.nl Game Icons + +These assets come from the [kenney.nl game icons pack](https://kenney.nl/assets/game-icons) ([CC0](https://creativecommons.org/publicdomain/zero/1.0/)). + +I have stripped out unused assets from the pack to minimize the size of the game. diff --git a/assets/kenney_game-icons/icons.txt b/assets/kenney_game-icons/icons.txt new file mode 100644 index 0000000..93a41d8 --- /dev/null +++ b/assets/kenney_game-icons/icons.txt @@ -0,0 +1,7 @@ +gear.png +home.png +information.png +musicOn.png +musicOff.png +power.png +question.png diff --git a/assets/kenney_game-icons/license.txt b/assets/kenney_game-icons/license.txt new file mode 100644 index 0000000..4914a6d --- /dev/null +++ b/assets/kenney_game-icons/license.txt @@ -0,0 +1,14 @@ + +############################################################################### + + Game icon pack by Kenney Vleugels (www.kenney.nl) + + ------------------------------ + + License (CC0) + http://creativecommons.org/publicdomain/zero/1.0/ + + You may use these graphics in personal and commercial projects. + Credit (Kenney or www.kenney.nl) would be nice but is not mandatory. + +############################################################################### \ No newline at end of file diff --git a/src/audio.rs b/src/audio.rs index cba4e3a..b509248 100644 --- a/src/audio.rs +++ b/src/audio.rs @@ -8,6 +8,27 @@ impl Plugin for AudioPlugin { } } +#[derive(Component)] +pub(crate) struct MusicIcon; + fn load_audio(assets: Res, mut commands: Commands) { commands.spawn(AudioPlayer::new(assets.load("its-the-balatro-music.ogg"))); } + +pub(crate) fn toggle_music( + _trigger: Trigger>, + sinks: Query<&AudioSink>, + mut images: Query<&mut ImageNode, With>, + server: Res, +) { + let sink = sinks.single(); + let mut image = images.single_mut(); + + if sink.is_paused() { + sink.play(); + image.image = server.load("kenney_game-icons/PNG/White/1x/musicOn.png"); + } else { + sink.pause(); + image.image = server.load("kenney_game-icons/PNG/White/1x/musicOff.png"); + } +} diff --git a/src/menu.rs b/src/menu.rs index b8c3abc..2db75c2 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -6,7 +6,7 @@ use bevy::{ }; use crate::{ - boot, + audio, boot, deck::{Card, Deck, ItemColor, ItemNumber, ItemPattern, ItemShape}, play::{check_for_sets, check_set, DeckOrder, PlayLocation, SetNumber}, view::{button_set_state, ViewState}, @@ -132,7 +132,7 @@ fn setup(mut commands: Commands, server: Res) { #[derive(Component)] pub(crate) struct SetCounter; -fn setup_play(mut commands: Commands) { +fn setup_play(mut commands: Commands, server: Res) { commands .spawn(( ViewState::Play, @@ -143,25 +143,57 @@ fn setup_play(mut commands: Commands) { }, )) .with_children(|parent| { - parent - .spawn(( - Button, - BackgroundColor(BLACK.with_alpha(0.9).into()), - Node { - margin: UiRect::all(Val::Px(5.0)), - padding: UiRect::all(Val::Px(10.0)), - border: UiRect::all(Val::Px(1.0)), - ..default() - }, - BorderColor(WHITE.into()), - GlobalZIndex(1), - )) - .with_children(|parent| { - parent.spawn(Text("Menu".to_string())); - }) - .observe(button_hover_on) - .observe(button_hover_off) - .observe(button_set_state(ViewState::Menu)); + parent.spawn(Node::default()).with_children(|parent| { + parent + .spawn(( + Button, + BackgroundColor(BLACK.with_alpha(0.9).into()), + Node { + margin: UiRect::all(Val::Px(5.0)), + padding: UiRect::all(Val::Px(5.0)), + border: UiRect::all(Val::Px(1.0)), + height: Val::Px(40.0), + ..default() + }, + BorderColor(WHITE.into()), + GlobalZIndex(1), + )) + .with_children(|parent| { + parent.spawn(ImageNode { + image: server.load("kenney_game-icons/PNG/White/1x/home.png"), + ..default() + }); + }) + .observe(button_hover_on) + .observe(button_hover_off) + .observe(button_set_state(ViewState::Menu)); + parent + .spawn(( + Button, + BackgroundColor(BLACK.with_alpha(0.9).into()), + Node { + margin: UiRect::all(Val::Px(5.0)), + padding: UiRect::all(Val::Px(5.0)), + border: UiRect::all(Val::Px(1.0)), + height: Val::Px(40.0), + ..default() + }, + BorderColor(WHITE.into()), + GlobalZIndex(1), + )) + .with_children(|parent| { + parent.spawn(( + ImageNode { + image: server.load("kenney_game-icons/PNG/White/1x/musicOn.png"), + ..default() + }, + audio::MusicIcon, + )); + }) + .observe(button_hover_on) + .observe(button_hover_off) + .observe(audio::toggle_music); + }); parent .spawn(( @@ -189,15 +221,19 @@ fn setup_play(mut commands: Commands) { BackgroundColor(BLACK.with_alpha(0.9).into()), Node { margin: UiRect::all(Val::Px(5.0)), - padding: UiRect::all(Val::Px(10.0)), + padding: UiRect::all(Val::Px(5.0)), border: UiRect::all(Val::Px(1.0)), + height: Val::Px(40.0), ..default() }, BorderColor(WHITE.into()), GlobalZIndex(1), )) .with_children(|parent| { - parent.spawn(Text("Help!".to_string())); + parent.spawn(ImageNode { + image: server.load("kenney_game-icons/PNG/White/1x/question.png"), + ..default() + }); }) .observe(button_hover_on) .observe(button_hover_off)