KAZIK/src_graphics/russian_party_render.inc
Artvasil09 881a0061dc Add native NPC visitors with contracts, Clover slots, Pyramid, and party table scenes
Implement 32x32 BFS visitor navigation and daily contracts system with companion .npc journals; add native assembly scenes for Clover slots, Pyramid cards, Blackjack Party and Russian Party; package animation and sprite packs; add comprehensive offline test suites and rebuild shipping binaries.
2026-10-13 09:47:33 +03:00

173 lines
3.9 KiB
PHP

RenderRRPartyCharacters3D PROC uses ebx esi edi
local px:DWORD,frame:DWORD,ink:DWORD
xor ebx,ebx
rr_party_draw_guest:
cmp ebx,rrPartyCount3D
jae rr_party_draw_done
mov esi,rrPartyX3D[ebx*4]
cmp rrPartyCount3D,2
jne @F
imul esi,ebx,200
add esi,132
@@:
mov px,esi
mov frame,ebx
lea edi,[ebx+1]
mov ink,00D7C7A4h
bt rrPartyAlive3D,edi
jnc rr_party_inactive
cmp rr3d_turn,edi
jne rr_party_draw_body
cmp rr3d_state,RR_RAISE
je rr_party_active_body
cmp rr3d_state,RR_FIRE
je rr_party_active_body
cmp rr3d_state,RR_DRY
jne rr_party_draw_body
rr_party_active_body:
add frame,3
mov ink,00FFE09Ah
rr_party_draw_body:
mov animOpacity3D,255
jmp rr_party_body
rr_party_inactive:
mov ink,00697873h
cmp rr3d_turn,edi
jne rr_party_caption
cmp rr3d_state,RR_DRY
jne rr_party_caption
mov eax,700
sub eax,rr3d_timer
jle rr_party_caption
imul eax,255
xor edx,edx
mov ecx,700
div ecx
mov animOpacity3D,eax
rr_party_body:
invoke DrawAnimSprite3D,OFFSET rrPartyArt3D,frame,px,48,176,176
rr_party_caption:
mov animOpacity3D,255
lea eax,[esi+16]
invoke DrawBuckshotText3D,eax,38,rrPartyNames3D[ebx*4],ink
mov ecx,OFFSET rrPartyOutText3D
bt rrPartyAlive3D,edi
jnc @F
mov ecx,OFFSET rrPartyAliveText3D
cmp rr3d_state,RR_READY
je @F
cmp rr3d_state,RR_WIN
je @F
cmp rr3d_turn,edi
jne @F
mov ecx,OFFSET rrPartyTurnText3D
@@:
lea eax,[esi+16]
invoke DrawBuckshotText3D,eax,230,ecx,ink
inc ebx
jmp rr_party_draw_guest
rr_party_draw_done:
mov animOpacity3D,255
ret
RenderRRPartyCharacters3D ENDP
; A shared tabletop revolver is passed to the highlighted seat; no extra arm layer.
RenderRRPartyGun3D PROC uses ebx
local target:DWORD,t:DWORD,px:DWORD,py:DWORD
mov ebx,rr3d_turn
dec ebx
cmp ebx,3
jae rr_party_gun_done
mov eax,rrPartyX3D[ebx*4]
cmp rrPartyCount3D,2
jne @F
imul eax,ebx,200
add eax,132
@@:
add eax,88
shr eax,1
mov target,eax
mov eax,750
cmp rr3d_state,RR_RAISE
jne @F
mov eax,rr3d_timer
cmp eax,750
jbe @F
mov eax,750
@@:
mov t,eax
mov eax,target
sub eax,160
imul eax,t
cdq
mov ecx,750
idiv ecx
add eax,160
mov px,eax
mov eax,19
imul eax,t
xor edx,edx
div ecx
mov edx,151
sub edx,eax
mov py,edx
invoke DrawRouletteSprite3D,0,px,py,98,52,0
rr_party_gun_done:
ret
RenderRRPartyGun3D ENDP
RenderRRPartyControls3D PROC uses ebx esi
cmp rrPartyCount3D,1
jbe @F
invoke DrawBuckshotText3D,244,414,OFFSET rrPartyPoolText3D,00EBD5A0h
mov eax,rrPartyStake3D
test eax,eax
jnz rr_party_pool_locked
mov eax,rr3d_bet
rr_party_pool_locked:
imul eax,rrPartySize3D
invoke DrawBuckshotNumber3D,296,414,eax,00FFFFFFh
@@:
cmp rr3d_state,RR_READY
jne rr_party_controls_done
invoke DrawBuckshotText3D,280,462,OFFSET rrPartyCountText3D,00D7C7A4h
xor ebx,ebx
rr_party_control:
mov esi,ebx
imul esi,20
add esi,188
mov eax,0025352Dh
mov ecx,00766B51h
lea edx,[ebx+1]
cmp edx,rrPartyCount3D
jne @F
mov eax,003D6546h
mov ecx,00EBD5A0h
@@:
invoke DrawBoxBorder,esi,226,18,13,eax,ecx,1
lea ecx,rrPartyDigits3D[ebx*2]
lea eax,[esi*2+14]
invoke DrawBuckshotText3D,eax,462,ecx,00EFE7D4h
inc ebx
cmp ebx,3
jb rr_party_control
rr_party_controls_done:
ret
RenderRRPartyControls3D ENDP
RenderRussianExit3D PROC
cmp engineMode,MODE_RUSSIAN
jne rr_party_exit_done
cmp cardExitActive3D,0
jne rr_party_exit_show
cmp rr3d_state,RR_READY
je rr_party_exit_show
cmp rr3d_state,RR_WIN
je rr_party_exit_show
cmp rr3d_state,RR_PLAYER
jne rr_party_exit_done
rr_party_exit_show:
call RenderCardExit3D
rr_party_exit_done:
ret
RenderRussianExit3D ENDP