You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
373 lines
12 KiB
373 lines
12 KiB
using IVDataFormat;
|
|
using System;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
public class IVPpPreset : MonoBehaviour
|
|
{
|
|
ButtonIV[] btnSkillPresets;
|
|
GoodsItem[] goodsSkills;
|
|
GameObject[] goSkillEmptys;
|
|
GameObject[] goSkillIcons;
|
|
|
|
ButtonIV[] btnPetPresets;
|
|
GoodsItem[] goodsPets;
|
|
GameObject[] goPetEmptys;
|
|
GameObject[] goPetIcons;
|
|
|
|
ButtonIV[] btnAwakenPresets;
|
|
GameObject[] goAwakenUnlocks;
|
|
GameObject[] goAwakenLocks;
|
|
TextMeshProUGUI[] txtAwakenUnlocks;
|
|
TextMeshProUGUI[] txtNumbers;
|
|
|
|
int iSkillPreset = -1;
|
|
int iPetPreset = -1;
|
|
int iAwakenPreset = -1;
|
|
|
|
int iPreserveSkillPreset = 0;
|
|
int iPreservePetPreset = 0;
|
|
int iPreserveAwakenPreset = 0;
|
|
|
|
protected Action actionBtnYes;
|
|
protected Action actionBtnNo;
|
|
|
|
public bool IsOpen()
|
|
{
|
|
return gameObject.activeSelf;
|
|
}
|
|
|
|
public void Init()
|
|
{
|
|
Transform trfpreset = transform;
|
|
|
|
Transform trfpresetskill = trfpreset.Find("groupSkill");
|
|
int iskillpresetlen = 6;
|
|
int iskillpresetslot = 4;
|
|
btnSkillPresets = new ButtonIV[iskillpresetlen];
|
|
goodsSkills = new GoodsItem[iskillpresetslot];
|
|
goSkillEmptys = new GameObject[iskillpresetslot];
|
|
goSkillIcons = new GameObject[iskillpresetslot];
|
|
|
|
for (int i = 0; i < trfpresetskill.childCount; i++)
|
|
{
|
|
if (i < iskillpresetlen)
|
|
{
|
|
btnSkillPresets[i] = trfpresetskill.GetChild(i).GetComponent<ButtonIV>();
|
|
continue;
|
|
}
|
|
|
|
if (i >= iskillpresetlen + iskillpresetslot)
|
|
break;
|
|
|
|
int index = i - iskillpresetlen;
|
|
Transform trfchild = trfpresetskill.GetChild(i);
|
|
goodsSkills[index] = trfchild.GetComponent<GoodsItem>();
|
|
goSkillEmptys[index] = trfchild.Find("empty").gameObject;
|
|
goSkillIcons[index] = trfchild.Find("icon").gameObject;
|
|
}
|
|
|
|
|
|
Transform trfpresetpet = trfpreset.Find("groupPet");
|
|
int ipetpresetlen = 6;
|
|
int ipetpresetslot = 3;
|
|
btnPetPresets = new ButtonIV[ipetpresetlen];
|
|
goodsPets = new GoodsItem[ipetpresetslot];
|
|
goPetEmptys = new GameObject[ipetpresetslot];
|
|
goPetIcons = new GameObject[ipetpresetslot];
|
|
|
|
for (int i = 0; i < trfpresetpet.childCount; i++)
|
|
{
|
|
if (i < ipetpresetlen)
|
|
{
|
|
btnPetPresets[i] = trfpresetpet.GetChild(i).GetComponent<ButtonIV>();
|
|
continue;
|
|
}
|
|
|
|
if (i >= ipetpresetlen + ipetpresetslot)
|
|
break;
|
|
|
|
int index = i - ipetpresetlen;
|
|
Transform trfchild = trfpresetpet.GetChild(i);
|
|
goodsPets[index] = trfchild.GetComponent<GoodsItem>();
|
|
goPetEmptys[index] = trfchild.Find("empty").gameObject;
|
|
goPetIcons[index] = trfchild.Find("icon").gameObject;
|
|
}
|
|
|
|
|
|
Transform trfpresetawaken = trfpreset.Find("groupAwaken");
|
|
int iawakenpresetlen = 3;
|
|
int iawakenpresetslot = 6;
|
|
btnAwakenPresets = new ButtonIV[iawakenpresetlen];
|
|
goAwakenUnlocks = new GameObject[iawakenpresetslot];
|
|
goAwakenLocks = new GameObject[iawakenpresetslot];
|
|
txtAwakenUnlocks = new TextMeshProUGUI[iawakenpresetslot];
|
|
txtNumbers = new TextMeshProUGUI[iawakenpresetslot];
|
|
|
|
for (int i = 0; i < trfpresetawaken.childCount; i++)
|
|
{
|
|
if (i < iawakenpresetlen)
|
|
{
|
|
btnAwakenPresets[i] = trfpresetawaken.GetChild(i).GetComponent<ButtonIV>();
|
|
continue;
|
|
}
|
|
|
|
if (i >= iawakenpresetlen + iawakenpresetslot)
|
|
break;
|
|
|
|
int index = i - iawakenpresetlen;
|
|
Transform trfchild = trfpresetawaken.GetChild(i);
|
|
goAwakenUnlocks[index] = trfchild.Find("AwakenUnlock").gameObject;
|
|
goAwakenLocks[index] = trfchild.Find("AwakenLock").gameObject;
|
|
txtAwakenUnlocks[index] = goAwakenUnlocks[index].transform.Find("txtEffect").GetComponent<TextMeshProUGUI>();
|
|
txtNumbers[index] = goAwakenUnlocks[index].transform.GetChild(0).GetComponent<TextMeshProUGUI>();
|
|
txtNumbers[index].text = (index + 1).ToString();
|
|
}
|
|
}
|
|
|
|
public void Localize()
|
|
{
|
|
Transform trfpreset = transform;
|
|
trfpreset.Find("txtT").GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("preset_title");
|
|
trfpreset.Find("btnYes").GetChild(0).GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("all_enter");
|
|
trfpreset.Find("btnNo").GetChild(0).GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("all_cancel");
|
|
|
|
Transform trfpresetskill = trfpreset.Find("groupSkill");
|
|
trfpresetskill.Find("txtSkill").GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("skill_title");
|
|
|
|
Transform trfpresetpet = trfpreset.Find("groupPet");
|
|
trfpresetpet.Find("txtPet").GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("pet_title");
|
|
|
|
Transform trfpresetawaken = trfpreset.Find("groupAwaken");
|
|
trfpresetawaken.Find("txtAwaken").GetComponent<TextMeshProUGUI>().text = LocalizationText.GetText("left_hiddenpower");
|
|
int iawakenpresetlen = 3;
|
|
int iawakenpresetslot = 6;
|
|
|
|
for (int i = 0; i < trfpresetawaken.childCount; i++)
|
|
{
|
|
if (i < iawakenpresetlen)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (i >= iawakenpresetlen + iawakenpresetslot)
|
|
break;
|
|
|
|
int index = i - iawakenpresetlen;
|
|
goAwakenLocks[index].transform.Find("txtUnlockCondition").GetComponent<TextMeshProUGUI>().text = FormatString.StringFormat(LocalizationText.GetText("awaken_unlock_slot_condition"), index + 1);
|
|
}
|
|
|
|
for(int i = 0; i < DataHandler.PlayAwaken.awaken; i++)
|
|
{
|
|
if(i <= 5)
|
|
goAwakenLocks[i].SetActive(false);
|
|
}
|
|
}
|
|
|
|
|
|
// 현재 선택된 스킬 프리셋.
|
|
public int GetSkillPreset()
|
|
{
|
|
return iSkillPreset;
|
|
}
|
|
|
|
// 현재 선택된 펫 프리셋.
|
|
public int GetPetPreset()
|
|
{
|
|
return iPetPreset;
|
|
}
|
|
|
|
// 현재 선택된 각성 프리셋.
|
|
public int GetAwakenPreset()
|
|
{
|
|
return iAwakenPreset;
|
|
}
|
|
|
|
|
|
// 스테이지에서 사용하는 프리셋 인덱스 보존.
|
|
public void PreservePreset(int iskillpreset, int ipetpreset, int iawakenpreset)
|
|
{
|
|
iPreserveSkillPreset = iskillpreset;
|
|
iPreservePetPreset = ipetpreset;
|
|
iPreserveAwakenPreset = iawakenpreset;
|
|
}
|
|
|
|
// 보존한 프리셋으로 되돌리기. 컨텐츠 종료 후 스테이지로 돌아갈 때 호출.
|
|
public void ReturnToPreservePreset()
|
|
{
|
|
if (iPreserveSkillPreset != DataHandler.PlayData.usePreset)
|
|
{
|
|
DataHandler.PlayData.usePreset = iPreserveSkillPreset;
|
|
BattleMgr.SResetSkillPreset();
|
|
SkillMgr.SResetPreset();
|
|
}
|
|
if (iPreservePetPreset != DataHandler.PlayData.usePetPreset)
|
|
{
|
|
DataHandler.PlayData.usePetPreset = iPreservePetPreset;
|
|
BattleMgr.SSetPet(iPreservePetPreset);
|
|
DataHandler.CalcPetEquipExtra(iPreservePetPreset);
|
|
PetMgr.SResetPreset();
|
|
}
|
|
if (iPreserveAwakenPreset != DataHandler.PlayAwaken.usePreset)
|
|
{
|
|
DataHandler.PlayAwaken.usePreset = iPreserveAwakenPreset;
|
|
EnhanceMgr.SResetAwakenPreset();
|
|
}
|
|
}
|
|
|
|
|
|
public void Open(int skillpreset, int petpreset, int awakenpreset, Action actionyes = null, Action actionno = null)
|
|
{
|
|
if (skillpreset < 0)
|
|
skillpreset = 0;
|
|
if (petpreset < 0)
|
|
petpreset = 0;
|
|
if (awakenpreset < 0)
|
|
awakenpreset = 0;
|
|
|
|
actionBtnNo = actionno;
|
|
actionBtnYes = actionyes;
|
|
|
|
SetSkillPreset(skillpreset);
|
|
SetPetPreset(petpreset);
|
|
SetAwakenPreset(awakenpreset);
|
|
|
|
gameObject.SetActive(true);
|
|
}
|
|
|
|
// 스킬 프리셋 탭 선택.
|
|
public void SetSkillPreset(int index)
|
|
{
|
|
if (iSkillPreset >= 0)
|
|
btnSkillPresets[iSkillPreset].interactable = true;
|
|
iSkillPreset = index;
|
|
btnSkillPresets[iSkillPreset].interactable = false;
|
|
|
|
int[] preset = DataHandler.PlayData.skillPresets[index];
|
|
int ilen = goodsSkills.Length;
|
|
for (int i = 0; i < ilen; i++)
|
|
{
|
|
goodsSkills[i].SetGoods(cGoods.TSkillActive, preset[i], 0L);
|
|
if (preset[i] < 0)
|
|
{
|
|
goSkillEmptys[i].SetActive(true);
|
|
goSkillIcons[i].SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
goSkillEmptys[i].SetActive(false);
|
|
goSkillIcons[i].SetActive(true);
|
|
}
|
|
}
|
|
|
|
SoundMgr.Instance.PlaySfx(SoundName.BtnPress);
|
|
}
|
|
|
|
// 펫 프리셋 탭 선택.
|
|
public void SetPetPreset(int index)
|
|
{
|
|
if (iPetPreset >= 0)
|
|
btnPetPresets[iPetPreset].interactable = true;
|
|
iPetPreset = index;
|
|
btnPetPresets[iPetPreset].interactable = false;
|
|
|
|
int[] preset = DataHandler.PlayData.petPresets[index];
|
|
int ilen = goodsPets.Length;
|
|
for (int i = 0; i < ilen; i++)
|
|
{
|
|
goodsPets[i].SetGoods(cGoods.TPet, preset[i], 0L);
|
|
if (preset[i] < 0)
|
|
{
|
|
goPetEmptys[i].SetActive(true);
|
|
goPetIcons[i].SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
goPetEmptys[i].SetActive(false);
|
|
goPetIcons[i].SetActive(true);
|
|
}
|
|
}
|
|
|
|
SoundMgr.Instance.PlaySfx(SoundName.BtnPress);
|
|
}
|
|
|
|
// 각성 프리셋 탭 선택.
|
|
public void SetAwakenPreset(int index)
|
|
{
|
|
if (iAwakenPreset >= 0)
|
|
btnAwakenPresets[iAwakenPreset].interactable = true;
|
|
|
|
iAwakenPreset = index;
|
|
btnAwakenPresets[iAwakenPreset].interactable = false;
|
|
|
|
int[] preset = DataHandler.PlayAwaken.extras[index];
|
|
for (int i = 0; i < goAwakenUnlocks.Length; i++)
|
|
{
|
|
bool isUnlock = i < DataHandler.PlayAwaken.awaken;
|
|
|
|
if(isUnlock)
|
|
{
|
|
dExtraAbility ability = DataHandler.GetExtraAbility(preset[i]);
|
|
txtAwakenUnlocks[i].text = FormatString.TextEffectTitleValue(ability.abilityType, ability.abilityValue);
|
|
txtAwakenUnlocks[i].color = Global.CLR_RarityBack[ability.rarity];
|
|
txtNumbers[i].color = txtAwakenUnlocks[i].color;
|
|
|
|
goAwakenLocks[i].SetActive(false);
|
|
goAwakenUnlocks[i].SetActive(true);
|
|
}
|
|
else
|
|
{
|
|
txtAwakenUnlocks[i].text = LocalizationText.GetText("efc0");
|
|
txtAwakenUnlocks[i].color = Global.CLR_RarityBack[0];
|
|
txtNumbers[i].color = txtAwakenUnlocks[i].color;
|
|
|
|
goAwakenLocks[i].SetActive(true);
|
|
goAwakenUnlocks[i].SetActive(false);
|
|
}
|
|
}
|
|
|
|
SoundMgr.Instance.PlaySfx(SoundName.BtnPress);
|
|
}
|
|
|
|
private void CloseProcess()
|
|
{
|
|
for (int i = 0; i < btnSkillPresets.Length; i++)
|
|
{
|
|
btnSkillPresets[i].interactable = true;
|
|
if (i < btnPetPresets.Length)
|
|
btnPetPresets[i].interactable = true;
|
|
if (i < btnAwakenPresets.Length)
|
|
btnAwakenPresets[i].interactable = true;
|
|
}
|
|
}
|
|
|
|
public void BtnYesPressed()
|
|
{
|
|
SoundMgr.Instance.PlaySfx(SoundName.BtnPress);
|
|
|
|
if (!BattleMgr.Instance.doNotInterupt)
|
|
{
|
|
GameUIMgr.SOnClosePopup();
|
|
gameObject.SetActive(false);
|
|
CloseProcess();
|
|
if (actionBtnYes != null)
|
|
actionBtnYes.Invoke();
|
|
}
|
|
else
|
|
{
|
|
GameUIMgr.SOpenToast(LocalizationText.GetText("donot_interupt"));
|
|
}
|
|
}
|
|
|
|
public void BtnNoPressed()
|
|
{
|
|
SoundMgr.Instance.PlaySfx(SoundName.BtnPress);
|
|
|
|
GameUIMgr.SOnClosePopup();
|
|
gameObject.SetActive(false);
|
|
CloseProcess();
|
|
if (actionBtnNo != null)
|
|
actionBtnNo.Invoke();
|
|
}
|
|
|
|
}
|