forked from KolibriOS/kolibrios
137 lines
4.4 KiB
NASM
137 lines
4.4 KiB
NASM
;;===Game_over_mode============================================================================================================
|
|
|
|
Game_over:
|
|
|
|
mov ebx, [score]
|
|
cmp ebx, [hi_score]
|
|
jng Game_over_Redraw
|
|
|
|
mov [is_new_record], 1
|
|
|
|
mcall 40,100111b ; set events: standart + mouse
|
|
|
|
Game_over_Redraw:
|
|
mcall 12,1
|
|
mcall 0,200*65536+WINDOW_WIDTH,326*65536+WINDOW_HEIGHT,[window_style], ,window_title
|
|
|
|
cmp [is_new_record], 1
|
|
jnz @f
|
|
push dword edit1
|
|
call [edit_box.draw]
|
|
@@:
|
|
|
|
call Draw_decorations
|
|
call Draw_game_over_picture
|
|
call Draw_game_over_strings
|
|
|
|
mcall 12,2
|
|
|
|
Game_over_Wait_for_event:
|
|
mcall 10 ; wait for event
|
|
; ok, what an event?
|
|
dec al ; has the window been moved or resized?
|
|
jz Game_over_Redraw
|
|
dec al ; was a key pressed?
|
|
jz Game_over_key
|
|
dec al ; was a button pressed?
|
|
jz Game_over_button
|
|
|
|
|
|
Game_over_mouse: ; mouse event received
|
|
push dword edit1
|
|
call [edit_box.mouse]
|
|
|
|
jmp Game_over_Wait_for_event
|
|
|
|
|
|
Game_over_key: ; a key was pressed
|
|
mcall 2 ; get keycode
|
|
|
|
cmp [is_new_record], 1
|
|
jnz .skip
|
|
|
|
cmp ah, 0x0D ; Enter
|
|
jnz @f
|
|
call Score_and_name_store
|
|
mov [is_new_record], 0
|
|
mcall 40,111b ; set events: standart
|
|
jmp First_menu
|
|
|
|
@@:
|
|
push dword edit1
|
|
call [edit_box.key]
|
|
|
|
jmp Game_over_Wait_for_event
|
|
.skip:
|
|
|
|
cmp ah, 0x1B ; Escape - go to menu
|
|
jne Game_over_Wait_for_event
|
|
|
|
mcall 40,111b ; set events: standart
|
|
jmp First_menu
|
|
|
|
|
|
Game_over_button: ; a button was pressed
|
|
mcall 17 ; get button number
|
|
shr eax, 8 ; we should do it to get the real button code
|
|
|
|
cmp eax, 1
|
|
je Exit
|
|
|
|
jmp Game_over_Wait_for_event
|
|
|
|
;;---Game_over_mode------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
;;===Some_functions============================================================================================================
|
|
|
|
Draw_game_over_picture:
|
|
;;===Draw_game_over_picture================================================================================================
|
|
|
|
mov al, 11
|
|
mov bh, 0
|
|
mov ecx, picture_game_over
|
|
mov edx, [game_over_picture_color]
|
|
call Draw_picture
|
|
|
|
ret
|
|
|
|
;;---Draw_game_over_picture------------------------------------------------------------------------------------------------
|
|
|
|
|
|
Draw_game_over_strings:
|
|
;;===Draw_game_over_strings================================================================================================
|
|
|
|
|
|
|
|
cmp [is_new_record], 1
|
|
jnz @f
|
|
|
|
mcall 4,40*65536+BOTTOM_TOP_STRINGS,[game_over_strings_color],string_congratulations
|
|
mcall ,244*65536+BOTTOM_BOTTOM_STRINGS, ,string_enter_your_name
|
|
mcall ,210*65536+TOP_STRINGS,[navigation_strings_color],string_apply_name_enter
|
|
mcall 47,0x00070000,[score],(399)*65536+BOTTOM_TOP_STRINGS,[game_over_hiscore_color]
|
|
|
|
ret
|
|
|
|
@@:
|
|
|
|
call Draw_menu_esc
|
|
|
|
ret
|
|
|
|
;;---Draw_game_over_strings------------------------------------------------------------------------------------------------
|
|
|
|
|
|
Score_and_name_store:
|
|
;;===Name_store============================================================================================================
|
|
|
|
|
|
invoke ini.set_str, cur_dir_path, aScore, aChampion_name, hed, 15
|
|
invoke ini.set_int, cur_dir_path, aScore, aHiscore, [score]
|
|
|
|
ret
|
|
|
|
;;---Name_store------------------------------------------------------------------------------------------------------------
|
|
|
|
;;---Some_functions------------------------------------------------------------------------------------------------------------ |