Add new announcer sounds
This commit is contained in:
parent
a267f22406
commit
ee31a8fffb
@ -4,13 +4,27 @@
|
||||
[ext_resource type="AudioStream" uid="uid://b5816xcsj2ueh" path="res://raw_assets/sfx/announcer/DoubleKill.wav" id="2_6jrtu"]
|
||||
[ext_resource type="AudioStream" uid="uid://co82glo13i8at" path="res://raw_assets/sfx/announcer/TripleKill.wav" id="3_6ob50"]
|
||||
[ext_resource type="AudioStream" uid="uid://dfxrsl808f6o0" path="res://raw_assets/sfx/announcer/MegaKill.wav" id="4_0lbme"]
|
||||
[ext_resource type="AudioStream" uid="uid://cc5t6p6w468hi" path="res://raw_assets/sfx/announcer/KillingSpree.wav" id="5_2n7uu"]
|
||||
[ext_resource type="AudioStream" uid="uid://cmx868xfm5tr" path="res://raw_assets/sfx/announcer/Carnage.wav" id="6_5jmf7"]
|
||||
[ext_resource type="AudioStream" uid="uid://bjewmgxjuwsqo" path="res://raw_assets/sfx/announcer/Mayhem.wav" id="7_64qar"]
|
||||
[ext_resource type="AudioStream" uid="uid://bwv7hydyynxo3" path="res://raw_assets/sfx/announcer/Dominating.wav" id="8_ym8wh"]
|
||||
[ext_resource type="AudioStream" uid="uid://ccg5hd454nqpe" path="res://raw_assets/sfx/announcer/Rampage.wav" id="9_r1xer"]
|
||||
[ext_resource type="AudioStream" uid="uid://celsg1h2xc85k" path="res://raw_assets/sfx/announcer/Godlike.wav" id="10_ow3y7"]
|
||||
|
||||
[node name="announcer" type="Announcer" unique_id=1062756235 node_paths=PackedStringArray("player")]
|
||||
player = NodePath("audio_stream_player")
|
||||
first_blood = ExtResource("1_h17tq")
|
||||
double_kill = ExtResource("2_6jrtu")
|
||||
triple_kill = ExtResource("3_6ob50")
|
||||
mega_kill = ExtResource("4_0lbme")
|
||||
sounds = Dictionary[String, AudioStream]({
|
||||
"Carnage": ExtResource("6_5jmf7"),
|
||||
"Dominating": ExtResource("8_ym8wh"),
|
||||
"DoubleKill": ExtResource("2_6jrtu"),
|
||||
"FirstBlood": ExtResource("1_h17tq"),
|
||||
"Godlike": ExtResource("10_ow3y7"),
|
||||
"KillingSpree": ExtResource("5_2n7uu"),
|
||||
"Mayhem": ExtResource("7_64qar"),
|
||||
"MegaKill": ExtResource("4_0lbme"),
|
||||
"Rampage": ExtResource("9_r1xer"),
|
||||
"TripleKill": ExtResource("3_6ob50")
|
||||
})
|
||||
|
||||
[node name="audio_stream_player" type="AudioStreamPlayer" parent="." unique_id=1168314007]
|
||||
bus = &"Announcer"
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use godot::{
|
||||
classes::{AudioStream, AudioStreamPlayer},
|
||||
prelude::*,
|
||||
@ -15,29 +17,24 @@ pub struct Announcer {
|
||||
|
||||
#[export]
|
||||
#[export_group(name = "Sounds")]
|
||||
first_blood: Option<Gd<AudioStream>>,
|
||||
|
||||
#[export]
|
||||
#[export_group(name = "Sounds")]
|
||||
double_kill: Option<Gd<AudioStream>>,
|
||||
|
||||
#[export]
|
||||
#[export_group(name = "Sounds")]
|
||||
triple_kill: Option<Gd<AudioStream>>,
|
||||
|
||||
#[export]
|
||||
#[export_group(name = "Sounds")]
|
||||
mega_kill: Option<Gd<AudioStream>>,
|
||||
sounds: Dictionary<Announcement, Option<Gd<AudioStream>>>,
|
||||
|
||||
base: Base<Node3D>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, GodotConvert, Export, Var)]
|
||||
#[godot(via = GString)]
|
||||
pub enum Announcement {
|
||||
FirstBlood,
|
||||
DoubleKill,
|
||||
TripleKill,
|
||||
MegaKill,
|
||||
KillingSpree,
|
||||
Carnage,
|
||||
Mayhem,
|
||||
Dominating,
|
||||
Rampage,
|
||||
Godlike,
|
||||
}
|
||||
|
||||
impl Announcer {
|
||||
@ -46,17 +43,11 @@ impl Announcer {
|
||||
}
|
||||
|
||||
pub fn announce(&mut self, announcement: Announcement) {
|
||||
let sound = match announcement {
|
||||
Announcement::FirstBlood => &self.first_blood,
|
||||
Announcement::DoubleKill => &self.double_kill,
|
||||
Announcement::TripleKill => &self.triple_kill,
|
||||
Announcement::MegaKill => &self.mega_kill,
|
||||
};
|
||||
if let Some(sound) = sound
|
||||
&& let Some(player) = &mut self.player
|
||||
{
|
||||
player.set_stream(sound);
|
||||
player.play();
|
||||
if let Some(Some(sound)) = self.sounds.get(announcement) {
|
||||
if let Some(player) = &mut self.player {
|
||||
player.set_stream(&sound);
|
||||
player.play();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,14 +74,19 @@ impl ChatMessage {
|
||||
&& let Some(player) = game.bind().find_player(*player_id)
|
||||
{
|
||||
add_player(&mut label, &player);
|
||||
label.append_text(" got ");
|
||||
let what = match announcement {
|
||||
Announcement::FirstBlood => "First Blood",
|
||||
Announcement::DoubleKill => "a Double Kill",
|
||||
Announcement::TripleKill => "a Triple Kill",
|
||||
Announcement::MegaKill => "a Mega Kill",
|
||||
let (is, what) = match announcement {
|
||||
Announcement::FirstBlood => ("got", "First Blood"),
|
||||
Announcement::DoubleKill => ("got", "a Double Kill"),
|
||||
Announcement::TripleKill => ("got", "a Triple Kill"),
|
||||
Announcement::MegaKill => ("got", "a Mega Kill"),
|
||||
Announcement::KillingSpree => ("is on", "a Killing Spree"),
|
||||
Announcement::Carnage => ("made", "Carnage"),
|
||||
Announcement::Mayhem => ("made", "Mayhem"),
|
||||
Announcement::Dominating => ("is", "Dominating"),
|
||||
Announcement::Rampage => ("is on a", "Rampage"),
|
||||
Announcement::Godlike => ("is", "Godlike"),
|
||||
};
|
||||
label.append_text(&format!("[color=red]{}[/color]", what));
|
||||
label.append_text(&format!(" {} [color=red]{}[/color]", is, what));
|
||||
}
|
||||
}
|
||||
ChatMessage::ChatMessage(name, color, message) => {
|
||||
|
||||
@ -738,7 +738,6 @@ impl Game {
|
||||
velocity: Option<NetVector3>,
|
||||
player_id: Option<u16>,
|
||||
) {
|
||||
godot_print!("Spawned ball");
|
||||
if let Some(map) = &mut self.current_map {
|
||||
let mut ball = map.bind_mut().spawn_ball(transform, velocity, player_id);
|
||||
if let Some(ball) = &mut ball {
|
||||
@ -1250,6 +1249,12 @@ impl Game {
|
||||
2 => Some(Announcement::DoubleKill),
|
||||
3 => Some(Announcement::TripleKill),
|
||||
4 => Some(Announcement::MegaKill),
|
||||
5 => Some(Announcement::KillingSpree),
|
||||
6 => Some(Announcement::Mayhem),
|
||||
7 => Some(Announcement::Carnage),
|
||||
8 => Some(Announcement::Rampage),
|
||||
9 => Some(Announcement::Dominating),
|
||||
10 => Some(Announcement::Godlike),
|
||||
_ => None,
|
||||
};
|
||||
if let Some(announcement) = announcement {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user