Rusty Earth - sub menu.

git-svn-id: svn://kolibrios.org@5259 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov (Mario79) 2014-12-23 13:51:32 +00:00
parent db060b0d6b
commit 10c14031be
7 changed files with 323 additions and 40 deletions

View File

@ -267,4 +267,25 @@ main_menu_text_pointers:
dd menu_exit_label dd menu_exit_label
dd 0 dd 0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_credits_text_pointers:
dd menu_credits_text.1
dd menu_credits_text.2
dd menu_credits_text.3
dd menu_credits_text.4
dd menu_credits_text.5
dd menu_credits_text.6
dd 0
;---------------------------------------------------------------------
menu_help_text_pointers:
dd menu_help_text.1
dd menu_help_text.2
dd menu_help_text.3
dd menu_help_text.4
dd 0
;---------------------------------------------------------------------
settings_menu_text_pointers:
dd menu_settings_sound_label
dd menu_settings_music_label
dd menu_setting_exit
dd 0
;---------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
title: title:
db 'Rusty Earth (Prototype 1.5) 23.12.2014',0 db 'Rusty Earth (Prototype 1.6) 23.12.2014',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_game_label: menu_game_label:
db 'GAME',0 db 'GAME',0
@ -18,22 +18,31 @@ menu_exit_label:
db 'EXIT',0 db 'EXIT',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_settings_sound_label: menu_settings_sound_label:
db 'SOUNDS',0 db 'SOUNDS OFF',0
;-------------------------------------- ;--------------------------------------
menu_settings_music_label: menu_settings_music_label:
db 'MUSIC',0 db 'MUSIC OFF',0
;--------------------------------------
text_off_label:
db 'OFF',0
;--------------------------------------
text_on_label:
db 'ON ',0
;--------------------------------------
menu_setting_exit:
db 'EXIT',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_credits_text: menu_credits_text:
db 'Hello KolibriOS Team!',0 .1: db 'Hello KolibriOS Team!',0
db 'The game used graphics and sound material',0 .2: db 'The game used graphics and sound material',0
db 'under a free license, borrowed from:',0 .3: db 'under a free license, borrowed from:',0
db 'http://untamed.wild-refuge.net/',0 .4: db 'http://untamed.wild-refuge.net/',0
db 'http://opengameart.org',0 .5: db 'http://opengameart.org',0
db 'https://wiki.themanaworld.org',0 .6: db 'https://wiki.themanaworld.org',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_help_text: menu_help_text:
db 'Game control',0 .1: db 'Game control',0
db 'Move the player:',0 .2: db 'Move the player:',0
db 'WASD, Arrows or Num8462',0 .3: db 'WASD, Arrows or Num8462',0
db 'Player kick : Space',0 .4: db 'Player kick : Space',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------

View File

@ -2,7 +2,7 @@
; Code page - Cyrillic OEM866 ; Code page - Cyrillic OEM866
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
title: title:
db '<27>¦ ¢ ï ‡¥¬«ï (<28>à®â®â¨¯ 1.5) 23.12.2014',0 db '<27>¦ ¢ ï ‡¥¬«ï (<28>à®â®â¨¯ 1.6) 23.12.2014',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_game_label: menu_game_label:
db 'ˆƒ<CB86>€',0 db 'ˆƒ<CB86>€',0
@ -20,22 +20,31 @@ menu_exit_label:
db '‚›•Ž„',0 db '‚›•Ž„',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_settings_sound_label: menu_settings_sound_label:
db '‡‚“Šˆ',0 db '‡‚“Šˆ ‚›Š‹',0
;-------------------------------------- ;--------------------------------------
menu_settings_music_label: menu_settings_music_label:
db 'Œ“‡›Š€',0 db 'Œ“‡›Š€ ‚›Š‹',0
;--------------------------------------
text_off_label:
db '‚›Š‹',0
;--------------------------------------
text_on_label:
db '‚Š‹',0
;--------------------------------------
menu_setting_exit:
db '‚›•Ž„',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_credits_text: menu_credits_text:
db '<27>ਢ¥â ãç áâ­¨ª ¬ ª®¬ ­¤ë KolibriOS Team!',0 .1: db '<27>ਢ¥â ãç áâ­¨ª ¬ ª®¬ ­¤ë KolibriOS Team!',0
db ' ¨£à¥ ¨á¯®«ì§®¢ ­ë £à ä¨ç¥áª¨¥ ¨ §¢ãª®¢ë¥ ¬ â¥à¨ «ë',0 .2: db ' ¨£à¥ ¨á¯®«ì§®¢ ­ë £à ä¨ç¥áª¨¥ ¨ §¢ãª®¢ë¥ ¬ â¥à¨ «ë',0
db '¯®¤ ᢮¡®¤­ë¬¨ «¨æ¥­§¨ï¬¨, ¯®§ ¨¬á⢮¢ ­­ë¥ á ᠩ⮢:',0 .3: db '¯®¤ ᢮¡®¤­ë¬¨ «¨æ¥­§¨ï¬¨, ¯®§ ¨¬á⢮¢ ­­ë¥ á ᠩ⮢:',0
db 'http://untamed.wild-refuge.net/',0 .4: db 'http://untamed.wild-refuge.net/',0
db 'http://opengameart.org',0 .5: db 'http://opengameart.org',0
db 'https://wiki.themanaworld.org',0 .6: db 'https://wiki.themanaworld.org',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_help_text: menu_help_text:
db '“¯à ¢«¥­¨¥ ¨£à®©',0 .1: db '“¯à ¢«¥­¨¥ ¨£à®©',0
db '<27>¥à¥¬¥é¥­¨¥ ¨£à®ª :',0 .2: db '<27>¥à¥¬¥é¥­¨¥ ¨£à®ª :',0
db 'WASD, áâ५ª¨ ¨«¨ Num8462',0 .3: db 'WASD, áâ५ª¨ ¨«¨ Num8462',0
db '“¤ à ¨£à®ª : "<22>஡¥«"',0 .4: db '“¤ à ¨£à®ª : "<22>஡¥«"',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------

View File

@ -1,7 +1,12 @@
;---------------------------------------------------------------------
main_menu_start: main_menu_start:
mov [main_menu_pointer],0 mov [main_menu_pointer],0
;--------------------------------------
.red: .red:
call draw_main_menu_window mov [menu_text_pointers],main_menu_text_pointers
mov [text_step_Y],SPRITE_SIZE_Y
call draw_menu_window
call draw_new_pointer
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
.still: .still:
mcall 10 mcall 10
@ -25,6 +30,13 @@ main_menu_start:
test al,al test al,al
jnz .still jnz .still
cmp ah,0xE0
jne @f
mov [extended_key],1
jmp .still
;--------------------------------------
@@:
cmp ah,72 ; arrow up cmp ah,72 ; arrow up
je .arrow_up je .arrow_up
@ -43,7 +55,6 @@ main_menu_start:
cmp ah,28 ; enter cmp ah,28 ; enter
je .enter_to_point je .enter_to_point
mov [extended_key],1
jmp .still jmp .still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
.extended_key: .extended_key:
@ -75,10 +86,19 @@ main_menu_start:
jmp .still jmp .still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
.enter_to_point: .enter_to_point:
cmp [main_menu_pointer],0 cmp [main_menu_pointer],0 ; game
je start_level_0 je start_level_0
cmp [main_menu_pointer],4 cmp [main_menu_pointer],1 ; settings
je settings_menu_start
cmp [main_menu_pointer],2 ; credits
je menu_credits
cmp [main_menu_pointer],3 ; help
je menu_help
cmp [main_menu_pointer],4 ; exit
je button.exit je button.exit
jmp .still jmp .still
@ -108,20 +128,20 @@ draw_new_pointer:
; mov cx,SPRITE_SIZE_Y ; mov cx,SPRITE_SIZE_Y
; mcall 13,<SPRITE_SIZE_X*1,SPRITE_SIZE_X>,,0xff0000 ; mcall 13,<SPRITE_SIZE_X*1,SPRITE_SIZE_X>,,0xff0000
mov eax,[npc_miku_icons]
mov ebp,SPRITE_SIZE_X*SPRITE_SIZE_Y*12
call copy_base_8bpp
movzx edx,byte [main_menu_pointer] movzx edx,byte [main_menu_pointer]
imul edx,SPRITE_SIZE_Y imul edx,SPRITE_SIZE_Y
add edx,SPRITE_SIZE_Y*2 + 32 add edx,SPRITE_SIZE_Y*2 + 32
add edx,SPRITE_SIZE_X*2 shl 16 add edx,SPRITE_SIZE_X*2 shl 16
mov eax,[npc_miku_icons]
mov ebp,SPRITE_SIZE_X*SPRITE_SIZE_Y*12
call copy_base_8bpp
xor ebp,ebp xor ebp,ebp
mcall 65,buffer_area,<SPRITE_SIZE_X,SPRITE_SIZE_Y>,,32 mcall 65,buffer_area,<SPRITE_SIZE_X,SPRITE_SIZE_Y>,,32
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
draw_main_menu_window: draw_menu_window:
mcall 12,1 mcall 12,1
mcall 48,4 mcall 48,4
mov ecx,100 shl 16 + 644 mov ecx,100 shl 16 + 644
@ -133,7 +153,7 @@ draw_main_menu_window:
mov eax,4 mov eax,4
mov ebx,SPRITE_SIZE_X*3 shl 16 + SPRITE_SIZE_Y*3 mov ebx,SPRITE_SIZE_X*3 shl 16 + SPRITE_SIZE_Y*3
mov ecx,0x90ffffff mov ecx,0x90ffffff
mov esi,main_menu_text_pointers mov esi,[menu_text_pointers]
;-------------------------------------- ;--------------------------------------
@@: @@:
mov edx,[esi] mov edx,[esi]
@ -141,12 +161,11 @@ draw_main_menu_window:
jz .end jz .end
mcall mcall
add ebx,SPRITE_SIZE_Y add ebx,[text_step_Y]
add esi,4 add esi,4
jmp @b jmp @b
;-------------------------------------- ;--------------------------------------
.end: .end:
call draw_new_pointer
mcall 12,2 mcall 12,2
ret ret
@ -156,3 +175,209 @@ clear_screen:
mcall 13,<0,SPRITE_SIZE_X*LEVEL_MAP_SIZE_X>,<0,SPRITE_SIZE_Y*LEVEL_MAP_SIZE_Y> mcall 13,<0,SPRITE_SIZE_X*LEVEL_MAP_SIZE_X>,<0,SPRITE_SIZE_Y*LEVEL_MAP_SIZE_Y>
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_credits:
mov [menu_text_pointers],menu_credits_text_pointers
jmp menu_help.1
;---------------------------------------------------------------------
menu_help:
mov [menu_text_pointers],menu_help_text_pointers
;--------------------------------------
.1:
mov [text_step_Y],20
;--------------------------------------
.red:
call draw_menu_window
;---------------------------------------------------------------------
.still:
mcall 10
cmp eax,1
je .red
cmp eax,2
je .key
cmp eax,3
je .button
jmp .still
;---------------------------------------------------------------------
.key:
mcall 2
cmp [extended_key],1
je .extended_key
test al,al
jnz .still
cmp ah,0xE0
jne @f
mov [extended_key],1
jmp .still
;--------------------------------------
@@:
cmp ah,57 ; space
je main_menu_start.red
cmp ah,28 ; enter
je main_menu_start.red
jmp .still
;---------------------------------------------------------------------
.extended_key:
mov [extended_key],0
jmp .still
;---------------------------------------------------------------------
.button:
mcall 17
cmp ah,1
jne .still
jmp button.exit
;---------------------------------------------------------------------
settings_menu_start:
mov al,[main_menu_pointer]
mov [settings_menu_pointer],al
xor al,al
mov [main_menu_pointer],al
;--------------------------------------
.red:
mov [menu_text_pointers],settings_menu_text_pointers
mov [text_step_Y],SPRITE_SIZE_Y
call prepare_settings_text
call draw_menu_window
call draw_new_pointer
;---------------------------------------------------------------------
.still:
mcall 10
cmp eax,1
je .red
cmp eax,2
je .key
cmp eax,3
je .button
jmp .still
;---------------------------------------------------------------------
.key:
mcall 2
cmp [extended_key],1
je .extended_key
test al,al
jnz .still
cmp ah,0xE0
jne @f
mov [extended_key],1
jmp .still
;--------------------------------------
@@:
cmp ah,72 ; arrow up
je .arrow_up
cmp ah,80 ; arrow down
je .arrow_down
cmp ah,17 ; w - arrow up
je .arrow_up
cmp ah,31 ; s - arrow down
je .arrow_down
cmp ah,57 ; space
je .enter_to_point
cmp ah,28 ; enter
je .enter_to_point
jmp .still
;---------------------------------------------------------------------
.extended_key:
mov [extended_key],0
cmp ah,72 ; arrow up
je .arrow_up
cmp ah,80 ; arrow down
je .arrow_down
jmp .still
;---------------------------------------------------------------------
.arrow_up:
cmp [main_menu_pointer],0
je .still
call clear_old_pointer
dec [main_menu_pointer]
call draw_new_pointer
jmp .still
;---------------------------------------------------------------------
.arrow_down:
cmp [main_menu_pointer],2
je .still
call clear_old_pointer
inc [main_menu_pointer]
call draw_new_pointer
jmp .still
;---------------------------------------------------------------------
.enter_to_point:
cmp [main_menu_pointer],0 ; sounds
jne @f
inc [sounds_flag]
and [sounds_flag],1b
jmp .red
;--------------------------------------
@@:
cmp [main_menu_pointer],1 ; music
jne @f
inc [music_flag]
and [music_flag],1b
jmp .red
;--------------------------------------
@@:
cmp [main_menu_pointer],2 ; exit
jne .still
mov al,[settings_menu_pointer]
mov [main_menu_pointer],al
jmp main_menu_start.red
;---------------------------------------------------------------------
.button:
mcall 17
cmp ah,1
jne .still
jmp button.exit
;---------------------------------------------------------------------
prepare_settings_text:
mov eax,[text_on_label]
cmp [sounds_flag],1
je @f
mov eax,[text_off_label]
;--------------------------------------
@@:
mov [menu_settings_sound_label+7],eax
;--------------------------------------
mov eax,[text_on_label]
cmp [music_flag],1
je @f
mov eax,[text_off_label]
;--------------------------------------
@@:
mov [menu_settings_music_label+7],eax
ret
;---------------------------------------------------------------------

View File

@ -98,6 +98,8 @@ load_libraries l_libs_start,end_l_libs
mov [wav_for_test_end],ebx mov [wav_for_test_end],ebx
call initialize_sound_system call initialize_sound_system
mov [sounds_flag],1
mov [music_flag],1
mcall 51,1,snd_background_music_thread_start,snd_background_music_thread_stack mcall 51,1,snd_background_music_thread_start,snd_background_music_thread_stack
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
menu_still: menu_still:

View File

@ -144,6 +144,14 @@ snd_wave_out_fail:
ret ret
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
snd_background_music_thread_start: snd_background_music_thread_start:
cmp [music_flag],1
je @f
mcall 5,50
mcall 68,1
jmp snd_background_music_thread_start
;--------------------------------------
@@:
mov eax,[background_music] mov eax,[background_music]
mov ebp,[hBuff1] mov ebp,[hBuff1]
call wave_out call wave_out
@ -151,6 +159,9 @@ snd_background_music_thread_start:
; mcall -1 ; mcall -1
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
snd_kick_action: snd_kick_action:
cmp [sounds_flag],1
jne @f
cmp [snd_kick_flag],1 cmp [snd_kick_flag],1
je @f je @f

View File

@ -7,8 +7,11 @@ current_cell_NPC rb 1
death_of_protagonist rb 1 death_of_protagonist rb 1
target_detected rb 1 target_detected rb 1
sound_flag rb 1 sound_flag rb 1
sounds_flag rb 1
music_flag rb 1
snd_kick_flag rb 1 snd_kick_flag rb 1
main_menu_pointer rb 1 main_menu_pointer rb 1
settings_menu_pointer rb 1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
N_error rd 1 N_error rd 1
@ -40,6 +43,9 @@ action_cell_y rd 1
target_action_cell_x rd 1 target_action_cell_x rd 1
target_action_cell_y rd 1 target_action_cell_y rd 1
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
menu_text_pointers rd 1
text_step_Y rd 1
;------------------------------------------------------------------------------
align 4 align 4
version rd 1 ; версия интерфейса, текущая 0x0101 version rd 1 ; версия интерфейса, текущая 0x0101
; snd_format одна из констант вида PCM_X_Y_Z где ; snd_format одна из констант вида PCM_X_Y_Z где