using System.Collections; using UnityEngine; namespace Wizard; public class DeckSelectUIDialogTitle : MonoBehaviour { private const string PATH_DECK_SELECT_UI_DIALOG_TITLE_PREFAB = "UI/DeckList/DeckSelectUI/DeckSelectUIDialogTitle"; private const string FORMAT_ICON_ROTATION = "icon_timesliprotation_s"; private const string FORMAT_ICON_UNLIMITED = "icon_unlimited_s"; private const string FORMAT_ICON_PRE_ROTATION = "icon_prerotation_s"; private const string FORMAT_ICON_CROSSOVER = "icon_crossover_s"; private const string FORMAT_ICON_MYROTATION = "icon_myrotation_s"; private const string FORMAT_ICON_AVATAR = "icon_heroesbattle_s"; private static readonly Color32 FORMAT_COLOR_ROTATION = new Color32(43, 39, 144, byte.MaxValue); private static readonly Color32 FORMAT_COLOR_UNLIMITED = new Color32(125, 60, 37, byte.MaxValue); private static readonly Color32 FORMAT_COLOR_PRE_ROTATION = new Color32(23, 111, 40, byte.MaxValue); private static readonly Color32 FORMAT_COLOR_CROSSOVER = new Color32(156, 55, 140, byte.MaxValue); private static readonly Color32 FORMAT_COLOR_MYROTATION = new Color32(184, 25, 70, byte.MaxValue); private static readonly Color32 FORMAT_COLOR_AVATAR = new Color32(147, 140, 19, byte.MaxValue); [SerializeField] private GameObject _titleUIRoot; [SerializeField] private UILabel _deckListTitleLabel; [SerializeField] private UITable _formatTable; [SerializeField] private UILabel _formatLabel; [SerializeField] private UISprite _formatIcon; [SerializeField] private UISprite _formatDecorationSprite; [SerializeField] private int _tableBorderLine; private Format _format; private Vector3 _tableFirstPosition; private bool _isFirstUpdateTablePosition = true; private int? _longTextPositionOverride; private bool _isExistFormatChangeUI; public static DeckSelectUIDialogTitle Create(DialogBase dialog, string titleText, Format defaultFormat, bool isExistFormatChangeUI, int? longTextPositionOverride) { DeckSelectUIDialogTitle component = (Object.Instantiate(Resources.Load("UI/DeckList/DeckSelectUI/DeckSelectUIDialogTitle")) as GameObject).GetComponent(); component.Initialize(dialog, titleText, defaultFormat, isExistFormatChangeUI, longTextPositionOverride); return component; } private void Initialize(DialogBase dialog, string titleText, Format defaultFormat, bool isExistFormatChangeUI, int? longTextPositionOverride) { _longTextPositionOverride = longTextPositionOverride; _isExistFormatChangeUI = isExistFormatChangeUI; _deckListTitleLabel.InitializeFont(); _formatLabel.InitializeFont(); _deckListTitleLabel.text = titleText; dialog.AttachObjToTitleLabel(_titleUIRoot, Vector3.zero); dialog.SetTitleLabelActive(active: false); UpdateFormatObj(defaultFormat); } public void UpdateFormatObj(Format format) { _format = format; switch (format) { case Format.Rotation: SetActiveFormatObjs(isActive: true); _formatIcon.spriteName = "icon_timesliprotation_s"; _formatLabel.text = Data.SystemText.Get("Common_0154"); _formatDecorationSprite.color = FORMAT_COLOR_ROTATION; break; case Format.PreRotation: SetActiveFormatObjs(isActive: true); _formatIcon.spriteName = "icon_prerotation_s"; _formatLabel.text = Data.SystemText.Get("Common_0163"); _formatDecorationSprite.color = FORMAT_COLOR_PRE_ROTATION; break; case Format.Unlimited: SetActiveFormatObjs(isActive: true); _formatIcon.spriteName = "icon_unlimited_s"; _formatLabel.text = Data.SystemText.Get("Common_0155"); _formatDecorationSprite.color = FORMAT_COLOR_UNLIMITED; break; case Format.Crossover: SetActiveFormatObjs(isActive: true); _formatIcon.spriteName = "icon_crossover_s"; _formatLabel.text = Data.SystemText.Get("Common_0166"); _formatDecorationSprite.color = FORMAT_COLOR_CROSSOVER; break; case Format.MyRotation: SetActiveFormatObjs(isActive: true); _formatIcon.spriteName = "icon_myrotation_s"; _formatLabel.text = Data.SystemText.Get("Common_0178"); _formatDecorationSprite.color = FORMAT_COLOR_MYROTATION; break; case Format.Avatar: SetActiveFormatObjs(isActive: true); _formatIcon.spriteName = "icon_heroesbattle_s"; _formatLabel.text = Data.SystemText.Get("HeroesBattle_0001"); _formatDecorationSprite.color = FORMAT_COLOR_AVATAR; break; default: SetActiveFormatObjs(isActive: false); break; } _formatTable.Reposition(); if (UIManager.GetInstance().IsCurrentScene(UIManager.ViewScene.QuestSelectionPage)) { _deckListTitleLabel.color = LabelDefine.TEXT_COLOR_NORMAL; _formatLabel.color = LabelDefine.TEXT_COLOR_NORMAL; if (format == Format.Unlimited || format == Format.Rotation) { AllLabelColorChanger.ChangeAllLabel(_formatTable.gameObject, AllLabelColorChanger.COLOR_TABLE_DECK_SELECTION_ROTATION_UNLIMITED); } else { AllLabelColorChanger.ChangeAllLabel(_formatTable.gameObject); } } UpdateTablePosition(); } private IEnumerator UpdateTableCoroutine() { yield return null; UpdateTablePosition(); } [ContextMenu("UpdateTablePosition")] public void UpdateTablePosition() { Bounds bounds = NGUIMath.CalculateRelativeWidgetBounds(_formatTable.transform); if (bounds.size.x < 1f) { UIManager.GetInstance().StartCoroutine(UpdateTableCoroutine()); return; } if (_isFirstUpdateTablePosition) { _isFirstUpdateTablePosition = false; _tableFirstPosition = _formatTable.transform.localPosition; } _formatTable.transform.localPosition = _tableFirstPosition; if (!_isExistFormatChangeUI) { return; } if ((int)bounds.size.x <= _tableBorderLine) { if (_longTextPositionOverride.HasValue && _format == Format.Rotation) { _formatTable.transform.localPosition = new Vector3(_longTextPositionOverride.Value, _tableFirstPosition.y, _tableFirstPosition.z); } } else if (_longTextPositionOverride.HasValue) { _formatTable.transform.localPosition = new Vector3(_longTextPositionOverride.Value, _tableFirstPosition.y, _tableFirstPosition.z); } else { _formatTable.transform.localPosition = _tableFirstPosition + new Vector3(bounds.size.x - (float)_tableBorderLine, 0f, 0f); } } private void SetActiveFormatObjs(bool isActive) { _formatIcon.gameObject.SetActive(isActive); _formatLabel.gameObject.SetActive(isActive); _formatDecorationSprite.gameObject.SetActive(isActive); } }