457 lines
21 KiB
C#
457 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))
|
|
{
|
|
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; } |