KAZIK/src_graphics/russian_table.inc
Artvasil09 4f8ae0893b Implement native slots, coin toss, European roulette and hall furniture
Add native assembly scenes and assets for Slots (777), Coin flip, and European Roulette; add 3D hall furniture packs and prompts; improve Russian UI strings in CP1251; update launcher hash and rebuild shipping binaries.
2026-10-10 14:43:30 +03:00

171 lines
4.7 KiB
PHP

; One first-person table/camera shared in style with Buckshot, with revolver-only poses.
.code
RenderRussianTable3D PROC uses ebx esi edi
local pose:DWORD,angle:DWORD
mov animOpacity3D,255
cmp rr3d_room.pixels,0
je rr_table_missing
mov esi,rr3d_room.pixels
lea edi,screenBuffer
mov ecx,SCREEN_SIZE
rep movsd
mov eax,0
cmp rr3d_turn,1
jne @F
cmp rr3d_state,RR_RAISE
je rr_table_dealer_active
cmp rr3d_state,RR_FIRE
je rr_table_dealer_active
cmp rr3d_state,RR_DRY
jne @F
rr_table_dealer_active:
mov eax,2
@@:
invoke DrawAnimSprite3D,OFFSET rr3d_dealer,eax,192,2,256,224
mov eax,rr3d_state
cmp eax,RR_LOAD
je rr_table_load
cmp eax,RR_SPIN
je rr_table_spin
cmp eax,RR_RAISE
je rr_table_raise
cmp eax,RR_FIRE
je rr_table_fire
cmp eax,RR_DRY
je rr_table_dry
cmp eax,RR_GLITCH
je rr_table_glitch
invoke DrawRouletteSprite3D,0,160,151,156,82,0
jmp rr_table_hud
rr_table_load:
mov eax,rr3d_timer
xor edx,edx
mov ecx,450
div ecx
cmp eax,rr3d_bullets
jae rr_table_close_cylinder
mov eax,edx
xor edx,edx
mov ecx,150
div ecx
inc eax
cmp rr3d_timer,150
jae rr_table_load_draw
xor eax,eax
jmp rr_table_load_draw
rr_table_close_cylinder:
mov eax,6
cmp rr3d_timer,1600
jb rr_table_load_draw
inc eax
rr_table_load_draw:
invoke DrawAnimSprite3D,OFFSET rr3d_hands,eax,140,144,384,256
jmp rr_table_hud
rr_table_spin:
mov eax,1400
sub eax,rr3d_timer
imul eax,eax
shl eax,1
xor edx,edx
mov ecx,1400
div ecx
invoke DrawRouletteSprite3D,0,160,151,144,82,eax
jmp rr_table_hud
rr_table_raise:
mov eax,rr3d_timer
imul eax,128
xor edx,edx
mov ecx,750
div ecx
mov angle,eax
mov pose,4
jmp rr_table_raised
rr_table_fire:
mov pose,4
cmp rr3d_shot,0
je @F
mov pose,5
@@:
mov angle,128
jmp rr_table_raised
rr_table_dry:
mov pose,4
mov angle,128
rr_table_raised:
cmp rr3d_turn,1
je rr_table_dealer_gun
; Only the player's hands/gun are visible, never a portrait of the player.
invoke DrawRouletteSprite3D,pose,270,137,154,112,angle
jmp rr_table_hud
rr_table_dealer_gun:
; Weapon-only silhouette avoids overlaying a second pair of arms on the dealer.
invoke DrawRouletteSprite3D,0,204,59,80,51,0
jmp rr_table_hud
rr_table_glitch:
invoke RenderRussianGlitch3D,190
ret
rr_table_hud:
invoke DrawBuckshotPanel3D,0,0,640,32,00111116h
invoke DrawBuckshotText3D,14,12,OFFSET rrTitleText3D,00E9C47Ah
invoke DrawBuckshotText3D,488,12,OFFSET bs3d_textBank,00BCBCBCh
invoke DrawBuckshotNumber3D,540,12,bankroll,00F3E4BAh
invoke DrawBuckshotPanel3D,0,400,640,80,00111617h
invoke DrawBuckshotText3D,16,414,OFFSET rrCartridgeText3D,00EBD5A0h
invoke DrawBuckshotNumber3D,160,414,rr3d_bullets,00FFFFFFh
invoke DrawBuckshotText3D,456,414,OFFSET bs3d_textBet,00EBD5A0h
invoke DrawBuckshotNumber3D,528,414,rr3d_bet,00FFFFFFh
mov ebx,OFFSET rrPlayerText3D
cmp rr3d_turn,0
je @F
mov ebx,OFFSET rrDealerText3D
@@:
cmp rr3d_state,RR_LOAD
jne @F
mov ebx,OFFSET rrLoadText3D
@@:
cmp rr3d_state,RR_SPIN
jne @F
mov ebx,OFFSET rrSpinText3D
@@:
cmp rr3d_state,RR_DRY
jne @F
mov ebx,OFFSET rrClickText3D
@@:
invoke DrawBuckshotText3D,16,440,ebx,00E9C47Ah
cmp rr3d_state,RR_READY
jne rr_table_not_ready
invoke DrawBuckshotText3D,16,440,OFFSET rrBulletKeys3D,00EBD5A0h
invoke DrawBuckshotText3D,360,440,OFFSET rrBetKeys3D,00EBD5A0h
invoke DrawBuckshotText3D,16,462,OFFSET rrStartText3D,00FFFFFFh
cmp rr3d_error,0
je rr_table_exit_hint
invoke DrawBuckshotPanel3D,200,342,240,24,002B1616h
invoke DrawBuckshotText3D,208,350,OFFSET rrEmptyBank3D,00DD7768h
jmp rr_table_exit_hint
rr_table_not_ready:
cmp rr3d_state,RR_PLAYER
jne @F
invoke DrawBuckshotText3D,16,462,OFFSET rrFireText3D,00FFFFFFh
@@:
cmp rr3d_state,RR_WIN
jne rr_table_exit_hint
invoke DrawBuckshotPanel3D,0,434,640,46,00111617h
invoke DrawBuckshotText3D,16,440,OFFSET rrVictoryText3D,007FE395h
invoke DrawBuckshotNumber3D,184,440,rr3d_payout,007FE395h
invoke DrawBuckshotText3D,16,462,OFFSET rrRoundText3D,00FFFFFFh
rr_table_exit_hint:
mov ebx,OFFSET bs3d_textPause
cmp rr3d_state,RR_READY
je rr_table_hall_hint
cmp rr3d_state,RR_WIN
jne @F
rr_table_hall_hint:
mov ebx,OFFSET bs3d_textExit
@@:
invoke DrawBuckshotText3D,530,462,ebx,00AFAFAFh
ret
rr_table_missing:
invoke DrawBuckshotPanel3D,0,0,640,480,00111719h
invoke DrawBuckshotText3D,184,230,OFFSET bs3d_textAssets,00E1C67Bh
ret
RenderRussianTable3D ENDP