KAZIK/tools/tests/observer_test.inc
Artvasil09 23dc40ee5c feat: implement native darts mini-game, AI observer mode, and fortune session assets
- Darts: native 500-point match against Max with sway/fatigue mouse aim, parabolic throw camera, raster arm animations, and 16 camera-relative flying dart views

- AI Observer: autonomous spectator mode for Hold'em, Blackjack, Durak, and Billiards with profile isolation and playback controls

- Fortune Session: raster sprite packs, mist/orb animations, tarot divination spreads, and pack tools

- Hall Integration: wall dartboard in lounge, observer terminal dispatch, and bot turn hooks

- Packaging & Verification: updated installer streaming hash, synchronized launcher, passing check suites and release smoke checks
2026-10-24 22:10:25 +03:00

161 lines
4 KiB
PHP

.data
obsTestGame dd 0
obsTestTicks dd 0
obsTestTurns dd 0
obsTestMenu db "build\observer\menu.bmp",0
obsTestPaths dd OFFSET obsTestPoker,OFFSET obsTestBlackjack,OFFSET obsTestDurak
dd OFFSET obsTestTransfer,OFFSET obsTestPyramid,OFFSET obsTestEight
obsTestPoker db "build\observer\poker.bmp",0
obsTestBlackjack db "build\observer\blackjack.bmp",0
obsTestDurak db "build\observer\durak.bmp",0
obsTestTransfer db "build\observer\transfer.bmp",0
obsTestPyramid db "build\observer\pyramid.bmp",0
obsTestEight db "build\observer\eight.bmp",0
.code
ObserverTestStart PROC
call InitPaths3D
mov arrivalConfirmed3D,1
mov bankroll,12345
mov charmCloverUses,17
mov charmDevilUses,18
mov obsActive3D,1
invoke TriggerCharmLossProtection,100
test eax,eax
jnz obs_test_fail
cmp bankroll,12345
jne obs_test_fail
mov obsActive3D,0
call BeginObserver3D
call RenderObserver3D
invoke WriteActionSnapshot3D,OFFSET obsTestMenu
obs_test_game:
mov eax,obsTestGame
mov obsSelection3D,eax
call StartObserver3D
cmp obsActive3D,1
jne obs_test_fail
mov obsTestTicks,0
mov obsTestTurns,0
obs_test_tick:
mov deltaTime3D,50
call ObserverTick3D
cmp obsTestGame,4
jb obs_test_cards
cmp poolState3D,POOL_STRIKE
jne @F
mov eax,poolPlayer3D
bts obsTestTurns,eax
@@:
cmp obsTestTicks,1500
jb obs_test_next_tick
cmp obsTestTurns,3
jne obs_test_fail
jmp obs_test_snapshot
obs_test_cards:
cmp obsRound3D,21
jb obs_test_next_tick
mov eax,obsWins3D[0]
add eax,obsWins3D[4]
add eax,obsWins3D[8]
cmp eax,20
jne obs_test_fail
jmp obs_test_snapshot
obs_test_next_tick:
inc obsTestTicks
cmp obsTestTicks,150000
jb obs_test_tick
jmp obs_test_fail
obs_test_snapshot:
; Advance into a real deal/turn before capturing the watching surface.
mov ecx,40
obs_test_render_advance:
push ecx
mov deltaTime3D,50
call ObserverTick3D
pop ecx
loop obs_test_render_advance
call RenderObserver3D
mov eax,obsTestGame
invoke WriteActionSnapshot3D,obsTestPaths[eax*4]
mov obsPaused3D,1
mov eax,obsRound3D
push eax
mov eax,obsTimer3D
push eax
mov deltaTime3D,50
call ObserverFrame3D
pop eax
cmp eax,obsTimer3D
jne obs_test_fail
pop eax
cmp eax,obsRound3D
jne obs_test_fail
mov pressedKeys3D[9],1
call ObserverFrame3D
cmp obsSpeed3D,2
jne obs_test_fail
mov pressedKeys3D[9],1
call ObserverFrame3D
cmp obsSpeed3D,4
jne obs_test_fail
mov pressedKeys3D[9],1
call ObserverFrame3D
cmp obsSpeed3D,1
jne obs_test_fail
call StopObserver3D
cmp bankroll,12345
jne obs_test_fail
cmp charmCloverUses,17
jne obs_test_fail
cmp charmDevilUses,18
jne obs_test_fail
cmp obsActive3D,0
jne obs_test_fail
inc obsTestGame
cmp obsTestGame,OBS_GAME_COUNT
jb obs_test_game
; The actual selector opens a table, and Escape unwinds watch -> menu -> hall.
mov pressedKeys3D[31h],1
call ObserverFrame3D
cmp obsActive3D,1
jne obs_test_fail
mov pressedKeys3D[1Bh],1
call ObserverFrame3D
cmp engineMode,MODE_OBSERVER
jne obs_test_fail
cmp bankroll,12345
jne obs_test_fail
mov mouseX3D,100
mov mouseY3D,174
mov mouseClick3D,1
call ObserverFrame3D
cmp obsActive3D,1
jne obs_test_fail
cmp poolVariant3D,1
jne obs_test_fail
mov mouseX3D,20
mov mouseY3D,230
mov mouseClick3D,1
call ObserverFrame3D
cmp obsPaused3D,1
jne obs_test_fail
mov mouseX3D,250
mov mouseClick3D,1
call ObserverFrame3D
cmp obsActive3D,0
jne obs_test_fail
mov pressedKeys3D[1Bh],1
call ObserverFrame3D
cmp engineMode,MODE_WALK
jne obs_test_fail
mov obsActive3D,1
call RunDurakTest3D
test eax,eax
jnz obs_test_exit
xor eax,eax
jmp obs_test_exit
obs_test_fail:
mov eax,8401
obs_test_exit:
invoke ExitProcess,eax
ObserverTestStart ENDP