Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
189 lines
5.6 KiB
C#
189 lines
5.6 KiB
C#
using System;
|
|
using Cute;
|
|
using UnityEngine;
|
|
using Wizard;
|
|
using Wizard.Battle.View;
|
|
|
|
public class CardDetailBase : MonoBehaviour
|
|
{
|
|
[Serializable]
|
|
public class BgSizeInfo
|
|
{
|
|
public int Line;
|
|
|
|
public int BgSize;
|
|
}
|
|
|
|
[Serializable]
|
|
public class DetailPanelInfo
|
|
{
|
|
public GameObject _root;
|
|
|
|
public UILabel _nameLabel;
|
|
|
|
public UITexture _logImage;
|
|
|
|
public UIScrollView _scrollView;
|
|
|
|
public UISprite _bg;
|
|
|
|
public int _maxLine;
|
|
|
|
public UIPanel DiscPanelObject;
|
|
|
|
public UILabel DiscLabel;
|
|
|
|
public BoxCollider DiscCollider;
|
|
|
|
public UIScrollBar DiscScrollBar;
|
|
|
|
public int DefaultBgHeight;
|
|
|
|
public UILabel _costLabel;
|
|
|
|
public UILabel _signLabel;
|
|
|
|
public UILabel _zeroCostLabel;
|
|
|
|
public UILabel _signedCostLabel;
|
|
|
|
public UISprite _costSprite;
|
|
|
|
public UILabel _classLabel;
|
|
|
|
public UISprite _classBG;
|
|
|
|
public GameObject _myRotationInfo;
|
|
|
|
public UILabel _myRotationClassLabel;
|
|
|
|
public GameObject _myRotationBonusIconOriginal;
|
|
|
|
public UIGrid _myRotationBonusIconGrid;
|
|
|
|
public FlexibleGrid _myRotationInfoGrid;
|
|
|
|
public UIRect RootAnchor;
|
|
|
|
public void Initialize()
|
|
{
|
|
}
|
|
}
|
|
|
|
private const int EVO_OR_FUSION_BUTTON_OFFSET = 65;
|
|
|
|
private const int CLASS_LABEL_HEIGHT = 89;
|
|
|
|
private const int PANEL_BOTTOM__ANCHOR = 4;
|
|
|
|
private const int PANEL_BOTTOM__ANCHOR_SCROLL = 16;
|
|
|
|
[SerializeField]
|
|
protected DetailPanelInfo _followerPanel;
|
|
|
|
[SerializeField]
|
|
protected DetailPanelInfo _followerEvoPanel;
|
|
|
|
[SerializeField]
|
|
protected DetailPanelInfo _nonFollowerPanel;
|
|
|
|
protected void SetFollowerDetailLabel(string skillDisc, string evoSkillDisc, bool needEvolutionOrFusionButton, bool resetScrollPosition = true)
|
|
{
|
|
_nonFollowerPanel._root.SetActive(value: false);
|
|
_followerPanel._root.SetActive(value: true);
|
|
_followerEvoPanel._root.SetActive(value: true);
|
|
int num = CheckTextLineCount(_followerPanel.DiscLabel, skillDisc);
|
|
int num2 = CheckTextLineCount(_followerEvoPanel.DiscLabel, evoSkillDisc);
|
|
if (num >= _followerPanel._maxLine && num2 < _followerEvoPanel._maxLine)
|
|
{
|
|
num = Mathf.Min(9 - num2, num);
|
|
}
|
|
else if (num < _followerPanel._maxLine && num2 >= _followerEvoPanel._maxLine)
|
|
{
|
|
num2 = Mathf.Min(9 - num, num2);
|
|
}
|
|
else if (num >= _followerPanel._maxLine && num2 >= _followerEvoPanel._maxLine)
|
|
{
|
|
num = _followerPanel._maxLine;
|
|
num2 = _followerEvoPanel._maxLine;
|
|
}
|
|
SetDescLabelText(_followerPanel, skillDisc, num, needEvolutionOrFusionButton: false, resetScrollPosition);
|
|
SetDescLabelText(_followerEvoPanel, evoSkillDisc, num2, needEvolutionOrFusionButton, resetScrollPosition);
|
|
_followerEvoPanel.RootAnchor.UpdateAnchors();
|
|
}
|
|
|
|
protected void SetDescLabelText(DetailPanelInfo panel, string discText, bool needEvolutionOrFusionButton = false, bool resetScrollPosition = true, bool isClass = false)
|
|
{
|
|
SetDescLabelText(panel, discText, panel._maxLine, needEvolutionOrFusionButton, resetScrollPosition, isClass);
|
|
}
|
|
|
|
protected void SetDescLabelText(DetailPanelInfo panel, string discText, int maxLine, bool needEvolutionOrFusionButton = false, bool resetScrollPosition = true, bool isClass = false)
|
|
{
|
|
UILabel discLabel = panel.DiscLabel;
|
|
UIScrollView scrollView = panel._scrollView;
|
|
UISprite bg = panel._bg;
|
|
discLabel.text = Global.GetConvertWrapText(discLabel, discText);
|
|
discLabel.ProcessText();
|
|
int textLineCount = Global.GetTextLineCount(discLabel.processedText);
|
|
bool flag = textLineCount > maxLine;
|
|
if (bg != null)
|
|
{
|
|
bg.height = panel.DefaultBgHeight + Mathf.Min(textLineCount, maxLine) * (panel.DiscLabel.fontSize + panel.DiscLabel.spacingY);
|
|
if (needEvolutionOrFusionButton)
|
|
{
|
|
bg.height += 65;
|
|
}
|
|
if (isClass)
|
|
{
|
|
bg.height = 89;
|
|
}
|
|
bg.gameObject.SetActive(value: false);
|
|
bg.gameObject.SetActive(value: true);
|
|
bg.ResetAndUpdateAnchors();
|
|
}
|
|
panel.DiscPanelObject.bottomAnchor.absolute = (flag ? 16 : 4) + (needEvolutionOrFusionButton ? 65 : 0);
|
|
panel.DiscPanelObject.gameObject.SetActive(value: false);
|
|
panel.DiscPanelObject.gameObject.SetActive(value: true);
|
|
panel.DiscPanelObject.UpdateAnchors();
|
|
scrollView.enabled = flag;
|
|
panel.DiscScrollBar.gameObject.SetActive(flag);
|
|
if (resetScrollPosition)
|
|
{
|
|
scrollView.ResetPosition();
|
|
}
|
|
scrollView.UpdateScrollbars();
|
|
}
|
|
|
|
private int CheckTextLineCount(UILabel label, string discText)
|
|
{
|
|
label.text = Global.GetConvertWrapText(label, discText);
|
|
label.ProcessText();
|
|
return Global.GetTextLineCount(label.processedText);
|
|
}
|
|
|
|
protected void SetDetailKeywordEvents(Action<BattleCardBase, GameObject, CardParameter> onClick, BattleCardBase card, CardParameter baseParameter, DetailPanelControl control)
|
|
{
|
|
SetDetailKeywordEvent(_followerPanel, onClick, card, baseParameter, control);
|
|
SetDetailKeywordEvent(_followerEvoPanel, onClick, card, baseParameter, control);
|
|
SetDetailKeywordEvent(_nonFollowerPanel, onClick, card, baseParameter, control);
|
|
}
|
|
|
|
private void SetDetailKeywordEvent(DetailPanelInfo panelInfo, Action<BattleCardBase, GameObject, CardParameter> onClick, BattleCardBase card, CardParameter baseParameter, DetailPanelControl control)
|
|
{
|
|
UILabel label = panelInfo.DiscLabel;
|
|
BoxCollider discCollider = panelInfo.DiscCollider;
|
|
if (label.text != " ")
|
|
{
|
|
UIEventListener.Get(discCollider.gameObject).onClick = delegate
|
|
{
|
|
onClick.Call(card, label.gameObject, baseParameter);
|
|
};
|
|
BattlePlayerView.SetKeyWordColor(discCollider.gameObject, label, control);
|
|
}
|
|
else
|
|
{
|
|
UIEventListener.Get(discCollider.gameObject).onClick = null;
|
|
}
|
|
}
|
|
}
|