- 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
74 lines
1.8 KiB
PHP
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
|