t_anim=10
t_atack_anim=5




;;;;;; SPRITES DE ANIMACIONES


;;;;PLAYER
_knight_anim_der::
.dw _spr_knight_03
.dw _spr_knight_04
.dw _spr_knight_05
.dw 0x0000
.dw _knight_anim_der

_knight_anim_abajo:
.dw _spr_knight_00
.dw _spr_knight_01
.dw _spr_knight_02
.dw 0x0000
.dw _knight_anim_abajo

_knight_anim_izq:
.dw _spr_knight_09
.dw _spr_knight_10
.dw _spr_knight_11
.dw 0x0000
.dw _knight_anim_izq

_knight_anim_arriba:
.dw _spr_knight_06
.dw _spr_knight_07
.dw _spr_knight_08
.dw 0x0000
.dw _knight_anim_arriba


;;;;ARQUERO
_ia_anim_der::
.dw _spr_arquero_00
.dw _spr_arquero_01
.dw _spr_arquero_02
.dw 0x0000
.dw _ia_anim_der

_ia_anim_abajo:
.dw _spr_arquero_03
.dw _spr_arquero_04
.dw _spr_arquero_05
.dw 0x0000
.dw _ia_anim_abajo

_ia_anim_izq:
.dw _spr_arquero_09
.dw _spr_arquero_10
.dw _spr_arquero_11
.dw 0x0000
.dw _ia_anim_izq

_ia_anim_arriba:
.dw _spr_arquero_06
.dw _spr_arquero_07
.dw _spr_arquero_08
.dw 0x0000
.dw _ia_anim_arriba


;;;;ENEMIGO
_enemy_anim_der::
.dw _spr_enemigo_09
.dw _spr_enemigo_10
.dw _spr_enemigo_11
.dw 0x0000
.dw _enemy_anim_der

_enemy_anim_arriba::
.dw _spr_enemigo_06
.dw _spr_enemigo_07
.dw _spr_enemigo_08
.dw 0x0000
.dw _enemy_anim_abajo

_enemy_anim_izq::
.dw _spr_enemigo_03
.dw _spr_enemigo_04
.dw _spr_enemigo_05
.dw 0x0000
.dw _enemy_anim_izq

_enemy_anim_abajo::
.dw _spr_enemigo_00
.dw _spr_enemigo_01
.dw _spr_enemigo_02
.dw 0x0000
.dw _enemy_anim_arriba



;;;;PATROLL
_patroll_anim_der::
.dw _spr_patroll_09
.dw _spr_patroll_10
.dw _spr_patroll_11
.dw 0x0000
.dw _patroll_anim_der

_patroll_anim_arriba::
.dw _spr_patroll_06
.dw _spr_patroll_07
.dw _spr_patroll_08
.dw 0x0000
.dw _patroll_anim_abajo

_patroll_anim_izq::
.dw _spr_patroll_03
.dw _spr_patroll_04
.dw _spr_patroll_05
.dw 0x0000
.dw _patroll_anim_izq

_patroll_anim_abajo::
.dw _spr_patroll_00
.dw _spr_patroll_01
.dw _spr_patroll_02
.dw 0x0000
.dw _patroll_anim_arriba




_espadazo_der::
.dw _spr_espada_00
.dw _spr_espada_01
.dw 0x0000
.dw _espadazo_der

_espadazo_izq::
.dw _spr_espada_08
.dw _spr_espada_09
.dw 0x0000
.dw _espadazo_izq

_espadazo_arriba::
.dw _spr_espada_12
.dw _spr_espada_13
.dw 0x0000
.dw _espadazo_arriba

_espadazo_abajo::
.dw _spr_espada_04
.dw _spr_espada_05
.dw 0x0000
.dw _espadazo_abajo






;;; SISTEMA DE ANIMACION



sys_animation_init::
ret


sys_animation_update::

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


    dec e_cont_anim(ix)
    jr nz, fin_anim

    ld e_cont_anim(ix), #t_anim
    ld e, e_next_anim(ix)
    ld d, e_next_anim+1(ix)

    ex de, hl 

    continue_anim:

    ld c, (hl)
    inc hl
    ld b, (hl)
    inc hl

    ld a, c
    or b 
    jr z, resert_anim




    ld e_next_anim(ix), l
    ld e_next_anim+1(ix), h


    ld e_puntero(ix), c
    ld e_puntero+1(ix), b

    ex de,hl
    
    jp fin_anim
    




    resert_anim:
    ld a, (hl)
    inc hl
    ld h, (hl)
    ld l,a
    jr continue_anim

    fin_anim:

ret




sys_all_entityes_anim::
    ld hl, #sys_animation_update
    call man_entity_forall
    call anim_atack
ret






;; SELECTOR DE ANIMACION

nuevo_sprite_dir::


    
    ld b, #_e_type_input
    ld a, e_tipo(ix) 
    and b      
    cp a,b      
    jr z, player_new_sprite


    ld b, #_e_type_ia
    ld a, e_tipo(ix) 
    and b      
    cp a,b      
    jr nz, no_ia_spr
    
    ld b, #_e_type_ia_follow
    ld a, e_comportamiento_ia(ix) 
    and b      
    cp a,b      
    jr z, tipofollow
    


    ld b, #_e_type_ia_patroll
    ld a, e_comportamiento_ia(ix) 
    and b       
    jp nz, patroll_anim

    ld b, #_e_type_ia_archer
    ld a, e_comportamiento_ia(ix) 
    and b      
    cp a,b 
    jr z, archer_anim


    no_ia_spr:


    
    ;; NO ES DE NINGUN TIPO ANIMABLE
    ret 


    player_new_sprite:

    ld a, e_dir(ix)
	dec a
	jr z, der_player_anim
    dec a
	jr z, abajo_player_anim
    dec a
	jr z, izq_player_anim
    dec a
	jr z, arriba_player_anim
    ret



    der_player_anim:
    ld hl, #_knight_anim_der
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret


    abajo_player_anim:
    ld hl, #_knight_anim_abajo
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret

    izq_player_anim:
    ld hl, #_knight_anim_izq
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h   
    ret

    arriba_player_anim:
    ld hl, #_knight_anim_arriba
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret



    tipofollow:

    ld a, e_dir(ix)
	dec a
	jr z, der_enemy_anim
    dec a
	jr z, abajo_enemy_anim
    dec a
	jr z, izq_enemy_anim
    dec a
	jr z, arriba_enemy_anim
    ret



    der_enemy_anim:
    ld hl, #_enemy_anim_der
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret


    abajo_enemy_anim:
    ld hl, #_enemy_anim_abajo
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret

    izq_enemy_anim:
    ld hl, #_enemy_anim_izq
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h   
    ret

    arriba_enemy_anim:
    ld hl, #_enemy_anim_arriba
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret


    archer_anim:

    ld a, e_dir(ix)
	dec a
	jr z, der_archer_anim
    dec a
	jr z, abajo_archer_anim
    dec a
	jr z, izq_archer_anim
    dec a
	jr z, arriba_archer_anim
    ret



    der_archer_anim:
    ld hl, #_ia_anim_der
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret


    abajo_archer_anim:
    ld hl, #_ia_anim_abajo
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret

    izq_archer_anim:
    ld hl, #_ia_anim_izq
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h   
    ret

    arriba_archer_anim:
    ld hl, #_ia_anim_arriba
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret


    patroll_anim:

    ld a, e_dir(ix)
	dec a
	jr z, der_patroll_anim
    dec a
	jr z, abajo_patroll_anim
    dec a
	jr z, izq_patroll_anim
    dec a
	jr z, arriba_patroll_anim
    ret



    der_patroll_anim:
    ld hl, #_patroll_anim_der
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret


    abajo_patroll_anim:
    ld hl, #_patroll_anim_abajo
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
    ret

    izq_patroll_anim:
    ld hl, #_patroll_anim_izq
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h   
    ret

    arriba_patroll_anim:
    ld hl, #_patroll_anim_arriba
    ld e_next_anim(ix),l
    ld e_next_anim+1(ix),h
ret











;; ANIMACION DE ATAQUE


anim_atack:
    call entity_man_getEntityArray_IX  ;; SIEMPRE ES EL PLAYER EL PRIMERO

    ld a, e_atack_cont(ix)
    or a
    jr nz, continuar_animacion_ataque

    ;; SI NO HAY ANIMACION EMEPEZADA SE MIRA SI SE HA PULSADO PARA EMPEZAR ANIMACION
    ;; SOLO EMPEZAR ANIMACION CUANDO SE ESTE EJECUTANDO EL ESPADAZO
    ld a, e_at(ix)
    dec a
    ret nz
    inc e_atack_cont(ix) ;; PARA EMPEZAR EL PRIMER FRAME DE LA ANIMACION


    
    call cambio_sprite_at
    ;ld hl, #_espadazo_der
    ;ld e_atack_anim(ix),l
    ;ld e_atack_anim+1(ix),h

    continuar_animacion_ataque:
    dec e_atack_cont(ix)
    ret nz



    ld e_atack_cont(ix), #t_atack_anim
    ld e, e_atack_anim(ix)
    ld d, e_atack_anim+1(ix)

    ex de, hl 

    

    ld c, (hl)
    inc hl
    ld b, (hl)
    inc hl

    ld a, c 
    or a,b 
    jr nz, s_atack
    ;; RESET ZONE
    call determinat_pos_atack
	dec e
	jr z, fin_at_anim
    ;call render_clean_atack
    
    fin_at_anim:
    call render_clean_atack_end
    call render_clean_atack
    ld e_at(ix), #0
    ld e_atack_cont(ix), #0
    ld e_at_dir(ix), #0
    ret

    s_atack:

    ld e_atack_anim(ix), l
    ld e_atack_anim+1(ix), h


    ld e_atack_spr(ix), c
    ld e_atack_spr+1(ix), b

    ex de,hl
    


ret


cambio_sprite_at::




    ld a, e_at_dir(ix)
	dec a
	jr z, der_espada_anim
    dec a
	jr z, abajo_espada_anim
    dec a
	jr z, izq_espada_anim
    dec a
	jr z, arriba_espada_anim
    ret



    der_espada_anim:
    ld hl, #_espadazo_der
     ld e_atack_anim(ix),l
    ld e_atack_anim+1(ix),h
    ret


    abajo_espada_anim:
    ld hl, #_espadazo_abajo
     ld e_atack_anim(ix),l
    ld e_atack_anim+1(ix),h
    ret

    izq_espada_anim:
    ld hl, #_espadazo_izq
     ld e_atack_anim(ix),l
    ld e_atack_anim+1(ix),h
    ret

    arriba_espada_anim:
    ld hl, #_espadazo_arriba
     ld e_atack_anim(ix),l
    ld e_atack_anim+1(ix),h
    ret
ret

