KAZIK/tools/tests/bowling_play_ui.inc
Artvasil09 7e081beeca feat: enhance bowling physics, audio, ball weight selection, and visitor cast routines
- Bowling feel: impulse contact solver, string pinsetter cycle, in-world lengthwise return rack and visible ball return lift

- Ball weights: 4/5/6/7 kg selection with equal launch work physics, momentum balance, and projected picking

- Audio: dedicated MCI channels with 7 synthesized waveaudio cues (release, rolling, impacts, applause, pinsetter, return)

- First-person animations: 33-frame player underarm throw/follow-through sequence (player-underarm-v2)

- Visitors: 10 persistent shared cast identities with exclusive reservations, activity transitions, and chair sit/rise animations

- Tests & verification: comprehensive native regression test suites and updated documentation

- Synchronize binaries and update launcher hash to 536E23BED4055562BC63871826FF44FFED037923A9BE8E0F591131DB4FBD104B
2026-11-04 18:44:12 +03:00

74 lines
1.8 KiB
PHP

; Interactive fixture: production MASM scene and events, no profile writes.
.code
BowlingUiStart PROC
call InitPaths3D
call Create3DWindow
test eax,eax
jz bp_ui_fail
call ToggleFullscreen3D
invoke SetWindowLongA,h3DWnd,-4,OFFSET WindowEvents3D
call InitBowling3D
call LoadBowling3D
mov hallLevel3D,HALL_BOWLING
mov worldMap3D,OFFSET bwMap3D
mov playerX,FP_1*49/10
mov playerY,25*FP_1
mov playerAngle,384
invoke BeginBowlingPlay3D,1
call RenderBowlingPlay3D
invoke ShowWindow,h3DWnd,1
call Present3D
invoke SetForegroundWindow,h3DWnd
invoke GetTickCount
mov previousTick3D,eax
bp_ui_loop:
invoke PeekMessageA,OFFSET msg3D,0,0,0,1
test eax,eax
jz bp_ui_frame
cmp DWORD PTR msg3D[4],12h
je bp_ui_close
invoke TranslateMessage,OFFSET msg3D
invoke DispatchMessageA,OFFSET msg3D
jmp bp_ui_loop
bp_ui_frame:
invoke GetTickCount
mov frameStart3D,eax
sub eax,previousTick3D
cmp eax,100
jbe @F
mov eax,100
@@:
mov deltaTime3D,eax
mov eax,frameStart3D
mov previousTick3D,eax
invoke GetForegroundWindow
cmp eax,h3DWnd
jne bp_ui_idle
invoke Pressed3D,1Bh
test eax,eax
jnz bp_ui_close
mov eax,deltaTime3D
add animationClock3D,eax
call HandleBowlingPlay3D
cmp engineMode,MODE_BOWLING
jne bp_ui_mode_error
call RenderBowlingPlay3D
call Present3D
bp_ui_idle:
invoke Sleep,8
jmp bp_ui_loop
bp_ui_close:
call LeaveBowlingPlay3D
call FreeBowling3D
call FreeCharacterCast3D
invoke ReleaseDC,h3DWnd,h3DDC
invoke DestroyWindow,h3DWnd
invoke ExitProcess,0
ret
bp_ui_fail:
invoke ExitProcess,157
ret
bp_ui_mode_error:
invoke ExitProcess,158
ret
BowlingUiStart ENDP