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.
215 lines
7.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|