;;
;; GENERATOR MANAGER
;;

.include "cpctelera.h.s"
;--------------------------------------------------------
; code
;--------------------------------------------------------
.area _CODE


;;; ENTIDADES TIPO 


;;             xtipo,           x, y,   ancho, alto, vx, vy, ataque, at_dir
_caballero: .db  #_e_type_default ,50 , 150 , 6 , 16,  1, 1,0,0
         .dw  #_spr_knight_00, #_knight_anim_der  ;; ptr_sprite / ptr_next_anim
         .db 10, 1,1 ;; Regulador anim /que se cambia la anim cada x, direccion (1der,2abajo,3izq,4arriba), dir_ant
         .db 40,60;; POS BORRADO
         .db 5, 0,0 ; vida, cont, cont
         .dw #_spr_espada_00, #_espadazo_der  ;; sprite espada / animacion espada
         .db 0, 8, 8, 0,0, 0,0;; regulador animacion espadazo // ancho ataque / alto ataque
         .db 0xff

;; ENTIDADES IA 
            ;xtipo,           x, y,   ancho, alto, vx, vy, objetivoX, objetivoY                                  
_archer: .db #_e_type_default ,50 , 5 , 5 , 15,  0, 0,7,0
         .dw #_spr_arquero_00, #_ia_anim_der  ;; ptr_sprite / ptr_next_anim
         .db 10,1,1 ;; Regulador anim /que se cambia la anim cada x , direccion (1der,2abajo,3izq,4arriba), dir_ant
         .db 40,60;; POS BORRADO
         .db 3, 1,1  ; vida, cont, cont
         .db 0,0,0,0 ;e_vision_x,e_vision_y,e_vision_w,e_vision_h
         .db 0 , 0 , 0, 0 , 0, 0,0;; 
         .db 0xff

_mele: .db #_e_type_default ,50 , 5 , 4 , 15,  0, 0,7,0
         .dw #_spr_enemigo_00, #_enemy_anim_der  ;; ptr_sprite / ptr_next_anim
         .db 10,1,1 ;; Regulador anim /que se cambia la anim cada x , direccion (1der,2abajo,3izq,4arriba), dir_ant
         .db 40,60;; POS BORRADO
         .db 3, 1,1  ; vida, cont, cont
         .db 0,0,0,0 ;e_vision_x,e_vision_y,e_vision_w,e_vision_h
         .db 0 , 0 , 0, 0 , 0, 0,0;; 
         .db 0xff

_patroll: .db #_e_type_default ,50 , 5 , 4 , 15,  0, 0,9,0
         .dw #_spr_patroll_00, #_patroll_anim_der  ;; ptr_sprite / ptr_next_anim
         .db 10,1,1 ;; Regulador anim /que se cambia la anim cada x , direccion (1der,2abajo,3izq,4arriba), dir_ant
         .db 40,60;; POS BORRADO
         .db 3, 1,1  ; vida, cont, cont
         .db 0,0,0,1 ; eje
         .db 0 , 0 , 0, 0 , 0, 0,0;; 
         .db 0xff


_arrow:: .db #_e_type_default ,25 , 50 , 2 , 8,  0, 1,0,0
         .dw #_spr_flecha, #0x0000  ;; ptr_sprite / ptr_next_anim
         .db 0,0,0 ;; Regulador anim /que se cambia la anim cada x , direccion (1der,2abajo,3izq,4arriba), dir_ant
         .db 0,0 ;; POS BORRADO
         .db 0, 0,0
         .db 0,0,0, 0
         .db 0 , 0 , 0, 0 , 0, 0,0;; 
         .db 0xff

_healt:: .db #_e_type_default ,25 , 50 , 8 , 16,  0, 0,0,0
         .dw #_spr_corazon, #0x0000  ;; ptr_sprite / ptr_next_anim
         .db 0,0,0 ;; Regulador anim /que se cambia la anim cada x , direccion (1der,2abajo,3izq,4arriba), dir_ant
         .db 40,60 ;; POS BORRADO
         .db 0, 0,0
         .db 0,0,0, 0
         .db 0 , 0 , 0, 0 , 0, 0,0;; 
         .db 0xff
;




;;;; GENERAR ENTIDADES 
generator_player::

    ld a, #_e_type_movable
    ld b ,#_e_type_render
    or b                        
    ld b, #_e_type_input
    or b      
    ld b ,#_e_type_animable
    or b                  
    push af
    ld hl, #_caballero
    call entity_man_create
    pop af

    ld 0(ix),a
    

ret 

generator_follow::

    ld a, #_e_type_movable
    ld b, #_e_type_render
    or b 
    ld b, #_e_type_ia
    or b 
    ld b ,#_e_type_animable
    or b 
    
    push af
    ld hl, #_mele
    call entity_man_create
    pop af
    ld 0(ix), a
    ld e_comportamiento_ia(ix), #_e_type_ia_follow
    ld e_max_vel(ix), #3
ret


generator_patroll::

    ld a, #_e_type_movable
    ld b, #_e_type_render
    or b 
    ld b, #_e_type_ia
    or b 
    ld b ,#_e_type_animable
    or b 
    push af
    ld hl, #_patroll
    call entity_man_create
    pop af
    ld 0(ix), a
    ld e_comportamiento_ia(ix), #_e_type_ia_patroll
    ld e_max_vel(ix), #2
ret


generator_ia_archer::

    ld a, #_e_type_movable
    ld b, #_e_type_render
    or b 
    ld b, #_e_type_ia
    or b 
    ld b ,#_e_type_animable
    or b 
    
    push af
    ld hl, #_archer
    call entity_man_create
    pop af
    ld 0(ix), a
    ld e_comportamiento_ia(ix), #_e_type_ia_archer
    ld e_max_vel(ix), #2

ret






generator_arrow::

    ld a ,#_e_type_movable
    ld b ,#_e_type_render
    or b                        
    ld b ,#_e_type_projectile
    or b     
                          
    push af
    ld hl, #_arrow
    call entity_man_create
    pop af

    ld 0(ix),a
    ld a, (temp)
    inc a 
    inc a 
    ld e_x(ix),a 
    ld e_posicion_borrado(ix),a
    ld a, (temp2)
    ld e_y(ix),a 
    ld e_posicion_borrado+1(ix),a

    ld      a, (_num_proyectiles)
    inc     a
    ld      (_num_proyectiles), a


ret 




generator_salto::

    ld a, #_e_type_ia
    
    push af
    ld hl, #_archer
    call entity_man_create
    pop af
    ld 0(ix), a
    ld e_comportamiento_ia(ix), #_e_type_ia_salto
    ld e_y(ix), #45
    ld e_x(ix), #35
    ld e_w(ix), #10
    ld e_h(ix), #2
    ld e_vida(ix), #0

ret





generator_vida::


   
    ld a, #_e_type_ia
    ld b, #_e_type_render
    or b 

    
    push af
    ld hl, #_healt
    call entity_man_create
    pop af
    ld 0(ix), a
    ld e_comportamiento_ia(ix), #_e_type_ia_vida
    ld e_vida(ix), #0

ret