using MoleMole.Config; using UnityEngine; using UnityEngine.UI; namespace MoleMole { public class MonoSettingGraphicsTab : MonoBehaviour { public Transform[] grades; public Transform[] processes; public Button[] configButtons; public Transform ecoMode; private ConfigGraphicsPersonalSetting _modifiedPersonalSetting; private bool isInLevelSimpleSetting; public void SetupView(bool inLevelSimpleSetting = false) { isInLevelSimpleSetting = inLevelSimpleSetting; _modifiedPersonalSetting = new ConfigGraphicsPersonalSetting(); GraphicsSettingData.CopyPersonalGraphicsConfig(ref _modifiedPersonalSetting); ResetView(); } public void ResetView() { if (_modifiedPersonalSetting.IsEcoMode) { ShowEcoModeConfig(); } else if (_modifiedPersonalSetting.IsUserDefinedGrade || _modifiedPersonalSetting.IsUserDefinedVolatile) { ShowPersonalConfig(); } else { ShowDefaultRecommendCompleteConfig(); } ShowRecommendMark(); SetupEcoMode(); } public bool CheckNeedSave() { return !GraphicsSettingData.IsEqualToPersonalConfigIgnoreContrast(_modifiedPersonalSetting); } public void OnRecommendGradeBtnClick(int index) { if (_modifiedPersonalSetting.IsEcoMode || !_modifiedPersonalSetting.IsUserDefinedGrade || index != (int)_modifiedPersonalSetting.RecommendGrade) { _modifiedPersonalSetting.IsUserDefinedGrade = true; _modifiedPersonalSetting.IsUserDefinedVolatile = false; _modifiedPersonalSetting.IsEcoMode = false; _modifiedPersonalSetting.RecommendGrade = (GraphicsRecommendGrade)index; ConfigGraphicsSetting graphicsRecommendCompleteConfig = GraphicsSettingData.GetGraphicsRecommendCompleteConfig((GraphicsRecommendGrade)index); GraphicsSettingData.ApplySettingConfig(graphicsRecommendCompleteConfig); EnableAllConfigBtns(false); ShowRecommendCompleteConfig((GraphicsRecommendGrade)index); SetupEcoMode(); } } public void OnPersonalGradeBtnClick() { _modifiedPersonalSetting.IsUserDefinedGrade = false; ConfigGraphicsPersonalSetting personalGraphicsSetting = Singleton.Instance.GeneralLocalData.PersonalGraphicsSetting; if (personalGraphicsSetting.IsUserDefinedVolatile) { GraphicsSettingData.CopyPersonalGraphicsConfig(ref _modifiedPersonalSetting); } else { GraphicsSettingData.CopyToPersonalGraphicsConfig(GraphicsSettingData.GetGraphicsRecommendCompleteConfig(), ref _modifiedPersonalSetting); } ConfigGraphicsSetting graphicsPersonalSettingConfig = GraphicsSettingData.GetGraphicsPersonalSettingConfig(_modifiedPersonalSetting); GraphicsSettingData.ApplySettingConfig(graphicsPersonalSettingConfig); _modifiedPersonalSetting.IsUserDefinedVolatile = true; _modifiedPersonalSetting.IsEcoMode = false; ShowPersonalConfig(); SetupEcoMode(); } public void OnResolutionBtnClick(int grade) { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; _modifiedPersonalSetting.ResolutionQuality = (ResolutionQualityGrade)grade; GraphicsSettingUtil.ApplyResolution(_modifiedPersonalSetting.ResolutionPercentage, _modifiedPersonalSetting.ResolutionQuality, _modifiedPersonalSetting.RecommendResolutionX, _modifiedPersonalSetting.RecommendResolutionY); ShowResolution(_modifiedPersonalSetting.ResolutionQuality, false); } public void OnTargetFrameRateBtnClick(bool is30Rate) { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; if (is30Rate) { _modifiedPersonalSetting.TargetFrameRate = 30; } else { _modifiedPersonalSetting.TargetFrameRate = 60; } GraphicsSettingUtil.SetTargetFrameRate(_modifiedPersonalSetting.TargetFrameRate); ShowTargetFrameRate(_modifiedPersonalSetting.TargetFrameRate, false); } public void OnPostFXBtnClick(bool willBeOn) { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; _modifiedPersonalSetting.VolatileSetting.UsePostFX = willBeOn; bool forceWhenDisable = true; GraphicsSettingUtil.EnablePostFX(willBeOn, forceWhenDisable); ShowPostFX(_modifiedPersonalSetting, false); } public void OnReflectionBtnClick(bool willBeOn) { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; _modifiedPersonalSetting.VolatileSetting.UseReflection = willBeOn; GraphicsSettingUtil.EnableReflection(willBeOn); ShowReflection(_modifiedPersonalSetting.VolatileSetting.UseReflection, false); } public void OnDynamicBoneBtnClick(bool willBeOn) { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; _modifiedPersonalSetting.VolatileSetting.UseDynamicBone = willBeOn; GraphicsSettingUtil.EnableDynamicBone(willBeOn); ShowDynamicBone(_modifiedPersonalSetting.VolatileSetting.UseDynamicBone, false); } public void OnPostFXGradeBtnClick() { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; if (_modifiedPersonalSetting.VolatileSetting.PostFXGrade == PostEffectQualityGrade.Low) { _modifiedPersonalSetting.VolatileSetting.PostFXGrade = PostEffectQualityGrade.High; } else { _modifiedPersonalSetting.VolatileSetting.PostFXGrade = PostEffectQualityGrade.Low; } GraphicsSettingUtil.SetPostEffectBufferSizeByQuality(_modifiedPersonalSetting.PostFxGradeBufferSize, _modifiedPersonalSetting.VolatileSetting.PostFXGrade); ShowPostFXGrade(_modifiedPersonalSetting.VolatileSetting.PostFXGrade, false, true); } public void OnHDRBtnClick() { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; bool useHDR = _modifiedPersonalSetting.VolatileSetting.UseHDR; _modifiedPersonalSetting.VolatileSetting.UseHDR = !useHDR; GraphicsSettingUtil.EnableHDR(useHDR); ShowHDR(_modifiedPersonalSetting.VolatileSetting.UseHDR, false, true); } public void OnAABtnClick() { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; bool useFXAA = _modifiedPersonalSetting.VolatileSetting.UseFXAA; _modifiedPersonalSetting.VolatileSetting.UseFXAA = !useFXAA; GraphicsSettingUtil.EnableFXAA(useFXAA); ShowAA(_modifiedPersonalSetting.VolatileSetting.UseFXAA, false, true); } public void OnDistortionBtnClick() { _modifiedPersonalSetting.IsUserDefinedGrade = false; _modifiedPersonalSetting.IsUserDefinedVolatile = true; bool useDistortion = _modifiedPersonalSetting.VolatileSetting.UseDistortion; _modifiedPersonalSetting.VolatileSetting.UseDistortion = !useDistortion; GraphicsSettingUtil.EnableDistortion(useDistortion); ShowDistortion(_modifiedPersonalSetting.VolatileSetting.UseDistortion, false, true); } public void OnEcoModeBtnClick(bool willBeOn) { GraphicsSettingData.CopyPersonalGraphicsConfig(willBeOn, ref _modifiedPersonalSetting); ResetView(); } public void OnNoSaveBtnClick() { GraphicsSettingData.ApplySettingConfig(); GraphicsSettingData.CopyPersonalGraphicsConfig(ref _modifiedPersonalSetting); ResetView(); } public void OnSaveBtnClick() { GraphicsSettingData.SavePersonalConfigIgnoreContrast(_modifiedPersonalSetting); Singleton.Instance.ShowDialog(new GeneralHintDialogContext(LocalizationGeneralLogic.GetText("Menu_SettingSaveSuccess"))); } public void SwitchEcoMode() { GraphicsSettingData.CopyPersonalGraphicsConfig(!_modifiedPersonalSetting.IsEcoMode, ref _modifiedPersonalSetting); GraphicsSettingData.SavePersonalConfigIgnoreContrast(_modifiedPersonalSetting); ResetView(); string textID = ((!_modifiedPersonalSetting.IsEcoMode) ? "Menu_SettingEcoModeOffTip" : "Menu_SettingEcoModeOnTip"); Singleton.Instance.ShowDialog(new GeneralHintDialogContext(LocalizationGeneralLogic.GetText(textID))); } private void ShowDefaultRecommendCompleteConfig() { EnableAllConfigBtns(false); GraphicsRecommendGrade graphicsRecommendGrade = GraphicsSettingData.GetGraphicsRecommendGrade(); ShowRecommendCompleteConfig(graphicsRecommendGrade); } private void ShowRecommendCompleteConfig(GraphicsRecommendGrade grade) { ShowRecommendGradeInfo(grade); ConfigGraphicsSetting graphicsRecommendCompleteConfig = GraphicsSettingData.GetGraphicsRecommendCompleteConfig(grade); ShowGraphicsSettingConfig(graphicsRecommendCompleteConfig, true); } private void ShowGraphicsSettingConfig(ConfigGraphicsSetting setting, bool isRecommend) { if (!isInLevelSimpleSetting) { Transform transform = base.transform.Find("Content/DetailSetting/BG"); transform.Find("Grey").gameObject.SetActive(isRecommend); transform.Find("Blue").gameObject.SetActive(!isRecommend); ShowResolution(setting.ResolutionQuality, isRecommend); ShowTargetFrameRate(setting.TargetFrameRate, isRecommend); ShowPostFX(setting, isRecommend); ShowReflection(setting.VolatileSetting.UseReflection, isRecommend); ShowDynamicBone(setting.VolatileSetting.UseDynamicBone, isRecommend); ShowPostFXGrade(setting.VolatileSetting.PostFXGrade, isRecommend, setting.VolatileSetting.UsePostFX); ShowHDR(setting.VolatileSetting.UseHDR, isRecommend, setting.VolatileSetting.UsePostFX); ShowAA(setting.VolatileSetting.UseFXAA, isRecommend, setting.VolatileSetting.UsePostFX); ShowDistortion(setting.VolatileSetting.UseDistortion, isRecommend, setting.VolatileSetting.UsePostFX); } } private void ShowResolution(ResolutionQualityGrade resolutionGrade, bool isRecommend) { Transform transform = base.transform.Find("Content/DetailSetting/FirstLine/Resolution"); Transform transform2 = transform.Find("Mark"); transform2.Find("Enable").gameObject.SetActive(!isRecommend); transform2.Find("Disable").gameObject.SetActive(isRecommend); Transform transform3 = transform.Find("Choice/Low"); Transform transform4 = transform.Find("Choice/Middle"); Transform transform5 = transform.Find("Choice/High"); Transform transform6 = transform.Find("Label"); Transform transform7 = transform3.Find("Text"); Transform transform8 = transform4.Find("Text"); Transform transform9 = transform5.Find("Text"); if (isRecommend) { transform3.Find("Blue").gameObject.SetActive(false); transform3.Find("Grey").gameObject.SetActive(false); transform3.Find("Disable").gameObject.SetActive(true); transform4.Find("Blue").gameObject.SetActive(false); transform4.Find("Grey").gameObject.SetActive(false); transform4.Find("Disable").gameObject.SetActive(true); transform5.Find("Blue").gameObject.SetActive(false); transform5.Find("Grey").gameObject.SetActive(false); transform5.Find("Disable").gameObject.SetActive(true); transform6.GetComponent().color = MiscData.GetColor("GraphicsSettingDisableText"); transform7.GetComponent().color = MiscData.GetColor("GraphicsSettingDisableText"); transform8.GetComponent().color = MiscData.GetColor("GraphicsSettingDisableText"); transform9.GetComponent().color = MiscData.GetColor("GraphicsSettingDisableText"); transform3.Find("Check").GetComponent().color = MiscData.GetColor("GraphicsSettingDisableRadioboxCheck"); transform4.Find("Check").GetComponent().color = MiscData.GetColor("GraphicsSettingDisableRadioboxCheck"); transform5.Find("Check").GetComponent().color = MiscData.GetColor("GraphicsSettingDisableRadioboxCheck"); } else { transform3.Find("Disable").gameObject.SetActive(false); transform4.Find("Disable").gameObject.SetActive(false); transform5.Find("Disable").gameObject.SetActive(false); transform6.GetComponent().color = Color.white; transform7.GetComponent().color = Color.white; transform8.GetComponent().color = Color.white; transform9.GetComponent().color = Color.white; transform3.Find("Check").GetComponent().color = Color.white; transform4.Find("Check").GetComponent().color = Color.white; transform5.Find("Check").GetComponent().color = Color.white; } switch (resolutionGrade) { case ResolutionQualityGrade.High: transform3.Find("Button").GetComponent