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 { //[RuntimeInitializeOnLoadMethod] //static void OnRuntimeMethodLoad() //{ // new GameObject("OptionInfo").AddComponent(); //} 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; public bool PCMove = true; List list_CheckShadow = new List(); int SaveTime = 0; #if UNITY_ANDROID //private IAdaptivePerformance ap = null; #endif protected override void Awake() { base.Awake(); DontDestroy(); 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 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 lst = new List(); var rewardsdata = JsonUtility.FromJson(result["Rewards"].ToString()); for (int i = 0; i < rewardsdata.Rewards.Count; i++) { eItem item = DSUtil.StringToEnum(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 _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 Rewards; }