forked from endernon/PGRData
350 lines
No EOL
11 KiB
Lua
350 lines
No EOL
11 KiB
Lua
local CSXAudioManager = CS.XAudioManager
|
||
|
||
XSoundManager = XSoundManager or {}
|
||
|
||
XSoundManager.SoundType = {
|
||
BGM = 1,
|
||
Sound = 2,
|
||
CV = 3,
|
||
}
|
||
|
||
XSoundManager.PlayFunc = {
|
||
[XSoundManager.SoundType.BGM] = CSXAudioManager.PlayMusic,
|
||
[XSoundManager.SoundType.Sound] = CSXAudioManager.PlaySound,
|
||
[XSoundManager.SoundType.CV] = CSXAudioManager.PlayCv,
|
||
}
|
||
|
||
XSoundManager.SetVolumeFunc = {
|
||
[XSoundManager.SoundType.BGM] = CSXAudioManager.ChangeMusicVolume,
|
||
[XSoundManager.SoundType.Sound] = CSXAudioManager.ChangeSoundVolume,
|
||
[XSoundManager.SoundType.CV] = CSXAudioManager.ChangeCvVolume,
|
||
}
|
||
|
||
XSoundManager.GetVolumeFunc = {
|
||
[XSoundManager.SoundType.BGM] = CSXAudioManager.GetMusicVolume,
|
||
[XSoundManager.SoundType.Sound] = CSXAudioManager.GetSoundVolume,
|
||
[XSoundManager.SoundType.CV] = CSXAudioManager.GetCvVolume,
|
||
}
|
||
|
||
XSoundManager.UiBasicsMusic = {
|
||
NoSound = 0, -- 无音效
|
||
ClickOn = 501, -- 按钮点击
|
||
Intercept = 504, -- 点击拦截
|
||
Success = 505, -- 成功
|
||
Defeat = 507, -- 失败
|
||
Promotion = 506, -- 提升
|
||
Slide = 508,
|
||
|
||
--添加
|
||
Main_huge = 1011, --主界面大按钮
|
||
Main_middle = 1012, --主界面中按钮
|
||
Main_small = 1013, --主界面中按钮
|
||
Main_turnOver = 1014, --主界面翻转
|
||
|
||
--公共
|
||
Tip_small = 1021,
|
||
Tip_Big = 1022,
|
||
Skip = 1023, --跳过
|
||
Return = 1024, --返回
|
||
Confirm = 1025, --确认
|
||
Triangle = 1026, --三角形按钮
|
||
Tip_Up = 1027, --数值增
|
||
Tip_Down = 1028, --数值减
|
||
|
||
--通用
|
||
Common_UiPlayerUp = 1094, --指挥官升级
|
||
Common_UiFunctionalOpen = 1099, --通讯出来
|
||
Common_UiObtain = 1095, --奖励弹窗
|
||
|
||
--角色
|
||
UiCharacter_LevelUp = 1094, --升级成功
|
||
UiCharacter_GradeUp = 1094, --晋升成功
|
||
UiCharacter_QualityUp = 1094, --进化成功
|
||
UiCharacter_Liberation = 1094, --解放成功
|
||
UiCharacter_QualityFragments = 1097, --使用碎片激活
|
||
UiCharacter_UnlockBegin = 1101, --解锁角色 动画出现时
|
||
UiCharacter_UnlockEnd = 1094, --解锁角色 动画结束时
|
||
|
||
--装备
|
||
UiEquip_BreakThroughPopUp = 1094, --武器突破成功
|
||
UiEquip_ResonanceSelectAfter = 1096, --武器共鸣成功
|
||
|
||
--副本
|
||
Fight_Difficult_Select = 1031, --难度选择
|
||
Fight_PageSwitch = 1032, --页面切换
|
||
Fight_Start_Fight = 1041, --进入作战
|
||
Fight_PageSwitch_Up = 1042, --关卡上翻页
|
||
Fight_PageSwitch_Down = 1043, --关卡上翻页
|
||
Fight_Collect = 1044, --收集率奖励入口
|
||
|
||
Fight_Enter_Game = 1034, -- 进入游戏按钮音效
|
||
Fight_Click_Role = 1051, -- 点击角色
|
||
Fight_Switch_Site = 1052, --换阵位
|
||
Fight_Click_Team = 1053, -- 点击队伍
|
||
Fight_Open_Help = 1054, -- 点击助战
|
||
Fight_Close_Help = 1055, -- 关闭助战
|
||
|
||
Fuben_UiRoomCharacter_Fashion = 1056, -- 点击队员编辑界面时装按钮音效
|
||
Fuben_UiRoomCharacter_Equip = 1057, -- 点击队员编辑界面装备按钮音效
|
||
Fuben_UiRoomCharacter_QuitTeam = 1058, -- 点击队员编辑界面移出队伍音效
|
||
Fuben_UiRoomCharacter_JoinTeam = 1059, -- 点击队员编辑界面编入队伍音效
|
||
|
||
UiActivityBranch_SwitchBg = 1102, --极地副本切换背景图
|
||
UiActivityBrief_Anim = 1103, --极地活动简介入场动画音效
|
||
|
||
UiActivity_Jidi_BGM = 6, --极地暗流版本BGM
|
||
UiActivity_ChinaBoat_BGM = 18, --中国船BGM
|
||
UiActivity_NewYear_BGM = 11, --新年活动BGM
|
||
UiActivity_FoolsDay_BGM = 205, --愚人节活动BGM
|
||
|
||
--时装/仓库
|
||
UiFashion_Click = 1060, -- 点击不同时装音效
|
||
UiEquipReplace_Click = 1061, -- 点击选择武器
|
||
--仓库
|
||
UiBag_Chip_Click = 1062, -- 点击选择不同意识
|
||
UiBag_EquipInfo_Click = 1063, -- 点击装备界面详细信息查看音效
|
||
UiBag_EquipOn_Click = 1064, -- 点击装备界面装备按钮音效
|
||
UiBag_EquipOff_Click = 1065, -- 点击装备界面卸下按钮音效
|
||
UiBag_EquipSelect_Click = 1066, -- 点击装备界面功能选择按钮音效
|
||
UiBag_EquipRes_Click = 1067, -- 点击装备界面材料按钮音效
|
||
|
||
UiEquip_Intensify_Click = 1068, -- 点击强化按钮音效
|
||
UiEquip_Intensify_Up_Click = 1069, -- 装备强化等级提升
|
||
UiEquip_Awake_Click = 1070, -- 点击装备觉醒按钮音效
|
||
UiEquip_Awake_Up_Click = 1071, -- 装备觉醒等级提升
|
||
|
||
--抽卡
|
||
UiDrawCard_BoxOpen = 1517, --开启宝箱音效
|
||
UiDrawCard_GachaOpen = 1617, --开启活动魔方音效
|
||
UiDrawCard_Type = { --卡片展示音效
|
||
--普通
|
||
Normal = {
|
||
Start = 1518,
|
||
Show = 1530,
|
||
},
|
||
--五星
|
||
FiveStar = {
|
||
Start = 1519,
|
||
Show = 1531,
|
||
},
|
||
--六星
|
||
SixStar = {
|
||
Start = 1520,
|
||
Show = 1532,
|
||
},
|
||
},
|
||
UiDrawCard_Reward_Normal = 1521, --普通获得奖励音效
|
||
UiDrawCard_Reward_Suipian = 1522, --获得奖励转为碎片音效
|
||
UiDrawCard_Chouka_Name = 1533, --抽卡-角色名字出现
|
||
|
||
-- 结算
|
||
UiSettle_Win_Number = 1098, -- 战斗结算播放分数音效
|
||
|
||
--追击玩法
|
||
ChessPursuit_BossJump = 841,
|
||
ChessPursuit_FightWarning = 842,
|
||
|
||
UiLuckDraw_DragCoin = 1700028, -- 元旦抽奖音效
|
||
UiLuckDraw_Cube = 1617, -- 元旦抽奖音效
|
||
|
||
--2021端午活动
|
||
RpgMakerGame_Move = 875, --移动音效
|
||
RpgMakerGame_Death = 876, --死亡音效
|
||
RpgMakerGame_EndPointOpen = 877, --终点开启音效
|
||
RpgMakerGame_TriggerType2 = 878, --机关类型2的触发音效
|
||
RpgMakerGame_TriggerType3 = 879, --机关类型3的触发音效
|
||
RpgMakerGame_Elecboom = 951, --被电音效
|
||
RpgMakerGame_ElectricStatusSwitch = 952, --电墙机关切换音效
|
||
RpgMakerGame_SentrySign = 953, --哨戒产生的音效
|
||
RpgMakerGame_DieByTrap = 954, --掉入陷阱的音效
|
||
RpgMakerGame_DieByDrown = 2533, --溺亡音效
|
||
RpgMakerGame_Frezz = 2534, --结冰音效
|
||
RpgMakerGame_Melt = 2535, --融化音效
|
||
RpgMakerGame_Burn = 2536, --燃烧音效
|
||
RpgMakerGame_Grow = 2537, --生长音效
|
||
RpgMakerGame_Adsorb = 2538, --雷电吸附音效
|
||
RpgMakerGame_Broken = 2539, --破裂的钢板音效
|
||
RpgMakerGame_TransferDis = 2540, --传送消失音效
|
||
RpgMakerGame_Transfer = 2541, --传送出现音效
|
||
RpgMakerGame_TransferFail = 2542, --传送失败音效
|
||
RpgMakerGame_BubbleBroken = 2695, --泡泡爆炸音效
|
||
|
||
-- 公会战二期
|
||
GuildWar_FireToBase = 2630, -- 炮击基地
|
||
GuildWar_BaseBeHit = 2631, -- 基地受击
|
||
|
||
-- 魔方BGM
|
||
SpecialTrainBreakthroughNormal = 32,
|
||
SpecialTrainBreakthroughHell = 173,
|
||
|
||
-- 八卦密码锁音效
|
||
FightMovieBagua = 2779
|
||
}
|
||
|
||
local onValueTime = true
|
||
local soundTime = 0
|
||
|
||
XSoundManager.GetSoundTime = function(time)
|
||
if onValueTime == false then
|
||
if soundTime == 0 then
|
||
soundTime = math.ceil(time) * 1000
|
||
XScheduleManager.ScheduleOnce(function()
|
||
onValueTime = true
|
||
soundTime = 0
|
||
end, math.ceil(time) * 1000)
|
||
end
|
||
end
|
||
end
|
||
|
||
function XSoundManager.PlayBtnMusic(value, type)
|
||
if type == "onClick" then
|
||
if value == 0 then
|
||
return
|
||
end
|
||
end
|
||
if type == "onValueChanged" then
|
||
if onValueTime == true then
|
||
--onValueTime = false
|
||
if value then
|
||
if value == 0 then
|
||
onValueTime = true
|
||
return
|
||
end
|
||
CSXAudioManager.PlaySound(value)
|
||
end
|
||
end
|
||
end
|
||
if type == "onEndEdit" then
|
||
if value == nil then
|
||
CSXAudioManager.PlaySound(XSoundManager.UiBasicsMusic.ClickOn)
|
||
else
|
||
if value == 0 then
|
||
return
|
||
end
|
||
CSXAudioManager.PlaySound(value)
|
||
end
|
||
end
|
||
end
|
||
|
||
-- 延迟播放BGM(临时解决)
|
||
function XSoundManager.PlaySoundDoNotInterrupt(cueId)
|
||
XScheduleManager.ScheduleOnce(function()
|
||
CSXAudioManager.PlayMusic(cueId)
|
||
end, 100)
|
||
end
|
||
|
||
function XSoundManager.PlaySoundByType(cueId, soundType)
|
||
if not cueId then
|
||
XLog.Error("XSoundManager.PlaySoundByType函数错误,参数cueId不能为空")
|
||
return
|
||
end
|
||
|
||
local func = XSoundManager.PlayFunc[soundType]
|
||
if not func then
|
||
XLog.Error("XSoundManager.PlaySoundByType 函数错误, 不存在此声音类型, 类型是:" .. soundType)
|
||
return
|
||
end
|
||
|
||
return func(cueId)
|
||
end
|
||
|
||
function XSoundManager.SetVolumeByType(volume, soundType)
|
||
if not volume then
|
||
XLog.Error("XSoundManager.SetVolumeByType 函数错误: 参数volume不能为空")
|
||
return
|
||
end
|
||
|
||
local func = XSoundManager.SetVolumeFunc[soundType]
|
||
if not func then
|
||
XLog.Error("XSoundManager.SetVolumeByType 函数错误, 不存在此声音类型, 类型是: " .. soundType)
|
||
return
|
||
end
|
||
|
||
func(volume)
|
||
end
|
||
|
||
function XSoundManager.GetVolumeByType(soundType)
|
||
local func = XSoundManager.GetVolumeFunc[soundType]
|
||
if not func then
|
||
XLog.Error("XSoundManager.GetVolumeFunc 函数错误, 不存在此声音类型, 类型是: " .. soundType)
|
||
return
|
||
end
|
||
|
||
return func()
|
||
end
|
||
|
||
function XSoundManager.PauseMusic()
|
||
CSXAudioManager.PauseMusic()
|
||
end
|
||
|
||
function XSoundManager.ResumeMusic()
|
||
CSXAudioManager.ResumeMusic()
|
||
end
|
||
|
||
function XSoundManager.GetCurrentBgmCueId()
|
||
return CSXAudioManager.CurrentMusicId
|
||
end
|
||
|
||
function XSoundManager.Stop(cueId)
|
||
CSXAudioManager.Stop(cueId)
|
||
end
|
||
|
||
function XSoundManager.StopAll()
|
||
CSXAudioManager.StopAll()
|
||
end
|
||
|
||
function XSoundManager.StopCurrentBGM()
|
||
local info = CS.XAudioManager.CurrentMusicAudioInfo1
|
||
if info and info.IsBgm then
|
||
CSXAudioManager.StopMusic()
|
||
end
|
||
|
||
if not CSXAudioManager.GetAudioInfoList then
|
||
return
|
||
end
|
||
local infoList = CSXAudioManager.GetAudioInfoList()
|
||
local bgmList = {}
|
||
for i = 0, infoList.Count - 1 do
|
||
local info = infoList[i]
|
||
if info.IsBgm then
|
||
bgmList[#bgmList + 1] = info.CueId
|
||
end
|
||
end
|
||
for i = 1, #bgmList do
|
||
XSoundManager.Stop(bgmList[i])
|
||
end
|
||
end
|
||
|
||
---恢复回系统音声设置(用于恢复被滤镜型cri音频调整后的cri音频系统配置)
|
||
function XSoundManager.ResetSystemAudioVolume()
|
||
local XAManager = CS.XAudioManager
|
||
local cvVolume = XAManager.CvVolume
|
||
local musicVolume = XAManager.MusicVolume
|
||
local soundVolume = XAManager.SoundVolume
|
||
local control = XAManager.Control
|
||
if control == 2 then
|
||
XAManager.ChangeMusicVolume(0)
|
||
XAManager.ChangeSoundVolume(0)
|
||
XAManager.ChangeCvVolume(0)
|
||
else
|
||
XAManager.ChangeMusicVolume(musicVolume)
|
||
XAManager.ChangeSoundVolume(soundVolume)
|
||
XAManager.ChangeCvVolume(cvVolume)
|
||
end
|
||
end
|
||
|
||
---查找当前播放的Cue中是否存在指定cueId声效
|
||
---@param cueId integer
|
||
---@return CS.XAudioManager.AudioInfo|nil
|
||
function XSoundManager.CheckHaveCue(cueId)
|
||
if not CSXAudioManager.GetAudioInfoList then
|
||
return
|
||
end
|
||
local infoList = CSXAudioManager.GetAudioInfoList()
|
||
for i = 0, infoList.Count - 1 do
|
||
local info = infoList[i]
|
||
if info.CueId == cueId then
|
||
return info
|
||
end
|
||
end
|
||
end |