Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/SelectSkinCardPlate.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

215 lines
7.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Wizard.Scripts.Network.Data.TaskData.Arena;
namespace Wizard;
public class SelectSkinCardPlate : MonoBehaviour
{
private readonly Quaternion CARDOBJECT_ROTATION_QUATERNION = new Quaternion(0f, 0f, 0f, 0f);
private const string SPOT_CARD_NUM_FORMAT = "[fcd24a]+{0}[-]";
[SerializeField]
private GameObject _objCardRoot;
[SerializeField]
private UILabel _labelAcquiredOnCard;
[SerializeField]
private UILabel _labelCardName;
[SerializeField]
private UILabel _labelCardPossessionNum;
[SerializeField]
private UILabel _labelCardPossessionNumNormal;
[SerializeField]
private UILabel _labelCardPossessionNumPremium;
[SerializeField]
private UIToggle _toggleSelect;
[SerializeField]
private UILabel _labelToggle;
[SerializeField]
private UILabel _labelDescription;
[SerializeField]
private UILabel _labelAcquired;
[SerializeField]
private UIButton _buttonAcquire;
private GameObject _cardObject;
private SelectSkinCardInfo _skinCardInfo;
private bool _isFirstToggleChange = true;
private bool _isSetValue;
public void SetData(SelectSkinCardInfo skinCardInfo, Action<int, bool, SelectSkinCardPlate> onClickSelectToggle, Dictionary<int, bool> selectCardStateDict, GameObject cardObject, GameObject evacuationParent, Action<int, bool> onClickAcquireButton)
{
_skinCardInfo = skinCardInfo;
_labelCardName.text = UserGoods.getUserGoodsName(UserGoods.Type.Card, _skinCardInfo.CardId);
DataMgr dataMgr = GameMgr.GetIns().GetDataMgr();
int possessionCardNum = dataMgr.GetPossessionCardNum(_skinCardInfo.CardId, isIncludingSpotCard: false);
int spotCardNum = dataMgr.SpotCardData.GetSpotCardNum(_skinCardInfo.CardId);
_labelCardPossessionNumNormal.text = possessionCardNum + ((spotCardNum > 0) ? $"[fcd24a]+{spotCardNum}[-]" : string.Empty);
int cardId = _skinCardInfo.CardId + 1;
int possessionCardNum2 = dataMgr.GetPossessionCardNum(cardId, isIncludingSpotCard: false);
_labelCardPossessionNumPremium.text = possessionCardNum2.ToString();
int num = possessionCardNum + possessionCardNum2 + spotCardNum;
_labelCardPossessionNum.text = num.ToString();
SetLabel(skinCardInfo);
SetCardObject(cardObject, evacuationParent);
if (onClickAcquireButton != null)
{
_buttonAcquire.gameObject.SetActive(value: true);
_buttonAcquire.onClick.Clear();
_buttonAcquire.onClick.Add(new EventDelegate(delegate
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
onClickAcquireButton(_skinCardInfo.CardId, _skinCardInfo.HasSkin);
}));
_toggleSelect.gameObject.SetActive(value: false);
_labelToggle.gameObject.SetActive(value: false);
_labelAcquiredOnCard.gameObject.SetActive(value: false);
return;
}
UIManager.SetObjectToGrey(_toggleSelect.gameObject, !_skinCardInfo.HasSkin);
UIManager.SetObjectToGrey(_labelToggle.gameObject, !_skinCardInfo.HasSkin);
if (!_toggleSelect.value)
{
_toggleSelect.activeSprite.alpha = 0f;
}
_toggleSelect.onChange.Clear();
_toggleSelect.onChange.Add(new EventDelegate(delegate
{
if (!_isFirstToggleChange)
{
onClickSelectToggle(_skinCardInfo.CardId, !_toggleSelect.value, this);
}
_isFirstToggleChange = false;
}));
SetSelectStatus(selectCardStateDict, isOnClickToggle: false);
if (_buttonAcquire != null)
{
_buttonAcquire.gameObject.SetActive(value: false);
}
}
private void SetLabel(SelectSkinCardInfo skinCardInfo)
{
_labelDescription.text = GetRewardListText(skinCardInfo);
_labelAcquired.gameObject.SetActive(skinCardInfo.HasSkin);
_labelAcquired.text = Data.SystemText.Get("Shop_0166");
}
private static string GetRewardListText(SelectSkinCardInfo skinCardInfo)
{
List<string> list = skinCardInfo.RewardList.Select((Wizard.Scripts.Network.Data.TaskData.Arena.Reward reward) => reward.UserGoodsData).OrderBy(GachaUtil.GetRewardListSortIndex).Select(GachaUtil.GetRewardListGoodsTypeName)
.Distinct()
.ToList();
if (list.Count == 0)
{
Debug.LogError($"reward is not set : {skinCardInfo.CardId} {UserGoods.getUserGoodsName(UserGoods.Type.Card, skinCardInfo.CardId)}");
return string.Empty;
}
return UIUtil.CreateListText(list, Data.SystemText.Get("Shop_0226"), Data.SystemText.Get("Shop_0234"));
}
public void SetSelectStatus(Dictionary<int, bool> selectCardStateDict, bool isOnClickToggle)
{
if (!_isSetValue)
{
_isSetValue = true;
_toggleSelect.value = !selectCardStateDict[_skinCardInfo.CardId];
if (isOnClickToggle)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(_toggleSelect.value ? Se.TYPE.SYS_TOGGLE_ON : Se.TYPE.SYS_TOGGLE_OFF);
}
if (_cardObject != null)
{
SetObjectToGreyEnableCollider(_cardObject, !selectCardStateDict[_skinCardInfo.CardId]);
_labelAcquiredOnCard.gameObject.SetActive(!selectCardStateDict[_skinCardInfo.CardId]);
}
_isSetValue = false;
}
}
private void SetCardObject(GameObject cardObject, GameObject evacuationParent)
{
if (_cardObject != null)
{
_cardObject.SetActive(value: false);
_cardObject.transform.parent = evacuationParent.transform;
}
cardObject.transform.parent = _objCardRoot.transform;
cardObject.transform.localPosition = Vector3.zero;
cardObject.transform.rotation = CARDOBJECT_ROTATION_QUATERNION;
cardObject.SetActive(value: true);
_cardObject = cardObject;
}
private void SetObjectToGreyEnableCollider(GameObject o, bool b)
{
Color color = (b ? LabelDefine.TEXT_COLOR_BUTTON_DISABLE : LabelDefine.TEXT_COLOR_BUTTON_ENABLE);
Color color2 = (b ? LabelDefine.TEXT_COLOR_BUTTON_DISABLE : ((Color32)Color.white));
string text = "_grey";
if (b)
{
if (!o.name.Contains(text))
{
o.name += text;
}
}
else
{
o.name = o.name.Replace(text, "");
}
UISprite[] components = o.GetComponents<UISprite>();
for (int i = 0; i < components.Length; i++)
{
components[i].color = color2;
}
UITexture[] componentsInChildren = o.GetComponentsInChildren<UITexture>(includeInactive: true);
for (int i = 0; i < componentsInChildren.Length; i++)
{
componentsInChildren[i].color = color2;
}
components = o.GetComponentsInChildren<UISprite>(includeInactive: true);
for (int i = 0; i < components.Length; i++)
{
components[i].color = color2;
}
UIWidget[] componentsInChildren2 = o.GetComponentsInChildren<UIWidget>(includeInactive: true);
for (int i = 0; i < componentsInChildren2.Length; i++)
{
componentsInChildren2[i].color = color2;
}
UIButton[] componentsInChildren3 = o.GetComponentsInChildren<UIButton>(includeInactive: true);
foreach (UIButton obj in componentsInChildren3)
{
obj.defaultColor = color2;
obj.disabledColor = color2;
}
UILabel[] componentsInChildren4 = o.GetComponentsInChildren<UILabel>(includeInactive: true);
for (int i = 0; i < componentsInChildren4.Length; i++)
{
componentsInChildren4[i].color = color;
}
TweenColor[] componentsInChildren5 = o.GetComponentsInChildren<TweenColor>(includeInactive: true);
foreach (TweenColor obj2 in componentsInChildren5)
{
obj2.from = color2;
obj2.to = color2;
}
}
}