Index: ps/trunk/binaries/data/mods/public/gui/common/music.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/common/music.js +++ ps/trunk/binaries/data/mods/public/gui/common/music.js @@ -24,7 +24,8 @@ "PEACE": "peace", "BATTLE": "battle", "VICTORY": "victory", - "DEFEAT": "defeat" + "DEFEAT": "defeat", + "CUSTOM": "custom" }; this.resetTracks(); @@ -35,11 +36,13 @@ "PEACE": 2, "BATTLE": 3, "VICTORY": 4, - "DEFEAT": 5 + "DEFEAT": 5, + "CUSTOM": 6 }; this.musicGain = 0.3; + this.locked = false; this.currentState = 0; this.oldState = 0; @@ -63,13 +66,17 @@ ], "BATTLE": ["Taiko_1.ogg", "Taiko_2.ogg"], "VICTORY": ["You_are_Victorious!.ogg"], - "DEFEAT": ["Dried_Tears.ogg"] + "DEFEAT": ["Dried_Tears.ogg"], + "CUSTOM": [] }; }; // "reference" refers to this instance of Music (needed if called from the timer) Music.prototype.setState = function(state) { + if (this.locked) + return; + this.reference.currentState = state; this.updateState(); }; @@ -106,6 +113,10 @@ this.startPlayList(shuffleArray(this.tracks.DEFEAT), 2.0, true); break; + case this.states.CUSTOM: + this.startPlayList(shuffleArray(this.tracks.CUSTOM), 2.0, true); + break; + default: warn(sprintf("%(functionName)s: Unknown music state: %(state)s", { "functionName": "Music.updateState()", "state": this.currentState })); break; @@ -160,4 +171,10 @@ { this.setState(this.states.OFF); }; - +/** +* Play the custom playlist when locked, otherwise plays the civ music according to the battle state. +*/ +Music.prototype.setLocked = function(locked) +{ + this.locked = locked; +}; Index: ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json =================================================================== --- ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json +++ ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json @@ -168,6 +168,7 @@ {"nick": "Pendingchaos"}, {"nick": "PeteVasi", "name": "Pete Vasiliauskas"}, {"nick": "pilino1234"}, + {"nick": "PingvinBetyar", "name": "Schronk Tamás"}, {"nick": "Polakrity"}, {"nick": "Poya", "name": "Poya Manouchehri"}, {"name": "Quentin Pradet"}, Index: ps/trunk/binaries/data/mods/public/gui/session/messages.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/messages.js +++ ps/trunk/binaries/data/mods/public/gui/session/messages.js @@ -463,6 +463,16 @@ // Allow gaia in selection when gathering g_Selection.reset(); g_Selection.addList(selection, false, cmd.type == "gather"); + }, + "play-tracks": function (notification, player) + { + if (notification.lock) + { + global.music.storeTracks(notification.tracks.map(track => ({ "Type": "custom", "File": track }))); + global.music.setState(global.music.states.CUSTOM); + } + + global.music.setLocked(notification.lock); } }; Index: ps/trunk/binaries/data/mods/public/simulation/data/cheats/retroMe.json =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/data/cheats/retroMe.json +++ ps/trunk/binaries/data/mods/public/simulation/data/cheats/retroMe.json @@ -0,0 +1,7 @@ +{ + "Name": "retro me", + "Data": { + "Action": "playRetro", + "DefaultParameter": "0_8Bit_Bonus_Track.ogg" + } +} Index: ps/trunk/binaries/data/mods/public/simulation/helpers/Cheat.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/helpers/Cheat.js +++ ps/trunk/binaries/data/mods/public/simulation/helpers/Cheat.js @@ -158,6 +158,16 @@ for (let i=0; i<2; ++i) Cheat({ "player": input.player, "action": "changephase", "selected": input.selected }); return; + case "playRetro": + let play = input.parameter.toLowerCase() != "off"; + cmpGuiInterface.PushNotification({ + "type": "play-tracks", + "tracks": play && input.parameter.split(" "), + "lock": play, + "players": [input.player] + }); + return; + default: warn("Cheat '" + input.action + "' is not implemented"); return;