Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/CardSleeveRewardView.cs
gamer147 824309ec44 feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the
AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed
the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
2026-06-05 20:30:59 -04:00

316 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace Wizard;
public class CardSleeveRewardView : MonoBehaviour
{
private const int MAX_VIEW_REWARD = 5;
private readonly Vector3[] SPECIAL_LAYOUT_POSITION = new Vector3[5]
{
new Vector3(-303f, 0f, 0f),
new Vector3(-122f, 46f, 0f),
new Vector3(-51f, -51f, 0f),
new Vector3(127f, 0f, 0f),
new Vector3(303f, 0f, 0f)
};
private readonly Vector3[] SPECIAL_LAYOUT_SCALE = new Vector3[5]
{
Vector3.one,
new Vector3(0.9f, 0.9f, 1f),
new Vector3(0.9f, 0.9f, 1f),
Vector3.one,
Vector3.one
};
private readonly int[] LABEL_OVERRIDE_INDEX = new int[2] { 1, 2 };
private readonly Vector3[] LABEL_OVERRIDE_POSITION = new Vector3[2]
{
new Vector3(38f, -181f, 0f),
new Vector3(-41f, -124f, 0f)
};
private readonly int[] LABEL_OVERRIDE_WIDTH = new int[2] { 170, 170 };
[SerializeField]
private CardSleeveRewardItem _sleeveItemOriginal;
[SerializeField]
private CardSleeveRewardItem _emblemItemOriginal;
[SerializeField]
private CardSleeveRewardItem _cardItemOriginal;
[SerializeField]
private bool _enableAlreadyGetCheck;
[SerializeField]
private bool _isEnablePremiumShader;
[SerializeField]
private bool _isEnableCardClickCollider;
[SerializeField]
private int _cardDepthOffset;
[SerializeField]
private bool _isEnableHaveCardCount = true;
private List<GameObject> _cloneCardList = new List<GameObject>();
[SerializeField]
private GameObject _cardDetailPrefab;
private static int DetailLayer;
private CardDetailUI _cardDetail;
private List<CardSleeveRewardItem> _sleeveItemList = new List<CardSleeveRewardItem>();
private List<CardSleeveRewardItem> _emblemItemList = new List<CardSleeveRewardItem>();
private List<CardSleeveRewardItem> _cardItemList = new List<CardSleeveRewardItem>();
public List<CardSleeveRewardItem> SetRewardItems(List<ShopCommonRewardInfo> infoList, GameObject parent, Dictionary<int, UIBase_CardManager.CardObjData> cardPool)
{
List<ShopCommonRewardInfo> viewRewardList = GetViewRewardList(infoList);
List<ShopCommonRewardInfo> list = SortRewardList(viewRewardList);
HideAllItems();
int num = 0;
int num2 = 0;
List<CardSleeveRewardItem> list2 = new List<CardSleeveRewardItem>();
int num3 = 0;
for (int i = 0; i < list.Count; i++)
{
CardSleeveRewardItem cardSleeveRewardItem = null;
switch ((UserGoods.Type)list[i].Type)
{
case UserGoods.Type.Card:
cardSleeveRewardItem = CreateCard(parent, viewRewardList[i], num3++, cardPool);
break;
case UserGoods.Type.Sleeve:
if (num < _sleeveItemList.Count)
{
cardSleeveRewardItem = _sleeveItemList[num];
}
else
{
cardSleeveRewardItem = NGUITools.AddChild(parent, _sleeveItemOriginal.gameObject).GetComponent<CardSleeveRewardItem>();
cardSleeveRewardItem.transform.localPosition = new Vector3(cardSleeveRewardItem.transform.localPosition.x, cardSleeveRewardItem.transform.localPosition.y, 10f);
_sleeveItemList.Add(cardSleeveRewardItem);
}
if (_enableAlreadyGetCheck)
{
cardSleeveRewardItem.SetArleadyGetVisible(Data.Master.SleeveMgr.Get(list[i].UserGoodsId).IsAcquired);
}
num++;
break;
case UserGoods.Type.Emblem:
if (num2 < _emblemItemList.Count)
{
cardSleeveRewardItem = _emblemItemList[num2];
}
else
{
cardSleeveRewardItem = NGUITools.AddChild(parent, _emblemItemOriginal.gameObject).GetComponent<CardSleeveRewardItem>();
_emblemItemList.Add(cardSleeveRewardItem);
}
if (_enableAlreadyGetCheck)
{
Emblem emblem = Data.Master.EmblemMgr.Get(list[i].UserGoodsId);
cardSleeveRewardItem.SetArleadyGetVisible(emblem.IsAcquired);
}
num2++;
break;
}
if (cardSleeveRewardItem != null)
{
if (list[i].Type != 5)
{
cardSleeveRewardItem.gameObject.SetActive(value: true);
}
cardSleeveRewardItem.SetReward(list[i]);
list2.Add(cardSleeveRewardItem);
}
}
return list2;
}
public bool IsSpecialLayout(List<ShopCommonRewardInfo> infoList)
{
List<ShopCommonRewardInfo> viewRewardList = GetViewRewardList(infoList);
SortRewardList(viewRewardList);
int num = viewRewardList.Count((ShopCommonRewardInfo reward) => reward.Type == 6);
int num2 = viewRewardList.Count((ShopCommonRewardInfo reward) => reward.Type == 7);
int num3 = viewRewardList.Count((ShopCommonRewardInfo reward) => reward.Type == 5);
if (num == 1 && num2 == 2)
{
return num3 == 2;
}
return false;
}
public void CheckSpecialLayout(GameObject parent, List<ShopCommonRewardInfo> infoList)
{
if (!IsSpecialLayout(infoList))
{
return;
}
List<ShopCommonRewardInfo> viewRewardList = GetViewRewardList(infoList);
List<ShopCommonRewardInfo> list = SortRewardList(viewRewardList);
for (int i = 0; i < SPECIAL_LAYOUT_POSITION.Length; i++)
{
Transform child = parent.transform.GetChild(i);
child.localPosition = SPECIAL_LAYOUT_POSITION[i];
child.localScale = SPECIAL_LAYOUT_SCALE[i];
}
for (int j = 0; j < LABEL_OVERRIDE_INDEX.Length; j++)
{
int index = LABEL_OVERRIDE_INDEX[j];
CardSleeveRewardItem component = parent.transform.GetChild(index).gameObject.GetComponent<CardSleeveRewardItem>();
if (component != null)
{
component.ChangeNameLabelPosition(LABEL_OVERRIDE_POSITION[j]);
component.ChangeNameLabelWidth(LABEL_OVERRIDE_WIDTH[j]);
component.SetReward(list[index]);
}
}
}
private void Start()
{
InitializeCardDetail();
}
private CardSleeveRewardItem CreateCard(GameObject parent, ShopCommonRewardInfo viewReward, int cardCount, Dictionary<int, UIBase_CardManager.CardObjData> cardPool)
{
CardSleeveRewardItem cardSleeveRewardItem;
if (cardCount < _cardItemList.Count)
{
cardSleeveRewardItem = _cardItemList[cardCount];
}
else
{
cardSleeveRewardItem = NGUITools.AddChild(parent, _cardItemOriginal.gameObject).GetComponent<CardSleeveRewardItem>();
cardSleeveRewardItem.transform.localPosition = new Vector3(cardSleeveRewardItem.transform.localPosition.x, cardSleeveRewardItem.transform.localPosition.y, 10f);
_cardItemList.Add(cardSleeveRewardItem);
}
cardSleeveRewardItem.gameObject.SetActive(value: true);
UIBase_CardManager.CardObjData cardObjOriginal = cardPool[(int)viewReward.UserGoodsId];
GameObject gameObject = NGUITools.AddChild(cardSleeveRewardItem.CardObjectParent, cardObjOriginal.CardObj);
gameObject.SetActive(value: true);
_cloneCardList.Add(gameObject);
CardListTemplate component = gameObject.GetComponent<CardListTemplate>();
component.AddDepth(_cardDepthOffset);
if (!_isEnablePremiumShader)
{
component.ReplaceMaterialToTexture();
}
int possessionCardNum = GameMgr.GetIns().GetDataMgr().GetPossessionCardNum((int)viewReward.UserGoodsId, isIncludingSpotCard: false);
if (_isEnableHaveCardCount)
{
component.SetNum(viewReward.Num);
}
else
{
component.HideNum();
}
component._newLabel.gameObject.SetActive(value: false);
if (_enableAlreadyGetCheck)
{
bool flag = possessionCardNum > 0;
cardSleeveRewardItem.SetArleadyGetVisible(flag);
UIManager.SetObjectToGrey(gameObject, flag);
component._frameSprite.depth = component._frameSprite.depth + 1;
}
component.RotationOnlyIconVisible = CardMaster.GetInstance(CardMaster.CardMasterId.Default).GetCardParameterFromId(cardObjOriginal.ids).IsResurgentCard;
if (_isEnableCardClickCollider)
{
GameObject obj = component._frameSprite.gameObject;
obj.AddComponent<BoxCollider>().size = component._frameSprite.localSize;
UIEventListener uIEventListener = UIEventListener.Get(obj);
uIEventListener.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(uIEventListener.onClick, (UIEventListener.VoidDelegate)delegate
{
if (_cardDetail != null)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_INFO);
_cardDetail.IsShowFlavorTextButton = false;
_cardDetail.IsShowEvolutionButton = false;
_cardDetail.IsShowVoiceButton = false;
_cardDetail.gameObject.SetActive(value: true);
_cardDetail.ShowCardDetail(cardObjOriginal.CardObj);
}
});
}
return cardSleeveRewardItem;
}
private void InitializeCardDetail()
{
if (!(_cardDetailPrefab == null))
{
DetailLayer = LayerMask.NameToLayer("Detail");
_cardDetail = UnityEngine.Object.Instantiate(_cardDetailPrefab).GetComponent<CardDetailUI>();
_cardDetail.transform.parent = base.transform;
_cardDetail.transform.localPosition = Vector3.zero;
_cardDetail.transform.localScale = Vector3.one;
_cardDetail.Initialize(DetailLayer, CardMaster.CardMasterId.Default);
_cardDetail.IsShowFlavorTextButton = true;
_cardDetail.IsShowVoiceButton = true;
_cardDetail.IsShowEvolutionButton = true;
_cardDetail.gameObject.SetActive(value: false);
}
}
private List<ShopCommonRewardInfo> GetViewRewardList(List<ShopCommonRewardInfo> infoList)
{
List<ShopCommonRewardInfo> list = new List<ShopCommonRewardInfo>();
for (int i = 0; i < infoList.Count && i < 5; i++)
{
list.Add(infoList[i]);
}
return list;
}
private List<ShopCommonRewardInfo> SortRewardList(List<ShopCommonRewardInfo> infoList)
{
List<ShopCommonRewardInfo> list = new List<ShopCommonRewardInfo>();
list.AddRange(infoList.FindAll((ShopCommonRewardInfo info) => info.Type == 6));
list.AddRange(infoList.FindAll((ShopCommonRewardInfo info) => info.Type == 7));
list.AddRange(infoList.FindAll((ShopCommonRewardInfo info) => info.Type == 5));
return list;
}
private void HideAllItems()
{
_sleeveItemOriginal.gameObject.SetActive(value: false);
_emblemItemOriginal.gameObject.SetActive(value: false);
if (_cardItemOriginal != null)
{
_cardItemOriginal.gameObject.SetActive(value: false);
}
for (int i = 0; i < _sleeveItemList.Count; i++)
{
_sleeveItemList[i].gameObject.SetActive(value: false);
}
for (int j = 0; j < _emblemItemList.Count; j++)
{
_emblemItemList[j].gameObject.SetActive(value: false);
}
foreach (CardSleeveRewardItem cardItem in _cardItemList)
{
cardItem.gameObject.SetActive(value: false);
}
foreach (GameObject cloneCard in _cloneCardList)
{
UnityEngine.Object.Destroy(cloneCard);
}
_cloneCardList.Clear();
}
}