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

173 lines
5.7 KiB
C#

using System;
using System.Collections;
using Cute;
using UnityEngine;
using Wizard;
public class DeckIntroductionItem : MonoBehaviour
{
private const int WIDTH_DECK_NAME_LABEL_NORMAL = 284;
private const int WIDTH_DECK_NAME_LABEL_USE_SUBCLASS = 242;
[SerializeField]
private CostCurveUI _costCurve;
[SerializeField]
private UILabel _deckName;
[SerializeField]
private UISprite _formatIcon;
[SerializeField]
private ClassInfoParts _classInfoParts;
[SerializeField]
private UILabel _playerName;
[SerializeField]
private UILabel _deckDetail;
[SerializeField]
private UILabel _followerCount;
[SerializeField]
private UILabel _amuletCount;
[SerializeField]
private UILabel _spellCount;
[SerializeField]
private UITexture _cardTexture;
[SerializeField]
private UIButton _button;
[SerializeField]
private TweenScale _buttonAnimationTween;
private DeckIntroductionTask.IntroductionData _data;
public Action<DeckIntroductionTask.IntroductionData> OnClick { get; set; }
public void Initialize(DeckIntroductionTask.IntroductionData data)
{
IFormatBehavior defaultBehaviour = FormatBehaviorManager.GetDefaultBehaviour(data.Deck.Format);
_data = data;
_playerName.text = data.PlayerName;
_deckDetail.text = data.Detail;
_formatIcon.spriteName = defaultBehaviour.SmallIconSpriteName;
if (data.Deck.Format == Format.Rotation)
{
_formatIcon.spriteName = "icon_rotation_s";
}
_deckName.text = data.Deck.GetDeckName();
_deckName.width = (defaultBehaviour.UseSubClass ? 242 : 284);
_classInfoParts.gameObject.SetActive(defaultBehaviour.UseSubClass);
if (defaultBehaviour.UseSubClass)
{
_classInfoParts.InitByCharaPrm(GameMgr.GetIns().GetDataMgr().GetCharaPrmByCharaId(data.Deck.GetDeckClassID()));
_classInfoParts.SetSubClass((CardBasePrm.ClanType)data.Deck.GetDeckSubClassID());
}
int followerCount = 0;
int spellCount = 0;
int amuletCount = 0;
GetCardCountEachType(data.Deck, out followerCount, out spellCount, out amuletCount);
_followerCount.text = followerCount.ToString();
_spellCount.text = spellCount.ToString();
_amuletCount.text = amuletCount.ToString();
_costCurve.Initialize(defaultBehaviour.CardMasterId);
_costCurve.Refresh(data.Deck.GetCardIdList().ToArray());
_button.onClick.Clear();
_button.onClick.Add(new EventDelegate(delegate
{
OnClickButton();
}));
string battleLogTexturePath = GetBattleLogTexturePath(data.TopCardId);
_cardTexture.mainTexture = Toolbox.ResourcesManager.LoadObject<Texture>(battleLogTexturePath);
}
private void Start()
{
UIEventListener uIEventListener = UIEventListener.Get(_button.gameObject);
uIEventListener.onPress = (UIEventListener.BoolDelegate)Delegate.Combine(uIEventListener.onPress, (UIEventListener.BoolDelegate)delegate
{
StartCoroutine(ButtonAnimation());
});
}
private IEnumerator ButtonAnimation()
{
BoxCollider btn = _button.GetComponent<BoxCollider>();
Vector3 to = _buttonAnimationTween.to;
Vector3 defaultSize = btn.size;
Vector3 size = new Vector3(btn.size.x / to.x, btn.size.y / to.y, btn.size.z / to.z);
if ((bool)_buttonAnimationTween)
{
_buttonAnimationTween.PlayForward();
btn.size = size;
while (Input.GetMouseButton(0))
{
yield return null;
}
_buttonAnimationTween.PlayReverse();
btn.size = defaultSize;
}
}
public static string GetCardMaterialPath(int cardId)
{
CardMaster instance = CardMaster.GetInstance(CardMaster.CardMasterId.Default);
CardParameter cardParameterFromId = instance.GetCardParameterFromId(cardId);
CardParameter cardParameterFromId2 = instance.GetCardParameterFromId(cardParameterFromId.NormalCardId);
ResourcesManager.AssetLoadPathType type = ResourcesManager.AssetLoadPathType.UnitCardMaterial;
if (instance.GetCardParameterFromId(cardId).CharType != CardBasePrm.CharaType.NORMAL && !CardMaster.IsMutationCardCheck(instance.GetCardParameterFromId(cardId).BaseCardId))
{
type = ResourcesManager.AssetLoadPathType.SpellCardMaterial;
}
return Toolbox.ResourcesManager.GetAssetTypePath(cardParameterFromId2.ResourceCardId.ToString(), type);
}
private static string GetBattleLogTexturePath(int cardId)
{
CardMaster instance = CardMaster.GetInstance(CardMaster.CardMasterId.Default);
ResourcesManager.AssetLoadPathType assetLoadPathType = ResourcesManager.AssetLoadPathType.UnitHeader;
string path = instance.GetCardParameterFromId(cardId).ResourceCardId + "0";
assetLoadPathType = ((instance.GetCardParameterFromId(cardId).CharType != CardBasePrm.CharaType.NORMAL && !CardMaster.IsMutationCardCheck(instance.GetCardParameterFromId(cardId).BaseCardId)) ? ResourcesManager.AssetLoadPathType.OtherHeader : ResourcesManager.AssetLoadPathType.UnitHeader);
return Toolbox.ResourcesManager.GetAssetTypePath(path, assetLoadPathType, isfetch: true);
}
private void GetCardCountEachType(DeckData deck, out int followerCount, out int spellCount, out int amuletCount)
{
CardMaster instance = CardMaster.GetInstance(CardMaster.CardMasterId.Default);
int num = 0;
int num2 = 0;
int num3 = 0;
foreach (int cardId in deck.GetCardIdList())
{
switch (instance.GetCardParameterFromId(cardId).CharType)
{
case CardBasePrm.CharaType.NORMAL:
num++;
break;
case CardBasePrm.CharaType.SPELL:
num2++;
break;
case CardBasePrm.CharaType.FIELD:
case CardBasePrm.CharaType.CHANT_FIELD:
num3++;
break;
}
}
followerCount = num;
spellCount = num2;
amuletCount = num3;
}
private void OnClickButton()
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
OnClick.Call(_data);
}
}