Subversion Repositories Kolibri OS

Rev

Rev 1760 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1518 dunkaist 1
;;===Game_over_mode============================================================================================================
2
 
3
Game_over:
4
 
1677 dunkaist 5
    cmp  [play_mode],   LEVELS_MODE
6
     jne @f
7
    dec  [lives]
8
     jz  @f
9
      call      Draw_splash
10
     jmp Level_begin
11
  @@:
12
 
13
    mov  byte[window_title+5],  0
14
      mcall     71,1,window_title
15
      mcall     66,1,0                          ; set ascii mode for keyboard
1566 dunkaist 16
      call      Show_cursor
17
 
1518 dunkaist 18
    mov  ebx, [score]
1566 dunkaist 19
 
20
    cmp  [play_mode],   CLASSIC_MODE
21
     jne @f
22
    cmp  ebx, [hi_score_classic]
1522 dunkaist 23
     jng .redraw
1518 dunkaist 24
    mov  [is_new_record], 1
1566 dunkaist 25
     jmp .done
26
  @@:
27
    cmp  ebx, [hi_score_levels]
28
     jng .redraw
29
    mov  [is_new_record], 1
30
     jmp .done
31
  .done:
1518 dunkaist 32
 
33
      mcall     40,100111b                      ; set events: standart + mouse
34
 
1522 dunkaist 35
  .redraw:
1677 dunkaist 36
      call      Set_geometry
1518 dunkaist 37
      mcall     12,1
1522 dunkaist 38
      mcall     0, , ,[window_style], ,window_title
2061 dunkaist 39
    test [proc_info.wnd_state], 0x04		; is rolled up?
40
     jnz @f
1518 dunkaist 41
 
42
      call      Draw_decorations
43
      call      Draw_game_over_picture
1522 dunkaist 44
      call      Draw_game_over_strings          ; edit_box is here
1518 dunkaist 45
      mcall     12,2
2061 dunkaist 46
  @@:
1522 dunkaist 47
  .still:
1518 dunkaist 48
      mcall     10                              ; wait for event
49
                                                ; ok, what an event?
50
    dec  al                                     ; has the window been moved or resized?
1522 dunkaist 51
     jz  .redraw
1518 dunkaist 52
    dec  al                                     ; was a key pressed?
1522 dunkaist 53
     jz  .key
1518 dunkaist 54
    dec  al                                     ; was a button pressed?
1522 dunkaist 55
     jz  .button
1518 dunkaist 56
 
57
 
1522 dunkaist 58
  .mouse:                                       ; mouse event received
1566 dunkaist 59
      invoke        edit_box.mouse, edit1
1518 dunkaist 60
 
1522 dunkaist 61
     jmp .still
1518 dunkaist 62
 
63
 
1522 dunkaist 64
  .key:                                         ; a key was pressed
1518 dunkaist 65
      mcall     2                               ; get keycode
66
 
1566 dunkaist 67
    cmp  [is_new_record],   1
68
     je  .key.is_record
69
 
70
    cmp  ah,  0x1B                              ; Escape - go to menu
71
     jne .still
72
     jmp First_menu
73
 
74
  .key.is_record:
1518 dunkaist 75
    cmp  ah,  0x0D                              ; Enter
76
     jnz @f
77
      call      Score_and_name_store
78
     jmp First_menu
79
  @@:
1566 dunkaist 80
      invoke        edit_box.key, edit1
1522 dunkaist 81
     jmp .still
1518 dunkaist 82
 
83
 
1522 dunkaist 84
  .button:                                      ; a button was pressed
1518 dunkaist 85
      mcall     17                              ; get button number
86
    shr  eax, 8                                 ; we should do it to get the real button code
87
 
88
    cmp  eax, 1
1566 dunkaist 89
     je  Save_do_smth_else_and_exit
1518 dunkaist 90
 
1522 dunkaist 91
     jmp .still
1518 dunkaist 92
 
93
;;---Game_over_mode------------------------------------------------------------------------------------------------------------
94
 
95
 
96
;;===Some_functions============================================================================================================
97
 
98
Draw_game_over_picture:
99
    ;;===Draw_game_over_picture================================================================================================
100
 
1566 dunkaist 101
    cmp  [is_new_record],   1
102
     je  @f
103
    mov  ax,  1*0x100+26
1522 dunkaist 104
    mov  cx,  1*0x100+13
1518 dunkaist 105
    mov  edx, [game_over_picture_color]
1522 dunkaist 106
    mov  esi, picture_game_over
1566 dunkaist 107
     jmp .done
108
  @@:
1760 dunkaist 109
    mov  ax,  1*0x100+26
1566 dunkaist 110
    mov  cx,  1*0x100+12
111
    mov  edx, [you_win_picture_color]
112
    mov  esi, picture_you_win
113
  .done:
1518 dunkaist 114
      call      Draw_picture
115
 
116
    ret
117
 
118
    ;;---Draw_game_over_picture------------------------------------------------------------------------------------------------
119
 
120
 
121
Draw_game_over_strings:
122
    ;;===Draw_game_over_strings================================================================================================
1522 dunkaist 123
 
1518 dunkaist 124
    cmp  [is_new_record], 1
125
     jnz @f
126
 
1522 dunkaist 127
    mov  ebx, [window_width]
128
    shr  ebx, 1
1566 dunkaist 129
    sub  ebx, string_congratulations.size*3+6*6
1522 dunkaist 130
    shl  ebx, 16
131
    add  ebx, [bottom_top_strings]
132
      mcall     4, ,[game_over_strings_color],string_congratulations
133
    mov  ebx, [window_width]
134
    shr  ebx, 1
1566 dunkaist 135
    sub  ebx, string_enter_your_name.size*3+6*6
1522 dunkaist 136
    shl  ebx, 16
137
    add  ebx, [bottom_bottom_strings]
138
      mcall      , , ,string_enter_your_name
139
    mov  ebx, [window_width]
140
    shr  ebx, 1
1566 dunkaist 141
    sub  ebx, string_apply_name_enter.size*3
1522 dunkaist 142
    shl  ebx, 16
143
    add  ebx, [top_strings]
144
      mcall      , ,[navigation_strings_color],string_apply_name_enter
145
    mov  edx, [window_width]
146
    shr  edx, 1
1566 dunkaist 147
    add  edx, string_congratulations.size*3-6*6-1
1522 dunkaist 148
    shl  edx, 16
149
    add  edx, dword[bottom_top_strings]
150
      mcall     47,0x00070000,[score], ,[game_over_hiscore_color]
151
    mov  ebx, [window_width]
152
    shr  ebx, 1
1566 dunkaist 153
    add  ebx, string_enter_your_name.size*3-6*6-3
154
    mov  [edit1.left],  ebx
155
      invoke        edit_box.draw, edit1
1518 dunkaist 156
 
157
    ret
1522 dunkaist 158
 
1518 dunkaist 159
  @@:
1522 dunkaist 160
 
1518 dunkaist 161
    call    Draw_menu_esc
162
 
163
    ret
1522 dunkaist 164
 
1518 dunkaist 165
    ;;---Draw_game_over_strings------------------------------------------------------------------------------------------------
1522 dunkaist 166
 
167
 
1518 dunkaist 168
Score_and_name_store:
169
    ;;===Name_store============================================================================================================
170
 
1566 dunkaist 171
    mov  esi, hed
1518 dunkaist 172
 
1566 dunkaist 173
    cmp  [play_mode],   CLASSIC_MODE
174
     jne @f
175
    mov  edi, champion_name_classic
176
     jmp .done
177
  @@:
178
    mov  edi, champion_name_levels
179
  .done:
180
 
181
    mov  ecx, CHAMPION_NAME_LENGTH
182
    rep  movsb
183
 
184
    mov  eax, [score]
185
 
186
    cmp  [play_mode],   CLASSIC_MODE
187
     jne @f
188
    mov  [hi_score_classic],    eax
189
     jmp .done2
190
  @@:
191
    mov  [hi_score_levels], eax
192
  .done2:
193
 
1518 dunkaist 194
    ret
195
 
196
    ;;---Name_store------------------------------------------------------------------------------------------------------------
197
 
2061 dunkaist 198
;;---Some_functions------------------------------------------------------------------------------------------------------------