;;####################################################################
;;# GNU Free Documentation License                                   #
;;# Version 1.3, 3 November 2008                                     #
;;#                                                                  #
;;# Copyright (C) 2021 Lumina                                        #
;;# (Paula Garcia Morales, Laura Gil Lopez, Jorge Perez Dominguez)   #
;;#                                                                  #
;;# Everyone is permitted to copy and distribute verbatim copies     #
;;# of this license document, but changing it is not allowed.        #
;;####################################################################


.include "cpctelera.h.s"
.include "life.h.s"

vidas:: .db 51  ;;3
relojitoAturdido:: .db #0x00
distancia:: .db #0x00

lifes_init::
    call paint_lifes
ret

reset_lifes::
    ld a, #51
    ld (vidas), a
ret

life_getLifes_A::
    ld a, (vidas)
ret

actualizar_reloj_aturdido:
    ld a, (relojitoAturdido)
    inc a 
    ld (relojitoAturdido), a
ret

stun_collision:
    call entityman_getEntityArray_IX

    ld a, 1(ix)
    add #20

    ld (distancia), a

    loop_anim_aturde:
        call actualizar_reloj_aturdido

        cp #0x3C              ;;Comparar con valor 120 en decimal
        jr nz, loop_anim_aturde


        ld a, #0x00
        ld (relojitoAturdido), a

        call render_player_aturdido

        ld a, (distancia)
        ld b, a

        ld a, 1(ix)
        add #4
        ld 1(ix), a

        cp b

        jr c, loop_anim_aturde
ret

life_up::
    ld a, (vidas)
    cp #51
    jr z, no_sumo_vida

    ld a, (vidas)
    inc a
    ld (vidas), a

    no_sumo_vida:
ret

;;Actualizar las vidas del jugador en cada llamada del bucle principal del juego
life_update::
    ld a, (vidas)
    dec a 
    cp #48        ;;0 en ASCII
    jr z, end_game

    ld (vidas), a

    call stun_collision
    
    call paint_lifes

    ret

    ;;Si no quedan vidas mostramos Game Over
    end_game:
        call animation_muerte
        call man_menu_game_over_life
        call reset_level
        call reset_nivel
ret

;;Dibujar el texto con el numero de vidas restantes del jugador
paint_lifes::
    ld bc, #0x0824  ;;y(8)x(36)
    ld a, (vidas)

    call render_lifes_clock_levels
ret