497 lines
17 KiB
C#
497 lines
17 KiB
C#
using Games.GlobeDefine;
|
|
using GCGame.Table;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.UI;
|
|
|
|
public class SystemLogic : MonoBehaviour
|
|
{
|
|
public void Start()
|
|
{
|
|
InitGraphicSetting();
|
|
InitBaseSetting();
|
|
InitPlayerInfo();
|
|
InitFuncSetting();
|
|
InitVoiceSetting();
|
|
_init = true;
|
|
OnEnable();
|
|
}
|
|
|
|
public void OnCloseClick()
|
|
{
|
|
UIManager.CloseUI(UIInfo.SystemAndAutoFight);
|
|
}
|
|
|
|
#region base setting
|
|
|
|
public Toggle _BtnMusic;
|
|
public Toggle _BtnSound;
|
|
public Toggle _Shock;
|
|
public Toggle _CameraShake;
|
|
public Slider _SoundVolume;
|
|
public Text _ViewPlayerCount;
|
|
public Toggle[] _QualityToggles;
|
|
public Toggle[] _hideToggles;
|
|
public Toggle[] _EffectLimitToggles;
|
|
public Toggle[] _TerrainQualityToggles;
|
|
|
|
public void InitBaseSetting()
|
|
{
|
|
InitToggleVC(_BtnMusic, PlayerPreferenceData.SystemMusic);
|
|
InitToggleVC(_BtnSound, PlayerPreferenceData.SystemSoundEffect);
|
|
InitToggleVC(_Shock, PlayerPreferenceData.SystemShock);
|
|
InitToggleVC(_CameraShake, PlayerPreferenceData.SystemCameraShake);
|
|
_SoundVolume.value = PlayerPreferenceData.SystemSoundVolum;
|
|
}
|
|
|
|
public void OnMusic(bool on)
|
|
{
|
|
PlayerPreferenceData.SystemMusic.Set(on);
|
|
}
|
|
|
|
public void OnSoundEffect(bool on)
|
|
{
|
|
PlayerPreferenceData.SystemSoundEffect.Set(on);
|
|
if (GameManager.gameManager.ActiveScene != null)
|
|
GameManager.gameManager.ActiveScene.SetSceneSoundEffect(on);
|
|
if (HitTipLogic.Instance())
|
|
HitTipLogic.Instance().RefreshVolumn();
|
|
}
|
|
|
|
public void OnSoundVolume(float value)
|
|
{
|
|
PlayerPreferenceData.SystemSoundVolum = value;
|
|
SoundManager.SetGlobalVolumn(value);
|
|
if (HitTipLogic.Instance())
|
|
HitTipLogic.Instance().RefreshVolumn();
|
|
}
|
|
#endregion
|
|
|
|
#region playerInfo
|
|
|
|
public Image _PlayerIcon;
|
|
public Text _PlayerName;
|
|
public Text _ServerName;
|
|
|
|
public void InitPlayerInfo()
|
|
{
|
|
var strPlayerHeadPic = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.HeadPic;
|
|
LoadAssetBundle.Instance.SetImageSprite(_PlayerIcon, strPlayerHeadPic);
|
|
_PlayerName.text = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName;
|
|
var lastServerData = LoginData.GetServerListDataByID(PlayerPreferenceData.LastServer);
|
|
_ServerName.text = lastServerData.m_name;
|
|
}
|
|
|
|
public void OnAccountClick()
|
|
{
|
|
var dicStr = StrDictionary.GetClientDictionaryString("#{2897}");
|
|
MessageBoxLogic.OpenOKCancelBox(dicStr, "", OnAccountOK, OnMessageBoxNO);
|
|
}
|
|
|
|
public void OnAccountOK()
|
|
{
|
|
SdkControl.instance.Logout();
|
|
UIManager.CloseUI(UIInfo.SystemAndAutoFight);
|
|
}
|
|
|
|
public void OnMessageBoxNO()
|
|
{
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region graphic setting
|
|
|
|
public Toggle _Water;
|
|
|
|
// public Toggle _Enlighten;
|
|
public Toggle _Distortion;
|
|
|
|
public Toggle _DymShadow;
|
|
public Toggle _Fog;
|
|
public Toggle _AntiAntialiasing;
|
|
|
|
// public Toggle _Normal;
|
|
public Toggle _TexQuality;
|
|
|
|
//public Toggle _RoleEffect;
|
|
public Toggle _DamageBoard;
|
|
|
|
public Toggle _NameBoard;
|
|
//public Toggle _SkillEffect;
|
|
|
|
public Toggle _HighResolution;
|
|
|
|
public Toggle _HighFrameRate;
|
|
|
|
private bool _init;
|
|
private bool _updateQuality = true;
|
|
private UiToggleVCGroup _qualityToggles;
|
|
private UiToggleVCGroup _effectLimitToggles;
|
|
private UiToggleVCGroup _terrainToggles;
|
|
|
|
private void InitGraphicSetting()
|
|
{
|
|
_qualityToggles = new UiToggleVCGroup(_QualityToggles);
|
|
_qualityToggles.onToggleClick += OnQualityToggleClick;
|
|
_terrainToggles = new UiToggleVCGroup(_TerrainQualityToggles);
|
|
_terrainToggles.onToggleClick += OnTerrainQualityClick;
|
|
_effectLimitToggles = new UiToggleVCGroup(_EffectLimitToggles);
|
|
_effectLimitToggles.onToggleClick += OnEffectLimitClick;
|
|
|
|
InitToggle(_NameBoard, PlayerPreferenceData.SystemNameBoard, null);
|
|
InitToggle(_DamageBoard, PlayerPreferenceData.SystemDamageBoardEnable, null);
|
|
|
|
InitToggleVC(_Water, PlayerPreferenceData.SystemWaterEffectEnable);
|
|
InitToggleVC(_Distortion, PlayerPreferenceData.SystemQualityDistortion);
|
|
InitToggleVC(_DymShadow, PlayerPreferenceData.SystemQualityDymShadow);
|
|
InitToggleVC(_Fog, PlayerPreferenceData.SystemQualityFog);
|
|
InitToggleVC(_AntiAntialiasing, PlayerPreferenceData.SystemQualityAntiAliasing);
|
|
InitToggleVC(_TexQuality, PlayerPreferenceData.SystemQualityTexQuality);
|
|
InitToggleVC(_HighResolution, PlayerPreferenceData.SystemQualityHighResolution);
|
|
InitToggleVC(_HighFrameRate, PlayerPreferenceData.SystemQualityHighFrameRate);
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (_init)
|
|
{
|
|
PlayerPreferenceData.SystemWaterEffectEnable.onSettingUpdate += OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityDistortion.onSettingUpdate += OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityDymShadow.onSettingUpdate += OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityFog.onSettingUpdate += OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityAntiAliasing.onSettingUpdate += OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityTexQuality.onSettingUpdate += OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityHighResolution.onSettingUpdate += OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityHighFrameRate.onSettingUpdate += OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemTerrainQuality.onSettingUpdate += OnIntSettingUpdate;
|
|
|
|
PlayerPreferenceData.SystemTerrainQuality.onSettingUpdate += OnTerrainQualityUpdate;
|
|
PlayerPreferenceData.EffectLimitLevel.onSettingUpdate += OnEffectLimitUpdate;
|
|
PlayerPreferenceData.OtherPlayerHideMask.staticSetting.onSettingUpdate += OnOtherHideMask;
|
|
PlayerPreferenceData.SystemHideFellow.staticSetting.onSettingUpdate += OnHideFellowUpdate;
|
|
|
|
PlayerPreferenceData.EffectLimitLevel.onSettingUpdate += OnHideIntUpdate;
|
|
PlayerPreferenceData.ShowOtherPlayerCount.onSettingUpdate += OnHideIntUpdate;
|
|
PlayerPreferenceData.OtherPlayerHideMask.staticSetting.onSettingUpdate += OnHideIntUpdate;
|
|
PlayerPreferenceData.SystemHideFellow.staticSetting.onSettingUpdate += OnHideBoolUpdate;
|
|
PlayerPreferenceData.ShowOtherPlayerCount.onSettingUpdate += OnShowPlayerUpdate;
|
|
OnShowPlayerUpdate(PlayerPreferenceData.ShowOtherPlayerCount);
|
|
OnOtherHideMask(PlayerPreferenceData.OtherPlayerHideMask.staticSetting);
|
|
OnHideFellowUpdate(PlayerPreferenceData.SystemHideFellow.staticSetting);
|
|
OnQualityUpdate();
|
|
OnHideSettingUpdate();
|
|
_terrainToggles.SetToggle(PlayerPreferenceData.SystemTerrainQuality);
|
|
_effectLimitToggles.SetToggle(PlayerPreferenceData.EffectLimitLevel);
|
|
}
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
if (!GameManager.applicationQuit)
|
|
{
|
|
PlayerPreferenceData.SystemWaterEffectEnable.onSettingUpdate -= OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityDistortion.onSettingUpdate -= OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityDymShadow.onSettingUpdate -= OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityFog.onSettingUpdate -= OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityAntiAliasing.onSettingUpdate -= OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityTexQuality.onSettingUpdate -= OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityHighResolution.onSettingUpdate -= OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemQualityHighFrameRate.onSettingUpdate -= OnBoolSettingUpdate;
|
|
PlayerPreferenceData.SystemTerrainQuality.onSettingUpdate -= OnIntSettingUpdate;
|
|
|
|
PlayerPreferenceData.SystemTerrainQuality.onSettingUpdate -= OnTerrainQualityUpdate;
|
|
PlayerPreferenceData.EffectLimitLevel.onSettingUpdate -= OnEffectLimitUpdate;
|
|
PlayerPreferenceData.OtherPlayerHideMask.staticSetting.onSettingUpdate -= OnOtherHideMask;
|
|
PlayerPreferenceData.SystemHideFellow.staticSetting.onSettingUpdate -= OnHideFellowUpdate;
|
|
|
|
PlayerPreferenceData.EffectLimitLevel.onSettingUpdate -= OnHideIntUpdate;
|
|
PlayerPreferenceData.ShowOtherPlayerCount.onSettingUpdate -= OnHideIntUpdate;
|
|
PlayerPreferenceData.OtherPlayerHideMask.staticSetting.onSettingUpdate -= OnHideIntUpdate;
|
|
PlayerPreferenceData.SystemHideFellow.staticSetting.onSettingUpdate -= OnHideBoolUpdate;
|
|
PlayerPreferenceData.ShowOtherPlayerCount.onSettingUpdate -= OnShowPlayerUpdate;
|
|
}
|
|
}
|
|
|
|
private void InitToggleVC(Toggle toggle, BooleanSetting booleanSetting)
|
|
{
|
|
var toggleVc = toggle.gameObject.EnsureComponent<UiToggleToSetting>();
|
|
toggleVc.Init(booleanSetting);
|
|
}
|
|
|
|
private void OnIntSettingUpdate(int dummy)
|
|
{
|
|
OnQualityUpdate();
|
|
}
|
|
|
|
private void OnBoolSettingUpdate(bool dummy)
|
|
{
|
|
OnQualityUpdate();
|
|
}
|
|
|
|
private void OnQualityUpdate()
|
|
{
|
|
if (_updateQuality)
|
|
{
|
|
var current = new QualityLevelData();
|
|
current.MatchCurrent();
|
|
var qualityIndex = PlayerPreferenceData.qualityStandards.FindIndex(a => a.MatchLevel(current));
|
|
_qualityToggles.SetToggle(qualityIndex + 1);
|
|
}
|
|
}
|
|
|
|
private void OnTerrainQualityUpdate(int level)
|
|
{
|
|
_terrainToggles.SetToggle(level);
|
|
}
|
|
|
|
private void OnQualityToggleClick(int qualityLevel)
|
|
{
|
|
// 屏蔽画质按钮更新,直到全部配置完成
|
|
var target = PlayerPreferenceData.qualityStandards[qualityLevel - 1];
|
|
_updateQuality = false;
|
|
target.ApplyToCurrent();
|
|
_updateQuality = true;
|
|
OnQualityUpdate();
|
|
}
|
|
|
|
private void OnEffectLimitClick(int quality)
|
|
{
|
|
PlayerPreferenceData.EffectLimitLevel.Set(quality);
|
|
}
|
|
|
|
private void OnTerrainQualityClick(int quality)
|
|
{
|
|
PlayerPreferenceData.SystemTerrainQuality.Set(quality);
|
|
}
|
|
|
|
private static void InitToggle(Toggle toggle, BooleanSetting setting, UnityAction updateAction)
|
|
{
|
|
toggle.isOn = setting;
|
|
toggle.onValueChanged.AddListener(isOn =>
|
|
{
|
|
if (isOn != setting)
|
|
{
|
|
setting.Set(isOn);
|
|
if (updateAction != null)
|
|
updateAction();
|
|
}
|
|
});
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region function setting
|
|
|
|
public Toggle _JoyStick;
|
|
public Toggle _ScreenClick;
|
|
public Toggle _SwitchTargetToPet;
|
|
public Toggle _RefuseTeam;
|
|
public Toggle _RefuseFriend;
|
|
public Toggle _AutoTeamFollow;
|
|
public Toggle _AutoRefit;
|
|
public Toggle _AutoJoinTeam;
|
|
public Toggle _AutoAllowTeam;
|
|
|
|
|
|
public void InitFuncSetting()
|
|
{
|
|
_JoyStick.isOn = PlayerPreferenceData.SystemUseJoyStick;
|
|
_ScreenClick.isOn = PlayerPreferenceData.SystemUseScreenClick;
|
|
_AutoTeamFollow.isOn = PlayerPreferenceData.SystemAutoTeamFollow;
|
|
_SwitchTargetToPet.isOn = PlayerPreferenceData.SystemSwitchTargetToPet;
|
|
_RefuseTeam.isOn = PlayerPreferenceData.SystemRefuseTeam;
|
|
_RefuseFriend.isOn = PlayerPreferenceData.SystemRefuseFriend;
|
|
_AutoRefit.isOn = PlayerPreferenceData.AutoRefitEquip;
|
|
_AutoJoinTeam.isOn = PlayerPreferenceData.AutoJoinTeam;
|
|
_AutoAllowTeam.isOn = PlayerPreferenceData.AutoAllowTeam;
|
|
}
|
|
|
|
public void UseJoyStick(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemUseJoyStick = isOn;
|
|
}
|
|
|
|
public void UseScreenClick(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemUseScreenClick = isOn;
|
|
}
|
|
|
|
public void AutoTeamFollow(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemAutoTeamFollow = isOn;
|
|
}
|
|
|
|
public void SwitchTargetToPet(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemSwitchTargetToPet.Set(isOn);
|
|
}
|
|
|
|
public void RefuseTeam(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemRefuseTeam = isOn;
|
|
}
|
|
|
|
public void RefuseFriend(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemRefuseFriend = isOn;
|
|
}
|
|
|
|
public void AutoRefit(bool isOn)
|
|
{
|
|
PlayerPreferenceData.AutoRefitEquip = isOn;
|
|
}
|
|
|
|
public void AutoJoinTeam(bool isOn)
|
|
{
|
|
PlayerPreferenceData.AutoJoinTeam = isOn;
|
|
}
|
|
|
|
public void AutoAllowTeam(bool isOn)
|
|
{
|
|
PlayerPreferenceData.AutoAllowTeam = isOn;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region voice setting
|
|
|
|
public Toggle _VoiceWiFi;
|
|
public Toggle _VoiceGuild;
|
|
public Toggle _VoiceWorld;
|
|
public Toggle _VoiceTeam;
|
|
public Toggle _VoiceNearBy;
|
|
|
|
public Toggle showWing;
|
|
public Toggle showAura;
|
|
public Toggle showRide;
|
|
public Toggle showFellow;
|
|
|
|
private UiToggleVCGroup _hideToggleVcGroup;
|
|
public Slider _SliderViewPlayer;
|
|
private bool _updateHide = true;
|
|
private bool _updateShowPlayer = true;
|
|
|
|
public void InitVoiceSetting()
|
|
{
|
|
_VoiceWiFi.isOn = PlayerPreferenceData.SystemAutoVoiceWiFi;
|
|
_VoiceGuild.isOn = PlayerPreferenceData.SystemAutoVoiceGuild;
|
|
_VoiceWorld.isOn = PlayerPreferenceData.SystemAutoVoiceWorld;
|
|
_VoiceTeam.isOn = PlayerPreferenceData.SystemAutoVoiceTeam;
|
|
_VoiceNearBy.isOn = PlayerPreferenceData.SystemAutoVoiceNearBy;
|
|
|
|
OnOtherHideMask(PlayerPreferenceData.OtherPlayerHideMask.staticSetting);
|
|
showWing.onValueChanged.AddListener(a => OnHideMaskToggle(ModelPart.wing, a));
|
|
showAura.onValueChanged.AddListener(a => OnHideMaskToggle(ModelPart.aura, a));
|
|
showRide.onValueChanged.AddListener(a => OnHideMaskToggle(ModelPart.mount, a));
|
|
showFellow.onValueChanged.AddListener(OnHideFellowToggle);
|
|
|
|
_hideToggleVcGroup = new UiToggleVCGroup(_hideToggles);
|
|
_hideToggleVcGroup.onToggleClick += OnHideToggleUpdate;
|
|
OnHideFellowUpdate(PlayerPreferenceData.SystemHideFellow.staticSetting);
|
|
|
|
_SliderViewPlayer.onValueChanged.AddListener(OnShowPlayerSlider);
|
|
}
|
|
|
|
private void OnShowPlayerUpdate(int value)
|
|
{
|
|
_ViewPlayerCount.text = value.ToString();
|
|
if (_updateShowPlayer)
|
|
_SliderViewPlayer.value = Mathf.Clamp01((float) value / GlobeVar.SHOW_PLAYER_NUM_MAX);
|
|
}
|
|
|
|
private void OnShowPlayerSlider(float value)
|
|
{
|
|
_updateShowPlayer = false;
|
|
var count = Mathf.FloorToInt(value * GlobeVar.SHOW_PLAYER_NUM_MAX);
|
|
PlayerPreferenceData.ShowOtherPlayerCount.Set(count);
|
|
_updateShowPlayer = true;
|
|
}
|
|
|
|
private void OnHideIntUpdate(int dummy)
|
|
{
|
|
OnHideSettingUpdate();
|
|
}
|
|
|
|
private void OnHideBoolUpdate(bool dummy)
|
|
{
|
|
OnHideSettingUpdate();
|
|
}
|
|
|
|
private void OnHideSettingUpdate()
|
|
{
|
|
if (_updateHide)
|
|
{
|
|
var current = new ModelHideLevel();
|
|
current.MatchCurrentStatic();
|
|
var qualityIndex = PlayerPreferenceData.modelHideLevels.FindIndex(a => a.MatchLevel(current));
|
|
_hideToggleVcGroup.SetToggle(qualityIndex + 1);
|
|
}
|
|
}
|
|
|
|
private void OnHideToggleUpdate(int level)
|
|
{
|
|
// 屏蔽画质按钮更新,直到全部配置完成
|
|
var target = PlayerPreferenceData.modelHideLevels[level - 1];
|
|
_updateQuality = false;
|
|
target.ApplyToStatic();
|
|
_updateQuality = true;
|
|
OnHideSettingUpdate();
|
|
}
|
|
|
|
private void OnEffectLimitUpdate(int level)
|
|
{
|
|
_effectLimitToggles.SetToggle(level);
|
|
}
|
|
|
|
private void OnHideFellowToggle(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemHideFellow.SetStaticValue(isOn);
|
|
}
|
|
|
|
private void OnHideFellowUpdate(bool isOn)
|
|
{
|
|
showFellow.isOn = isOn;
|
|
}
|
|
|
|
private void OnHideMaskToggle(int modelPart, bool isOn)
|
|
{
|
|
var mask = PlayerPreferenceData.OtherPlayerHideMask.staticSetting.current;
|
|
mask = mask.ReplaceFlag(modelPart.ToFlag(), isOn);
|
|
PlayerPreferenceData.OtherPlayerHideMask.SetStaticValue(mask);
|
|
}
|
|
|
|
private void OnOtherHideMask(int hideMask)
|
|
{
|
|
showWing.isOn = hideMask.ContainFlag(ModelPart.wing.ToFlag());
|
|
showAura.isOn = hideMask.ContainFlag(ModelPart.aura.ToFlag());
|
|
showRide.isOn = hideMask.ContainFlag(ModelPart.mount.ToFlag());
|
|
}
|
|
|
|
public void VoiceWiFi(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemAutoVoiceWiFi = isOn;
|
|
}
|
|
|
|
public void VoiceGuild(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemAutoVoiceGuild = isOn;
|
|
}
|
|
|
|
public void VoiceWorld(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemAutoVoiceWorld = isOn;
|
|
}
|
|
|
|
public void VoiceTeam(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemAutoVoiceTeam = isOn;
|
|
}
|
|
|
|
public void VoiceNearBy(bool isOn)
|
|
{
|
|
PlayerPreferenceData.SystemAutoVoiceNearBy = isOn;
|
|
}
|
|
|
|
#endregion
|
|
} |