1
1
import eventManager from '../../utils/eventManager.js' ;
2
2
import * as settings from '../../utils/settings/index.js' ;
3
3
import { global , globalSet } from '../../utils/global.js' ;
4
+ import { getSeasonMonth } from '../../utils/season.js' ;
4
5
5
6
const baseVolumeSettings = { type : 'slider' , page : 'Audio' , max : 0.5 , step : 0.01 , default : 0.2 , reset : true } ;
6
7
let active = false ;
7
8
9
+ const enable = settings . register ( {
10
+ name : 'Enable Audio Override' ,
11
+ key : 'underscript.audio.override' ,
12
+ default : true ,
13
+ page : 'Audio' ,
14
+ note : 'Disabling this disables all other Audio settings!' ,
15
+ } ) ;
16
+
17
+ const aprilFoolsMusic = settings . register ( {
18
+ name : 'Enable April Fools Music' ,
19
+ key : 'underscript.audio.override.aprilFools' ,
20
+ default : true ,
21
+ hidden : ( ) => ! isApril ( ) ,
22
+ page : 'Audio' ,
23
+ } ) ;
24
+
8
25
const bgmEnabled = settings . register ( {
9
26
name : 'Enable BGM' ,
10
27
key : 'underscript.audio.bgm' ,
@@ -68,12 +85,25 @@ function pauseMusic() {
68
85
. forEach ( ( audio ) => audio . pause ( ) ) ;
69
86
}
70
87
88
+ function isApril ( ) {
89
+ return getSeasonMonth ( ) === 4 ;
90
+ }
91
+
92
+ function enableAprilFools ( ) {
93
+ return isApril ( ) && aprilFoolsMusic . value ;
94
+ }
95
+
71
96
function overrideResult ( name ) {
72
97
const data = { name, origin : name } ;
73
98
const event = eventManager . cancelable . emit ( 'playMusic' , data ) ;
74
99
if ( ! resultEnabled . value ( ) || ! data . name || event . canceled ) return ;
75
100
pauseMusic ( ) ;
76
- createAudio ( `/musics/${ data . name } .ogg` , {
101
+ if ( ! enable . value ) {
102
+ this . super ( data . name ) ;
103
+ return ;
104
+ }
105
+ const path = enableAprilFools ( ) ? 'afm' : 'musics' ;
106
+ createAudio ( `/${ path } /${ data . name } .ogg` , {
77
107
volume : resultVolume . value ( ) ,
78
108
repeat : true ,
79
109
set : 'music' ,
@@ -84,7 +114,12 @@ function overrideMusic(name) {
84
114
const event = eventManager . cancelable . emit ( 'playBackgroundMusic' , data ) ;
85
115
if ( ! bgmEnabled . value ( ) || ! data . name || event . canceled ) return ;
86
116
pauseMusic ( ) ;
87
- createAudio ( `/musics/themes/${ data . name } .ogg` , {
117
+ if ( ! enable . value ) {
118
+ this . super ( data . name ) ;
119
+ return ;
120
+ }
121
+ const path = enableAprilFools ( ) ? 'afm' : 'musics/themes' ;
122
+ createAudio ( `/${ path } /${ data . name } .ogg` , {
88
123
volume : bgmVolume . value ( ) ,
89
124
repeat : true ,
90
125
set : 'music' ,
@@ -94,6 +129,10 @@ function overrideSound(name) {
94
129
const data = { name, origin : name } ;
95
130
const event = eventManager . cancelable . emit ( 'playSound' , data ) ;
96
131
if ( ! soundEnabled . value ( ) || ! data . name || event . canceled ) return ;
132
+ if ( ! enable . value ) {
133
+ this . super ( data . name ) ;
134
+ return ;
135
+ }
97
136
createAudio ( `/sounds/${ data . name } .wav` , {
98
137
volume : soundVolume . value ( ) ,
99
138
set : 'audio' ,
@@ -104,7 +143,12 @@ function overrideJingle(name = '') {
104
143
const event = eventManager . cancelable . emit ( 'playJingle' , data ) ;
105
144
if ( ! jingleEnabled . value ( ) || ! data . name || event . canceled ) return ;
106
145
pauseMusic ( ) ;
107
- createAudio ( `/musics/cards/${ data . name . replace ( / / g, '_' ) } .ogg` , {
146
+ if ( ! enable . value ) {
147
+ this . super ( data . name ) ;
148
+ return ;
149
+ }
150
+ const path = enableAprilFools ( ) ? 'afm' : 'musics' ;
151
+ createAudio ( `/${ path } /cards/${ data . name . replace ( / / g, '_' ) } .ogg` , {
108
152
volume : jingleVolume . value ( ) ,
109
153
set : 'jingle' ,
110
154
listener : global ( 'jingleEnd' ) ,
0 commit comments