|
|
- 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
|