Commit Graph

15 Commits

Author SHA1 Message Date
gamer147
2b506574e7 feat(battle-engine-port): M2 step 1 — SingleBattleMgr constructs headless
First green of the M2 go/no-go probe: `new SingleBattleMgr(StandardBattleMgr-
ContentsCreator)` now builds the two-player pair fully headless against the shim,
no Unity runtime. Verdict: headless construction is feasible; every blocker was a
mechanical no-op shim fill or data seam, not a Unity/logic wall.

Shim fills (authored):
- GameMgr: lazy non-null DataMgr/PrefabMgr/InputMgr/SoundMgr/BattleControl.
- GameObject: lazy cached component model so GetComponent<T>/AddComponent<T> return
  non-null no-op instances for Component-derived T (F1: unguarded view touches).
- Resources.Load(string): cached non-null GameObject so the prefab->Instantiate->
  GetComponent chain (UnityEventAgent) yields a real object.
- ClassBattleCardViewBase: re-attach dropped IClassBattleCardView (no-op members);
  ClassBattleCardBase.Setup casts the created view to it.

Engine copy (DP1/DP3 mis-cut fix):
- CardIconControl.cs copied verbatim (manifested) + generated null-stub deleted.
  SplitAndCompleteIconStr is pure string logic on the resolution path that M1 had
  wrongly stubbed as "View" -> null deref in SkillCreator.CreateBuildInfo.

Test harness (SVSim.BattleEngine.Tests, authored fixture):
- HeadlessContentsCreator/HeadlessPhaseCreator: deterministic replica of the solo
  practice init (StandardBattleMgrContentsCreator + SingleBattlePhaseCreator) with
  no-op recovery/replay managers.
- HeadlessCardMaster: reflects the loader cards.json dump into CardMaster.
- HeadlessMasterData: minimal Data.Master (class-character list, empty collections)
  + Data.Load + player/enemy chara ids.
- ConstructionProbeTests.SingleBattleMgr_constructs_headless — GREEN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 01:36:22 -04:00
gamer147
ad58994b8e port(m1): wave 7i — RoomMatch/Story/Effect app members + ROOM_URI enum (40->24)
- PlayerController.ROOM_URI nested enum (verbatim-generated).
- RoomRoot.CreateChangeSceneDialog, StoryRecoveryData.ToJsonData,
  BattlePlayerViewBase.IsSelecting, StorySelectionWorldScene.RedirectSectionId,
  EffectMgr.LoadAndInstantiate2dEffectCoroutine.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 00:57:51 -04:00
gamer147
3a88b27752 port(m1): wave 7g — Unity coroutine/overload + app-member tail (88->56)
- MonoBehaviour.StopCoroutine(string) (iTween/NGUI StopCoroutine("name")),
  Object.DestroyImmediate(o, bool), GetComponentInParent<T>(bool includeInactive).
- App members: TitlePanelBase (:MonoBehaviour + IsFinishInit), PlayerController.Target,
  DialogManager.CreateDialogBaseOpenCardDetail, BattleLogWindow.HideCardListPanel,
  DetailPanelTouchProcessor.StopAttackTarget, StoryRecoveryData.ChapterCharaId +
  (SelectedStoryInfo) ctor overload.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 00:52:18 -04:00
gamer147
5c5a58af3c 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>
2026-06-06 00:49:07 -04:00
gamer147
8bb392dcd6 port(m1): wave 6h — CS0246 app types + Unity members/enums (236->210)
- Generated app types: ChapterCharaDecider, DownloadInfoGetter, DeckSelection(Confirm)DialogDisplay,
  SubChapterStorySectionBtn, EvolutionHideMessageVfx; nested OpeningShowCharacterPanelVfx on OpeningVfx.
- EffectMgr.MoveType: full 47-value decomp enum (was 4).
- MonoBehaviour.print, Debug.isDebugBuild, LayerMask.LayerToName,
  SystemLanguage.Chinese, RuntimePlatform.XBOX360/BlackBerryPlayer/+console values.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 00:15:46 -04:00
gamer147
d4364ae4b1 port(m1): wave 6g — CS1061 member cluster (304->236)
- Friend.PlayerData full-surface generated (18 members) + hand stub -> partial.
- Wizard.RoomMatch.Player: 7 friend-info props (ViewerId/Name/Rank/Emblem/Degree/Country/IsFriend).
- GameMgr: HasAuthAdmin, ChangeAspectRatio(float), Update().
- Cute.SceneManager: ChangeScene overloads + SceneChangeParameter (+SceneChangeParameter stub).
- UnityEngine.SceneManagement.SceneManager + Scene; RedShellSDK.RedShellSDK statics.
- Packet.Attachments; Vector2.Dot/Angle/Normalize.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 00:11:43 -04:00
gamer147
755f7fd148 port(m1): wave 6b — View base members + app-type stubs (772->696)
- BattleCardView shim: GameObject, HandFrameEffect, GetCurrentIconLayout (fixes Player/EnemyClassBattleCardView.GameObject inheritance).
- BattlePlayerViewBase.AlwaysShowStatusPanel; NullBattleCardView.ReleaseSharedDummy.
- EvolutionTouchProcessor: 4 events (OnFocus/Unfocus/Select/NotSelect Target) hand-added — m1_stub_gen drops `event` decls.
- Generated full-surface stubs: StoryWorldDataManager, GenerateDeckCode, GameSetup, CommonPrefabContainer, ApplicationFinishManager, EvolutionConfirmation, ReplayDataHandler (hand stubs -> partial).
- Closure pulled by StoryWorldDataManager full-surface: 4 verbatim copies (StoryChapter/Summary/LeaderSelect dialogs, ClassIconName) + empty stubs StoryWorldData/BattleRecovery/ResourceDownloader/TemporaryAssetDeleter (non-battle, signature-only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 23:50:10 -04:00
gamer147
67f91e230e port(m1): wave 6a — GameMgr setters, Tab MonoBehaviour, OpeningVfx members, Vfx stubs (838->772)
- GameMgr.Is{Network,AINetwork,Watch,Replay,Puzzle,AdminWatch}Battle: read-only => settable (CS0200, Matching/NetworkBattleManagerBase assign them).
- Tab : MonoBehaviour (inherits Object.name; CS1061 x8).
- OpeningVfx: static OpenningLogStep, ShowBattleUIImmediatelyVfx (NullVfx, F1 contract), nested WaitVoiceEndVfx (CS0117/0426 x14).
- Generated no-op stubs EffectBattleVfxBase/SkillEffectBattleVfx/FallToGroundVfx/ThinkIconShowVfx (: SequentialVfxPlayer chain), baseclauses reattached.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 23:43:47 -04:00
gamer147
4be630bd09 feat(battle-engine): full-surface app-type god-object/manager stubs (1692->1586 true)
Make the minimal hand shims partial + generate full member surface for the manager/
task/controller god-objects (LoadingViewManager/DeckUpdateTask/MyPageTask/ReplayController/
PlayerControllerForWatching/WatchDataHandler/EvolutionTouchProcessor/StoryChapterSelection
Utility/NonDialogPopup). NonDialogPopup given MonoBehaviour base + hand Close() removed
(superseded by full surface). LoadTask dup deleted (already copied verbatim). RoomMatch
watch/replay closure types stubbed. Copied 8 more closure files.

CS0246-in-generated-signature masking note: 4 such errors were hiding ~1582 — generated
CS0246 masks as hard as header CS0246; the real frontier is 1586 (CS7036 base-ctor +
member-level), 0 structural.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 22:33:37 -04:00
gamer147
f32492b6c9 feat(battle-engine): app-type wave (RoomBase/Avatar/BossRush/tasks) 4850->4572
Full-surface stubs for RoomBase, Avatar/BossRush/MyRotation battle-log items (MonoBehaviour),
GetDeckDataFromCode, MailTopTask, AccountTransferHelper, CanNotTouchCardVfx. EXCLUDE
inherited overrides (CanNotTouchCardVfx.IsEnd, MailTopTask.Parse). ClosureStubs for the
RoomMatch subsystem bleed (~11 Room* types) + AppleLogin(+Error). Reward/Event deferred
(ambiguous common names resolve to wrong SDK files).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 21:37:23 -04:00
gamer147
70a2c3e8ed feat(battle-engine): View/Room/Vfx type wave (5600->4850)
Full-surface stubs for ICardVfxCreator(iface), SelectedStoryInfo, ImageSelection,
IReadOnlyVoiceInfo, RoomConnectController(+InitializeParameter/enums), RoomRuleSetting,
VideoHostingHUD(+HUDMode), TabList, BattleCardView.AttackTargetSelectInfo, ProtectionColorType.
Wired hand shims partial + MonoBehaviour bases; let generated supersede hand-written
nested enums (decomp-authoritative values). SocketManager kept as minimal SDK hand shim.
ClosureStubs for ~14 referenced empties.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 21:33:00 -04:00
gamer147
b47741d2a5 feat(battle-engine): full-surface god-object stubs (UIManager/GameObjMgr/BattleLog) 7532->5600
Generate the COMPLETE decomp member surface (not frontier-subset, which silently drops
already-provided members) for UIManager(+ViewScene/ChangeViewSceneParam), GameObjMgr,
BattleLogManager/Item, InPlayCardFrameEffectControl. UIManager/Footer base fixes:
UIManager is MonoBehaviour (singleton kept by hand via --exclude); Footer is the copied
Engine type (removed the conflicting global shim). Add HUDMode enum, Wizard manager
return-type stubs, and a closure-stubs file for 7 referenced empties.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 21:23:52 -04:00
gamer147
0455ff649e feat(battle-engine): EffectType full enum + collection/card/vfx extension copies
Replaces partial EffectMgr.EffectType with all 226 decomp values; copies the
IsNotNullOrEmpty/EquelsID/FindFromCardId/GetAllFuncVfxResults extension files +
UI extensions; adds Renderer/MeshFilter shared-material/mesh/sortingOrder. Compile
loop then closed the revealed deps (3242 files). 9.1k -> 18 errors.
2026-06-05 20:38:56 -04:00
gamer147
78f310c2b3 feat(battle-engine): grow god-object + VFX-container shim surface
GameMgr (managers/setting/flags), UIManager (GetInstance + scene/dialog/loading
surface), EffectMgr (Start/effect lifecycle), VfxMgr + VfxWithLoading(Sequential)
register methods -- signatures mirrored from decomp. 15.9k -> 10.0k errors.
2026-06-05 20:27:00 -04:00
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