Project_WL/Assets/Script/Info/OptionInfo.cs

462 lines
21 KiB
C#

using CodeStage.AntiCheat.Storage;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using TMPro;
#if UNITY_ANDROID
//using UnityEngine.AdaptivePerformance;
#endif
public class OptionInfo : MonoBehaviourSingletonTemplateBackKeyAdd<OptionInfo>
{
//[RuntimeInitializeOnLoadMethod]
//static void OnRuntimeMethodLoad()
//{
// new GameObject("OptionInfo").AddComponent<OptionInfo>();
//}
public int m_Language = 0;
public GameObject go_OptionUI;
public Slider slider_BGM, slider_SFX;
public GameObject[] go_check; // 0 데미지 텍스트, 1 그림자, 2 자동 적 추적 카메라, 3 로컬푸시, 4 야간로컬푸시
public Image sprite_loginicon;
public Image[] sprites; // 0 상, 1 중, 2 하
public TextMeshProUGUI lable_ver, label_id, label_save;
public TextMeshProUGUI tmp_bgm, tmp_sfx;
public DelAccountUI m_DelAccountUI;
public SleepMode m_SleepMode;
bool PCMove = true;
List<CheckShadow> list_CheckShadow = new List<CheckShadow>();
int SaveTime = 0;
#if UNITY_ANDROID
//private IAdaptivePerformance ap = null;
#endif
protected override void Awake()
{
base.Awake();
Screen.sleepTimeout = SleepTimeout.NeverSleep; // 게임 실행 중 화면 안 꺼지게
QualitySettings.SetQualityLevel(PlayerPrefs.GetInt("QualitySettings", 1)); // 퀄리티 중을 기본으로
Set_Repeat_for1sec(() =>
{
if (SaveTime > 0)
{
--SaveTime;
if (SaveTime <= 0)
label_save.text = "저장";
else
label_save.text = DSUtil.Format("{0}초 후 저장 가능", SaveTime);
}
});
}
private void Start()
{
go_OptionUI.SetActive(false);
m_DelAccountUI.Check();
label_save.text = "저장";
Application.targetFrameRate = 60;
#if UNITY_ANDROID
#endif
}
#if UNITY_ANDROID
//private void OnThermalEvent(ThermalMetrics thermalMetrics)
//{
// switch (thermalMetrics.WarningLevel)
// {
// case WarningLevel.NoWarning:
// QualitySettings.lodBias = 1f;
// break;
// case WarningLevel.ThrottlingImminent:
// if (thermalMetrics.TemperatureLevel > 0.8f)
// QualitySettings.lodBias = 0.75f;
// else
// QualitySettings.lodBias = 1f;
// break;
// case WarningLevel.Throttling:
// QualitySettings.lodBias = 0.5f;
// break;
// }
//}
#endif
public override void Set()
{
base.Set();
lable_ver.text = DSUtil.Format("{0}({1}{2})", Application.version, ServerInfo.Ins.VersionCode, ServerInfo.Ins.IsLiveServer() ? "L" : "D");
go_OptionUI.SetActive(true);
Set_UI();
label_id.text = ServerInfo.Ins.m_LoginInfo.PlayFabId;
switch (ObscuredPrefs.GetInt(MyValue.OptionKey_UserType))
{
case 1: // 애플
sprite_loginicon.sprite = UIAtlasMgr.Ins.Get_Sprite("option_apple"); break;
case 2: // 구글
sprite_loginicon.sprite = UIAtlasMgr.Ins.Get_Sprite("option_google"); break;
default: // 게스트
sprite_loginicon.sprite = UIAtlasMgr.Ins.Get_Sprite("option_guest"); break;
}
}
public void Set_UI()
{
slider_BGM.value = PlayerPrefs.GetFloat("BGM", 1f);
slider_SFX.value = PlayerPrefs.GetFloat("SFX", 1f);
go_check[0].SetActive(PlayerPrefs.GetInt("DamageText", 1) == 1);
go_check[1].SetActive(PlayerPrefs.GetInt("Shadow", 1) == 1);
go_check[2].SetActive(PlayerPrefs.GetInt("AutoCam", 1) == 1);
var sdata = ServerInfo.Ins.m_ServerData;
go_check[3].SetActive(sdata.Get_Common(eCommon.Noti) == 1);
go_check[4].SetActive(sdata.Get_Common(eCommon.NightNoti) == 1);
for (int i = 0; i < sprites.Length; i++)
sprites[i].sprite = UIAtlasMgr.Ins.Get_Sprite(MyValue.OffButtonName);
var graphic = PlayerPrefs.GetInt("QualitySettings", 1);
sprites[graphic].sprite = UIAtlasMgr.Ins.Get_Sprite("button7");
}
public void OnChangeValue_BGM()
{
PlayerPrefs.SetFloat("BGM", slider_BGM.value);
SoundInfo.Ins.Set_BGM_Volume(slider_BGM.value);
tmp_bgm.text = $"{Mathf.RoundToInt(slider_BGM.value * 100f)}%";
}
public void OnChangeValue_SFX()
{
PlayerPrefs.SetFloat("SFX", slider_SFX.value);
tmp_sfx.text = $"{Mathf.RoundToInt(slider_SFX.value * 100f)}%";
}
public void Set_DamageText() { PlayerPrefs.SetInt("DamageText", go_check[0].activeInHierarchy ? 0 : 1); Set_UI(); }
public void Set_Shadow() { PlayerPrefs.SetInt("Shadow", go_check[1].activeInHierarchy ? 0 : 1); Set_UI(); Set_CheckShadow(); }
public void Off_Light() { PlayerPrefs.SetInt("Shadow", 0); Set_UI(); Set_CheckShadow(); }
public void Set_AutoCam() { PlayerPrefs.SetInt("AutoCam", go_check[2].activeInHierarchy ? 0 : 1); Set_UI(); }
public void Set_Noti()
{
var sdata = ServerInfo.Ins.m_ServerData;
sdata.Set_Common(eCommon.Noti, sdata.Get_Common(eCommon.Noti) == 0 ? 1 : 0);
if (sdata.Get_Common(eCommon.Noti) == 0) NotiInfo.Ins.Del_AllNoti();
Set_UI();
}
public void Set_NightNoti()
{
var sdata = ServerInfo.Ins.m_ServerData;
sdata.Set_Common(eCommon.NightNoti, sdata.Get_Common(eCommon.NightNoti) == 0 ? 1 : 0);
if (sdata.Get_Common(eCommon.NightNoti) == 0) NotiInfo.Ins.Del_AllNoti();
Set_UI();
}
public void Set_PCMove(Actor actor, bool status)
{
if (actor.IsRole(eRole.PC) && !actor.IsEnemy())
PCMove = status;
}
public bool Get_PCMove() { return PCMove; }
public void Add_CheckShadow(CheckShadow _cs)
{
list_CheckShadow.RemoveAll(r => r == null);
list_CheckShadow.Add(_cs);
}
public void Set_CheckShadow()
{
list_CheckShadow.RemoveAll(r => r == null);
list_CheckShadow.ForEach(f => f.Set_Shadow());
}
public void Set_Light(bool _active)
{
list_CheckShadow.RemoveAll(r => r == null);
list_CheckShadow.ForEach(f => f.Set_Light(_active));
}
public void OnClick_Logout()
{
Popup.Ins.Set(ePopupType.Two, 104,
() =>
{
ServerInfo.Ins.Write(() =>
{
ObscuredPrefs.DeleteKey(MyValue.OptionKey_UserType);
DSUtil.Quit();
});
});
}
public void OnClick_DelAccount() { m_DelAccountUI.Set(); }
public void OnClick_Save()
{
if (SaveTime <= 0)
{
SaveTime = 60;
ServerInfo.Ins.Write(() => { ToastUI.Ins.Set(113); });
}
}
public void OnClick_QuitSave() { Popup.Ins.Set_QuitPopup(); }
public override void OnClick_Back()
{
go_OptionUI.SetActive(false);
BackKeyMgr.Ins.Del_Back(OnClick_Back);
//GuideQuestArrow.Ins.gos_arrow[34].gos[0].SetActive(NewGameUI.Ins.m_GuideQuestUI.Get_Purpose() == ePurpose.OptionHelp
// && ServerInfo.Ins.m_ServerData.Get_Common(eCommon.GuideClear) == 0);
}
public void Open_TermsofService()
{
WebViewInfo.Ins.Show_WebView("https://docs.google.com/document/d/e/2PACX-1vQMdLgj1VKEsBRDyFja1sY5b2wGdFlSLCKxI6vt3oIpC4iyXQl8A1hjVKlwcP3HKca-izcBaIT6BlRT/pub");
}
public void Open_EULA()
{
WebViewInfo.Ins.Show_WebView("https://docs.google.com/document/d/e/2PACX-1vQRGNDeyuk4WrC8HsYc61HP9cS66lJwxuKuHgmn9-Sugn1JFnpZ3bKJJUugPiw1Qf0BDxbVSdL0f31v/pub");
}
public void OnClick_Help()
{
string mailto = "admin@filgoodbandits.com";
string subject = EscapeURL("제목을 입력해주세요.");
string body = EscapeURL
(
"문의사항을 입력해주세요." +
"\n\n\n\n" +
"작은 마녀 이야기---------------------\n" +
"ID : " + ServerInfo.Ins.m_LoginInfo.PlayFabId + "\n\n" +
"Device Model : " + SystemInfo.deviceModel + "\n\n" +
"Device OS : " + SystemInfo.operatingSystem + "\n" +
"---------------------------------------------------"
);
Application.OpenURL("mailto:" + mailto + "?subject=" + subject + "&body=" + body);
}
private string EscapeURL(string url)
{
return UnityWebRequest.EscapeURL(url).Replace("+", "%20");
}
public void OnClick_CopyID()
{
TextEditor te = new TextEditor { text = label_id.text };
te.SelectAll();
te.Copy();
ToastUI.Ins.Set(114);
}
public void OnClick_Resolution(GameObject _go)
{
int index = int.Parse(_go.name);
QualitySettings.SetQualityLevel(index);
PlayerPrefs.SetInt("QualitySettings", index);
Set_UI();
}
#region
public void Use_Coupon(string coupon)
{
if (!string.IsNullOrEmpty(coupon))
{
#if UNITY_ANDROID
if (coupon.Equals("작은마녀"))
NewGameUI.Ins.m_GuideQuestUI.Add_GuideQuest(ePurpose.Coupon);
#endif
var sinfo = ServerInfo.Ins;
sinfo.Use_Coupon(coupon, (error, result) =>
{
switch (error)
{
case 4:
StartCoroutine(Co_Coupon(coupon, code =>
{
NetWait.Ins.Set(false);
switch (code)
{
case 5001: // 헝그리앱 사전등록
Pay_AdvanceReservation("ha1");
break;
case 5002: // 모비 일반 HA2
{
var sdata = ServerInfo.Ins.m_ServerData;
var obtain = sdata.Add_Item(new ItemData(eItem.Gem, 0, 3000, "ha2", eUICardType.GetItem));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.WeaponStone, 0, 1000, "ha2", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.RingStone, 0, 1000, "ha2", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.NeckStone, 0, 1000, "ha2", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.BootsStone, 0, 1000, "ha2", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.FairyStone, 0, 1000, "ha2", eUICardType.GetItem)));
ServerInfo.Ins.Write(() =>
{
GetItemUI.Ins.Set(obtain);
GetItemUI.Ins.Show_Items();
});
}
break;
case 5003: // 모비 스페셜 HA3
{
var sdata = ServerInfo.Ins.m_ServerData;
var obtain = sdata.Add_Item(new ItemData(eItem.Gem, 0, 3000, "ha3", eUICardType.GetItem));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.MemoryField, 0, 1, "ha3", eUICardType.GetItem)));
ServerInfo.Ins.Write(() =>
{
GetItemUI.Ins.Set(obtain);
GetItemUI.Ins.Show_Items();
});
}
break;
case 5004: // 루팅 유니크 HA4
{
var sdata = ServerInfo.Ins.m_ServerData;
var obtain = sdata.Add_Item(new ItemData(eItem.Gem, 0, 3000, "ha4", eUICardType.GetItem));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.WeaponStone, 0, 1000, "ha4", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.RingStone, 0, 1000, "ha4", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.NeckStone, 0, 1000, "ha4", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.BootsStone, 0, 1000, "ha4", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.FairyStone, 0, 1000, "ha4", eUICardType.GetItem)));
ServerInfo.Ins.Write(() =>
{
GetItemUI.Ins.Set(obtain);
GetItemUI.Ins.Show_Items();
});
}
break;
case 5005: // 루팅 플러스 HA5
{
var sdata = ServerInfo.Ins.m_ServerData;
var obtain = sdata.Add_Item(new ItemData(eItem.Gem, 0, 3000, "ha5", eUICardType.GetItem));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.MemoryDungeon, 0, 1, "ha5", eUICardType.GetItem)));
ServerInfo.Ins.Write(() =>
{
GetItemUI.Ins.Set(obtain);
GetItemUI.Ins.Show_Items();
});
}
break;
case 5006: // 찌 가계부 VIP HA6
{
var sdata = ServerInfo.Ins.m_ServerData;
var obtain = sdata.Add_Item(new ItemData(eItem.Gem, 0, 100000, "ha6", eUICardType.GetItem));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.MemoryField, 0, 1, "ha6", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.MemoryForest, 0, 2, "ha6", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.MemoryDungeon, 0, 1, "ha6", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.MemoryWitchGrade, 0, 1, "ha6", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.MemoryPetBattle, 0, 5, "ha6", eUICardType.GetItem)));
ServerInfo.Ins.Write(() =>
{
GetItemUI.Ins.Set(obtain);
GetItemUI.Ins.Show_Items();
});
}
break;
case 5007: // 헝그리앱 이벤트 레어쿠폰
{
var sdata = ServerInfo.Ins.m_ServerData;
var obtain = sdata.Add_Item(new ItemData(eItem.Gem, 0, 8000, "ha7", eUICardType.GetItem));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.WeaponStone, 0, 2000, "ha7", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.RingStone, 0, 2000, "ha7", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.NeckStone, 0, 2000, "ha7", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.BootsStone, 0, 2000, "ha7", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.FairyStone, 0, 2000, "ha7", eUICardType.GetItem)));
ServerInfo.Ins.Write(() =>
{
GetItemUI.Ins.Set(obtain);
GetItemUI.Ins.Show_Items();
});
}
break;
case 5008: // 헝그리앱 이벤트 7일쿠폰
{
var sdata = ServerInfo.Ins.m_ServerData;
var obtain = sdata.Add_Item(new ItemData(eItem.Gem, 0, 3000, "ha8", eUICardType.GetItem));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.WeaponStone, 0, 1000, "ha8", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.RingStone, 0, 1000, "ha8", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.NeckStone, 0, 1000, "ha8", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.BootsStone, 0, 1000, "ha8", eUICardType.GetItem)));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.FairyStone, 0, 1000, "ha8", eUICardType.GetItem)));
ServerInfo.Ins.Write(() =>
{
GetItemUI.Ins.Set(obtain);
GetItemUI.Ins.Show_Items();
});
}
break;
case 5011: // 퀘스트 마인
Pay_AdvanceReservation("qm");
break;
case 5012: // 인벤
Pay_AdvanceReservation("inven");
break;
default:
ToastUI.Ins.Set(115);
break;
}
}));
break;
default:
List<ItemData> lst = new List<ItemData>();
var rewardsdata = JsonUtility.FromJson<RootRewardData>(result["Rewards"].ToString());
for (int i = 0; i < rewardsdata.Rewards.Count; i++)
{
eItem item = DSUtil.StringToEnum<eItem>(rewardsdata.Rewards[i].Reward);
lst.AddRange(sinfo.m_ServerData.Add_Item(new ItemData(item, rewardsdata.Rewards[i].RewardID, rewardsdata.Rewards[i].RewardAmount, DSUtil.Format("쿠폰 {0}", coupon), eUICardType.GetItem)));
}
GetItemUI.Ins.Set(lst);
sinfo.Write(GetItemUI.Ins.Show_Items);
break;
}
});
}
}
void Pay_AdvanceReservation(string cause)
{
var sdata = ServerInfo.Ins.m_ServerData;
var obtain = sdata.Add_Item(new ItemData(eItem.Gem, 0, 5000, cause, eUICardType.GetItem));
obtain.AddRange(sdata.Add_Item(new ItemData(eItem.Title, 2, 1, cause, eUICardType.GetItem)));
ServerInfo.Ins.Write(() =>
{
GetItemUI.Ins.Set(obtain);
GetItemUI.Ins.Show_Items();
});
}
IEnumerator Co_Coupon(string _coupon, Action<int> _act)
{
var json = JsonUtility.ToJson(new CouponServerFrom
{
ID = ServerInfo.Ins.m_LoginInfo.PlayFabId,
Coupon = _coupon,
});
//using (UnityWebRequest http = UnityWebRequest.Post("http://localhost:52111/data", string.Empty))
using (UnityWebRequest http = UnityWebRequest.PostWwwForm(ServerInfo.Ins.m_SC_ServerStatus.URL_CouponServer, string.Empty))
{
byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(json);
http.uploadHandler = new UploadHandlerRaw(jsonToSend);
http.downloadHandler = new DownloadHandlerBuffer();
http.SetRequestHeader("Content-Type", "application/json");
yield return http.SendWebRequest();
if (!http.isDone)
{
if (http.error != null)
Debug.Log(http.error);
}
_act(http.downloadHandler.text == null || string.IsNullOrEmpty(http.downloadHandler.text) ? 5000 : int.Parse(http.downloadHandler.text));
http.Dispose();
}
}
[Serializable]
class CouponServerFrom { public string ID, Coupon; }
#endregion
}
[Serializable]
class RewardData { public string Reward; public int RewardID; public double RewardAmount; }
[Serializable]
class RootRewardData { public List<RewardData> Rewards; }