Add map music
This commit is contained in:
parent
e42b0e6627
commit
264a81e072
@ -1,10 +1,14 @@
|
||||
[gd_resource type="MapResource" format=3 uid="uid://c7n1tacc7a73t"]
|
||||
|
||||
[ext_resource type="AudioStream" uid="uid://d3tpaim4ia0xr" path="res://raw_assets/music/n-Dimensions (Main Theme - Retro Ver.mp3" id="1_bjd18"]
|
||||
[ext_resource type="PackedScene" uid="uid://7iooamjot1tg" path="res://maps/default_map/map0.tscn" id="1_k5804"]
|
||||
[ext_resource type="AudioStream" uid="uid://dkgm7o8u0w550" path="res://raw_assets/music/Red Doors 2.0 (GameClosure Edition).mp3" id="2_an43b"]
|
||||
[ext_resource type="TeamResource" uid="uid://p2fqqnaejjn7" path="res://maps/teams/blue_team.tres" id="2_kkbjr"]
|
||||
[ext_resource type="AudioStream" uid="uid://dai8by348wqss" path="res://raw_assets/music/Thrust Sequence.mp3" id="3_e1bs0"]
|
||||
[ext_resource type="TeamResource" uid="uid://db4b3sjsftg15" path="res://maps/teams/red_ream.tres" id="3_o48fm"]
|
||||
|
||||
[resource]
|
||||
name = "Default Map"
|
||||
scene = ExtResource("1_k5804")
|
||||
teams = Array[TeamResource]([ExtResource("2_kkbjr"), ExtResource("3_o48fm")])
|
||||
music = Array[AudioStream]([ExtResource("1_bjd18"), ExtResource("2_an43b"), ExtResource("3_e1bs0")])
|
||||
|
||||
@ -4,6 +4,8 @@ use godot::{
|
||||
tools::get_autoload_by_name,
|
||||
};
|
||||
|
||||
use crate::game_manager::GameManager;
|
||||
|
||||
pub const MUSIC_MANAGER_GLOBAL: &str = "MusicManagerGlobal";
|
||||
|
||||
#[derive(Debug, PartialEq, PartialOrd, Clone, Copy)]
|
||||
@ -40,11 +42,21 @@ impl MusicManager {
|
||||
Some(music) => {
|
||||
let songs = match music {
|
||||
Music::MainMenu => self.main_menu_songs.clone(),
|
||||
Music::Map(_) => self.main_menu_songs.clone(),
|
||||
Music::Map(idx) => {
|
||||
if let Some(map) =
|
||||
GameManager::singleton().bind().maps.get(idx as usize)
|
||||
{
|
||||
map.bind().music.clone()
|
||||
} else {
|
||||
Array::new()
|
||||
}
|
||||
}
|
||||
};
|
||||
if let Some(song) = songs.pick_random() {
|
||||
player.set_stream(&song);
|
||||
player.play();
|
||||
} else {
|
||||
player.stop();
|
||||
}
|
||||
}
|
||||
None => player.stop(),
|
||||
|
||||
@ -8,6 +8,7 @@ use crate::{
|
||||
Announcement::{self, FirstBlood},
|
||||
Announcer,
|
||||
},
|
||||
bgm::{Music, MusicManager},
|
||||
chat::{Chat, ChatMessage},
|
||||
map::Map,
|
||||
map_resource::MapResource,
|
||||
@ -454,6 +455,9 @@ impl Game {
|
||||
self.base().get_tree().change_scene_to_packed(scene);
|
||||
}
|
||||
}
|
||||
MusicManager::singleton()
|
||||
.bind_mut()
|
||||
.play(Some(Music::Map(self.selected_map_idx)));
|
||||
|
||||
self.run_deferred(|_| {
|
||||
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
use godot::prelude::*;
|
||||
use godot::{classes::AudioStream, prelude::*};
|
||||
|
||||
use crate::team_resource::TeamResource;
|
||||
|
||||
@ -11,6 +11,8 @@ pub struct MapResource {
|
||||
pub scene: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
pub teams: Array<Gd<TeamResource>>,
|
||||
#[export]
|
||||
pub music: Array<Gd<AudioStream>>,
|
||||
|
||||
base: Base<Resource>,
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ use godot::{
|
||||
};
|
||||
|
||||
use crate::{
|
||||
bgm::{Music, MusicManager},
|
||||
game_manager::{Game, GameManager, GameOption, GameOptionValue, GameOptions},
|
||||
net::network_manager::{NetworkManager, Package, PeerKind},
|
||||
ui::lobby_player_listing::LobbyPlayerListing,
|
||||
@ -188,6 +189,10 @@ impl IPanel for LobbyPanel {
|
||||
grid.add_child(&node);
|
||||
}
|
||||
}
|
||||
|
||||
MusicManager::singleton()
|
||||
.bind_mut()
|
||||
.play(Some(Music::MainMenu));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user