game.view.lastSoundsCache.splice(0, 1);
}
let sound = new THREE.Audio(game.view.audioListener);
- sound.setBuffer(game.assets['audio']['sound' + index]);
+ sound.setBuffer(game.assets['audio']['sound' + index + '-' + game.settings['audio']['theme']]);
sound.setVolume(game.settings['audio']['sounds']);
sound.play();
}
];
return new Promise((resolve, reject) => {
let todoList = {
- 'audio/music.ogg': 1636930,
- 'audio/sound1.ogg': 34002,
- 'audio/sound2.ogg': 34629,
- 'audio/sound3.ogg': 25399,
- 'audio/sound4.ogg': 16426,
- 'audio/sound5.ogg': 26122,
'fonts/cookie.json': 37866,
'textures/cloud0a.png': 568,
'textures/cloud0b.png': 569,
}
}
}
+ game.assets.audiothemes = [];
+ const audioThemes = {
+ 'classical': [1636930, 34002, 34629, 25399, 16426, 26122],
+ }
+ for(let theme of Object.keys(audioThemes)) {
+ todoList['audio/music-' + theme + '.ogg'] = audioThemes[theme][0];
+ todoList['audio/sound1-' + theme + '.ogg'] = audioThemes[theme][1];
+ todoList['audio/sound2-' + theme + '.ogg'] = audioThemes[theme][2];
+ todoList['audio/sound3-' + theme + '.ogg'] = audioThemes[theme][3];
+ todoList['audio/sound4-' + theme + '.ogg'] = audioThemes[theme][4];
+ todoList['audio/sound5-' + theme + '.ogg'] = audioThemes[theme][5];
+ game.assets.audiothemes.push(theme);
+ }
let total = Object.keys(todoList).map(k => todoList[k]).reduce((a, b) => a + b, 0);
let progress = {};
const loader = {
if(game.settings['audio']['music'] > 0.0 && game.view.music && !game.view.music.isPlaying) {
const remainingRealTime = (game.timeTotal - game.timeProgress) / (game.settings['difficulty']['speed'] / 100);
- if(remainingRealTime >= game.assets.audio.music.duration - 2) {
+ if(remainingRealTime >= game.assets['audio']['music-' + game.settings['audio']['theme']].duration - 2) {
game.view.music.offset = 0;
game.view.music.play();
}
'audio': {
'music': 0.5,
'sounds': 0.5,
+ 'theme': 'classical',
},
'feather': 'blue',
'unlocks': [],
elem.parentNode.nextElementSibling.innerText = newValue;
});
}
+ let audioThemeRadio = ui.querySelector('.audiotheme input[value="' + settings['audio']['theme'] + '"]');
+ if(audioThemeRadio) {
+ audioThemeRadio.checked = true;
+ }
for(let unlockedFeather of settings['unlocks']) {
let label = document.createElement('label');
let radio = document.createElement('input');
for(let audioCategory of ['music', 'sounds']) {
game.settings['audio'][audioCategory] = parseInt(ui.querySelector('.audio input[type=range].' + audioCategory).value, 10) / 100;
}
+ let audioThemeRadio = ui.querySelector('.audiotheme input[name="upInTheAirGame-audiotheme"]:checked');
+ if(audioThemeRadio) {
+ game.settings['audio']['theme'] = audioThemeRadio.value;
+ }
game.settings['feather'] = ui.querySelector('input[name="upInTheAirGame-feather"]:checked').value;
game.settings['highcontrast'] = ui.querySelector('input[value="highcontrast"]').checked;
game.settings['font'] = ui.querySelector('input[name="upInTheAirGame-font"]:checked').value;
game.view.audioListener = new THREE.AudioListener();
game.view.camera.add(game.view.audioListener);
game.view.music = new THREE.Audio(game.view.audioListener);
- game.view.music.setBuffer(game.assets.audio.music);
+ game.view.music.setBuffer(game.assets['audio']['music-' + game.settings['audio']['theme']]);
game.view.music.setVolume(game.settings['audio']['music']);
}
let target = e.target.closest('button');
if(target == 'pause') {
game.view.music.stop();
} else if(game.ui.currentPage == 'pause' && target == 'gameplay') {
- game.view.music.offset = (game.timeProgress / (game.settings['difficulty']['speed'] / 100)) % game.assets.audio.music.duration;
+ game.view.music.offset = (game.timeProgress / (game.settings['difficulty']['speed'] / 100)) % game.assets['audio']['music-' + game.settings['audio']['theme']].duration;
game.view.music.play();
}
game.ui.currentPage = target;
if(window.location.hostname == 'fietkau.media') {
game.ui.root.querySelector('.ui-page.title .footer span:last-child').remove();
}
+ if(!game.assets.audiothemes.includes(game.settings['audio']['theme'])) {
+ game.settings['audio']['theme'] = game.assets.audiothemes[0];
+ }
+ if(game.assets.audiothemes.length == 1) {
+ game.ui.root.querySelector('.ui-page.options .audiotheme').style.display = 'none';
+ }
+ let container = game.ui.root.querySelector('.ui-page.options .audiotheme');
+ for(let audioTheme of game.assets.audiothemes) {
+ let snippet = container.children[0].content.cloneNode(true).children[0];
+ snippet.children[0].value = audioTheme;
+ if(audioTheme == game.settings['audio']['theme']) {
+ snippet.children[0].checked = true;
+ }
+ snippet.children[0].addEventListener('change', () => {
+ applySettings(game);
+ game.view.music.setBuffer(game.assets['audio']['music-' + game.settings['audio']['theme']]);
+ });
+ snippet.childNodes[1].textContent = ' ' + audioTheme[0].toUpperCase() + audioTheme.slice(1);
+ container.appendChild(snippet);
+ }
game.ui.moveToPage('title');
init(window['game'], game.ui.root.querySelector('canvas'));
}, (err) => {