@quick-game/cli
Version:
Command line interface for rapid qg development
249 lines (229 loc) • 11.4 kB
JavaScript
/* eslint-disable */
function QG_JS_Sound_Create_Channel(o, i) {
if (0 != WEBAudio.audioWebEnabled && window.qg) {
var e = function () {
if (GameGlobal.unityNamespace.Module.dynCall) {
o && GameGlobal.unityNamespace.Module.dynCall("vi", o, [i])
}
if (GameGlobal.unityNamespace.Module.dynCall_vi) {
o && GameGlobal.unityNamespace.Module.dynCall_vi(o, [i])
}
},
u = {
audio: null,
loop: !1,
volume: 1,
isBind: !1,
isStop: !1,
stopTime: 0,
isPlay: !1,
playTime: 0,
isStopped: !1,
playAudio: function (o, i) {
//每次playAudio时都去创建新的context实例,解决同一实例无法连续播放问题
if (this.audio) {
const audioTemp = this.audio
this.audio = window.qg.createInnerAudioContext()
this.audio.src = audioTemp.src
this.audio.onCanplay = audioTemp.onCanplay
this.audio.onError = audioTemp.onError
this.audio.volume = audioTemp.volume
this.audio.loop = audioTemp.loop
}
this.setup(), o > 0 ? (this.audio.volume = 0, this.isPlay = !0, this.playTime = o) : (this.audio.volume = this.volume, this.audio.loop = this.loop), this.audio.play(), 0 != i && this.audio.seek(i)
},
setup: function () {
if (this.audio && 0 == this.isBind) {
this.audio.offEnded(e), this.audio.onEnded(e);
var o = this;
this.isStoped = !1, this.audio.offTimeUpdate(null), this.audio.onTimeUpdate(function () {
1 == o.isStop && Number.parseFloat(o.audio.currentTime) >= o.stopTime && (o.stopTime = 0, o.isStop = !1, o.audio.stop(), o.audio.destroy(), o.audio.src = "", o.isBind = !1, o.isStoped = !0), !o.isStoped && 1 == o.isPlay && Number.parseFloat(o.audio.currentTime) >= o.playTime && (o.isPlay = !1, o.playTime = 0, o.audio.volume = o.volume, o.audio.loop = o.loop)
}), this.isBind = !0
}
},
stopAudio: function (o) {
0 == o ? (this.audio.offTimeUpdate(null), this.audio.offEnded(e), this.stopTime = 0, this.isStop = !1, this.audio.stop(), this.audio.destroy(), this.isBind = !1) : (this.stopTime = o, this.isStop = !0)
}
};
return WEBAudio.audioInstances.push(u) - 1
}
}
function QG_JS_Sound_GetLength(o) {
if (0 == WEBAudio.audioWebEnabled) return 0;
var i = WEBAudio.audioInstances[o];
return i ? window.qg ? i.bufferLength : void 0 : 0
}
function QG_JS_Sound_GetLoadState(o) {
if (0 == WEBAudio.audioWebEnabled) return 2;
if (window.qg) {
var i = WEBAudio.audioInstances[o],
e = i.loadState;
return 1 == e ? 2 : 2 == e ? 0 : 1
}
}
function QG_JS_Sound_Init() {
window.qg && (WEBAudio.audioWebEnabled = 1)
}
function QG_JS_Sound_Load(o, i) {
if (0 == WEBAudio.audioWebEnabled) return 0;
if (window.qg) {
var e = {
buffer: null,
error: !1,
file: "",
audio: window.qg.createInnerAudioContext(),
bufferLength: 0,
ptr: o,
loadState: 0
},
u = window.qg.getFileSystemManager(),
t = WEBAudio.audioInstances.push(e) - 1;
e.file = window.qg.env.USER_DATA_PATH + "/audio" + o + i + ".mp3", console.log("_JS_Sound_Load " + e.file), e.buffer = GameGlobal.unityNamespace.Module.HEAPU8.buffer.slice(o, o + i)
// 兼容微信新标准
let needWrite = true
try {
const exsit = u.accessSync(e.file)
if (exsit === undefined || exsit) {
needWrite = false
}
} catch(e) {
}
if (needWrite) {
u.writeFileSync(e.file, e.buffer, "binary")
}
return e.audio.onCanplay(function () {
e.bufferLength = 44100 * e.audio.duration | 0, e.loadState = 2
}), e.audio.onError(function (o) {
console.log(o), e.loadState = 1
}), e.audio.src = e.file, t
}
}
function QG_JS_Sound_Load_PCM(o, i, e, u) {
if (0 == WEBAudio.audioWebEnabled) return 0;
for (var t = {
buffer: WEBAudio.audioContext.createBuffer(o, i, e),
error: !1
}, n = 0; n < o; n++) {
var d = (u >> 2) + i * n,
a = t.buffer,
s = a.copyToChannel || function (o, i, e) {
var u = o.subarray(0, Math.min(o.length, this.length - (0 | e)));
this.getChannelData(0 | i).set(u, 0 | e)
};
s.apply(a, [GameGlobal.unityNamespace.Module.HEAPF32.subarray(d, d + i), n, 0])
}
var r = WEBAudio.audioInstances.push(t) - 1;
return r
}
function QG_JS_Sound_Play(o, i, e, u) {
if (window.qg) {
// if (QG_JS_Sound_Stop(i, 0), console.log("sound play", o, i, e, u), 0 == WEBAudio.audioWebEnabled) return;
var t = WEBAudio.audioInstances[o],
n = WEBAudio.audioInstances[i];
if (t.buffer) try {
if (console.log("play", t.file), "" !== t.audio.src) n.audio = t.audio, n.audio.volume = n.volume, n.audio.loop = n.loop, n.playAudio(Number.parseFloat(t.audio.currentTime) + u, e);
else {
t.loadState = 0, t.audio = window.qg.createInnerAudioContext(), t.audio.onCanplay(function () {
t.bufferLength = 44100 * t.audio.duration | 0, t.loadState = 2
}), t.audio.onError(function (o) {
console.log(o), t.loadState = 1
}), t.audio.src = t.file, n.audio = t.audio, n.audio.volume = n.volume, n.audio.loop = n.loop;
var d = t.loadState;
if (0 == d) var a = setInterval(function () {
0 !== t.loadState && (2 == t.loadState && n.playAudio(Number.parseFloat(t.audio.currentTime) + u, e), clearInterval(a))
}, 100);
else 2 == d && n.playAudio(Number.parseFloat(t.audio.currentTime) + u, e)
}
} catch (o) {
console.error("playBuffer error. Exception: " + o)
} else console.log("Trying to play sound which is not loaded.")
}
}
function QG_JS_Sound_ReleaseInstance(o) {
WEBAudio.audioInstances[o] = null
}
function QG_JS_Sound_ResumeIfNeeded() {
0 != WEBAudio.audioWebEnabled && (window.qg || "suspended" === WEBAudio.audioContext.state && WEBAudio.audioContext.resume())
}
function QG_JS_Sound_Set3D(o, i) {
if (!window.qg) {
var e = WEBAudio.audioInstances[o];
e.threeD != i && (e.threeD = i, e.setupPanning())
}
}
function QG_JS_Sound_SetListenerOrientation(o, i, e, u, t, n) {
0 != WEBAudio.audioWebEnabled && (window.qg || (WEBAudio.audioContext.listener.forwardX ? (WEBAudio.audioContext.listener.forwardX.setValueAtTime(-o, WEBAudio.audioContext.currentTime), WEBAudio.audioContext.listener.forwardY.setValueAtTime(-i, WEBAudio.audioContext.currentTime), WEBAudio.audioContext.listener.forwardZ.setValueAtTime(-e, WEBAudio.audioContext.currentTime), WEBAudio.audioContext.listener.upX.setValueAtTime(u, WEBAudio.audioContext.currentTime), WEBAudio.audioContext.listener.upY.setValueAtTime(t, WEBAudio.audioContext.currentTime), WEBAudio.audioContext.listener.upZ.setValueAtTime(n, WEBAudio.audioContext.currentTime)) : WEBAudio.audioContext.listener.setOrientation(-o, -i, -e, u, t, n)))
}
function QG_JS_Sound_SetListenerPosition(o, i, e) {
0 != WEBAudio.audioWebEnabled && (window.qg || (WEBAudio.audioContext.listener.positionX ? (WEBAudio.audioContext.listener.positionX.setValueAtTime(o, WEBAudio.audioContext.currentTime), WEBAudio.audioContext.listener.positionY.setValueAtTime(i, WEBAudio.audioContext.currentTime), WEBAudio.audioContext.listener.positionZ.setValueAtTime(e, WEBAudio.audioContext.currentTime)) : WEBAudio.audioContext.listener.setPosition(o, i, e)))
}
function QG_JS_Sound_SetLoop(o, i) {
if (0 != WEBAudio.audioWebEnabled && window.qg) {
var e = WEBAudio.audioInstances[o],
u = 1 == i;
e.loop = u, null !== e.audio && (e.audio.loop = u)
}
}
function QG_JS_Sound_SetLoopPoints(o, i, e) {
if (!window.qg) {
if (0 == WEBAudio.audioWebEnabled) return;
var u = WEBAudio.audioInstances[o];
u.source.loopStart = i, u.source.loopEnd = e
}
}
function QG_JS_Sound_SetPaused(a, d) {
if (0 != WEBAudio.audioWebEnabled && window.qg) {
var u = WEBAudio.audioInstances[a],
i = !u.audio || u.audio.paused;
d != i && (d ? u.audio.pause() : u.audio.play())
}
}
function QG_JS_Sound_SetPitch(o, i) {
0 != WEBAudio.audioWebEnabled && (window.qg || WEBAudio.audioInstances[o].source.playbackRate.setValueAtTime(i, WEBAudio.audioContext.currentTime))
}
function QG_JS_Sound_SetPosition(o, i, e, u) {
0 != WEBAudio.audioWebEnabled && (window.qg || WEBAudio.audioInstances[o].panner.setPosition(i, e, u))
}
function QG_JS_Sound_SetVolume(o, i) {
if (window.qg) {
if (0 == WEBAudio.audioWebEnabled) return;
if (i > 1) {
i = 1;
}
var e = WEBAudio.audioInstances[o];
e.volume = i, null !== e.audio && (e.audio.volume = i)
}
}
function QG_JS_Sound_Stop(o, i) {
if (window.qg) {
if (0 == WEBAudio.audioWebEnabled) return;
console.log("stop", o, i);
var e = WEBAudio.audioInstances[o];
e.audio && (console.log(o), 0 == i ? (e.stopAudio(i), e.audio.offEnded(null)) : e.stopAudio(Number.parseFloat(e.audio.currentTime) + i), e.audio = null)
}
}
var WEBAudio = {
audioInstanceIdCounter: 0,
audioInstances: [],
audioContext: null,
audioWebEnabled: 0
};
window.WXWASMSDK._JS_Sound_Create_Channel = QG_JS_Sound_Create_Channel
window.WXWASMSDK._JS_Sound_GetLength = QG_JS_Sound_GetLength
window.WXWASMSDK._JS_Sound_GetLoadState = QG_JS_Sound_GetLoadState
window.WXWASMSDK._JS_Sound_Init = QG_JS_Sound_Init
window.WXWASMSDK._JS_Sound_Load = QG_JS_Sound_Load
window.WXWASMSDK._JS_Sound_Load_PCM = QG_JS_Sound_Load_PCM
window.WXWASMSDK._JS_Sound_Play = QG_JS_Sound_Play
window.WXWASMSDK._JS_Sound_ReleaseInstance = QG_JS_Sound_ReleaseInstance
window.WXWASMSDK._JS_Sound_ResumeIfNeeded = QG_JS_Sound_ResumeIfNeeded
window.WXWASMSDK._JS_Sound_Set3D = QG_JS_Sound_Set3D
window.WXWASMSDK._JS_Sound_SetListenerOrientation = QG_JS_Sound_SetListenerOrientation
window.WXWASMSDK._JS_Sound_SetListenerPosition = QG_JS_Sound_SetListenerPosition
window.WXWASMSDK._JS_Sound_SetLoop = QG_JS_Sound_SetLoop
window.WXWASMSDK._JS_Sound_SetLoopPoints = QG_JS_Sound_SetLoopPoints
window.WXWASMSDK._JS_Sound_SetPaused = QG_JS_Sound_SetPaused
window.WXWASMSDK._JS_Sound_SetPitch = QG_JS_Sound_SetPitch
window.WXWASMSDK._JS_Sound_SetPosition = QG_JS_Sound_SetPosition
window.WXWASMSDK._JS_Sound_SetVolume = QG_JS_Sound_SetVolume
window.WXWASMSDK._JS_Sound_Stop = QG_JS_Sound_Stop