;;------------------------------------------------LICENSE NOTICE------------------------------------------------------------------------------
;;  This file is part of Amstrad CPC videogame "Redsea"
;;  Copyright (C) 2021 Crab Party / Elena López (AneleSplats in itch.io) / Iván Tortosa (Pluvs in itch.io, @IvanTortosaBer1 on Twitter) / Antonio Gosálvez (BalgroHub in itch.io)
;;  Copyright (C) 2015 ronaldo / Fremos / Cheesetea / ByteRealms (@FranGallegoBR)
;;
;;  This program is free software: you can redistribute it and/or modify
;;  it under the terms of the GNU Lesser General Public License as published by
;;  the Free Software Foundation, either version 3 of the License, or
;;  (at your option) any later version.
;;
;;  This program is distributed in the hope that it will be useful,
;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;  GNU Lesser General Public License for more details.
;;
;;  You should have received a copy of the GNU Lesser General Public License
;;  along with this program.  If not, see <http://www.gnu.org/licenses/>.
;;------------------------------------------------LICENSE NOTICE-------------------------------------------------------------------------
.globl sys_ai_behaviour_left_right
.globl sys_ai_behaviour_left_right
.globl sys_ai_behaviour_up_down
.globl sys_ai_behaviour_spawner
.globl sys_ai_behaviour_enemy

;.globl _spr_sprite1
;.globl _spr_jamoncitos_0
;.globl _jamoncitos_walking
.globl _spr_mainC
.globl _spr_enemy1_00
.globl _enemy1_iddle
.globl _mainC_iddle
.globl _spr_goal_0
.globl _img_final_0
.globl _goal_achieved
.globl _llave
.globl _puerta1

;Variables

Player_Y = 50
;PlayerShot_Y = Player_Y - 8
; Sprite::
;     .db 0xFF, 0xFF, 0xFF, 0xFF
;     .db 0xFF, 0xFF, 0xFF, 0xFF
;     .db 0xFF, 0xFF, 0xFF, 0xFF
;     .db 0xFF, 0xFF, 0xFF, 0xFF
;     .db 0xFF, 0xFF, 0xFF, 0xFF
;     .db 0xFF, 0xFF, 0xFF, 0xFF
;     .db 0xFF, 0xFF, 0xFF, 0xFF
;     .db 0xFF, 0xFF, 0xFF, 0xFF

;Variables por defecto para cada tipo de entidad

Personaje:: ;; entity constante para copias
.db #1 | #2 | #4 | #0x20 | #0x40 ;#16 |     ;; tipo de componentes
.db #4     ;; x
.db #Player_Y     ;; y  
.db #7      ;; ancho
.db #16      ;; alto 
.db #0    ;; vx
.db #0     ;; vy
.dw _spr_mainC;Sprite;_spr_jamoncitos_0 ;; tiene que ser un puntero a Sprite
.dw 0x0000
.dw 0x0000 ;prevPtr
.dw _mainC_iddle ;; animaciones
.db #0x01   ; tipo de entidad
.db #0x02 | #0x08 | #0x10 | #0x20 | #0x40 | #0x80 ;choca con
.db #4     ;; contador para animaciones

; Movible:: ;; entity constante para copias
; .db #1 | #2 | #8    ;; tipo de componentes
; .db #38     ;; x
; .db #96     ;; y  
; .db #4      ;; ancho
; .db #8      ;; alto 
; .db #-1     ;; vx
; .db #0     ;; vy
; .dw _spr_sprite1 ;; tiene que ser un puntero a Sprite
; .dw sys_ai_behaviour_enemy
; .dw 0x0000 ;prevPtr
; .dw 0x0000 ;; animaciones
; .db #0x02   ; tipo de entidad
; .db #0x01 ;choca con
; .db #10     ;; contador para animaciones

; Inmovil:: ;; entity constante para copias
; .db #1 | #16     ;; tipo de componentes
; .db #10     ;; x
; .db #24    ;; y  
; .db #7      ;; ancho
; .db #12      ;; alto 
; .db #0    ;; vx
; .db #0     ;; vy
; .dw _spr_enemy1_00 ;; tiene que ser un puntero a Sprite
; .dw 0x0000
; .dw 0x0000 ;prevPtr
; .dw _enemy1_iddle ;; animaciones
; .db #0x02   ; tipo de entidad
; .db #0x00 ;choca con
; .db #10     ;; contador para animaciones


; Spawner:: ;; entity constante para copias
; .db #2 | #8 | #1    ;; tipo de componentes
; .db #70     ;; x
; .db #60     ;; y  
; .db #4      ;; ancho
; .db #8      ;; alto 
; .db #-1     ;; vx
; .db #0     ;; vy
; .dw Sprite ;; tiene que ser un puntero a Sprite
; .dw sys_ai_behaviour_spawner
; .dw 0x0000 ;prevPtr
; .dw 0x0000 ;; animaciones
; .db #0x04   ; tipo de entidad
; .db #0 ;choca con
; .db #10     ;; contador para animaciones

Suelo:: ;; entity constante para copias
.db #1 | #16 | #0x20     ;; tipo de componentes
.db #10     ;; x
.db #110   ;; y  
.db #7      ;; ancho
.db #12      ;; alto
.db #0    ;; vx
.db #0     ;; vy
.dw _spr_enemy1_00 ;; tiene que ser un puntero a Sprite
.dw 0x0000
.dw 0x0000 ;prevPtr
.dw _enemy1_iddle ;; animaciones
.db #0x08   ; tipo de entidad
.db #0x00 ;choca con
.db #5     ;; contador para animaciones

Suelo2:: ;; entity constante para copias
.db #1 | #16 | #0x20     ;; tipo de componentes
.db #20     ;; x
.db #100   ;; y  
.db #7     ;; ancho
.db #12     ;; alto
.db #1    ;; vx
.db #0     ;; vy
.dw _spr_enemy1_00 ;; tiene que ser un puntero a Sprite
.dw 0x0000
.dw 0x0000 ;prevPtr
.dw _enemy1_iddle ;; animaciones
.db #0x08  ; tipo de entidad
.db #0x00 ;choca con
.db #5     ;; contador para animaciones

Meta:: ;; entity constante para copias
.db #1 | #0x40 | #0x20     ;; tipo de componentes
.db #72     ;; x
.db #35  ;; y  
.db #8     ;; ancho
.db #16     ;; alto
.db #0    ;; vx
.db #0     ;; vy
.dw _spr_goal_0 ;; tiene que ser un puntero a Sprite
.dw 0x0000
.dw 0x0000 ;prevPtr
.dw 0x0000 ;; animaciones
.db #0x10  ; tipo de entidad
.db #0x00 ;choca con
.db #5     ;; contador para animaciones

Enemigo:: ;; entity constante para copias
.db #1 | #2 | #16 | #8 | #0x20     ;; tipo de componentes
.db #20     ;; x
.db #100   ;; y  
.db #7     ;; ancho
.db #12     ;; alto
.db #1    ;; vx
.db #0     ;; vy
.dw _spr_enemy1_00 ;; tiene que ser un puntero a Sprite
.dw sys_ai_behaviour_left_right
.dw 0x0000 ;prevPtr
.dw _enemy1_iddle ;; animaciones
.db #0x08  ; tipo de entidad
.db #0x00 ;choca con
.db #5     ;; contador para animaciones

Enemigo2:: ;; entity constante para copias
.db #1 | #2 | #16 | #8 | #0x20     ;; tipo de componentes
.db #8     ;; x
.db #70   ;; y  
.db #7     ;; ancho
.db #12     ;; alto
.db #0    ;; vx
.db #2     ;; vy
.dw _spr_enemy1_00 ;; tiene que ser un puntero a Sprite
.dw sys_ai_behaviour_up_down
.dw 0x0000 ;prevPtr
.dw _enemy1_iddle ;; animaciones
.db #0x08  ; tipo de entidad
.db #0x00 ;choca con
.db #5     ;; contador para animaciones

Arbol:: ;; entity constante para copias
.db #1 | #0x40 | #0x20     ;; tipo de componentes
.db #72     ;; x
.db #35  ;; y  
.db #12     ;; ancho
.db #40     ;; alto
.db #0    ;; vx
.db #0     ;; vy
.dw _img_final_0 ;; tiene que ser un puntero a Sprite
.dw 0x0000
.dw 0x0000 ;prevPtr
.dw 0x0000 ;; animaciones
.db #0x20  ; tipo de entidad
.db #0x00 ;choca con
.db #8     ;; contador para animaciones


Llave:: ;; entity constante para copias
.db #1 | #0x20     ;; tipo de componentes
.db #72     ;; x
.db #35  ;; y  
.db #4     ;; ancho
.db #8     ;; alto
.db #0    ;; vx
.db #0     ;; vy
.dw _llave ;; tiene que ser un puntero a Sprite
.dw 0x0000
.dw 0x0000 ;prevPtr
.dw 0x0000 ;; animaciones
.db #0x40  ; tipo de entidad
.db #0x00 ;choca con
.db #0     ;; contador para animaciones


Puerta:: ;; entity constante para copias
.db #1 | #0x20     ;; tipo de componentes
.db #72     ;; x
.db #35  ;; y  
.db #4     ;; ancho
.db #24     ;; alto
.db #0    ;; vx
.db #0     ;; vy
.dw _puerta1 ;; tiene que ser un puntero a Sprite
.dw 0x0000
.dw 0x0000 ;prevPtr
.dw 0x0000 ;; animaciones
.db #0x80  ; tipo de entidad
.db #0x00 ;choca con
.db #0     ;; contador para animaciones