port(m1): wave 7f — VFX containers / Create factories / dropped event / ctor cascade (112->88)

- VFX: SequentialVfxPlayer.GetAllVfxAsList, ParallelVfxPlayer.GetVfxList,
  VfxMgr.CheckAndAddEffectVfxList; point our own ShowBattleUIImmediatelyVfx stub at
  NullVfx.GetInstance() (it called a non-existent NullVfx.Create).
- Static factories: SkillTargetSelectTouchProcessor.Create (10-arg),
  DialogReportToManagement.Create(long).
- Re-add StartSkillSelectVfx.OnStart event (m1_stub_gen drops `event` decls — the
  recurring session-6 gap; generator event-capture fix still pending).
- Stop the BattleCardView/GameObjMgr ctor cascade: parameterless ctors on the no-op
  BattleCardView and GameObjMgr hand shims so non-chaining subclass/field stubs satisfy
  their implicit base() call.
- Copy Cute/ListExtensions.cs (FisherYatesShuffle extension) verbatim into Engine.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-06-06 00:49:07 -04:00
parent 981f903504
commit 5c5a58af3c
8 changed files with 33 additions and 3 deletions

View File

@@ -53,7 +53,7 @@ namespace Wizard.Battle.UI
namespace Wizard.UI.ReportToManagement
{
public partial class DialogReportToManagement { }
public partial class DialogReportToManagement { public static DialogBase Create(long battleId = -1L) => default!; }
}
namespace Wizard.Dialog.Setting

View File

@@ -74,7 +74,7 @@ public class EffectMgr
public static TargetType ToStrTargetType(string str) => TargetType.NONE;
}
public partial class GameObjMgr { }
public partial class GameObjMgr { public GameObjMgr() { } }
public class GameMgr
{

View File

@@ -61,7 +61,7 @@ namespace Wizard.Battle.View.Vfx
public abstract void RegisterOpeningVfx(ClassBattleCardBase playerClass, ClassBattleCardBase enemyClass);
public static string OpenningLogStep = "";
public static VfxBase ShowBattleUIImmediatelyVfx(BattlePlayerBase battlePlayerBase, bool fixDirection = false, bool isNewReplay = false, bool isBanmenkun = false) => NullVfx.Create();
public static VfxBase ShowBattleUIImmediatelyVfx(BattlePlayerBase battlePlayerBase, bool fixDirection = false, bool isNewReplay = false, bool isBanmenkun = false) => NullVfx.GetInstance();
public class WaitVoiceEndVfx : VfxBase { }
public class OpeningShowCharacterPanelVfx : SequentialVfxPlayer { }

View File

@@ -25,6 +25,7 @@ namespace Wizard.Battle.Touch
// Empty hand stubs: supply the four ITouchProcessor members as no-ops.
public partial class SkillTargetSelectTouchProcessor : ITouchProcessor
{
public static SkillTargetSelectTouchProcessor Create(BattleManagerBase battleMgr, BattleCardBase actCard, List<SkillBase> selectSkills, Prediction prediction, List<BattleCardBase> selectCards, bool isEvolve, bool isChoiceBrave, BattleCardBase transformCard = null, Action onCompleteLastProcess = null, Action onCancelLastProcess = null) => default!;
public VfxBase Start() => NullVfx.GetInstance();
public VfxBase Update(float dt, Camera camera) => NullVfx.GetInstance();
public VfxWith<ITouchProcessor> End() => default!;

View File

@@ -56,6 +56,7 @@ namespace Wizard.Battle.View.Vfx
{ var p = new SequentialVfxPlayer(); if (vfxCollection != null) p._children.AddRange(vfxCollection); return p; }
public void Register(VfxBase vfx) { if (vfx != null) _children.Add(vfx); }
public int Count() => _children.Count;
public List<VfxBase> GetAllVfxAsList() => new List<VfxBase>(_children);
public override bool IsVfxNonEmpty()
{
foreach (var c in _children) { if (c != null && c.IsVfxNonEmpty()) return true; }
@@ -70,6 +71,7 @@ namespace Wizard.Battle.View.Vfx
{ var p = new ParallelVfxPlayer(); if (vfxCollection != null) p._children.AddRange(vfxCollection); return p; }
public static ParallelVfxPlayer Create(params VfxBase[] vfxCollection)
{ var p = new ParallelVfxPlayer(); if (vfxCollection != null) p._children.AddRange(vfxCollection); return p; }
public List<VfxBase> GetVfxList() => new List<VfxBase>(_children);
}
public class VfxWithLoading : SequentialVfxPlayer
@@ -115,6 +117,10 @@ namespace Wizard.Battle.View.Vfx
public VfxWith(VfxBase vfx, T1 value1, T2 value2) { Vfx = vfx; Value_1 = value1; Value_2 = value2; }
}
// m1_stub_gen drops `event` decls (session-6 gap) — re-add StartSkillSelectVfx.OnStart
// that its generated stub lost. Re-check this if CS1061 on an event name recurs.
public partial class StartSkillSelectVfx { public event System.Action OnStart; }
public class EvolveVfxBase : VfxBase { }
public partial class CanNotTouchCardVfx : VfxBase { }
@@ -133,6 +139,7 @@ namespace Wizard.Battle.View.Vfx
public virtual void RegisterSequentialVfx<T>(T vfx) where T : VfxBase { }
public Queue<VfxBase> GetSequentialVfxQueues() => new Queue<VfxBase>();
public List<VfxBase> GetVfxList<TType>() => new List<VfxBase>();
public static void CheckAndAddEffectVfxList(VfxBase vfx, List<IEffectVfx> effectVfxList) { }
public virtual void Update(float dt) { }
public virtual void Cancel() { }
public void Dispose() { }

View File

@@ -11,6 +11,9 @@ namespace Wizard.Battle.View
public partial class BattleCardView
{
// BuildInfo (14-arg ctor + members) provided by Generated/BattleCardView_BuildInfo.g.cs
// Parameterless ctor lets the no-op subclass hand stubs (ClassBattleCardViewBase,
// NullBattleCardView) and any non-chaining stub satisfy their implicit base() call.
public BattleCardView() { }
public BattleCardView(BuildInfo buildInfo) { }
// AttackTargetSelectInfo provided by Generated/BattleCardView_AttackTargetSelectInfo.g.cs
public virtual UnityEngine.GameObject GameObject { get; protected set; }