0,0 → 1,87 |
mouse: |
|
|
mov eax,37 ; get mouse position ; EXPERIMENTAL !!! |
mov ebx,1 ; window relative ; |
int 0x40 ; ; |
shr eax,16 ; we only need to know the x position ; |
sub eax,X_LOCATION ; |
; |
cmp eax,ADOBE_SIZE*(LEN_X-2) ; check to see if mouse is in field ; |
jg no_mouse ; ; |
cmp eax,0 ; ; |
jl no_mouse ; ; |
; |
mov ebx,0 ; |
; |
mouseloop: ; |
cmp eax,ADOBE_SIZE ; |
jl yes_mouse ; |
sub eax,ADOBE_SIZE ; |
inc ebx ; |
jmp mouseloop ; |
; |
yes_mouse: ; |
cmp ebx,[current_block_x] |
jg go_right |
jl go_left |
; mov dword[current_block_x],ebx ; |
|
mov eax,37 ; get mouse position ; |
mov ebx,2 ; buttons pressed (1=left, 2=right, 3=both) ; |
int 0x40 ; |
; |
cmp eax,0 ; |
jne yes_mouse_button ; |
mov byte[lastmousebutton],0 ; |
jmp no_mouse ; |
yes_mouse_button: ; |
; |
cmp eax,2 ; |
jne no_left_mouse ; |
cmp byte[status],'1' ; |
jne no_left_mouse ; |
mov byte[lastmousebutton],2 ; |
inc dword [current_block_y] ; |
call check_crash ; |
jne block_crash ; |
jmp no_mouse ; |
; |
no_left_mouse: ; |
; |
; |
cmp eax,1 ; |
jne no_right_mouse ; |
cmp byte[status],'1' ; |
jne no_right_mouse ; |
cmp byte[lastmousebutton],1 ; |
mov byte[lastmousebutton],1 ; |
je no_right_mouse ; |
call rotate_block ; |
call check_crash ; |
jne block_crash ; |
call draw_block ; |
jmp scendi ; |
; |
no_right_mouse: ; |
; |
; |
cmp eax,3 ; |
jne no_mouse ; |
cmp byte[lastmousebutton],3 ; |
mov byte[lastmousebutton],3 ; |
je no_mouse ; |
cmp byte[status],'2' ; |
je unpause ; |
mov byte[status],'2' ; |
call draw_window ; |
jmp attesa ; |
; unpause: ; |
; mov byte[status],'1' ; |
; call draw_window ; |
; jmp still ; |
; |
; ; |
no_mouse: ; |
|
ret |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |