diff --git a/assets/maps/map1.map b/assets/maps/map1.map index b880645..aa95919 100644 --- a/assets/maps/map1.map +++ b/assets/maps/map1.map @@ -996,7 +996,7 @@ "classname" "enemy_spawn" "origin" "2568 4504 -232" "angles" "0 180 0" -"head" "supermarket shopper" +"head" "super market shopper" } // entity 24 { diff --git a/assets/models/heads/geisha.glb b/assets/models/heads/geisha.glb index 56bab64..a64a811 100644 Binary files a/assets/models/heads/geisha.glb and b/assets/models/heads/geisha.glb differ diff --git a/assets/models/heads/mig pilot.glb b/assets/models/heads/mig pilot.glb index ccfe24d..8e5a126 100644 Binary files a/assets/models/heads/mig pilot.glb and b/assets/models/heads/mig pilot.glb differ diff --git a/assets/models/heads/nanny.glb b/assets/models/heads/nanny.glb index 9eeeae2..f05601d 100644 Binary files a/assets/models/heads/nanny.glb and b/assets/models/heads/nanny.glb differ diff --git a/assets/models/heads/panic attack.glb b/assets/models/heads/panic attack.glb index e39693d..9b2df10 100644 Binary files a/assets/models/heads/panic attack.glb and b/assets/models/heads/panic attack.glb differ diff --git a/assets/models/heads/salty sea dog.glb b/assets/models/heads/salty sea dog.glb index 4a1c135..ba8dfff 100644 Binary files a/assets/models/heads/salty sea dog.glb and b/assets/models/heads/salty sea dog.glb differ diff --git a/assets/models/heads/snow plough operator.glb b/assets/models/heads/snow plough operator.glb index 847b1e9..797be5a 100644 Binary files a/assets/models/heads/snow plough operator.glb and b/assets/models/heads/snow plough operator.glb differ diff --git a/assets/models/heads/soldier ant.glb b/assets/models/heads/soldier ant.glb index 4277002..9e90661 100644 Binary files a/assets/models/heads/soldier ant.glb and b/assets/models/heads/soldier ant.glb differ diff --git a/assets/models/heads/supermarket shopper.glb b/assets/models/heads/super market shopper.glb similarity index 100% rename from assets/models/heads/supermarket shopper.glb rename to assets/models/heads/super market shopper.glb diff --git a/assets/models/heads/troll.glb b/assets/models/heads/troll.glb index e90e7cf..286af0d 100644 Binary files a/assets/models/heads/troll.glb and b/assets/models/heads/troll.glb differ diff --git a/assets/sfx/heads/supermarket shopper.ogg b/assets/sfx/heads/super market shopper.ogg similarity index 100% rename from assets/sfx/heads/supermarket shopper.ogg rename to assets/sfx/heads/super market shopper.ogg diff --git a/assets/ui/heads/snow plogh operator.png b/assets/ui/heads/snow plough operator.png similarity index 100% rename from assets/ui/heads/snow plogh operator.png rename to assets/ui/heads/snow plough operator.png diff --git a/src/heads_ui.rs b/src/heads_ui.rs index 228a1dc..8d56daa 100644 --- a/src/heads_ui.rs +++ b/src/heads_ui.rs @@ -1,5 +1,7 @@ use bevy::prelude::*; +use crate::player::head_id_to_str; + #[derive(Event, Reflect)] pub enum SwapHead { Left, @@ -35,7 +37,7 @@ pub struct HeadChanged(pub usize); pub fn plugin(app: &mut App) { app.register_type::(); app.add_systems(Startup, setup); - app.add_systems(Update, update); + app.add_systems(Update, (update, swap_head_test)); app.add_observer(on_swap_head); } @@ -66,18 +68,15 @@ fn setup(mut commands: Commands, asset_server: Res) { } }); - let head_01 = asset_server.load("ui/heads/angry demonstrator.png"); - let head_02 = asset_server.load("ui/heads/commando.png"); - let head_03 = asset_server.load("ui/heads/goblin.png"); - let head_04 = asset_server.load("ui/heads/highland hammer thrower.png"); - let head_05 = asset_server.load("ui/heads/legionnaire.png"); + let heads = (0usize..18) + .into_iter() + .map(|i| asset_server.load(format!("ui/heads/{}.png", head_id_to_str(i)))) + .collect(); - commands.insert_resource(HeadsImages { - heads: vec![head_01, head_02, head_03, head_04, head_05], - }); + commands.insert_resource(HeadsImages { heads }); commands.insert_resource(ActiveHeads { - heads: [Some(0), Some(1), Some(2), Some(3), Some(4)], + heads: [Some(0), Some(3), Some(6), Some(8), Some(9)], current_slot: 0, }); } @@ -163,6 +162,25 @@ fn spawn_head_ui( }); } +fn swap_head_test( + mut commands: Commands, + mut active: ResMut, + keyboard: Res>, +) { + if keyboard.just_pressed(KeyCode::Comma) { + let slot = active.current_slot; + let current = active.heads[active.current_slot].unwrap(); + active.heads[slot] = Some((current + 17) % 18); + commands.trigger(HeadChanged(active.heads[slot].unwrap())); + } + if keyboard.just_pressed(KeyCode::Period) { + let slot = active.current_slot; + let current = active.heads[active.current_slot].unwrap(); + active.heads[slot] = Some((current + 1) % 18); + commands.trigger(HeadChanged(active.heads[slot].unwrap())); + } +} + fn update( res: Res, heads_images: Res, diff --git a/src/player.rs b/src/player.rs index 2cbd906..688a287 100644 --- a/src/player.rs +++ b/src/player.rs @@ -257,13 +257,7 @@ fn update_head( return; }; - let head_str = match trigger.0 { - 0 => "angry demonstrator", - 1 => "commando", - 2 => "goblin", - 3 => "highland hammer thrower", - _ => "legionnaire", - }; + let head_str = head_id_to_str(trigger.0); commands.spawn(( AudioPlayer::new(asset_server.load(format!("sfx/heads/{}.ogg", head_str))), @@ -275,3 +269,27 @@ fn update_head( commands.entity(head).insert(SceneRoot(mesh)); } + +pub fn head_id_to_str(head: usize) -> &'static str { + match head { + 0 => "angry demonstrator", + 1 => "carnival knife thrower", + 2 => "chicago gangster", + 3 => "commando", + 4 => "field medic", + 5 => "geisha", + 6 => "goblin", + 7 => "green grocer", + 8 => "highland hammer thrower", + 9 => "legionnaire", + 10 => "mig pilot", + 11 => "nanny", + 12 => "panic attack", + 13 => "salty sea dog", + 14 => "snow plough operator", + 15 => "soldier ant", + 16 => "super market shopper", + 17 => "troll", + _ => unimplemented!(), + } +}