using IVDataFormat; using IVServerFormat; using Spine; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; // 커스터마이징 매니저. public class CustomizeMgr : MonoSingleton { #region Spine [SerializeField] IVCharSimple ivChar; #endregion Battle #region UI [SerializeField] private TextMeshProUGUI txtMainT; [SerializeField] private Canvas canvasUI; private GameObject goBtnInfo; private Button btnApply, btnCompose; private TextMeshProUGUI txtName, txtEfcInfoT, txtInfo, txtComposeCnt; private ButtonIV[] btnTabs; private GameObject[] groupTabs; [SerializeField] private EScrController escrCloth, escrWeapon; // 슬롯 선택 연출. private GameObject goSelectEfc; private RectTransform rtrfSelectBorder, rtrfPresetSelect; private GameObject[] goPresetSelects; //GameObject dust; [SerializeField] Canvas leftCanvasUI; TextMeshProUGUI leftTitle; #endregion UI #region Variables private int iLoading = 1; private bool bReLocalize = true; private bool bReLocalizeCloth, bReLocalizeWeapon = false; private bool bInitNeed = true; private bool bInitNeedCloth = true; private bool bInitNeedWeapon = true; // 변경됨. private bool bChange = false; // 선택된 메인 탭. 0:의상, 1:무기, 2:색상. private int iSelectedTab = -1; // 보기에 적용된(선택중인) 의상 번호. private int iSelectedCloth = -1; // 보기에 적용된(선택중인) 무기 번호. private int iSelectedWeapon = -1; private int iSlotIndexWp = 0; private Skeleton skeleton; private Skin skinCustom = null; private Attachment atchWeaponBase = null; #endregion Variables #region Base public static void SLocalize(bool bmain) { if (Instance != null) Instance.Localize(bmain); } // 번역. private void Localize(bool bmain) { if (bmain) { txtMainT.text = LocalizationText.GetText("cos_title"); } else { bReLocalize = false; canvasUI.transform.Find("txtT").GetComponent().text = LocalizationText.GetText("cos_title"); btnTabs[0].transform.Find("txt").GetComponent().text = LocalizationText.GetText("cos_cloth"); btnTabs[1].transform.Find("txt").GetComponent().text = LocalizationText.GetText("cos_weapon"); btnTabs[2].transform.Find("txt").GetComponent().text = LocalizationText.GetText("cos_dyeing"); groupTabs[2].transform.Find("groupHair").Find("txtGroupT").GetComponent().text = LocalizationText.GetText("cos_hair"); groupTabs[2].transform.Find("groupTop").Find("txtGroupT").GetComponent().text = LocalizationText.GetText("cos_hairtop"); groupTabs[2].transform.Find("groupEye").Find("txtGroupT").GetComponent().text = LocalizationText.GetText("cos_eye"); groupTabs[2].transform.Find("groupHair").Find("txtPresetT").GetComponent().text = LocalizationText.GetText("cos_apply_color"); groupTabs[2].transform.Find("groupTop").Find("txtPresetT").GetComponent().text = LocalizationText.GetText("cos_apply_color"); groupTabs[2].transform.Find("groupEye").Find("txtPresetT").GetComponent().text = LocalizationText.GetText("cos_apply_color"); groupTabs[2].transform.Find("groupHair").Find("txtHaveT").GetComponent().text = LocalizationText.GetText("cos_have_color"); groupTabs[2].transform.Find("groupTop").Find("txtHaveT").GetComponent().text = LocalizationText.GetText("cos_have_color"); groupTabs[2].transform.Find("groupEye").Find("txtHaveT").GetComponent().text = LocalizationText.GetText("cos_have_color"); btnApply.transform.Find("txt").GetComponent().text = LocalizationText.GetText("cos_apply"); btnCompose.transform.Find("txt").GetComponent().text = LocalizationText.GetText("all_compose"); if (iSelectedTab < 0) { } // 염색. else if (iSelectedTab >= 2) { txtEfcInfoT.text = LocalizationText.GetText("all_tip"); } // 의상, 무기. else { txtEfcInfoT.text = LocalizationText.GetText("own_effect_title"); } leftTitle = leftCanvasUI.transform.Find("txtT").GetComponent(); leftTitle.text = LocalizationText.GetText("cos_info"); } } // 설정에서 언어 변경 시 처리. public static void SReLocalize() { Instance.Localize(true); Instance.bReLocalize = true; Instance.bReLocalizeCloth = true; Instance.bReLocalizeWeapon = true; } // 백버튼 처리. public static bool SCloseMenu() { return Instance.CloseMenu(); } private bool CloseMenu() { // 게임 시작 후 열린적 없음. if (bInitNeed) return false; if (canvasUI.enabled) { CloseCustomize(); return true; } return false; } void Start() { iLoading--; } #endregion Base #region Init // 게임 처음 시작 시 BattleMgr에서 코스튬 정보 획득을 위해 초기화 호출. public void InitSkin() { bInitNeed = true; iSelectedCloth = DataHandler.PlayEquipCostume.outfitId; iSelectedWeapon = DataHandler.PlayEquipCostume.weaponId; } // 창을 열 때 창의 의상/무기 세팅. private IEnumerator LoadCostume() { RectTransform rtrfchar = ivChar.GetComponent(); Vector3 v3pos = rtrfchar.anchoredPosition3D; v3pos.z = -10000f; rtrfchar.anchoredPosition3D = v3pos; ivChar.SetSkin(iSelectedCloth, iSelectedWeapon); yield return null; PopCostume(); v3pos.z = -0f; rtrfchar.anchoredPosition3D = v3pos; } public static void SReleaseCostume() { Instance.ReleaseCostume(); } // 창 닫을 때 의상/무기 리소스 해제. private void ReleaseCostume() { iSelectedCloth = DataHandler.PlayEquipCostume.outfitId; iSelectedWeapon = DataHandler.PlayEquipCostume.weaponId; btnApply.interactable = false; } private void Init() { btnTabs = canvasUI.transform.Find("tabWrapTop").GetComponentsInChildren(true); groupTabs = new GameObject[btnTabs.Length]; groupTabs[0] = canvasUI.transform.Find("SvCloth").gameObject; groupTabs[1] = canvasUI.transform.Find("SvWeapon").gameObject; groupTabs[2] = canvasUI.transform.Find("groupColor").gameObject; txtName = ivChar.transform.parent.Find("txtName").GetComponent(); goBtnInfo = canvasUI.transform.Find("btnInfo").gameObject; btnApply = ivChar.transform.parent.Find("btnApply").GetComponent