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

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();
}
}