refactor(cleanup): remove legacy terminal implementations of ported 3D games
This commit is contained in:
parent
36016cc828
commit
5997849f75
5 changed files with 5484 additions and 8348 deletions
Binary file not shown.
234
casino3d.inc
234
casino3d.inc
|
|
@ -4513,238 +4513,7 @@ interaction_done:
|
||||||
ret
|
ret
|
||||||
CheckInteractions ENDP
|
CheckInteractions ENDP
|
||||||
|
|
||||||
; --- RenderCabinetBezel: Îòðèñîâêà àðêàäíîãî áåçåëÿ òåðìèíàëà íà 3D ýêðàíå ---
|
; (Legacy console arcade bezel bridge removed)
|
||||||
RenderCabinetBezel PROC uses ebx esi edi, pTitle:DWORD
|
|
||||||
; Çàòåìíÿåì 3D-çàë â áóôåðå êàäðà (äåëèì ÿðêîñòü ïîïîëàì)
|
|
||||||
mov ecx, SCREEN_SIZE
|
|
||||||
xor esi, esi
|
|
||||||
dim_bezel_loop:
|
|
||||||
mov eax, [screenBuffer + esi*4]
|
|
||||||
shr eax, 1
|
|
||||||
and eax, 007F7F7Fh
|
|
||||||
mov [screenBuffer + esi*4], eax
|
|
||||||
inc esi
|
|
||||||
loop dim_bezel_loop
|
|
||||||
|
|
||||||
; Âíåøíÿÿ çîëîòàÿ ðàìêà òåðìèíàëà
|
|
||||||
invoke DrawBoxBorder, 10, 14, 300, 212, 000C0E14h, 00D8BC6Ah, 2
|
|
||||||
|
|
||||||
; Øàïêà òåðìèíàëà ñ íàçâàíèåì èãðû
|
|
||||||
invoke DrawBox, 12, 16, 296, 16, 00221A10h
|
|
||||||
invoke DrawString8x8, 20, 20, pTitle, 00F5E2B0h
|
|
||||||
|
|
||||||
; Ïîäâàëüíàÿ ïëàøêà ñ ïîäñêàçêîé ïî âûõîäó
|
|
||||||
invoke DrawBox, 12, 210, 296, 14, 00141416h
|
|
||||||
invoke DrawString8x8, 20, 213, OFFSET textCabinetFooter, 00AAAAAAh
|
|
||||||
|
|
||||||
; Âûâîäèì êàäð áåçåëÿ â îêíî
|
|
||||||
call Present3D
|
|
||||||
ret
|
|
||||||
RenderCabinetBezel ENDP
|
|
||||||
|
|
||||||
; --- LaunchClassicGame: Âñòðàèâàíèå èãðû â UI òåðìèíàëà êàçèíî ---
|
|
||||||
LaunchClassicGame PROC uses ebx esi edi, pGameProc:DWORD, gameId:DWORD, pTitle:DWORD
|
|
||||||
LOCAL rcClient[16]:BYTE
|
|
||||||
LOCAL ptScreen[8]:BYTE
|
|
||||||
LOCAL fontInfo[84]:BYTE
|
|
||||||
LOCAL conWnd:DWORD
|
|
||||||
LOCAL conW:DWORD, conH:DWORD, conX:DWORD, conY:DWORD
|
|
||||||
LOCAL viewW:DWORD, viewH:DWORD
|
|
||||||
LOCAL offsetX:DWORD, offsetY:DWORD
|
|
||||||
|
|
||||||
mov eax, gameId
|
|
||||||
mov currentGameId, eax
|
|
||||||
|
|
||||||
; 1. Ðèñóåì çîëîòîé áåçåëü òåðìèíàëà íà 3D ýêðàíå
|
|
||||||
cmp pTitle, 0
|
|
||||||
je @F
|
|
||||||
invoke RenderCabinetBezel, pTitle
|
|
||||||
@@:
|
|
||||||
|
|
||||||
; 2. Âûäåëÿåì êîíñîëü
|
|
||||||
invoke AllocConsole
|
|
||||||
test eax, eax
|
|
||||||
jz launch_ret
|
|
||||||
|
|
||||||
invoke GetStdHandle, STD_OUTPUT_HANDLE
|
|
||||||
mov hOut, eax
|
|
||||||
invoke GetStdHandle, STD_INPUT_HANDLE
|
|
||||||
mov hIn, eax
|
|
||||||
|
|
||||||
invoke SetConsoleCP, 1251
|
|
||||||
invoke SetConsoleOutputCP, 1251
|
|
||||||
|
|
||||||
cmp pTitle, 0
|
|
||||||
je @F
|
|
||||||
invoke SetConsoleTitleA, pTitle
|
|
||||||
@@:
|
|
||||||
call EnableAnsi
|
|
||||||
call ConfigureConsoleSize
|
|
||||||
|
|
||||||
; 3. Íàñòðàèâàåì øðèôò Consolas Bold 16pt
|
|
||||||
lea edi, fontInfo
|
|
||||||
xor eax, eax
|
|
||||||
mov ecx, 21
|
|
||||||
rep stosd
|
|
||||||
mov dword ptr fontInfo[0], 84 ; cbSize
|
|
||||||
mov word ptr fontInfo[8], 0 ; dwFontSize.X
|
|
||||||
mov word ptr fontInfo[10], 16 ; dwFontSize.Y
|
|
||||||
mov dword ptr fontInfo[16], 700 ; FontWeight = FW_BOLD
|
|
||||||
mov word ptr fontInfo[20], 'C'
|
|
||||||
mov word ptr fontInfo[22], 'o'
|
|
||||||
mov word ptr fontInfo[24], 'n'
|
|
||||||
mov word ptr fontInfo[26], 's'
|
|
||||||
mov word ptr fontInfo[28], 'o'
|
|
||||||
mov word ptr fontInfo[30], 'l'
|
|
||||||
mov word ptr fontInfo[32], 'a'
|
|
||||||
mov word ptr fontInfo[34], 's'
|
|
||||||
mov word ptr fontInfo[36], 0
|
|
||||||
lea eax, fontInfo
|
|
||||||
invoke SetCurrentConsoleFontEx, hOut, 0, eax
|
|
||||||
|
|
||||||
; 4. Ïîëó÷àåì äåñêðèïòîð îêíà êîíñîëè
|
|
||||||
invoke GetConsoleWindow
|
|
||||||
mov conWnd, eax
|
|
||||||
test eax, eax
|
|
||||||
jz run_game_body
|
|
||||||
|
|
||||||
; 5. Ñíèìàåì ñèñòåìíóþ ðàìêó Windows è çàãîëîâîê ñ êíîïêàìè çàêðûòèÿ/ñâîðà÷èâàíèÿ
|
|
||||||
invoke GetWindowLongA, conWnd, -16 ; GWL_STYLE
|
|
||||||
and eax, NOT (00C00000h or 00040000h or 00080000h or 00010000h or 00020000h)
|
|
||||||
or eax, 80000000h ; WS_POPUP
|
|
||||||
invoke SetWindowLongA, conWnd, -16, eax
|
|
||||||
|
|
||||||
; Ñâÿçûâàåì êàê äî÷åðíåå/ïðèíàäëåæàùåå îêíî ê îêíó èãðû
|
|
||||||
cmp h3DWnd, 0
|
|
||||||
je show_con_fallback
|
|
||||||
invoke SetWindowLongA, conWnd, -8, h3DWnd ; GWL_HWNDPARENT
|
|
||||||
|
|
||||||
; 6. Âû÷èñëÿåì òî÷íûå êîîðäèíàòû äëÿ ïîñàäêè ýêðàíà âíóòðü áåçåëÿ
|
|
||||||
lea eax, rcClient
|
|
||||||
invoke GetClientRect, h3DWnd, eax
|
|
||||||
mov esi, dword ptr rcClient[8] ; øèðèíà êëèåíòñêîé îáëàñòè
|
|
||||||
mov edi, dword ptr rcClient[12] ; âûñîòà êëèåíòñêîé îáëàñòè
|
|
||||||
test esi, esi
|
|
||||||
jz show_con_fallback
|
|
||||||
test edi, edi
|
|
||||||
jz show_con_fallback
|
|
||||||
|
|
||||||
; Ðàñ÷åò âüþïîðòà 4:3 òî÷íî êàê â Present3D
|
|
||||||
mov viewW, esi
|
|
||||||
mov eax, esi
|
|
||||||
imul eax, 3
|
|
||||||
shr eax, 2
|
|
||||||
cmp eax, edi
|
|
||||||
jle calc_view_h
|
|
||||||
mov eax, edi
|
|
||||||
imul eax, 4
|
|
||||||
xor edx, edx
|
|
||||||
mov ecx, 3
|
|
||||||
div ecx
|
|
||||||
mov viewW, eax
|
|
||||||
mov eax, edi
|
|
||||||
calc_view_h:
|
|
||||||
mov viewH, eax
|
|
||||||
|
|
||||||
mov ebx, esi
|
|
||||||
sub ebx, viewW
|
|
||||||
shr ebx, 1
|
|
||||||
mov offsetX, ebx
|
|
||||||
|
|
||||||
mov ebx, edi
|
|
||||||
sub ebx, viewH
|
|
||||||
shr ebx, 1
|
|
||||||
mov offsetY, ebx
|
|
||||||
|
|
||||||
; Ýêðàííûå êîîðäèíàòû ëåâîãî âåðõíåãî óãëà êëèåíòñêîé îáëàñòè
|
|
||||||
mov dword ptr ptScreen[0], 0
|
|
||||||
mov dword ptr ptScreen[4], 0
|
|
||||||
lea eax, ptScreen
|
|
||||||
invoke ClientToScreen, h3DWnd, eax
|
|
||||||
|
|
||||||
; conW = viewW * 280 / 320 (âíóòðåííåå îêíî áåçåëÿ)
|
|
||||||
mov eax, viewW
|
|
||||||
imul eax, 280
|
|
||||||
xor edx, edx
|
|
||||||
mov ecx, 320
|
|
||||||
div ecx
|
|
||||||
mov conW, eax
|
|
||||||
|
|
||||||
; conH = viewH * 168 / 240
|
|
||||||
mov eax, viewH
|
|
||||||
imul eax, 168
|
|
||||||
xor edx, edx
|
|
||||||
mov ecx, 240
|
|
||||||
div ecx
|
|
||||||
mov conH, eax
|
|
||||||
|
|
||||||
; conX = ptScreen.x + offsetX + (viewW * 20 / 320)
|
|
||||||
mov eax, viewW
|
|
||||||
imul eax, 20
|
|
||||||
xor edx, edx
|
|
||||||
mov ecx, 320
|
|
||||||
div ecx
|
|
||||||
add eax, offsetX
|
|
||||||
add eax, dword ptr ptScreen[0]
|
|
||||||
mov conX, eax
|
|
||||||
|
|
||||||
; conY = ptScreen.y + offsetY + (viewH * 38 / 240)
|
|
||||||
mov eax, viewH
|
|
||||||
imul eax, 38
|
|
||||||
xor edx, edx
|
|
||||||
mov ecx, 240
|
|
||||||
div ecx
|
|
||||||
add eax, offsetY
|
|
||||||
add eax, dword ptr ptScreen[4]
|
|
||||||
mov conY, eax
|
|
||||||
|
|
||||||
; Ïîçèöèîíèðóåì áåçðàìî÷íûé ýêðàí òî÷íî âíóòðü çîëîòîé ðàìêè áåçåëÿ
|
|
||||||
invoke SetWindowPos, conWnd, 0, conX, conY, conW, conH, 20h or 40h ; SWP_FRAMECHANGED | SWP_SHOWWINDOW
|
|
||||||
jmp set_con_focus
|
|
||||||
|
|
||||||
show_con_fallback:
|
|
||||||
invoke ShowWindow, conWnd, 5 ; SW_SHOW
|
|
||||||
set_con_focus:
|
|
||||||
invoke SetForegroundWindow, conWnd
|
|
||||||
invoke SetFocus, conWnd
|
|
||||||
|
|
||||||
run_game_body:
|
|
||||||
invoke PlayCasinoSound3D, 0, 0, 0
|
|
||||||
call InitSounds
|
|
||||||
; Çàïóñê îðèãèíàëüíîé èãðû!
|
|
||||||
call pGameProc
|
|
||||||
call CloseLegacySounds3D
|
|
||||||
|
|
||||||
; Çàêðûâàåì êîíñîëü
|
|
||||||
invoke FreeConsole
|
|
||||||
mov hOut, 0
|
|
||||||
mov hIn, 0
|
|
||||||
|
|
||||||
; Âîçâðàùàåì ôîêóñ â îêíî 3D èãðû
|
|
||||||
cmp h3DWnd, 0
|
|
||||||
je cleanup_game_input
|
|
||||||
invoke SetForegroundWindow, h3DWnd
|
|
||||||
invoke SetFocus, h3DWnd
|
|
||||||
|
|
||||||
cleanup_game_input:
|
|
||||||
mov ecx, 256
|
|
||||||
xor eax, eax
|
|
||||||
lea edi, keys3D
|
|
||||||
rep stosb
|
|
||||||
mov ecx, 256
|
|
||||||
lea edi, pressedKeys3D
|
|
||||||
rep stosb
|
|
||||||
|
|
||||||
invoke GetTickCount
|
|
||||||
mov previousTick3D, eax
|
|
||||||
mov frameStart3D, eax
|
|
||||||
mov deltaTime3D, 0
|
|
||||||
|
|
||||||
call SaveProgress3D
|
|
||||||
|
|
||||||
launch_ret:
|
|
||||||
ret
|
|
||||||
LaunchClassicGame ENDP
|
|
||||||
|
|
||||||
Trigger3DInteraction PROC
|
Trigger3DInteraction PROC
|
||||||
call TriggerHallInteraction3D
|
call TriggerHallInteraction3D
|
||||||
|
|
@ -5612,3 +5381,4 @@ include src_graphics\platform_code.inc
|
||||||
IFDEF CASINO_ACTION_TEST
|
IFDEF CASINO_ACTION_TEST
|
||||||
include tools\tests\casino_actions_test.inc
|
include tools\tests\casino_actions_test.inc
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
|
|
||||||
BIN
poker.exe
BIN
poker.exe
Binary file not shown.
BIN
poker.obj
BIN
poker.obj
Binary file not shown.
Loading…
Add table
Reference in a new issue