.include "cpctelera.h.s"

t_atack_no_dmg=40
t_atack_no_dmg_player=120


;;; VACIA EL VECTOR DE COLISIONES
colision_init::
    call init_vector_colision
ret


;;; SISTEMA DE COLISIONES
sys_colision_update::

    call get_start_colition_array

    bucle_col_primer:
        
        ;siguiente_ix:
        ;;PRIMERO A COMPARAR
        ld e, (hl)
        inc hl
        ld d, (hl)
        inc hl

        ld a, e 
        or d 
        ret z

        push hl

        ld__ixl_e
        ld__ixh_d

        
        

        siguiente_iy:
        ;;SEGUNDO A COMPARAR
        ld e, (hl)
        inc hl
        ld d, (hl)
        inc hl

        ld a, e 
        or d  
        jr z, siguiente_ix

        ld__iyl_e
        ld__iyh_d


        call check_colisions
        call check_colisions_atack
        jr siguiente_iy


        siguiente_ix:
        pop hl 
        ret ;;;SI PONGO RET AQUI SOLO COMPRUEBO LAS COLISIONES CON EL PRIMER ELEMENTO (EL JUGADOR)
        jr bucle_col_primer
        

    f_collisions:
ret




;;;;; COLISIONES CON JUGADOR
check_colisions::


    ;; EJE X

    ;; if ( A < B )
    ;; if ( e_x(ix) + e_w(ix) < e_x(iy) ) __no_collision
    ;; if ( e_x(ix) + e_w(ix) - e_x(iy) < 0 ) __no_collision

    ld      a, e_x(ix)
    add     e_w(ix)
    sub     e_x(iy)
    jr     c, _no_collision

    ;; if ( C < D )
    ;; if ( e_x(iy) + e_w(iy) < e_x(ix) ) __no_collision
    ;; if ( e_x(iy) + e_w(iy) - e_x(ix) < 0 ) __no_collision

    ld      a, e_x(iy)
    add     e_w(iy)
    sub     e_x(ix)
    jr     c, _no_collision


    ;; EJE Y

    ld      a, e_y(ix)
    add     e_h(ix)
    sub     e_y(iy)
    jr     c, _no_collision

    ld      a, e_y(iy)
    add     e_h(iy)
    sub     e_y(ix)
    jr     c, _no_collision

    _collision:
        ;ld a, #0xff
        ;ld (0xC000), a

        ld b, #_e_type_input
        ld a, e_tipo(ix) 
        and b      
        cp a,b      
        ret nz

        es_player::

        ld b, #_e_type_ia
        ld a, e_tipo(iy) 
        and b      
        cp a,b      
        jr nz, col_jugador_enemigo

        es_ia::

        ld b, #_e_type_ia_salto
        ld a, e_comportamiento_ia(iy)
        and b      
        cp a,b      
        jr nz, me_curo

        puedo_saltar::

        ld e_tipo(iy), #_e_type_dead
        ld a, #1
        ld (final_nivel), a
        ret


        me_curo::
        ld b, #_e_type_ia_vida
        ld a, e_comportamiento_ia(iy)
        and b      
        cp a,b      
        jr nz, col_jugador_enemigo

        ld e_tipo(iy), #_e_type_dead
        ld a, #5
        ld e_vida(ix), a
        ret



        col_jugador_enemigo:

        ld a,e_cont_no_hit(ix)
        or a 
        ret nz

        ld e_cont_no_hit(ix), #t_atack_no_dmg_player
        dec e_vida(ix)
        ret nz
        ;ld a, #0x0f
        ;ld (0xC2D0), a


    _no_collision:
    



ret











;;;; COLISIONES CON ATAQUE
check_colisions_atack::

    ld b, #_e_type_input
    ld a, e_tipo(ix) 
    and b      
    cp a,b      
    ret nz

    ld a, e_at_dir(ix)
    or a 
    ret z



    call determinat_pos_atack

    ld a,e_atack_posy(ix)
	ld b,a
	ld a,e_atack_posx(ix)
	ld c,a

    next_col_at:

    ;;c xpos
    ;;b ypos
    ld      a, c
    add     a, e_atack_w(ix)
    sub     a, e_x(iy)
    jr     c, __no_collisionb

    ;; if ( C < D )
    ;; if ( e_x(iy) + e_w(iy) < e_x(ix) ) __no_collision
    ;; if ( e_x(iy) + e_w(iy) - e_x(ix) < 0 ) __no_collision

    ld      a, e_x(iy)
    add     e_w(iy)
    sub     a,c
    jr     c, __no_collisionb



    ;; EJE Y

    ld      a, b
    add     e_atack_h(ix)
    sub     e_y(iy)
    jr     c, __no_collisionb


    ld      a, e_y(iy)
    add     e_h(iy)
    sub     a, b
    jr     c, __no_collisionb

    __collision_atb:  ;; AQUI HE DE IMPLEMENTAR EL SISTEMA DE DAÑO AL ENEMIGO
        
        ld a,e_cont_no_hit(iy)
        or a 
        ret nz

        ld e_cont_no_hit(iy), #t_atack_no_dmg 
        dec e_vida(iy)
        jr z, muerteIA
        ret

        muerteIA::  ;; SETEAR MUERTE 
   
        ld e_tipo(iy), #_e_type_dead
        

        

    ret 

    __no_collisionb:
    


ret






