- 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
120 lines
2.4 KiB
PHP
120 lines
2.4 KiB
PHP
DrawBowlingPlayerHand3D PROC uses ebx esi
|
|
local offsetY:DWORD
|
|
mov offsetY,120
|
|
cmp bpHandArt3D.pixels,0
|
|
je bp_hand_done
|
|
cmp bpScoreOpen3D,0
|
|
jne bp_hand_done
|
|
mov esi,bpLane3D
|
|
cmp bwTurn3D[esi*4],0
|
|
jne bp_hand_done
|
|
xor ebx,ebx
|
|
cmp bpState3D,BP_RETURN
|
|
jne @F
|
|
cmp bpAfterReturn3D,BP_FINISHED
|
|
je bp_hand_done
|
|
mov eax,bpTime3D
|
|
sub eax,2100
|
|
jle bp_hand_done
|
|
invoke BowlingPinsetterEase3D,eax,700
|
|
neg eax
|
|
add eax,FP_1
|
|
imul eax,300
|
|
sar eax,16
|
|
add eax,120
|
|
mov offsetY,eax
|
|
jmp bp_hand_draw
|
|
@@:
|
|
cmp bpState3D,BP_DIRECTION
|
|
je bp_hand_draw
|
|
cmp bpState3D,BP_POWER
|
|
je bp_hand_draw
|
|
cmp bpState3D,BP_RELEASE
|
|
jne bp_hand_follow
|
|
mov eax,bpTime3D
|
|
xor edx,edx
|
|
mov ecx,33
|
|
div ecx
|
|
cmp eax,20
|
|
jbe @F
|
|
mov eax,20
|
|
@@:
|
|
mov ebx,eax
|
|
jmp bp_hand_draw
|
|
bp_hand_follow:
|
|
cmp bpState3D,BP_ROLL
|
|
jne bp_hand_done
|
|
cmp bpTime3D,396
|
|
jae bp_hand_done
|
|
mov eax,bpTime3D
|
|
xor edx,edx
|
|
mov ecx,33
|
|
div ecx
|
|
add eax,21
|
|
cmp eax,32
|
|
jbe @F
|
|
mov eax,32
|
|
@@:
|
|
mov ebx,eax
|
|
bp_hand_draw:
|
|
mov eax,bpShotWeightKg3D
|
|
cmp bpState3D,BP_DIRECTION
|
|
je bp_hand_selected
|
|
cmp bpState3D,BP_POWER
|
|
jne @F
|
|
bp_hand_selected:
|
|
mov eax,bpWeightKg3D
|
|
@@:
|
|
invoke BowlingTintHand3D,ebx,eax
|
|
invoke DrawAnimSprite3D,OFFSET bpTintedHand3D,0,320,offsetY,320,320
|
|
bp_hand_done:
|
|
ret
|
|
DrawBowlingPlayerHand3D ENDP
|
|
|
|
RenderBowlingReactions3D PROC uses ebx esi edi
|
|
local phase:DWORD
|
|
mov phase,CAST_TALK
|
|
cmp bpReactionTime3D,0
|
|
je @F
|
|
mov eax,bpReaction3D
|
|
mov phase,eax
|
|
@@:
|
|
xor esi,esi
|
|
bp_crowd_person:
|
|
lea ebx,[esi+6]
|
|
test esi,esi
|
|
jnz bp_crowd_draw
|
|
mov edi,bpLane3D
|
|
cmp bwTurn3D[edi*4],1
|
|
jne bp_crowd_draw
|
|
cmp bpState3D,BP_SETTLE
|
|
je bp_crowd_draw
|
|
cmp bpState3D,BP_FINISHED
|
|
jne bp_crowd_next
|
|
bp_crowd_draw:
|
|
invoke ConfigureCharacter3D,OFFSET bwSmallActor3D,ebx,phase,animationClock3D,0,0
|
|
mov eax,bpCentre3D
|
|
mov ecx,FP_1*16/10
|
|
test esi,esi
|
|
jnz @F
|
|
mov ecx,FP_1*9/10
|
|
@@:
|
|
cmp esi,1
|
|
jne @F
|
|
neg ecx
|
|
@@:
|
|
add eax,ecx
|
|
mov bwSmallActor3D.posX,eax
|
|
mov eax,FP_1*218/10
|
|
test esi,esi
|
|
jnz @F
|
|
mov eax,23*FP_1
|
|
@@:
|
|
mov bwSmallActor3D.posY,eax
|
|
invoke DrawCityObject3D,OFFSET bwSmallActor3D,0
|
|
bp_crowd_next:
|
|
inc esi
|
|
cmp esi,3
|
|
jb bp_crowd_person
|
|
ret
|
|
RenderBowlingReactions3D ENDP
|