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(); continue; } if (i >= iskillpresetlen + iskillpresetslot) break; int index = i - iskillpresetlen; Transform trfchild = trfpresetskill.GetChild(i); goodsSkills[index] = trfchild.GetComponent(); 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(); continue; } if (i >= ipetpresetlen + ipetpresetslot) break; int index = i - ipetpresetlen; Transform trfchild = trfpresetpet.GetChild(i); goodsPets[index] = trfchild.GetComponent(); 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(); 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(); txtNumbers[index] = goAwakenUnlocks[index].transform.GetChild(0).GetComponent(); txtNumbers[index].text = (index + 1).ToString(); } } public void Localize() { Transform trfpreset = transform; trfpreset.Find("txtT").GetComponent().text = LocalizationText.GetText("preset_title"); trfpreset.Find("btnYes").GetChild(0).GetComponent().text = LocalizationText.GetText("all_enter"); trfpreset.Find("btnNo").GetChild(0).GetComponent().text = LocalizationText.GetText("all_cancel"); Transform trfpresetskill = trfpreset.Find("groupSkill"); trfpresetskill.Find("txtSkill").GetComponent().text = LocalizationText.GetText("skill_title"); Transform trfpresetpet = trfpreset.Find("groupPet"); trfpresetpet.Find("txtPet").GetComponent().text = LocalizationText.GetText("pet_title"); Transform trfpresetawaken = trfpreset.Find("groupAwaken"); trfpresetawaken.Find("txtAwaken").GetComponent().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().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(); } }