From f00ddf7c868ed97557c57c1c64614433db894c7a Mon Sep 17 00:00:00 2001 From: Dawid Izydor Date: Tue, 26 Apr 2022 12:43:55 +0200 Subject: [PATCH 1/3] Added restart track setting --- lang/en.json | 2 + module.json | 95 ++++++++++++++++++++++--------------------- modules/config.js | 5 ++- modules/hype-track.js | 7 ++-- modules/playback.js | 27 +++++++++++- modules/settings.js | 15 ++++++- 6 files changed, 96 insertions(+), 55 deletions(-) diff --git a/lang/en.json b/lang/en.json index 2660c35..8e34cd7 100644 --- a/lang/en.json +++ b/lang/en.json @@ -6,6 +6,8 @@ "SETTINGS.HypeTrackEnableN": "Enable Hype Track", "SETTINGS.HypeTrackEnableH": "Enable the ability to set a Track for an Actor", + "SETTINGS.restartHypeTracksN": "Restart Hype Track", + "SETTINGS.restartHypeTracksH": "Enable the ability to restart a Track for an Actor instead of always running from the beginning", "SETTINGS.HypeTrackPauseOthersN": "Pause Other Playlist Sounds (Hype Track)", "SETTINGS.HypeTrackPauseOthersH": "Select to pause other Sounds (eg. music) while Hype Track is playing", "SETTINGS.ItemTrackEnableN": "Enable Item Track", diff --git a/module.json b/module.json index 6c15963..b5da054 100644 --- a/module.json +++ b/module.json @@ -1,55 +1,58 @@ { - "name":"maestro", - "title":"Maestro", - "description":"Adds new sound-related features such as Hype Tracks and Item Tracks", - "author":"Evan Clarke (errational#2007)", + "name": "maestro", + "title": "Maestro", + "description": "Adds new sound-related features such as Hype Tracks and Item Tracks", + "author": "Evan Clarke (errational#2007)", "authors": [ - { - "name": "Evan Clarke", - "url": "https://patreon.com/deathsave", - "discord": "errational#2007", - "twitter": "@death_save_dev", - "reddit": "u/etherboy12" - } + { + "name": "Evan Clarke", + "url": "https://patreon.com/deathsave", + "discord": "errational#2007", + "twitter": "@death_save_dev", + "reddit": "u/etherboy12" + } + ], + "version": "0.8.0", + "minimumCoreVersion": "9.235", + "compatibleCoreVersion": "9.238", + "esmodules": [ + "./maestro.js" + ], + "styles": [ + "./maestro.css" ], - "version":"0.8.0", - "minimumCoreVersion":"9.235", - "compatibleCoreVersion":"9.238", - "esmodules":["./maestro.js"], - "styles": ["./maestro.css"], "languages": [ - { - "lang": "en", - "name": "English", - "path": "lang/en.json" - }, - { - "lang": "ja", - "name": "日本語", - "path": "lang/ja.json" - }, - { - "lang": "ko", - "name": "한국어", - "path": "lang/ko.json" - }, - { - "lang": "pt-BR", - "name": "Português (Brasil)", - "path": "lang/pt-BR.json" - }, - { - "lang": "es", - "name": "Español", - "path": "lang/es.json" - } + { + "lang": "en", + "name": "English", + "path": "lang/en.json" + }, + { + "lang": "ja", + "name": "日本語", + "path": "lang/ja.json" + }, + { + "lang": "ko", + "name": "한국어", + "path": "lang/ko.json" + }, + { + "lang": "pt-BR", + "name": "Português (Brasil)", + "path": "lang/pt-BR.json" + }, + { + "lang": "es", + "name": "Español", + "path": "lang/es.json" + } ], - "manifest":"https://github.com/death-save/maestro/releases/latest/download/module.json", - "download": "https://github.com/death-save/maestro/releases/latest/download/module.zip", + "manifest": "https://github.com/death-save/maestro/releases/latest/download/module.json", + "download": "https://github.com/death-save/maestro/releases/download/0.8.0/module.zip", "url": "https://github.com/death-save/maestro", "bugs": "https://github.com/death-save/maestro/issues", "flags": { - "allowBugReporter": true + "allowBugReporter": true } - } - +} \ No newline at end of file diff --git a/modules/config.js b/modules/config.js index 241a800..eb2ab4e 100644 --- a/modules/config.js +++ b/modules/config.js @@ -118,10 +118,11 @@ export const SETTINGS_KEYS = { get HypeTrack() { return { enable: "enableHypeTrack", - pauseOthers: "hypeTrackPauseOthers" + pauseOthers: "hypeTrackPauseOthers", + restartHypeTracks: "restartHypeTracks" } }, - + get CombatTrack() { return { enable: "enableCombatTrack", diff --git a/modules/hype-track.js b/modules/hype-track.js index 9780bdc..f333bbc 100644 --- a/modules/hype-track.js +++ b/modules/hype-track.js @@ -7,7 +7,6 @@ export default class HypeTrack { this.playlist = null; this.pausedSounds = []; } - /* -------------------------------------------- */ /* Hook Handlers */ /* -------------------------------------------- */ @@ -70,7 +69,7 @@ export default class HypeTrack { } // Stop any active hype tracks - if (this.playlist?.playing) await this.playlist.stopAll(); + if (this.playlist?.playing) await Playback.pauseAllTracks(this.playlist); // Find the hype track const flags = this._getActorHypeFlags(combat?.combatant?.actor); @@ -268,13 +267,13 @@ export default class HypeTrack { return playedTrack; } - + async _stopHypeTrack() { if (!this.playlist || !isFirstGM()) return; // Stop the playlist if it is playing if (this.playlist.playing) { - await this.playlist.stopAll(); + await Playback.pauseAllTracks(); ui.playlists.render(); } diff --git a/modules/playback.js b/modules/playback.js index cfe080d..1fe07c2 100644 --- a/modules/playback.js +++ b/modules/playback.js @@ -1,5 +1,9 @@ import * as MAESTRO from "./config.js"; +class PlaybackSettings{ + + static pauseDictionary = {}; // for hype tracks restarting handling +} /** * Get all the sounds in a specific playlist @@ -52,8 +56,29 @@ export async function playTrack(trackId, playlistId) { const sound = playlist.sounds?.get(trackId); if (!sound) return; + + + const restartHypeTracks = game.settings.get(MAESTRO.MODULE_NAME, MAESTRO.SETTINGS_KEYS.HypeTrack.restartHypeTracks,); + var resumeTime = 0; + if(restartHypeTracks && PlaybackSettings.pauseDictionary[trackId]) resumeTime = PlaybackSettings.pauseDictionary[trackId]; + + return await sound.update({pausedTime: resumeTime, playing: true}); +} - return await sound.update({playing: true}); +export async function pauseAllTracks(playlist) { + if(!playlist) return; + + const restartHypeTracks = game.settings.get(MAESTRO.MODULE_NAME, MAESTRO.SETTINGS_KEYS.HypeTrack.restartHypeTracks,); + if(restartHypeTracks && playlist.data && playlist.data.sounds) + { + var sounds = playlist.data.sounds; + sounds.forEach(sound=>{ + if(sound.playing) + { + PlaybackSettings.pauseDictionary[sound.id] = sound.sound.currentTime; + } + })} + await playlist.stopAll(); } /** diff --git a/modules/settings.js b/modules/settings.js index acc834e..2d0c4ac 100644 --- a/modules/settings.js +++ b/modules/settings.js @@ -22,7 +22,7 @@ export const registerModuleSettings = async function() { await game.maestro.hypeTrack._checkForHypeTracksPlaylist(); } }), - + game.settings.register(MAESTRO.MODULE_NAME, MAESTRO.SETTINGS_KEYS.HypeTrack.pauseOthers, { name: "MAESTRO.SETTINGS.HypeTrackPauseOthersN", hint: "MAESTRO.SETTINGS.HypeTrackPauseOthersH", @@ -31,7 +31,18 @@ export const registerModuleSettings = async function() { default: false, config: true, onChange: async s => {} - }), + }) + , + + game.settings.register(MAESTRO.MODULE_NAME, MAESTRO.SETTINGS_KEYS.HypeTrack.restartHypeTracks, { + name: "MAESTRO.SETTINGS.restartHypeTracksN", + hint: "MAESTRO.SETTINGS.restartHypeTracksH", + scope: "world", + type: Boolean, + default: false, + config: true, + onChange: async s => {} + }), /* -------------------------------------------- */ /* Item Track */ From c7092f27af8c611848d482530e7feb356d47a557 Mon Sep 17 00:00:00 2001 From: Dawid Izydor Date: Tue, 26 Apr 2022 12:46:58 +0200 Subject: [PATCH 2/3] Reverted module.json changes --- module.json | 95 ++++++++++++++++++++++++++--------------------------- 1 file changed, 46 insertions(+), 49 deletions(-) diff --git a/module.json b/module.json index b5da054..6c15963 100644 --- a/module.json +++ b/module.json @@ -1,58 +1,55 @@ { - "name": "maestro", - "title": "Maestro", - "description": "Adds new sound-related features such as Hype Tracks and Item Tracks", - "author": "Evan Clarke (errational#2007)", + "name":"maestro", + "title":"Maestro", + "description":"Adds new sound-related features such as Hype Tracks and Item Tracks", + "author":"Evan Clarke (errational#2007)", "authors": [ - { - "name": "Evan Clarke", - "url": "https://patreon.com/deathsave", - "discord": "errational#2007", - "twitter": "@death_save_dev", - "reddit": "u/etherboy12" - } - ], - "version": "0.8.0", - "minimumCoreVersion": "9.235", - "compatibleCoreVersion": "9.238", - "esmodules": [ - "./maestro.js" - ], - "styles": [ - "./maestro.css" + { + "name": "Evan Clarke", + "url": "https://patreon.com/deathsave", + "discord": "errational#2007", + "twitter": "@death_save_dev", + "reddit": "u/etherboy12" + } ], + "version":"0.8.0", + "minimumCoreVersion":"9.235", + "compatibleCoreVersion":"9.238", + "esmodules":["./maestro.js"], + "styles": ["./maestro.css"], "languages": [ - { - "lang": "en", - "name": "English", - "path": "lang/en.json" - }, - { - "lang": "ja", - "name": "日本語", - "path": "lang/ja.json" - }, - { - "lang": "ko", - "name": "한국어", - "path": "lang/ko.json" - }, - { - "lang": "pt-BR", - "name": "Português (Brasil)", - "path": "lang/pt-BR.json" - }, - { - "lang": "es", - "name": "Español", - "path": "lang/es.json" - } + { + "lang": "en", + "name": "English", + "path": "lang/en.json" + }, + { + "lang": "ja", + "name": "日本語", + "path": "lang/ja.json" + }, + { + "lang": "ko", + "name": "한국어", + "path": "lang/ko.json" + }, + { + "lang": "pt-BR", + "name": "Português (Brasil)", + "path": "lang/pt-BR.json" + }, + { + "lang": "es", + "name": "Español", + "path": "lang/es.json" + } ], - "manifest": "https://github.com/death-save/maestro/releases/latest/download/module.json", - "download": "https://github.com/death-save/maestro/releases/download/0.8.0/module.zip", + "manifest":"https://github.com/death-save/maestro/releases/latest/download/module.json", + "download": "https://github.com/death-save/maestro/releases/latest/download/module.zip", "url": "https://github.com/death-save/maestro", "bugs": "https://github.com/death-save/maestro/issues", "flags": { - "allowBugReporter": true + "allowBugReporter": true } -} \ No newline at end of file + } + From 00eb4f4bbcce5a0648757f29c70e480eb18df30b Mon Sep 17 00:00:00 2001 From: Dawid Izydor Date: Tue, 26 Apr 2022 12:49:13 +0200 Subject: [PATCH 3/3] Fixed typo in playback.js --- modules/playback.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/playback.js b/modules/playback.js index 1fe07c2..afc5083 100644 --- a/modules/playback.js +++ b/modules/playback.js @@ -58,7 +58,7 @@ export async function playTrack(trackId, playlistId) { if (!sound) return; - const restartHypeTracks = game.settings.get(MAESTRO.MODULE_NAME, MAESTRO.SETTINGS_KEYS.HypeTrack.restartHypeTracks,); + const restartHypeTracks = game.settings.get(MAESTRO.MODULE_NAME, MAESTRO.SETTINGS_KEYS.HypeTrack.restartHypeTracks); var resumeTime = 0; if(restartHypeTracks && PlaybackSettings.pauseDictionary[trackId]) resumeTime = PlaybackSettings.pauseDictionary[trackId]; @@ -68,7 +68,7 @@ export async function playTrack(trackId, playlistId) { export async function pauseAllTracks(playlist) { if(!playlist) return; - const restartHypeTracks = game.settings.get(MAESTRO.MODULE_NAME, MAESTRO.SETTINGS_KEYS.HypeTrack.restartHypeTracks,); + const restartHypeTracks = game.settings.get(MAESTRO.MODULE_NAME, MAESTRO.SETTINGS_KEYS.HypeTrack.restartHypeTracks); if(restartHypeTracks && playlist.data && playlist.data.sounds) { var sounds = playlist.data.sounds;