146 lines
4.5 KiB
C#
146 lines
4.5 KiB
C#
using DG.Tweening;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.EventSystems;
|
|
using Assets.Scripts;
|
|
using System;
|
|
|
|
public class Settings
|
|
{
|
|
public int AutoPause { set; get; }
|
|
public float Sensitivity { set; get; }
|
|
public int IMode { set; get; }
|
|
public int Unit { set; get; }
|
|
public float Volume { set; get; }
|
|
public int WMode { set; get; }
|
|
public int Language { set; get; }
|
|
}
|
|
public class SettingContoller : PFUIPanel
|
|
{
|
|
// Start is called before the first frame update
|
|
Transform exit;
|
|
Button[] AutoPause, IMode, Unit, WMode, Language;
|
|
Slider Sensitivity, Volume;
|
|
Settings settings;
|
|
protected override void Awake()
|
|
{
|
|
exit = transform.Find("Main").Find("Exit");
|
|
if (exit != null)
|
|
{
|
|
//exit.GetComponent<Button>().onClick.AddListener(()=>
|
|
//{
|
|
// Close();
|
|
//});
|
|
UIManager.AddEvent(exit.gameObject, EventTriggerType.PointerClick, (e) =>
|
|
{
|
|
UIManager.Instance.settings = settings;
|
|
Close();
|
|
});
|
|
}
|
|
var inner = transform.Find("Main").Find("Inner");
|
|
AutoPause = new Button[]
|
|
{
|
|
inner.Find("AutoPause").Find("BtnOpen").GetComponent<Button>(),
|
|
inner.Find("AutoPause").Find("BtnClose").GetComponent<Button>()
|
|
};
|
|
IMode = new Button[]
|
|
{
|
|
inner.Find("IMode").Find("BtnSimple").GetComponent<Button>(),
|
|
inner.Find("IMode").Find("BtnFull").GetComponent<Button>()
|
|
};
|
|
Unit = new Button[]
|
|
{
|
|
inner.Find("Unit").Find("BtnMetric").GetComponent<Button>(),
|
|
inner.Find("Unit").Find("BtnImperial").GetComponent<Button>()
|
|
};
|
|
WMode = new Button[]
|
|
{
|
|
inner.Find("WMode").Find("BtnWindow").GetComponent<Button>(),
|
|
inner.Find("WMode").Find("BtnFull").GetComponent<Button>()
|
|
};
|
|
Language = new Button[]
|
|
{
|
|
inner.Find("Language").Find("BtnChinese").GetComponent<Button>(),
|
|
inner.Find("Language").Find("BtnEnglish").GetComponent<Button>()
|
|
};
|
|
Sensitivity = inner.Find("Sensitivity").Find("Slider").GetComponent<Slider>();
|
|
Volume = inner.Find("Volume").Find("Slider").GetComponent<Slider>();
|
|
AddClick();
|
|
LoadSettings();
|
|
}
|
|
|
|
private void AddClick()
|
|
{
|
|
AddClick(WMode);
|
|
AddClick(Unit);
|
|
AddClick(IMode);
|
|
AddClick(AutoPause);
|
|
AddClick(Language);
|
|
Sensitivity.onValueChanged.AddListener((f) => { settings.Sensitivity = f; });
|
|
Volume.onValueChanged.AddListener((f) => { settings.Volume = f; });
|
|
}
|
|
|
|
private void LoadSettings()
|
|
{
|
|
settings = UIManager.Instance.settings;
|
|
SetValue(WMode, settings.WMode,"WMode");
|
|
SetValue(Unit, settings.Unit, "Unit");
|
|
SetValue(IMode, settings.IMode, "IMode");
|
|
SetValue(AutoPause, settings.AutoPause, "AutoPause");
|
|
SetValue(Language, settings.Language, "Language");
|
|
Sensitivity.value = settings.Sensitivity;
|
|
Volume.value = settings.Volume;
|
|
}
|
|
|
|
protected override void Start()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
void AddClick(Button[] buttons)
|
|
{
|
|
for (int i = 0; i < buttons.Length; i++)
|
|
{
|
|
int index = i;
|
|
UIManager.AddEvent(buttons[i].gameObject, EventTriggerType.PointerClick, (b) =>
|
|
{
|
|
SetValue(buttons, index,buttons[index].transform.parent.name);
|
|
});
|
|
}
|
|
}
|
|
void SetValue(Button[] buttons, int value,string valueName)
|
|
{
|
|
for (int i = 0; i < buttons.Length; i++)
|
|
{
|
|
var b = buttons[i];
|
|
if (i == value)
|
|
{
|
|
b.GetComponent<Image>().color = Utils.HexToColorHtml("#F93086");
|
|
b.transform.Find("Text").GetComponent<Text>().color = Utils.HexToColorHtml("#FFFFFF");
|
|
settings.GetType().GetProperty(valueName).SetValue(UIManager.Instance.settings,i);
|
|
}
|
|
else
|
|
{
|
|
b.GetComponent<Image>().color = Utils.HexToColorHtml("#414251");
|
|
b.transform.Find("Text").GetComponent<Text>().color = Utils.HexToColorHtml("#9e9ead");
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void Show()
|
|
{
|
|
var cg = this.GetComponent<CanvasGroup>();
|
|
cg.alpha = 0;
|
|
base.Show();
|
|
cg.DOFade(1f, 0.3f);
|
|
}
|
|
}
|