Files
SVSimServer/SVSim.BattleEngine/Engine/CostCurveUI.cs
gamer147 957af3d1ec feat(battle-engine): full Unity/VFX/god-object shims + expanded copy closure (2570 files)
Authored Unity primitive/object-model shim, VFX layer (control-flow-preserving, InstantVfx never invokes its action -- headless suppression), god-object stubs (GameMgr/EffectMgr/UIManager with faithfully-extracted nested enums), View/UI/Touch tree, LitJson+BetterList+Tuple copied, third-party stubs. Discovered Roslyn header-error masking: fixing class-header type errors unmasks body references, so the true copy closure is ~2570 files (was 782 under masking). Errors: masked-25720 -> 268; our shim files compile clean. Remaining: ~50 residual shim/external types, 24 NGUI UI-base overrides, static-type fixes, plus likely 1-2 more unmask waves.
2026-06-05 17:22:20 -04:00

196 lines
5.3 KiB
C#

using System;
using UnityEngine;
using Wizard;
public class CostCurveUI : MonoBehaviour
{
[Serializable]
private class CostStruct
{
[SerializeField]
public GameObject Parent;
[SerializeField]
public UILabel LabelCost;
[SerializeField]
public UILabel LabelCount;
[SerializeField]
public UIProgressBar Bar;
public int Count;
}
[SerializeField]
private int m_maxBarValue = 15;
[SerializeField]
private CostStruct m_original;
[SerializeField]
private UIProgressBar m_barAdditiveEffect;
[SerializeField]
private int m_barNum = 8;
[SerializeField]
private int m_minCost = 1;
[SerializeField]
private float m_barWidth = 25f;
private CostStruct[] m_costArray;
private CardMaster.CardMasterId _cardMasterId;
public void Initialize(CardMaster.CardMasterId cardMasterId)
{
_cardMasterId = cardMasterId;
}
public void Refresh()
{
if (m_costArray != null)
{
for (int i = 0; i < m_costArray.Length; i++)
{
m_costArray[i].Count = 0;
m_costArray[i].LabelCount.text = "0";
m_costArray[i].Bar.value = 0f;
}
}
}
public void Refresh(int[] array)
{
Refresh();
if (array != null)
{
for (int i = 0; i < array.Length; i++)
{
Add(array[i], withAnim: false);
}
}
}
public void Refresh(UIBase_CardManager.CardObjData[] array)
{
Refresh();
if (array == null)
{
return;
}
for (int i = 0; i < array.Length; i++)
{
int num = array[i].mainCardNum + array[i].subCardNum;
for (int j = 0; j < num; j++)
{
Add(array[i].ids, withAnim: false);
}
}
}
public void Add(int cardId, bool withAnim)
{
ChangeValue(1, cardId, withAnim);
}
public void Add(UIBase_CardManager.CardObjData card, bool withAnim)
{
Add(card.ids, withAnim);
}
public void Sub(int cardId, bool withAnim)
{
ChangeValue(-1, cardId, withAnim);
}
public void Sub(UIBase_CardManager.CardObjData card, bool withAnim)
{
Sub(card.ids, withAnim);
}
private void ChangeValue(int addnum, int cardId, bool withAnim)
{
int num = Mathf.Min(Mathf.Max(CardMaster.GetInstance(_cardMasterId).GetCardParameterFromId(cardId).Cost, m_minCost), m_barNum) - m_minCost;
CostStruct cost_this = m_costArray[num];
cost_this.Count += addnum;
if (withAnim && m_barAdditiveEffect != null)
{
m_barAdditiveEffect.gameObject.SetActive(value: true);
UIProgressBar barAdditiveEffect = m_barAdditiveEffect;
float value = (cost_this.Bar.value = (float)(cost_this.Count + addnum) / (float)m_maxBarValue);
barAdditiveEffect.value = value;
m_barAdditiveEffect.transform.position = cost_this.Bar.transform.position;
m_barAdditiveEffect.alpha = 0.8f;
TweenAlpha.Begin(m_barAdditiveEffect.gameObject, 0.4f, 0f);
TweenScale anim = TweenScale.Begin(cost_this.LabelCount.gameObject, 0.2f, Vector3.one * 1.2f);
TweenAlpha.Begin(cost_this.LabelCount.gameObject, 0.2f, 0f);
EventDelegate ev = null;
ev = new EventDelegate(delegate
{
anim.RemoveOnFinished(ev);
cost_this.Bar.value = (float)cost_this.Count / (float)m_maxBarValue;
cost_this.LabelCount.text = cost_this.Count.ToString() ?? "";
cost_this.LabelCount.transform.localScale = Vector3.one * 0.8f;
TweenScale.Begin(cost_this.LabelCount.gameObject, 0.2f, Vector3.one);
TweenAlpha.Begin(cost_this.LabelCount.gameObject, 0.2f, 1f);
});
anim.onFinished.Add(ev);
}
else
{
cost_this.LabelCount.text = cost_this.Count.ToString() ?? "";
cost_this.Bar.value = (float)cost_this.Count / (float)m_maxBarValue;
}
}
private void Awake()
{
m_costArray = new CostStruct[m_barNum];
m_original.LabelCost.text = m_minCost.ToString() ?? "";
m_original.LabelCount.text = 0.ToString() ?? "";
m_original.Bar.value = 0f;
m_costArray[0] = m_original;
for (int i = 1; i < m_barNum; i++)
{
m_costArray[i] = new CostStruct();
GameObject obj = (m_costArray[i].Parent = UnityEngine.Object.Instantiate(m_original.Parent));
obj.transform.parent = m_original.Parent.transform.parent;
obj.transform.localScale = m_original.Parent.transform.localScale;
Vector3 localPosition = m_original.Parent.transform.localPosition;
localPosition.x += m_barWidth * (float)i;
obj.transform.localPosition = localPosition;
UIWidget[] componentsInChildren = obj.GetComponentsInChildren<UIWidget>();
for (int j = 0; j < componentsInChildren.Length; j++)
{
if (componentsInChildren[j].name == m_original.LabelCost.name)
{
m_costArray[i].LabelCost = componentsInChildren[j].GetComponent<UILabel>();
m_costArray[i].LabelCost.text = (i + m_minCost).ToString() ?? "";
if (i == m_barNum - 1)
{
m_costArray[i].LabelCost.text += "⁺";
}
}
else if (componentsInChildren[j].name == m_original.LabelCount.name)
{
m_costArray[i].LabelCount = componentsInChildren[j].GetComponent<UILabel>();
m_costArray[i].LabelCount.text = 0.ToString() ?? "";
}
else if (componentsInChildren[j].name == m_original.Bar.name)
{
m_costArray[i].Bar = componentsInChildren[j].GetComponent<UIProgressBar>();
m_costArray[i].Bar.value = 0f;
}
m_costArray[i].Count = 0;
}
}
if (m_barAdditiveEffect != null)
{
m_barAdditiveEffect.gameObject.SetActive(value: false);
}
}
}