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"]
|
[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="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="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"]
|
[ext_resource type="TeamResource" uid="uid://db4b3sjsftg15" path="res://maps/teams/red_ream.tres" id="3_o48fm"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
name = "Default Map"
|
name = "Default Map"
|
||||||
scene = ExtResource("1_k5804")
|
scene = ExtResource("1_k5804")
|
||||||
teams = Array[TeamResource]([ExtResource("2_kkbjr"), ExtResource("3_o48fm")])
|
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,
|
tools::get_autoload_by_name,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use crate::game_manager::GameManager;
|
||||||
|
|
||||||
pub const MUSIC_MANAGER_GLOBAL: &str = "MusicManagerGlobal";
|
pub const MUSIC_MANAGER_GLOBAL: &str = "MusicManagerGlobal";
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, PartialOrd, Clone, Copy)]
|
#[derive(Debug, PartialEq, PartialOrd, Clone, Copy)]
|
||||||
@ -40,11 +42,21 @@ impl MusicManager {
|
|||||||
Some(music) => {
|
Some(music) => {
|
||||||
let songs = match music {
|
let songs = match music {
|
||||||
Music::MainMenu => self.main_menu_songs.clone(),
|
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() {
|
if let Some(song) = songs.pick_random() {
|
||||||
player.set_stream(&song);
|
player.set_stream(&song);
|
||||||
player.play();
|
player.play();
|
||||||
|
} else {
|
||||||
|
player.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => player.stop(),
|
None => player.stop(),
|
||||||
|
|||||||
@ -8,6 +8,7 @@ use crate::{
|
|||||||
Announcement::{self, FirstBlood},
|
Announcement::{self, FirstBlood},
|
||||||
Announcer,
|
Announcer,
|
||||||
},
|
},
|
||||||
|
bgm::{Music, MusicManager},
|
||||||
chat::{Chat, ChatMessage},
|
chat::{Chat, ChatMessage},
|
||||||
map::Map,
|
map::Map,
|
||||||
map_resource::MapResource,
|
map_resource::MapResource,
|
||||||
@ -454,6 +455,9 @@ impl Game {
|
|||||||
self.base().get_tree().change_scene_to_packed(scene);
|
self.base().get_tree().change_scene_to_packed(scene);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
MusicManager::singleton()
|
||||||
|
.bind_mut()
|
||||||
|
.play(Some(Music::Map(self.selected_map_idx)));
|
||||||
|
|
||||||
self.run_deferred(|_| {
|
self.run_deferred(|_| {
|
||||||
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
|
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;
|
use crate::team_resource::TeamResource;
|
||||||
|
|
||||||
@ -11,6 +11,8 @@ pub struct MapResource {
|
|||||||
pub scene: Option<Gd<PackedScene>>,
|
pub scene: Option<Gd<PackedScene>>,
|
||||||
#[export]
|
#[export]
|
||||||
pub teams: Array<Gd<TeamResource>>,
|
pub teams: Array<Gd<TeamResource>>,
|
||||||
|
#[export]
|
||||||
|
pub music: Array<Gd<AudioStream>>,
|
||||||
|
|
||||||
base: Base<Resource>,
|
base: Base<Resource>,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ use godot::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
bgm::{Music, MusicManager},
|
||||||
game_manager::{Game, GameManager, GameOption, GameOptionValue, GameOptions},
|
game_manager::{Game, GameManager, GameOption, GameOptionValue, GameOptions},
|
||||||
net::network_manager::{NetworkManager, Package, PeerKind},
|
net::network_manager::{NetworkManager, Package, PeerKind},
|
||||||
ui::lobby_player_listing::LobbyPlayerListing,
|
ui::lobby_player_listing::LobbyPlayerListing,
|
||||||
@ -188,6 +189,10 @@ impl IPanel for LobbyPanel {
|
|||||||
grid.add_child(&node);
|
grid.add_child(&node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MusicManager::singleton()
|
||||||
|
.bind_mut()
|
||||||
|
.play(Some(Music::MainMenu));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user