feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
namespace Wizard.Battle.Mulligan;
|
||||
|
||||
public abstract class MulliganViewBase
|
||||
{
|
||||
public static readonly Vector3 CARD_ROTATION = new Vector3(0f, 0f, 0f);
|
||||
|
||||
public static readonly Vector3 CARD_ROTATION_OPPO = new Vector3(0f, 180f, 0f);
|
||||
|
||||
protected MulliganInfoControl m_MlgUI;
|
||||
|
||||
public MulliganInfoControl MulliganInfo => m_MlgUI;
|
||||
|
||||
public MulliganViewBase(MulliganInfoControl mulliganInfo)
|
||||
{
|
||||
m_MlgUI = mulliganInfo;
|
||||
}
|
||||
|
||||
public VfxBase UpdateOpponentMulliganStatusLabel(int Count)
|
||||
{
|
||||
return InstantVfx.Create(delegate
|
||||
{
|
||||
m_MlgUI.SetEnemyReady(Count);
|
||||
});
|
||||
}
|
||||
|
||||
public VfxBase MoveMulliganUIOutWhenSubmitMulligan()
|
||||
{
|
||||
return m_MlgUI.OnMulliganSubmit();
|
||||
}
|
||||
|
||||
public VfxBase SortFirstDrawsToKeepZone(IList<BattleCardBase> firstDraws)
|
||||
{
|
||||
return new PlayerMulliganCardSortOutVfx(GetMulliganUIKeepZone(), firstDraws, m_MlgUI);
|
||||
}
|
||||
|
||||
public static VfxBase MoveCardToMulliganZone(BattleCardBase target, GameObject mulliganZone, int posIndex, MulliganInfoControl mulliganUI, bool isAbandon)
|
||||
{
|
||||
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
|
||||
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
GameObject gameObject = target.BattleCardView.GameObject;
|
||||
target.BattleCardView.GameObject.transform.parent = mulliganZone.transform;
|
||||
Vector3 mulliganZoneCardPos = mulliganUI.GetMulliganZoneCardPos(posIndex, isAbandon, target.IsPlayer);
|
||||
Vector3 mulliganZoneCardScale = mulliganUI.GetMulliganZoneCardScale();
|
||||
if (BattleManagerBase.GetIns().IsRecovery)
|
||||
{
|
||||
gameObject.transform.localScale = mulliganZoneCardScale;
|
||||
}
|
||||
else
|
||||
{
|
||||
iTween.ScaleTo(gameObject, iTween.Hash("scale", mulliganZoneCardScale, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
}
|
||||
if (GameMgr.GetIns().IsWatchBattle)
|
||||
{
|
||||
if (GameMgr.GetIns().IsAdmin)
|
||||
{
|
||||
RotatePlayer(gameObject);
|
||||
}
|
||||
else if (!BattleManagerBase.GetIns().BattlePlayer.PlayerBattleView.HandControl.IsVisibleHand())
|
||||
{
|
||||
RotateEnemy(gameObject);
|
||||
}
|
||||
else if (target.IsPlayer)
|
||||
{
|
||||
RotatePlayer(gameObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
RotateEnemy(gameObject);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RotatePlayer(gameObject);
|
||||
}
|
||||
if (BattleManagerBase.GetIns().IsRecovery)
|
||||
{
|
||||
gameObject.transform.localPosition = mulliganZoneCardPos;
|
||||
}
|
||||
else
|
||||
{
|
||||
iTween.MoveTo(gameObject, iTween.Hash("position", mulliganZoneCardPos, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
}
|
||||
}));
|
||||
return sequentialVfxPlayer;
|
||||
}
|
||||
|
||||
private static void RotatePlayer(GameObject cardObj)
|
||||
{
|
||||
if (BattleManagerBase.GetIns().IsRecovery)
|
||||
{
|
||||
cardObj.transform.localRotation = Quaternion.Euler(CARD_ROTATION);
|
||||
return;
|
||||
}
|
||||
iTween.RotateTo(cardObj, iTween.Hash("rotation", CARD_ROTATION, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
}
|
||||
|
||||
private static void RotateEnemy(GameObject cardObj)
|
||||
{
|
||||
if (BattleManagerBase.GetIns().IsRecovery)
|
||||
{
|
||||
cardObj.transform.localRotation = Quaternion.Euler(CARD_ROTATION_OPPO);
|
||||
return;
|
||||
}
|
||||
iTween.RotateTo(cardObj, iTween.Hash("rotation", CARD_ROTATION_OPPO, "time", 0.3f, "islocal", true, "easetype", iTween.EaseType.easeOutExpo));
|
||||
}
|
||||
|
||||
public virtual SequentialVfxPlayer MoveCardToStaticPosition(BattleCardBase card, int posIndex, bool isAbandon)
|
||||
{
|
||||
GameObject mulliganZone = (isAbandon ? GetMulliganUIAbandonZone() : GetMulliganUIKeepZone());
|
||||
SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
|
||||
sequentialVfxPlayer.Register(InstantVfx.Create(delegate
|
||||
{
|
||||
card.SetOnMove(move: true);
|
||||
}));
|
||||
sequentialVfxPlayer.Register(MoveCardToMulliganZone(card, mulliganZone, posIndex, m_MlgUI, isAbandon));
|
||||
sequentialVfxPlayer.Register(WaitVfx.Create(0.3f));
|
||||
return sequentialVfxPlayer;
|
||||
}
|
||||
|
||||
protected abstract GameObject GetMulliganUIKeepZone();
|
||||
|
||||
protected abstract GameObject GetMulliganUIAbandonZone();
|
||||
|
||||
public abstract void HideMulliganUIAbandonZone();
|
||||
|
||||
public void HideMulliganTitle()
|
||||
{
|
||||
m_MlgUI.HideMulliganTitle();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user