7.6 KiB
CAM-B2p-I-IMPL : aide des contrôles derrière une icône « i » (C++ seul) et reprise N2 de B2p-H (2026-10-14)
GO : Big Boss, 2026-10-14 (option 1, C++ seul ; aide en anglais, touches lues dans les mappages ; pas de lecture MCP,
confirmation au premier essai ; code défensif ; la ligne de la molette est retirée si CAM ne déplace pas le couple à
la molette ; N2 entre aussi dans COMMUN-13). SPEC : CAM-B2p-I-SPEC.md. Écriture sans compilation ; aucun asset
touché ; rien chez STG ni STE.
0. Instantanés et empreintes (D:\Game\LifePlay_Backup_5.5\)
| Point | Instantané | .cpp avant |
.h avant |
|---|---|---|---|
| I0 : N2 de B2p-H | CAM-B2p-I0 |
210B665AA8D5D628B8C1AC429A339B74 |
239DA6094E7401E0E3B3699A635A8150 |
| I1 : aide des contrôles | CAM-B2p-I1 |
3A11A3872378485DC64804AEC0A761EE |
239DA609… |
| Final | — | 73CC3BD667059A903E44405C5E793DE3, 1969 lignes |
6EDBBCCF61759B8C6EE4890DF9BC5FE7, 179 lignes |
Fins de ligne : LF (0 CR).
1. I0 : N2 (VAL B2p-H)
Au glisser, quand la place est admise et que le couple bouge : LastSurfaceRefused.Reset(). Un nouveau passage sur la
même surface refusée écrit de nouveau sa ligne surface refusee.
2. I1 : aide des contrôles
2.1 Vérification demandée : la molette
CAM ne déplace pas le couple à la molette : bSexWheelZoom = false (LPCameraModeSubsystem.cpp, constantes B2p-C).
La molette passe à Room (zoom d'origine, nœud 125). La ligne « Mouse wheel » est retirée du texte d'aide.
2.2 Écritures
- Includes :
Blueprint/WidgetTree.h,Components/Button.h,CanvasPanelSlot.h,HorizontalBoxSlot.h,Image.h,PanelWidget.h,TextBlock.h,Engine/Texture2D.h,Widgets/Layout/SBorder.h. - Constantes (
LPCameraModeLocal) :GISexInterface,SexHelpLinesName(TextBlock_1),SexHelpLinesStart(« Click any mouse button »),PCCursorREF,CursorSearchAction,CursorBelowCursor,HelpButtonName(LPControlsHelp),HelpIconPath(/Game/Heavy/New/info.info),HelpIconSize(28 px),HelpZOrder(60),ActionPause. MappedKeys(Name, Sign)(namespace) : noms des touches du clavier de l'axe ou de l'action, mappages en cours deUInputSettings(même source queAxisValue). Souris, manette et axes analogiques exclus ; « ? » si aucune touche.BuildControlsHelp: texte en anglais ;<…>= touches lues :CAMERA <SwitchCamera>: next view (Scene > C3 couple close-up > each partner's eyes) <MoveForward+> / <MoveForward->: move closer / away <MoveRight-> / <MoveRight+>: orbit around the couple (eyes view: look around) Hold a mouse button away from the couple and move the mouse: rotate the camera COUPLE Left-drag the couple: move it (floor or bed only) Right-drag the couple: turn it <LeftRight>, <DownUp>: move the couple ACTIONS <Pause> or middle click: show / hide this panelTickControlsHelp, appelé en tête deTick(0,1 s), avant les retours de l'indicateur (le filtre qui a le focus compte comme un menu pourMenuOnScreen) :- I-d (pendant le sexe) :
GI.SexInterface→TextBlock_1. Seulement si son texte commence par « Click any mouse button » (sensible à la casse) : opacité de rendu à 0, et l'ancienne valeur est gardée. La liaisonGet_TextBlock_1_Textreste en place :UTextBlock::SetTextla retirerait (TextBlock.cpp:469-478, moteur 5.8). Si le même bloc porte plus tard un autre texte (jouissance), il retrouve son opacité. Une ligne au journal à chaque changement. - I-a :
PC.CursorREF, une tentative d'insertion par instance duCursorpendant le sexe (AttachHelpIcon). L'icône est visible pendant le sexe et repliée hors du sexe (leCursorsert aussi aux autres menus d'action). Info-bulle mise à jour si le texte change (remappage). - I-c : boîte d'aide montrée seulement si
bHelpBoxOpen, pendant le sexe, et le panneau ouvert (Cursor.BelowCursorvisible, même test queIfThenElse_10du PC). Fermée avec le panneau.
- I-d (pendant le sexe) :
AttachHelpIcon(défensif) :- icône déjà présente (par nom) : reprise, clic relié une fois (
AddUniqueDynamic) ; SearchActionou son parent introuvable : rien n'est inséré, ligneAide sexe : icone non inseree, … introuvable;SearchActionancré en étirement dans unCanvasPanel: rien n'est inséré, une ligne ;- bouton transparent ; image de la texture
infoà 28 px ; texture absente : un « i » en texte (gras 18, blanc) ; AddChilddans le parent deSearchAction.InsertChildAtn'est pas utilisé : son ordre ne passe pas à Slate sans reconstruction (PanelWidget.h:68-72). L'icône vient donc en fin de la rangée du filtre, après ses boutons (dans uneHorizontalBox: centrée, marge de 4 px), ou à droite du filtre dans unCanvasPanel.- ligne
Aide sexe : icone inseree dans <parent> (<classe>, <n> enfants), image <chemin | absente, lettre i>.
- icône déjà présente (par nom) : reprise, clic relié une fois (
ToggleControlsHelp(UFUNCTION, clic) : ouvre ou ferme la boîte ; ligne au journal ; rafraîchit tout de suite.EnsureHelpBox/RemoveHelpBox:SOverlaydu viewport (ordre Z 60), en bas à droite, à la place des 4 lignes. Fond noir à 75 % (WhiteBrushteinté), texte blanc de 14 avec ombre noire.LPReadableTextn'est pas nécessaire. Retirée dansDeinitialize..h: déclarations avancéesUButton,UTextBlock,UUserWidget; 6 fonctions, 10 membres.
3. Écarts à la SPEC
- L'icône est ajoutée en fin de rangée, et non juste après le champ (voir
AttachHelpIcon). L'utilisateur acceptait « à côté du champ de filtre ou des boutons ». - I-d utilise l'opacité de rendu et non le vidage du texte : vider le texte retirerait la liaison pour toute l'instance.
- Pas de lecture MCP (décision de Big Boss) : le premier essai confirme le parent, l'icône et le texte de
TextBlock_1par les lignesAide sexe :.
4. Points à confirmer à l'essai (COMMUN-13)
- CAM-86 : ligne
icone inseree(parent, classe), imageinfo; ligne4 lignes d'origine masquees. - CAM-87 : le survol montre l'info-bulle ; le clic ouvre et ferme la boîte ; la fermeture du panneau la ferme.
- CAM-88 : les touches affichées sont celles du clavier (Z/S, Q/D sur AZERTY) ; elles suivent un remappage.
- CAM-89 : hors du sexe, l'icône est absente du
Cursoret le texte de jouissance est toujours affiché. - CAM-90 (N2) : deux passages sur la même commode écrivent deux lignes.
4 bis. Reprise après la VAL (CAM-B2p-I-VAL.md)
- D1 (corrigé, instantané
CAM-B2p-I2,.cpp73CC3BD6…→0F383EF777DED71608347E17D4A0861F, 1976 lignes, +7/−0 ;.hinchangé6EDBBCCF…) :UPanelWidget::AddChildrend nul pour un panneau à enfant unique déjà occupé. Dans ce cas, plus rien n'est inséré ; ligneAide sexe : icone non inseree, <parent> (<classe>) refuse un enfant de plus. C'est la consigne 2 de Big Boss. - D2 (pour Big Boss) : Room monte et descend le couple avec Maj + molette (
CAM-B2p-E-IMPL.md:48). La consigne (« retirer si CAM ne déplace pas le couple à la molette ») est tenue, mais l'aide omet ce contrôle réel. On peut ajouterShift + mouse wheel: raise / lower the couple. - D3 (non corrigé) : l'opacité 0 de
TextBlock_1n'est pas rendue hors du sexe. Le bloc porte le même texte et le PC le cache hors du sexe : sans effet attendu, à voir à CAM-89. - N7 de la VAL : le
.hajoute 9 membres, et non 10.
5. Fichiers à commiter
A Source/LifePlay/LPCameraModeSubsystem.cpp et .h ; A CAM-B2p-I-SPEC.md, CAM-B2p-I-IMPL.md, CAM-B2p-I-VAL.md.