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

767 lines
28 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Cute;
using LitJson;
using UnityEngine;
using Wizard;
public class MyPageCenterCard : MonoBehaviour
{
private const int CARD_VIEW_STATE_FIRST = 0;
private const int CARD_VIEW_STATE_LOAD_WAIT = 1;
private const int CARD_VIEW_STATE_CREATE_WAIT = 2;
private const int CARD_VIEW_STATE_FINISH = 3;
private readonly string CIRCLE_VIEW_LAYER_NAME = "MyPageCardList";
private const float CARD_ROTATION_ANIM_ANGLE_Y = 90f;
private const float CARD_ROTATION_ANIM_TIME = 1.5f;
private const float TRANSITIONAL_BGM_DELAY_TIME = 0.5f;
private readonly Vector3 CARD_SCALE_NORMAL = new Vector3(80f, 80f, 64f);
private readonly Vector3 CARD_SCALE_BIG = new Vector3(100f, 100f, 64f);
public GameObject CardOyaObj;
public GameObject CardDetailOya;
[SerializeField]
private GameObject CardDetailTweenObj;
[SerializeField]
private MyPageCardDetail m_CardDetail;
private List<UIBase_CardManager.CardObjData> _cardList;
private List<string> _cardListAssetPath = new List<string>();
private CardBasePrm.CharaType _currentCardType = CardBasePrm.CharaType.MAX;
private GameObject _followerCardObj;
private GameObject _spellCardObj;
private GameObject _amuletCardObj;
private Transform _followerTransform;
private Transform _spellCardTransform;
private Transform _amuletCardTransform;
private UILabel _followerCostLabel;
private UILabel _followerLifeLabel;
private UILabel _followerAtkLabel;
private UILabel _followerNameLabel;
private UILabel _spellNameLabel;
private UILabel _spellCostLabel;
private UILabel _amuletNameLabel;
private UILabel _amuletCostLabel;
private GameObject _followerRotationOnlyIcon;
private GameObject _spellRotationOnlyIcon;
private GameObject _amuletRotationOnlyIcon;
private bool _isAfterEvo;
[SerializeField]
private MyPageCharaMenu cardMoveManager;
[SerializeField]
private GameObject CameraCard;
private Vector3 _cameraCardPos;
private bool _cameraPositionInitializeEnd;
private int _cardViewState;
private int _circleCardLayer;
private IList<int> _circleViewCardList = new List<int>();
private int _scene = -1;
private int _oldIndex;
private int _previousCenterCardId = -1;
private DeckGroupListData _deckGroupListData;
public MyPageCardDetail CardDetail => m_CardDetail;
public bool CardLoadFinish => _cardViewState >= 2;
private void Awake()
{
_circleCardLayer = LayerMask.NameToLayer(CIRCLE_VIEW_LAYER_NAME);
}
private void Start()
{
Vector3 localPosition = CardDetailTweenObj.transform.localPosition;
localPosition.y = 800f;
CardDetailTweenObj.transform.localPosition = localPosition;
SaveCameraFirstPosition();
}
private void SaveCameraFirstPosition()
{
if (!_cameraPositionInitializeEnd)
{
_cameraCardPos = CameraCard.transform.localPosition;
_cameraPositionInitializeEnd = true;
}
}
private void initCard()
{
if (_cardList != null)
{
CardAllDelete();
}
_cardList = UIManager.GetInstance().getCardListObjs();
_isAfterEvo = false;
if (_followerCardObj != null)
{
UnityEngine.Object.Destroy(_followerCardObj.gameObject);
}
if (_spellCardObj != null)
{
UnityEngine.Object.Destroy(_spellCardObj.gameObject);
}
if (_amuletCardObj != null)
{
UnityEngine.Object.Destroy(_amuletCardObj.gameObject);
}
_scene = 0;
_previousCenterCardId = -1;
InstantiateCards();
}
private void InstantiateCards()
{
for (int i = 0; i < _cardList.Count; i++)
{
GameObject cardObj = _cardList[i].CardObj;
BoxCollider[] componentsInChildren = cardObj.GetComponentsInChildren<BoxCollider>();
for (int j = 0; j < componentsInChildren.Length; j++)
{
componentsInChildren[j].enabled = false;
}
cardObj.transform.parent = CardOyaObj.transform;
cardObj.transform.localPosition = new Vector3(0f, 0f, 0f);
cardObj.transform.localPosition = MoveAngle(cardObj.transform.localPosition, i * (360 / _cardList.Count) + -90, 2650f);
cardObj.transform.LookAt(CardOyaObj.transform);
cardObj.SetActive(value: true);
}
SetCardTransform();
_scene++;
}
private IEnumerator DetailInit(int cardIndex = 0)
{
while (UIManager.GetInstance().getSelectCardListObjs() == null)
{
yield return null;
}
while (!CardLoadFinish)
{
yield return null;
}
while (MyPageMenu.Instance == null)
{
yield return null;
}
List<UIBase_CardManager.CardObjData> selectCardListObjs = UIManager.GetInstance().getSelectCardListObjs();
_cardListAssetPath.AddRange(Toolbox.ResourcesManager.CardListAssetPathList);
Toolbox.ResourcesManager.CardListAssetPathList.Clear();
Material uIBaseSleeveTexture = UIManager.GetInstance().getUIBase_CardManager().GetUIBaseSleeveTexture();
for (int i = 0; i < selectCardListObjs.Count; i++)
{
_currentCardType = CardMaster.GetInstance(CardMaster.CardMasterId.Default).GetCardParameterFromId(selectCardListObjs[i].ids).CharType;
if (_amuletCardObj == null && (_currentCardType == CardBasePrm.CharaType.FIELD || _currentCardType == CardBasePrm.CharaType.CHANT_FIELD))
{
CardInitAmulet(i, selectCardListObjs, uIBaseSleeveTexture);
}
if (_spellCardObj == null && _currentCardType == CardBasePrm.CharaType.SPELL)
{
CardInitSpell(i, selectCardListObjs, uIBaseSleeveTexture);
}
if (_followerCardObj == null && _currentCardType == CardBasePrm.CharaType.NORMAL)
{
CardInitFollower(i, selectCardListObjs, uIBaseSleeveTexture);
}
if (_followerCardObj != null && _spellCardObj != null && _amuletCardObj != null)
{
break;
}
}
for (int j = 0; j < selectCardListObjs.Count; j++)
{
UnityEngine.Object.Destroy(selectCardListObjs[j].CardObj);
selectCardListObjs[j] = null;
}
settingCard(cardIndex);
}
private GameObject CardBaseInit(Transform card)
{
card.transform.localPosition = new Vector3(0f, 0f, 0f);
card.transform.localScale = new Vector3(510f, 510f, 200f);
card.transform.localEulerAngles = Vector3.zero;
Transform obj = card.Find("CardBase");
obj.localPosition = Global.CARD_BASE_POS;
obj.localRotation = Quaternion.Euler(Global.CARD_BASE_ROT);
obj.localScale = new Vector3(1f, 1f, 1f);
Transform transform = card.Find("RotationOnlyIcon");
if (transform != null)
{
return transform.gameObject;
}
GameObject prefab = Resources.Load("Prefab/CardDeco/RotationOnlyIcon") as GameObject;
return NGUITools.AddChild(card.gameObject, prefab);
}
private void CardInitAmulet(int i, List<UIBase_CardManager.CardObjData> detailCards, Material BaseTexture)
{
GameObject gameObject = null;
GameObject gameObject2 = null;
Material material = null;
ResourcesManager resourcesManager = Toolbox.ResourcesManager;
Texture texture = null;
Texture texture2 = null;
_amuletCardObj = NGUITools.AddChild(CardDetailTweenObj, detailCards[i].CardObj.gameObject);
gameObject = _amuletCardObj;
gameObject.gameObject.SetActive(value: true);
gameObject.name = "AmmuletCard";
_amuletCardTransform = gameObject.transform;
_amuletCostLabel = _amuletCardTransform.Find("Cost(Clone)/CostLabel").GetComponent<UILabel>();
_amuletCardTransform.Find("Cost(Clone)").gameObject.SetActive(value: true);
_amuletNameLabel = _amuletCardTransform.Find("Name(Clone)/NameLabel").GetComponent<UILabel>();
_amuletCardTransform.Find("Name(Clone)").gameObject.SetActive(value: true);
MeshRenderer component = _amuletCardTransform.Find("CardBase").GetComponent<MeshRenderer>();
component.material = BaseTexture;
component.material.SetFloat("_CullMode", 2f);
component.material.SetFloat("_ZWriteMode", 1f);
_amuletRotationOnlyIcon = CardBaseInit(_amuletCardTransform);
gameObject2 = _amuletCardTransform.Find("SpecularField").gameObject;
material = resourcesManager.LoadObject<Material>(resourcesManager.GetAssetTypePath("FieldCardFrameSpecularMat", ResourcesManager.AssetLoadPathType.CardFrameMaterialPlus, isfetch: true));
texture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Field_a_3", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon, isfetch: true));
texture2 = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Field_n_3", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon, isfetch: true));
CardInitSpecular(gameObject2, material, texture, texture2);
}
private void CardInitSpell(int i, List<UIBase_CardManager.CardObjData> detailCards, Material BaseTexture)
{
GameObject gameObject = null;
GameObject gameObject2 = null;
Material material = null;
ResourcesManager resourcesManager = Toolbox.ResourcesManager;
Texture texture = null;
Texture texture2 = null;
_spellCardObj = NGUITools.AddChild(CardDetailTweenObj, detailCards[i].CardObj.gameObject);
gameObject = _spellCardObj;
gameObject.gameObject.SetActive(value: true);
gameObject.name = "SpellCard";
_spellCardTransform = gameObject.transform;
_spellCostLabel = _spellCardTransform.Find("Cost(Clone)/CostLabel").GetComponent<UILabel>();
_spellCardTransform.Find("Cost(Clone)").gameObject.SetActive(value: true);
_spellNameLabel = _spellCardTransform.Find("Name(Clone)/NameLabel").GetComponent<UILabel>();
_spellCardTransform.Find("Name(Clone)").gameObject.SetActive(value: true);
MeshRenderer component = _spellCardTransform.Find("CardBase").GetComponent<MeshRenderer>();
component.material = BaseTexture;
component.material.SetFloat("_CullMode", 2f);
component.material.SetFloat("_ZWriteMode", 1f);
_spellRotationOnlyIcon = CardBaseInit(_spellCardTransform);
gameObject2 = _spellCardTransform.Find("SpecularSpell").gameObject;
material = resourcesManager.LoadObject<Material>(resourcesManager.GetAssetTypePath("SpellCardFrameSpecularMat", ResourcesManager.AssetLoadPathType.CardFrameMaterialPlus, isfetch: true));
texture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Spell_a_3", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon, isfetch: true));
texture2 = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Spell_n_3", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon, isfetch: true));
CardInitSpecular(gameObject2, material, texture, texture2);
}
private void CardInitFollower(int i, List<UIBase_CardManager.CardObjData> detailCards, Material BaseTexture)
{
GameObject gameObject = null;
GameObject gameObject2 = null;
Material material = null;
ResourcesManager resourcesManager = Toolbox.ResourcesManager;
Texture texture = null;
Texture texture2 = null;
_followerCardObj = NGUITools.AddChild(CardDetailTweenObj, detailCards[i].CardObj.gameObject);
gameObject = _followerCardObj;
gameObject.gameObject.SetActive(value: true);
gameObject.name = "FollowerCard";
_followerTransform = gameObject.transform;
_followerAtkLabel = _followerTransform.Find("Atk(Clone)/AtkLabel").GetComponent<UILabel>();
_followerAtkLabel.gameObject.SetActive(value: true);
_followerTransform.Find("Atk(Clone)").gameObject.SetActive(value: true);
_followerLifeLabel = _followerTransform.Find("Life(Clone)/LifeLabel").GetComponent<UILabel>();
_followerTransform.Find("Life(Clone)").gameObject.SetActive(value: true);
_followerCostLabel = _followerTransform.Find("Cost(Clone)/CostLabel").GetComponent<UILabel>();
_followerTransform.Find("Cost(Clone)").gameObject.SetActive(value: true);
_followerNameLabel = _followerTransform.Find("Name(Clone)/NameLabel").GetComponent<UILabel>();
_followerTransform.Find("Name(Clone)").gameObject.SetActive(value: true);
MeshRenderer component = _followerTransform.Find("CardBase").GetComponent<MeshRenderer>();
component.material = BaseTexture;
component.material.SetFloat("_CullMode", 2f);
component.material.SetFloat("_ZWriteMode", 1f);
_followerRotationOnlyIcon = CardBaseInit(_followerTransform);
gameObject2 = _followerTransform.Find("SpecularUnit").gameObject;
material = resourcesManager.LoadObject<Material>(resourcesManager.GetAssetTypePath("UnitCardFrameSpecularMat", ResourcesManager.AssetLoadPathType.CardFrameMaterialPlus, isfetch: true));
texture = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Unit_a_4", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon, isfetch: true));
texture2 = Toolbox.ResourcesManager.LoadObject<Texture>(Toolbox.ResourcesManager.GetAssetTypePath("tx_Card_Unit_n_4", ResourcesManager.AssetLoadPathType.CardFrameTextureCommon, isfetch: true));
CardInitSpecular(gameObject2, material, texture, texture2);
}
private void CardInitSpecular(GameObject specularObj, Material specularMaterial, Texture specularTexture0, Texture specularTexture1)
{
if (specularObj != null)
{
specularObj.transform.localRotation = Quaternion.Euler(0f, 180f, 0f);
specularMaterial.shader = Shader.Find(specularMaterial.shader.name);
specularObj.GetComponent<MeshRenderer>().material = specularMaterial;
specularObj.GetComponent<MeshRenderer>().material.SetTexture("_AOREFSPEC", specularTexture0);
specularObj.GetComponent<MeshRenderer>().material.SetTexture("_BumpMap", specularTexture1);
specularObj.SetActive(value: true);
specularObj.layer = 18;
}
}
public bool canMyPageCardMove()
{
if (_followerCardObj == null && _spellCardObj == null && _amuletCardObj == null)
{
return false;
}
return true;
}
public void UpdateSelectCard()
{
if (_scene == 1)
{
int nowSelIndex = cardMoveManager.getNowSelIndex();
if (nowSelIndex > -1 && _oldIndex != nowSelIndex)
{
bool forceGraphicChange = IsAfterEvolution(_oldIndex);
_oldIndex = nowSelIndex;
settingCard(nowSelIndex, forceGraphicChange);
}
}
}
private void settingCard(int nowIndex, bool forceGraphicChange = false)
{
if (nowIndex >= _cardList.Count)
{
return;
}
int ids = _cardList[nowIndex].ids;
if (_previousCenterCardId == ids && !forceGraphicChange)
{
return;
}
_previousCenterCardId = ids;
CardParameter cardParameterFromId = CardMaster.GetInstance(CardMaster.CardMasterId.Default).GetCardParameterFromId(ids);
CardDetail.UpdateCardData(cardParameterFromId.NormalCardId);
_currentCardType = cardParameterFromId.CharType;
if (_currentCardType == CardBasePrm.CharaType.NORMAL)
{
_isAfterEvo = false;
_followerAtkLabel.text = _cardList[nowIndex].Atks;
_followerLifeLabel.text = _cardList[nowIndex].lifes;
_followerCostLabel.text = _cardList[nowIndex].Cost;
_followerNameLabel.text = _cardList[nowIndex].Names;
Global.SetRepositionNameLabel(_followerNameLabel, _cardList[nowIndex].Names, is2D: false);
_followerCardObj.gameObject.SetActive(value: false);
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(_followerAtkLabel, _cardList[nowIndex].isPremiere);
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(_followerCostLabel, _cardList[nowIndex].isPremiere);
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(_followerLifeLabel, _cardList[nowIndex].isPremiere);
UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(_followerNameLabel, _cardList[nowIndex].isPremiere);
_followerCardObj.gameObject.SetActive(value: true);
if (_spellCardObj != null)
{
_spellCardObj.gameObject.SetActive(value: false);
}
if (_amuletCardObj != null)
{
_amuletCardObj.gameObject.SetActive(value: false);
}
_followerRotationOnlyIcon.SetActive(cardParameterFromId.IsResurgentCard);
}
else if (_currentCardType == CardBasePrm.CharaType.SPELL)
{
_spellNameLabel.text = _cardList[nowIndex].Names;
Global.SetRepositionNameLabel(_spellNameLabel, _cardList[nowIndex].Names, is2D: false);
_spellCostLabel.text = _cardList[nowIndex].Cost;
_spellCardObj.gameObject.SetActive(value: false);
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(_spellCostLabel, _cardList[nowIndex].isPremiere);
UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(_spellNameLabel, _cardList[nowIndex].isPremiere);
_spellCardObj.gameObject.SetActive(value: true);
if (_followerCardObj != null)
{
_followerCardObj.gameObject.SetActive(value: false);
}
if (_amuletCardObj != null)
{
_amuletCardObj.gameObject.SetActive(value: false);
}
_spellRotationOnlyIcon.SetActive(cardParameterFromId.IsResurgentCard);
}
else if (_currentCardType == CardBasePrm.CharaType.FIELD || _currentCardType == CardBasePrm.CharaType.CHANT_FIELD)
{
_amuletNameLabel.text = _cardList[nowIndex].Names;
Global.SetRepositionNameLabel(_amuletNameLabel, _cardList[nowIndex].Names, is2D: false);
_amuletCostLabel.text = _cardList[nowIndex].Cost;
_amuletCardObj.gameObject.SetActive(value: false);
UIManager.GetInstance().getUIBase_CardManager().SetNumberLabelStyle(_amuletCostLabel, _cardList[nowIndex].isPremiere);
UIManager.GetInstance().getUIBase_CardManager().SetNameLabelStyle(_amuletNameLabel, _cardList[nowIndex].isPremiere);
_amuletCardObj.gameObject.SetActive(value: true);
if (_followerCardObj != null)
{
_followerCardObj.gameObject.SetActive(value: false);
}
if (_spellCardObj != null)
{
_spellCardObj.gameObject.SetActive(value: false);
}
_amuletRotationOnlyIcon.SetActive(cardParameterFromId.IsResurgentCard);
}
Transform transform = _cardList[nowIndex].CardObj.transform;
GameObject gameObject = null;
LODGroup lODGroup = null;
LODGroup lODGroup2 = null;
switch (_currentCardType)
{
case CardBasePrm.CharaType.FIELD:
case CardBasePrm.CharaType.CHANT_FIELD:
gameObject = _amuletCardObj.gameObject;
lODGroup = transform.GetComponent<LODGroup>();
lODGroup2 = _amuletCardTransform.GetComponent<LODGroup>();
break;
case CardBasePrm.CharaType.NORMAL:
gameObject = _followerCardObj.gameObject;
lODGroup = transform.GetComponent<LODGroup>();
lODGroup2 = _followerTransform.GetComponent<LODGroup>();
break;
case CardBasePrm.CharaType.SPELL:
gameObject = _spellCardObj.gameObject;
lODGroup = transform.GetComponent<LODGroup>();
lODGroup2 = _spellCardTransform.GetComponent<LODGroup>();
break;
}
LOD[] lODs = lODGroup2.GetLODs();
LOD[] lODs2 = lODGroup.GetLODs();
int num = lODs.Length;
for (int i = 0; i < num; i++)
{
LOD lOD = lODs[i];
LOD lOD2 = lODs2[i];
lOD.renderers[0].sharedMaterials = lOD2.renderers[0].sharedMaterials;
}
gameObject.transform.localPosition = Vector3.zero;
}
public void SetCardTransform()
{
for (int i = 0; i < _cardList.Count; i++)
{
float num = ((!(_cardList[i].CardObj.transform.position.z < -7.3f)) ? 0f : MotionUtils.GetEase(Mathf.Abs(_cardList[i].CardObj.transform.position.z + 7.3f), MotionUtils.EaseType.easeInExpo));
_cardList[i].CardObj.transform.localPosition = new Vector3(_cardList[i].CardObj.transform.localPosition.x, 100f * num, _cardList[i].CardObj.transform.localPosition.z);
_cardList[i].CardObj.transform.localScale = CARD_SCALE_NORMAL + (CARD_SCALE_BIG - CARD_SCALE_NORMAL) * num;
}
}
public void PlayCardRotationAnime(int index, bool isRightRotate)
{
StartCoroutine(RunCardRotationAnime(index, isRightRotate));
}
private IEnumerator RunCardRotationAnime(int index, bool isRightRotate)
{
CardDetail.ResetAngleCardObj();
yield return null;
if (isRightRotate)
{
CardDetailTweenObj.transform.rotation = Quaternion.Euler(new Vector3(CardDetailTweenObj.transform.rotation.x, -90f, CardDetailTweenObj.transform.rotation.z));
iTween.RotateTo(CardDetailTweenObj.gameObject, iTween.Hash("y", 0f, "time", 1.5f, "easetype", iTween.EaseType.easeOutExpo));
}
else
{
CardDetailTweenObj.transform.rotation = Quaternion.Euler(new Vector3(CardDetailTweenObj.transform.rotation.x, 90f, CardDetailTweenObj.transform.rotation.z));
iTween.RotateTo(CardDetailTweenObj.gameObject, iTween.Hash("y", 0f, "time", 1.5f, "easetype", iTween.EaseType.easeOutExpo));
}
}
public void ChangeEvoDisplay(int index)
{
if (isEvo(index) && index < _cardList.Count && index > -1)
{
LOD[] lODs = _followerTransform.GetComponent<LODGroup>().GetLODs();
Material[] materials = lODs[0].renderers[0].materials;
CardParameter cardParameterFromId = CardMaster.GetInstance(CardMaster.CardMasterId.Default).GetCardParameterFromId(_cardList[index].ids);
if (!_isAfterEvo)
{
_isAfterEvo = true;
_followerCostLabel.text = _cardList[index].Evo_Costs;
_followerLifeLabel.text = _cardList[index].Evo_lifes;
_followerAtkLabel.text = _cardList[index].Evo_Atks;
_followerNameLabel.text = _cardList[index].Evo_Names;
materials[1] = Toolbox.ResourcesManager.FindCardMaterial(cardParameterFromId.ResourceCardId, ResourcesManager.AssetLoadPathType.UnitCardMaterial, isEvol: true);
}
else
{
_isAfterEvo = false;
_followerCostLabel.text = _cardList[index].Cost;
_followerLifeLabel.text = _cardList[index].lifes;
_followerAtkLabel.text = _cardList[index].Atks;
_followerNameLabel.text = _cardList[index].Names;
materials[1] = Toolbox.ResourcesManager.FindCardMaterial(cardParameterFromId.ResourceCardId, ResourcesManager.AssetLoadPathType.UnitCardMaterial);
}
materials[2] = CardCreatorBase.GetSharedClassIconMaterial(_cardList[index].clan);
LOD[] array = lODs;
for (int i = 0; i < array.Length; i++)
{
Renderer renderer = array[i].renderers[0];
materials[0] = renderer.materials[0];
renderer.sharedMaterials = materials;
}
}
}
public bool IsAfterEvolution(int index)
{
return _isAfterEvo;
}
public bool isEvo(int index)
{
if (_cardList == null || index >= _cardList.Count || index <= -1)
{
return false;
}
return _cardList[index].EvolOk;
}
private Vector3 MoveAngle(Vector3 my, float angle, float speed)
{
float num = Mathf.Cos(angle * (float)Math.PI / 180f) * speed;
float num2 = Mathf.Sin(angle * (float)Math.PI / 180f) * speed;
return new Vector3(my.x + num, my.y, my.z + num2);
}
public List<UIBase_CardManager.CardObjData> getCardList()
{
return _cardList;
}
private void OnDestroy()
{
CardAllDelete();
}
private void CardAllDelete()
{
Toolbox.ResourcesManager.RemoveAssetGroup(_cardListAssetPath);
_cardListAssetPath.Clear();
foreach (UIBase_CardManager.CardObjData card in _cardList)
{
UnityEngine.Object.Destroy(card.CardObj);
}
for (int i = 0; i < _cardList.Count; i++)
{
_cardList[i] = null;
}
_cardList = new List<UIBase_CardManager.CardObjData>();
UnityEngine.Object.Destroy(_followerCardObj);
_followerCardObj = null;
UnityEngine.Object.Destroy(_spellCardObj);
_spellCardObj = null;
}
public void MoveInCameraCard()
{
SaveCameraFirstPosition();
CameraCard.transform.localPosition = _cameraCardPos + Vector3.up * 2000f;
iTween.MoveTo(CameraCard.gameObject, iTween.Hash("position", _cameraCardPos, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
}
private DeckData GetLastBattleDeck(out Format format)
{
bool num = PlayerPrefsWrapper.GetBool(PlayerPrefsWrapper.LAST_BATTLE_IS_DEFAULT_DECK_FOR_MYPAGE);
int lastDeckId = PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.LAST_BATTLE_DECK_ID_FOR_MYPAGE);
Format format2 = (Format)PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.LAST_BATTLE_DECK_FORMAT_FOR_MYPAGE);
if (format2 == Format.Max || format2 == Format.Hof || format2 == Format.Avatar)
{
format2 = Format.Unlimited;
}
if (num)
{
format = Format.Max;
DeckData deckData = _deckGroupListData.GetDeckListByAttribute(DeckAttributeType.DefaultDeck).FirstOrDefault((DeckData deck) => deck.GetDeckID() == lastDeckId);
if (deckData != null)
{
return deckData;
}
int classOffsetId = lastDeckId + 90;
deckData = _deckGroupListData.GetDeckListByAttribute(DeckAttributeType.DefaultDeck).FirstOrDefault((DeckData deck) => deck.GetDeckID() == classOffsetId);
if (deckData != null)
{
return deckData;
}
}
else
{
format = format2;
List<int> list = JsonMapper.ToObject<List<int>>(PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.LAST_BATTLE_DECK_CARD_LIST));
long result;
bool flag = long.TryParse(PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.LAST_BATTLE_DECK_SLEEVE_ID), out result);
bool flag2 = false;
if (list != null && list.Count == 40 && flag)
{
flag2 = true;
}
DeckData deckData2 = _deckGroupListData.GetDeckListByAttribute(DeckAttributeType.CustomDeck, format2).FirstOrDefault((DeckData deck) => deck.GetDeckID() == lastDeckId);
if (deckData2 != null && deckData2.IsDisplayable())
{
if (flag2)
{
long.TryParse(PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.LAST_BATTLE_DECK_SLEEVE_ID), out result);
list = UIManager.GetInstance().getUIBase_CardManager().SortIDList(list, CardMaster.CardMasterId.Default);
deckData2.SetCardIdList(list);
deckData2.SetDeckSleeveID(result);
deckData2.SetDeckIsComplete(isComplete: true);
}
return deckData2;
}
}
return null;
}
public int GetDetailCardCount()
{
return _circleViewCardList.Count;
}
private void Update()
{
switch (_cardViewState)
{
case 0:
{
UIManager.GetInstance().CreatFadeBlack();
if (!UIManager.GetInstance().IsWizardSetupFinish() || _deckGroupListData == null)
{
break;
}
UIManager.GetInstance().Force_Increment_LockCountChangeView();
_cardViewState++;
DeckData lastBattleDeck = GetLastBattleDeck(out var format);
if (lastBattleDeck != null)
{
UIManager.GetInstance().MyPageHomeCardLoadDeck(base.gameObject, lastBattleDeck, _circleCardLayer);
break;
}
lastBattleDeck = _deckGroupListData.GetDeckListByAttribute(DeckAttributeType.CustomDeck, format).FirstOrDefault();
if (lastBattleDeck != null && lastBattleDeck.IsDisplayable())
{
UIManager.GetInstance().MyPageHomeCardLoadDeck(base.gameObject, lastBattleDeck, _circleCardLayer);
}
else
{
UIManager.GetInstance().MyPageHomeCardLoadDeck(base.gameObject, _deckGroupListData.GetDeckListByAttribute(DeckAttributeType.DefaultDeck).First(), _circleCardLayer);
}
break;
}
case 1:
{
if (!UIManager.GetInstance().isCardCreatEnd())
{
break;
}
_cardViewState++;
initCard();
List<UIBase_CardManager.CardObjData> cardListObjs = UIManager.GetInstance().getCardListObjs();
_circleViewCardList = new List<int>();
bool flag = false;
bool flag2 = false;
bool flag3 = false;
for (int i = 0; i < cardListObjs.Count; i++)
{
CardBasePrm.CharaType charType = CardMaster.GetInstance(CardMaster.CardMasterId.Default).GetCardParameterFromId(cardListObjs[i].ids).CharType;
if (!flag && charType == CardBasePrm.CharaType.SPELL)
{
_circleViewCardList.Add(cardListObjs[i].ids);
flag = true;
}
if (!flag2 && charType == CardBasePrm.CharaType.NORMAL)
{
_circleViewCardList.Add(cardListObjs[i].ids);
flag2 = true;
}
if (!flag3 && (charType == CardBasePrm.CharaType.FIELD || charType == CardBasePrm.CharaType.CHANT_FIELD))
{
_circleViewCardList.Add(cardListObjs[i].ids);
flag3 = true;
}
if (flag2 && flag && flag3)
{
break;
}
}
UIManager.GetInstance().CardLoadSelect(base.gameObject, _circleViewCardList, _circleCardLayer, is2D: false, null, isDefaultSleeve: true);
break;
}
case 2:
if (UIManager.GetInstance().isCardCreatEnd())
{
_cardViewState++;
UIManager.GetInstance().Force_Decrement_LockCountChangeView();
StartCoroutine(DetailInit(cardMoveManager.getNowSelIndex()));
}
break;
}
}
public void LoadDeckInfo(Action onFinish = null)
{
_deckGroupListData = null;
DeckInfoTask task = new DeckInfoTask();
task.SetParameter(Format.All);
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
{
_deckGroupListData = task.DeckGroupListData;
onFinish.Call();
}));
}
public void ReloadCardCircle()
{
if (_cardViewState == 3)
{
LoadDeckInfo();
CardAllDelete();
_cardViewState = 0;
}
}
}