源战役客户端
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 

592 lignes
17 KiB

GameSettingManager = GameSettingManager or BaseClass(EventDispatcher)
--屏蔽
GameSettingManager.BLOCK_SETTING_CHANGE = "BLOCK_SETTING_CHANGE"
-- 性能设置
GameSettingManager.PerformanceList = {
[1] =
{
title = "帧 率",
name_list = {"","",""},
val_list = {40,45,50},
setting_str = "fps",
},
[2] =
{
title = "画 质",
name_list = {"","",""},
val_list = {1,2,3},
setting_str = "quality"
},
}
-- 性能设置默认值
GameSettingManager.performanceSetDefualt = {
fps = 50,
quality = 3,
}
-- 基础设置默认值
GameSettingManager.basicDefualt = {
music = 50,
soundEffect = 100,
playerCounts = 15,
}
--挂机界面的设置默认值
GameSettingManager.autoSetDefualt = {
reborn = false,
flyShoe = false,
powerSave = true,
autoSwallow = false,
}
-- 等级分辨率比例
GameSettingManager.Resolution = {
[1] = 0.8,
[2] = 0.85,
[3] = 1,
}
--[[
other = 屏蔽所有玩家
monster = 屏蔽所有怪物
shadow = 屏蔽阴影效果
flower = 屏蔽礼物效果
chatVoice = 屏蔽语音自动
horse = 屏蔽他人座驾
wing = 屏蔽他人炫翼
talisman = 屏蔽他人宝具
godWeapon = 屏蔽他人神兵
aiNiang = 屏蔽他人AI娘
otherPtc = 屏蔽他人技能
baby = 屏蔽他人孩子
fashion = 屏蔽他人时装
title = 屏蔽他人称号
pet = 屏蔽他人宠物
--]]
GameSettingManager.blockDefualt = {
other = false,
monster = false,
shadow = false,
flower = false,
chatVoice = true,
horse = false,
wing = false,
talisman = true,
godWeapon = false,
aiNiang = true,
otherPtc = true,
baby = true,
fashion = false,
title = false,
pet = true,
}
--频道屏蔽语音
GameSettingManager.blockChannel = {
[1] = "world",
[3] = "area",
[4] = "guild",
[13] = "cross",
}
function GameSettingManager:__init()
GameSettingManager.Instance = self
self.blockSet = {}
self.sysSet = CookieWrapper.Instance:GetCookie(CookieLevelType.Common,CookieKey.SYSTEM_SETTING)
self.soundSet = CookieWrapper.Instance:GetCookie(CookieLevelType.Common,CookieKey.SOUND_SETTING)
self.temp_blockSet = {}
local performanceCfg = GameSettingManager.PerformanceList and GameSettingManager.PerformanceList[1].val_list or nil
--系统设置
if not self.sysSet then
local effectQuality = 2
local screenQuality = 3
local frameCount = 50
if SystemMemoryLevel.Cur == SystemMemoryLevel.Low then
effectQuality = 1
frameCount = performanceCfg and performanceCfg[SystemMemoryLevel.Low] or 40
elseif SystemMemoryLevel.Cur == SystemMemoryLevel.Middle then
effectQuality = 2
frameCount = performanceCfg and performanceCfg[SystemMemoryLevel.Middle] or 50
else
effectQuality = 3
frameCount = performanceCfg and performanceCfg[SystemMemoryLevel.Hight] or 60
end
self.sysSet = {quality = screenQuality, effect = effectQuality, fps = frameCount, playerCounts = 15,
reborn = false, flyShoe = false, powerSave = true, autoSwallow = false,
}
else
local frameCount = 50
if SystemMemoryLevel.Cur == SystemMemoryLevel.Low then
frameCount = performanceCfg and performanceCfg[SystemMemoryLevel.Low] or 40
elseif SystemMemoryLevel.Cur == SystemMemoryLevel.Middle then
frameCount = performanceCfg and performanceCfg[SystemMemoryLevel.Middle] or 50
else
frameCount = performanceCfg and performanceCfg[SystemMemoryLevel.Hight] or 60
end
if not self.sysSet.fps then self.sysSet.fps = frameCount end
if not self.sysSet.quality then self.sysSet.quality = 2 end
if not self.sysSet.powerSave then self.sysSet.powerSave = true end
if not self.sysSet.playerCounts then self.sysSet.playerCounts = 15 end
end
--音效设置
if not self.soundSet then
self.soundSet = {sound = Config.ConfigSound.TotalVloume, effectSound = Config.ConfigSound.TotalSoundEffect}
end
--屏蔽设置
local cookie_blockSet = CookieWrapper.Instance:GetCookie(CookieLevelType.Common,CookieKey.BLOCK_SETTING)
if not cookie_blockSet then
self.blockSet = GameSettingManager.blockDefualt
self:CheckPerformBlock()
else
--低端机没有选择权,按系统的来
if SystemMemoryLevel.Cur == SystemMemoryLevel.Low then
self.blockSet = GameSettingManager.blockDefualt
self:CheckPerformBlock()
else
self.blockSet = cookie_blockSet
end
end
-- 设置shaderlod
if SystemMemoryLevel.Cur == SystemMemoryLevel.Low then
Optimizer.SetShaderLodValue(200)
end
-- 设置界面动画开关
ClientConfig.view_ani_mode = false
ClientConfig.tabwin_ani_mode = false
if SystemMemoryLevel.Cur ~= SystemMemoryLevel.Low then
ClientConfig.view_ani_mode = true
ClientConfig.tabwin_ani_mode = true
end
end
--未手动设置过屏蔽信息的话,每次上线都根据设备等级校正一次屏蔽项
function GameSettingManager:CheckPerformBlock( )
if SystemMemoryLevel.Cur then
if SystemMemoryLevel.Cur == SystemMemoryLevel.Low then
self.sysSet.playerCounts = 15
self.sysSet.fps = 40
self.performanceSetDefualt["fps"] = 40
self.blockSet.other = false -- 屏蔽所有玩家
self.blockSet.monster = false -- 屏蔽所有怪物
self.blockSet.shadow = true -- 屏蔽动态阴影
self.blockSet.flower = true -- 屏蔽礼物效果
self.blockSet.chatVoice = true -- 屏蔽自动语音
self.blockSet.horse = false -- 屏蔽他人座驾
self.blockSet.wing = true -- 屏蔽他人炫翼
self.blockSet.talisman = true -- 屏蔽他人宝具
self.blockSet.godWeapon = true -- 屏蔽他人神兵
self.blockSet.aiNiang = true -- 屏蔽他人AI娘
self.blockSet.otherPtc = true -- 屏蔽他人技能
self.blockSet.baby = true -- 屏蔽他人宝宝
self.blockSet.fashion = false -- 屏蔽他人时装
self.blockSet.title = true -- 屏蔽他人称号
self.blockSet.pet = true -- 屏蔽他人宠物
elseif SystemMemoryLevel.Cur == SystemMemoryLevel.Middle then
self.sysSet.playerCounts = 15
self.sysSet.fps = 45
self.performanceSetDefualt["fps"] = 45
self.blockSet.other = false -- 屏蔽所有玩家
self.blockSet.monster = false -- 屏蔽所有怪物
self.blockSet.shadow = false -- 屏蔽动态阴影
self.blockSet.flower = false -- 屏蔽礼物效果
self.blockSet.chatVoice = true -- 屏蔽自动语音
self.blockSet.horse = false -- 屏蔽他人座驾
self.blockSet.wing = false -- 屏蔽他人炫翼
self.blockSet.talisman = true -- 屏蔽他人宝具
self.blockSet.godWeapon = false -- 屏蔽他人神兵
self.blockSet.aiNiang = true -- 屏蔽他人AI娘
self.blockSet.otherPtc = true -- 屏蔽他人技能
self.blockSet.baby = true -- 屏蔽他人宝宝
self.blockSet.fashion = false -- 屏蔽他人时装
self.blockSet.title = false -- 屏蔽他人称号
self.blockSet.pet = true -- 屏蔽他人宠物
elseif SystemMemoryLevel.Cur == SystemMemoryLevel.Hight then
self.sysSet.playerCounts = 20
self.sysSet.fps = 50
self.performanceSetDefualt["fps"] = 50
self.blockSet.other = false -- 屏蔽所有玩家
self.blockSet.monster = false -- 屏蔽所有怪物
self.blockSet.shadow = false -- 屏蔽动态阴影
self.blockSet.flower = false -- 屏蔽礼物效果
self.blockSet.chatVoice = true -- 屏蔽自动语音
self.blockSet.horse = false -- 屏蔽他人座驾
self.blockSet.wing = false -- 屏蔽他人炫翼
self.blockSet.talisman = true -- 屏蔽他人宝具
self.blockSet.godWeapon = false -- 屏蔽他人神兵
self.blockSet.aiNiang = true -- 屏蔽他人AI娘
self.blockSet.otherPtc = true -- 屏蔽他人技能
self.blockSet.baby = true -- 屏蔽他人宝宝
self.blockSet.fashion = false -- 屏蔽他人时装
self.blockSet.title = false -- 屏蔽他人称号
self.blockSet.pet = true -- 屏蔽他人宠物
end
end
end
function GameSettingManager:getInstance()
if GameSettingManager.Instance == nil then
GameSettingManager.New()
end
return GameSettingManager.Instance
end
function GameSettingManager:GetBasicDefualt(key)
return self.basicDefualt[key]
end
--挂机界面的默认自动设置
function GameSettingManager:GetAutoSetDefualt(key)
return self.autoSetDefualt[key]
end
function GameSettingManager:GetBlockDefualt(key)
return self.blockDefualt[key]
end
function GameSettingManager:GetPerformanceDefualt(key)
return self.performanceSetDefualt[key]
end
-- 还原屏蔽默认设置
function GameSettingManager:SetBlockDefualt()
self.blockSet = GameSettingManager.blockDefualt
self:SaveBlockSet()
end
function GameSettingManager:ApplySetting()
self:ApplyQualityLevel()
self:ApplyEffectLevel()
self:ApplyPlayerCounts()
self:ApplyFPSLevel()
self:ApplySceneEffect()
end
function GameSettingManager:SaveSoundSet()
CookieWrapper.Instance:SaveCookie(CookieLevelType.Common, CookieTimeType.TYPE_ALWAYS, CookieKey.SOUND_SETTING, self.soundSet)
end
function GameSettingManager:SaveSysSet()
CookieWrapper.Instance:SaveCookie(CookieLevelType.Common, CookieTimeType.TYPE_ALWAYS, CookieKey.SYSTEM_SETTING, self.sysSet)
CookieWrapper.Instance:WriteAll()
end
function GameSettingManager:SaveBlockSet()
CookieWrapper.Instance:SaveCookie(CookieLevelType.Common, CookieTimeType.TYPE_ALWAYS, CookieKey.BLOCK_SETTING, self.blockSet)
end
------挂机界面的自动设置----start
function GameSettingManager:GetAutoRebornSet()
return self.sysSet.reborn
end
function GameSettingManager:SetAutoRebornSet(state)
self.sysSet.reborn = state
self:SaveSysSet()
end
function GameSettingManager:GetAutoSwallowSet()
return self.sysSet.autoSwallow
end
function GameSettingManager:SetAutoSwallowSet(state)
self.sysSet.autoSwallow = state
self:SaveSysSet()
end
function GameSettingManager:GetAutoFlyShoeSet()
return self.sysSet.flyShoe
end
function GameSettingManager:SetAutoFlyShoeSet(state)
self.sysSet.flyShoe = state
self:SaveSysSet()
end
function GameSettingManager:GetAutoPowerSaveSet()
return self.sysSet.powerSave
end
function GameSettingManager:SetAutoPowerSaveSet(state)
self.sysSet.powerSave = state
self:SaveSysSet()
end
------挂机界面的自动设置----end
function GameSettingManager:SetSoundValue(value)
self.soundSet.sound = value
self:SaveSoundSet()
end
function GameSettingManager:SetEffectSoundValue(value)
self.soundSet.effectSound = value
self:SaveSoundSet()
end
function GameSettingManager:GetQualityLevel()
-- if self.sysSet.powerSave then
-- return self.powerSet.quality
-- else
return self.sysSet.quality
-- end
end
--设置屏幕分辨率
function GameSettingManager:SetResolution(level)
if RuntimePlatform then
if SystemRuntimePlatform.IsAndroid() or SystemRuntimePlatform.IsIphone() then --or ClientConfig.iphone_x_model then
local scale = GameSettingManager.Resolution[level] or 1
if OriginalResolutionWidth < 1500 then
scale = 1 --1500以下就不要缩放了
end
if scale >= 1 and OriginalResolutionWidth > 2500 then
scale = 2340/OriginalResolutionWidth
end
ResolutionWidth = math.floor(OriginalResolutionWidth * scale)
ResolutionHeight = math.floor(OriginalResolutionHeight * scale)
UnityEngine.Screen.SetResolution(ResolutionWidth, ResolutionHeight, true)
ScreenConvertRatio = math.min(ResolutionWidth / OriginalScreenWidth,ResolutionHeight / OriginalScreenHeight)
ScreenWidth = ResolutionWidth / ScreenConvertRatio --游戏中的屏幕逻辑像素宽度 也就是所谓的视口坐标 用来逻辑运算用的
ScreenHeight = ResolutionHeight / ScreenConvertRatio --游戏中的屏幕逻辑像素高度 也就是所谓的视口坐标 用来逻辑运算用的
if SystemRuntimePlatform.IsIphone() then
CheckIphoneXState()
end
end
end
end
function GameSettingManager:SetQualityLevel(level)
if self.sysSet.quality and self.sysSet.quality == level then
return
end
self.sysSet.quality = level
self:ApplyQualityLevel()
self:SaveSysSet()
GlobalEventSystem:Fire(GameSettingEvent.ON_QUALITY_SETTING_CHANGE, level)
end
function GameSettingManager:ApplyQualityLevel(level)
local level = level or self.sysSet.quality
QualitySettings.SetQualityLevel(level - 1, false)
self:SetResolution(level)
end
--切换画质的时候手动修改后处理效果,进入游戏之后才能调用
function GameSettingManager:SetPostEffectLevel( level )
local level = level or self.sysSet.quality
if not MainCamera then
return
end
--后处理设定,画质:1低 2中 3高
print("tanar: [GameSettingManager 387]=> level: ",level)
if level == 3 then
-- 主摄像机
local is_support_main_effect = MainCamera:getInstance():IsSupportPostEffect()
if is_support_main_effect then
if MainCamera:getInstance().main_postEffect then
MainCamera:getInstance().main_postEffect.enabled = true
end
end
-- 模型摄像机泛光
local is_support_ui_effect = lua_viewM:IsSupportUIEffect()
if is_support_ui_effect then
if lua_viewM.bloom_effect then
lua_viewM.bloom_effect.enabled = true
-- 抗锯齿
-- if lua_viewM:IsSupportUIEffect() then
-- lua_viewM.bloom_effect.EnableFXAA = true
-- lua_viewM.bloom_effect.subpixelBlending = 0.4
-- lua_viewM.bloom_effect.lowQuality = true
-- lua_viewM.bloom_effect:ApplyFXAAMaterialProperties()
-- else
lua_viewM.bloom_effect.EnableFXAA = false
-- end
end
end
elseif level == 2 then
-- 主摄像机
if MainCamera:getInstance().main_postEffect then
MainCamera:getInstance().main_postEffect.enabled = false
end
-- 模型摄像机泛光
local is_support_ui_effect = lua_viewM:IsSupportUIEffect()
if is_support_ui_effect then
if lua_viewM.bloom_effect then
lua_viewM.bloom_effect.enabled = true
-- 抗锯齿
lua_viewM.bloom_effect.EnableFXAA = false
-- lua_viewM.bloom_effect:ApplyFXAAMaterialProperties()
end
end
elseif level == 1 then
if MainCamera:getInstance().main_postEffect then
MainCamera:getInstance().main_postEffect.enabled = false
end
if lua_viewM.bloom_effect then
lua_viewM.bloom_effect.enabled = false
end
end
end
function GameSettingManager:GetEffectLevel()
return self.sysSet.effect
end
function GameSettingManager:SetEffectLevel(level)
self.sysSet.effect = level
self:SaveSysSet()
self:ApplyEffectLevel()
end
function GameSettingManager:ApplyEffectLevel(level)
end
function GameSettingManager:ApplySceneEffect()
-- if MapView and MapView.Instance then
-- MapView.Instance:RefreshEffect()
-- end
end
function GameSettingManager:GetFPSLevel()
return self.sysSet.fps
end
function GameSettingManager:SetSceneEffect(state )
if MapView and MapView.Instance then
MapView.Instance:SetHideRefreshEffect(state)
end
end
function GameSettingManager:ApplyFPSLevel()
FINAL_FRAMERATE = self.sysSet.fps or FINAL_FRAMERATE
SetGameFrameRate(FINAL_FRAMERATE)
end
function GameSettingManager:GetPlayerCounts()
return self.sysSet.playerCounts
end
function GameSettingManager:SetPlayerCounts(number)
self.sysSet.playerCounts = number
self:SaveSysSet()
end
function GameSettingManager:ApplyPlayerCounts()
GlobalEventSystem:Fire(SceneEventType.UPDATE_ROLE_LIMIT)
end
function GameSettingManager:ApplyMonsterVisibleState()
if self:GetBlockProperty("monster") then
GlobalEventSystem:Fire(SceneEventType.HIDE_ALL_MONSTER)
else
GlobalEventSystem:Fire(SceneEventType.SHOW_ALL_MONSTER)
end
end
function GameSettingManager:EnableEffectSound(state)
self.sysSet.effectSound = state
self:SaveSysSet()
lua_soundM:SwitchEffectState(state)
end
function GameSettingManager:EnableMusicSound(state)
self.sysSet.musicSound = state
self:SaveSysSet()
lua_soundM:SwitchMusicState(state)
end
function GameSettingManager:EnablePowerSave(state)
self.sysSet.powerSave = state
self:SaveSysSet()
end
function GameSettingManager:GetTargetPriority()
return 2
end
function GameSettingManager:GetBlockProperty(key)
if SceneManager.Instance:IsPkRankFightScene() then
return false
end
return self.blockSet[key]
end
function GameSettingManager:SetBlockProperty(key, value)
if self.blockSet[key] and self.blockSet[key] == value then return end
self.blockSet[key] = value
self:SaveBlockSet()
self:Fire(GameSettingManager.BLOCK_SETTING_CHANGE, key, value)
end
-- performance的cookie也存在sysSet里面
function GameSettingManager:GetPerformanceProperty(key)
return self.sysSet[key]
end
function GameSettingManager:SetPerformanceProperty(key, value)
if self.sysSet[key] and self.sysSet[key] == value then return end
self.sysSet[key] = value
self:SaveSysSet()
if key == "quality" then
self:SetQualityLevel(value)
elseif key == "fps" then
self:ApplyFPSLevel()
end
end
--临时设置屏蔽标识
function GameSettingManager:SetBlockPropertyTemp(key, value)
if (self.blockSet[key] and self.blockSet[key] == value) or (self.temp_blockSet[key] and self.temp_blockSet[key] == value) then return end
self.temp_blockSet[key] = value
self:Fire(GameSettingManager.BLOCK_SETTING_CHANGE, key, value)
end
--获得是否存在标识
function GameSettingManager:ExistBlockSet(key)
return self.blockSet[key] or self.temp_blockSet[key]
end
--是否屏蔽特效副本场景
function GameSettingManager:NotBlockEffecScene(sceneId)
--以下玩法需要根据内存情况 判断是否默认开启特效
if SceneManager:getInstance():IsLeagueWarScene(sceneId) or SceneManager:getInstance():IsCSPvP(sceneId) or SceneManager:getInstance():IsPkBattleScene(sceneId) then
if SystemMemoryLevel.Cur == SystemMemoryLevel.Hight then
return true
else
return false
end
end
if SceneManager:getInstance():IsDiamondFightScene(sceneId) or SceneManager:getInstance():IsTopPkScene(sceneId) then
return true
end
return false
end
--获得帧率上限
function GameSettingManager:GetFrameRate( )
return self.sysSet.frameRate or 60
end