📄 guimouse.inc
字号:
%endmacro%macro GUIClickCButtonK 4 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1 pushad call %4 popad%%noclick%endmacro%macro GUIClickCButtonB 3 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1 pushad call drawscreenwin call initwinvideo call Clear2xSaIBuffer popad%%noclick%endmacro%macro GUIClickCButtonN 4 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick%ifdef __WIN32__ cmp %3,1 je %%dontenablek43 mov byte[Keep4_3Ratio],1%%dontenablek43%endif xor %3,1%ifdef __WIN32__ pushad call %4 popad%endif%%noclick%endmacro%macro GUIClickCButtonC 3 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1 mov dword[GUIccombviewloc],0 mov dword[GUIccombcursloc],0 mov dword[GUIccomblcursloc],0%%noclick%endmacro%macro GUIClickCButtonM 3 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1 mov byte[MultiTap],1 cmp byte[pl12s34],1 je %%nomtap cmp byte[pl3contrl],0 jne %%noclick cmp byte[pl4contrl],0 jne %%noclick cmp byte[pl5contrl],0 jne %%noclick%%nomtap mov byte[MultiTap],0%%noclick%endmacro%macro GUIClickCButtonID 3 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1 call SetDevice%%noclick%endmacro%ifdef __MSDOS__%macro GUIClickCButton3 3 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1 DOSClearScreenMouse ret%%noclick%endmacro%macro DOSClearScreenMouse 0 call DOSClearScreen push eax push ecx mov eax,[vidbufferofsb] mov ecx,288*128%%loop mov dword[eax],0 add eax,4 dec ecx jnz %%loop pop ecx pop eax ret%endmacro%endif%macro GUIClickCButton5 4 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick cmp %3,%4 jne %%set xor %3,%4 jmp %%clear%%set mov %3,%4%%clear ret%%noclick%endmacro%macro GUIClickCButton6 4 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick cmp %3,%4 jne %%set xor %3,%4 jmp %%clear%%set mov %3,%4 push eax push ecx mov eax,[vidbufferofsb] mov ecx,288*128%%loop mov dword[eax],0 add eax,4 dec ecx jnz %%loop pop ecx pop eax%%clear ret%%noclick%endmacro%macro GUIClickCButtonfr 3 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick mov byte[FPSOn],0 cmp %3,0 je %%zero mov %3,0 jmp %%notzero%%zero mov %3,1%%notzero%%noclick%endmacro%macro GUIClickCButtonL 2 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor byte[showallext],1 mov dword[GUIcurrentfilewin],0 call GetLoadData ret%%noclick%endmacro%macro GUIClickCButtonI 3 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1 pushad%ifdef __OPENGL__ cmp byte[cvidmode],5 jl %%skipinit pushad call drawscreenwin call initwinvideo popad%%skipinit%endif call Clear2xSaIBuffer popad%%noclick%endmacro%macro GUIClickCButtonT 4 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1 mov %4,0%%noclick%endmacro%macro GUIClickCButton5MMXC 4 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick cmp byte[MMXSupport],0 je %%clear cmp %3,%4 jne %%set xor %3,%4 jmp %%clear%%set mov %3,%4%%clear ret%%noclick%endmacro%macro GUISlidebarPostImpl 13 ; x1,y1,x2,y2,upjump,downjump,holdpos,scsize,view,cur,listsize cmp dword[%11],0 je near %%nolower cmp dword[GUIdispmode],1 je near %%slidebar GUIClickArea %1,%2-7,%3,%2-1,%%noupper mov byte[%12],%13 mov byte[GUICHold],%7 jmp %5%%noupper GUIClickArea %1,%4+1,%3,%4+7,{near %%nolower} mov byte[%12],%13 mov byte[GUICHold],%7+1 jmp %6%%slidebar GUIClickArea %1,%2,%3,%4,{near %%nolower} mov byte[%12],%13 ; displacement = (GUIdispmode * pixeldisp. / (listsize-scsize)) mov eax,[%11] sub eax,%8 mov ebx,edx sub ebx,[GUIlastypos] imul ebx mov ebx,[GUIlastdispval] or ebx,ebx jz near %%zerodiv test ebx,80000000h jnz near %%zerodiv idiv ebx mov ebx,[GUIlastvpos] add ebx,eax mov [%9],ebx mov ebx,[GUIlastcpos] add ebx,eax mov [%10],ebx test dword[%9],8000000h jz %%noneg mov dword[%9],0%%noneg test dword[%10],8000000h jz %%noneg2 mov dword[%10],0%%noneg2 mov eax,[%11] dec eax cmp [%10],eax jb %%notover mov [%10],eax%%notover sub eax,%8-1 cmp [%9],eax jb %%notover2 mov [%9],eax%%notover2%%zerodiv ret%%nolower%endmacroSECTION .bssGUIlastdispval resd 1GUIdispmode resd 1GUIlastypos resd 1GUIlastcpos resd 1GUIlastvpos resd 1SECTION .text%macro GUISlidebarImpl 10 ; x1,y1,x2,y2,GUI?StA,ScrnSize,ViewLoc,CursLoc,Entries,win# mov dword[GUIdispmode],0 GUIClickArea %1,%2,%3,%4,{near %%nobar} sub edx,%2 cmp [%5+4],edx ja near %%above cmp [%5+8],edx jb near %%below add edx,%2 mov [GUIlastypos],edx mov dword[GUIdispmode],1 mov eax,[GUIwinposy+%10*4] add eax,%2 mov [GUIHoldYlim],eax mov eax,[GUIwinposy+%10*4] add eax,%4 mov [GUIHoldYlimR],eax mov eax,[GUIwinposx+%10*4] add eax,%1 mov [GUIHoldXlimL],eax mov eax,[GUIwinposx+%10*4] add eax,%3 mov [GUIHoldXlimR],eax mov eax,[%5] mov [GUIlastdispval],eax mov eax,[%8] mov [GUIlastcpos],eax mov eax,[%7] mov [GUIlastvpos],eax mov byte[GUIHold],3 ret%%above sub dword[%7],%6 sub dword[%8],%6 test dword[%7],8000000h jz %%noneg mov dword[%7],0 mov dword[%8],0%%noneg ret%%below add dword[%7],%6 add dword[%8],%6 mov ebx,[%9] dec ebx cmp [%8],ebx jb %%notoverflow mov [%8],ebx sub ebx,%6-1 mov [%7],ebx%%notoverflow mov ebx,[%9] sub ebx,%6 cmp [%7],ebx jb %%notoverflow2 mov [%7],ebx%%notoverflow2 ret%%nobar ; upper arrow GUIClickArea %1,%2-7,%3,%2-1,%%noupper mov eax,[GUIwinposy+%10*4] add eax,%2-7 mov [GUIHoldYlim],eax mov eax,[GUIwinposy+%10*4] add eax,%2-1 mov [GUIHoldYlimR],eax mov eax,[GUIwinposx+%10*4] add eax,%1 mov [GUIHoldXlimL],eax mov eax,[GUIwinposx+%10*4] add eax,%3 mov [GUIHoldXlimR],eax mov byte[GUIHold],3 ret%%noupper ; lower arrow GUIClickArea %1,%4+1,%3,%4+7,%%nolower mov eax,[GUIwinposy+%10*4] add eax,%4+1 mov [GUIHoldYlim],eax mov eax,[GUIwinposy+%10*4] add eax,%4+7 mov [GUIHoldYlimR],eax mov eax,[GUIwinposx+%10*4] add eax,%1 mov [GUIHoldXlimL],eax mov eax,[GUIwinposx+%10*4] add eax,%3 mov [GUIHoldXlimR],eax mov byte[GUIHold],3 ret%%nolower%endmacro%macro GUIPostWinBoxMove 11 ;x1,y1,x2,y2,view,curs,num,.scru,.scrd,jumpto,sizeofscreen cmp eax,%1 jl near %%noload cmp eax,%3 jg near %%noload cmp edx,%2 je near %%scrollup cmp edx,%4 jne near %%noload ; Scroll Down cmp dword[%7],%11 jbe %9 mov ebx,[%5] add ebx,%11-1 mov [%6],ebx%9 cmp dword[GUIScrolTim1],0 jne near %%donescrol mov ebx,[%7] dec ebx cmp ebx,[%6] jbe %%donescrolldown inc dword[%6] cmp dword[%7],%11 jbe near %%donescrol inc dword[%5] mov ebx,[%7] sub ebx,%11 cmp ebx,[%5] ja near %%donescrolldown mov [%5],ebx jmp %%donescrolldown%%scrollup mov ebx,[%5] mov [%6],ebx%8 cmp dword[GUIScrolTim1],0 jne near %%donescrol cmp dword[%6],0 je %%donescrolldown dec dword[%6] cmp dword[%5],0 je %%donescrolldown dec dword[%5]%%donescrolldown mov dword[GUIScrolTim1],1 cmp dword[GUIScrolTim2],4 jb %%noscrol1 inc dword[GUIScrolTim1]%%noscrol1 cmp dword[GUIScrolTim2],0 je %%noscrol2 inc dword[GUIScrolTim1] dec dword[GUIScrolTim2]%%noscrol2%%donescrol jmp %10%%noload%endmacro%macro GUIPHoldbutton 5 GUIClickArea %1,%2,%3,%4,%%nohold mov dword[GUIHoldXlimL],%1 mov dword[GUIHoldXlimR],%3 mov dword[GUIHoldYlim],%2 mov dword[GUIHoldYlimR],%4 mov byte[GUICBHold2],%5 mov byte[GUIHold],4%%nohold%endmacro%macro GUIPHoldbutton2 8 GUIClickArea %1,%2,%3,%4,%%nohold cmp byte[GUIHold],0 jne %%nohold mov dword[GUIHoldXlimL],%1 mov dword[GUIHoldXlimR],%3 mov dword[GUIHoldYlim],%2 mov dword[GUIHoldYlimR],%4 mov byte[GUICBHold2],%5 mov byte[GUIHold],4 cmp %6,%8 je %%nohold add %6,%7%%nohold%endmacro%macro GUITextBoxInput 6 GUIClickArea %1,%2,%3,%4,%%noclick mov dword[GUIEditString],%5 mov dword[GUIEditStringmLen],%6 mov dword[GUIEditStringLTxt],0 mov dword[GUIEditStringcWin],1%%noclick%endmacro%macro GUITextBoxInputB 5 GUIClickArea %1,%2,%3,%4,%%noclick mov byte[GUINetTextm2],%5%%noclick%endmacro%macro GUITextBoxInputNach 7 GUIClickArea %1,%2,%3,%4,%%noclick pushad call %7 popad mov dword[GUIInputBox],%5 mov dword[GUIInputLimit],%6-1%%noclick%endmacro%macro GUIPButtonHole 4 GUIClickArea %1+1,%2+1,%1+7,%2+7,%%noclick mov %3,%4%%noclick%endmacro%macro GUIPButtonHole2 6 GUIClickArea %1+1,%2+1,%1+7,%2+7,%%noclick mov %3,%4 mov %5,%6%%noclick%endmacro%macro GUIPButtonHoleS 4 GUIClickArea %1+1,%2+1,%1+7,%2+7,%%noclick mov %3,%4%ifdef __MSDOS__ cmp %3,0 je %%noclear pushad call DOSClearScreen cmp byte[cvidmode],2 ;modeQ je %%refresh cmp byte[cvidmode],5 jne %%nomodex%%refresh mov byte[cbitmode],1 call initvideo2 mov byte[cbitmode],0 call GUISetPal%%nomodex popad%%noclear%endif%%noclick%endmacro%macro GUIPButtonHoleLoad 4 GUIClickArea %1+1,%2+1,%1+7,%2+7,%%noclick mov %3,%4 pushad call GetLoadData popad%%noclick%endmacro%macro GUIWinControl 13 ;x,y,x2,y2,currentwin,vpos,#entries,starty,y/entry,cpos,winval,win#,dclicktick# GUIClickArea %1,%2,%3,%4,{near %%noload} cmp dword[%7],0 je near %%noload mov dword[%5],%11 mov eax,edx sub eax,%8 xor edx,edx mov ebx,%9 div ebx add eax,[%6] mov ebx,[%7] dec ebx cmp eax,ebx jg %%nomod mov [%10],eax%%nomod cmp byte[GUIHold],0 jne %%held cmp dword[GUIDClickTL],0 je %%noprevhold cmp byte[GUIDClCWin],%11 jne %%noprevhold cmp [GUIDClCEntry],eax jne %%noprevhold mov dword[GUIDClickTL],0 mov eax,%12 cmp eax,1 jne %%cheat call GUILoadData ret%%cheat call CheatCodeToggle ret%%noprevhold mov dword[GUIDClickTL],%13 mov byte[GUIDClCWin],%11 mov [GUIDClCEntry],eax%%held mov eax,[GUIwinposy+%12*4] add eax,%2-1 mov [GUIHoldYlim],eax mov eax,[GUIwinposy+%12*4] add eax,%4+1 mov [GUIHoldYlimR],eax mov eax,[GUIwinposx+%12*4] add eax,%1 mov [GUIHoldXlimL],eax mov eax,[GUIwinposx+%12*4] add eax,%3 mov [GUIHoldXlimR],eax mov byte[GUIHold],3 ret%%noload%endmacro%macro GUIWinControl2 13 ;Key Combination Editor Exclusive GUIClickArea %1,%2,%3,%4,{near %%noload} cmp dword[%7],0 je near %%noload mov dword[GUIccomblcursloc],0FFFFFFFFh mov dword[%5],%11 mov eax,edx sub eax,%8 xor edx,edx mov ebx,%9 div ebx add eax,[%6] mov ebx,[%7] dec ebx cmp eax,ebx jg %%nomod mov [%10],eax%%nomod cmp byte[GUIHold],0 jne %%held cmp dword[GUIDClickTL],0 je %%noprevhold cmp byte[GUIDClCWin],%11 jne %%noprevhold cmp [GUIDClCEntry],eax jne %%noprevhold mov dword[GUIDClickTL],0 mov eax,%12 cmp eax,1 jne %%cheat call GUILoadData ret%%cheat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -