;;------------------------------------------------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-------------------------------------------------------------------------
 ;; () para contenido de direccion
  ;; # para numeros

.include "cpctelera.h.s"

;Funciones y variables globales
;.globl man_entity_set4destruction
.globl man_entity_forall_matching
;.globl man_entity_destroy
;.globl cpct_scanKeyboard_f_asm
;.globl cpct_scanKeyboard_asm
;.globl cpct_isKeyPressed_asm
.globl matching_type

;.globl jugadorEstado
;.globl bloquearMovimiento
.globl liberarMovimiento
.globl bloquearMovimiento

.globl esperarAnim



;Primero si es un personaje controlable, comprueba las teclas y lo le cambia la velociad
;Despues a todas las entidades movibles les aplica la velociad y las mueve
sys_physics_one_entity::
   ; ∑
    inc hl ;x
    ld b, 1(ix) ;le pones la x a b
    ld a, 5(ix)
    add a, b ;vx
    ld 1(ix), a

    ld b, 2(ix) ;le pones la y a b
    ld a, 6(ix) ;vy
    add a, b ;sumar a y la vy
    ld 2(ix), a ;poner la y obtenida

    ;apply gravity (vy += 1) COMENTAR PARA QUITAR GRAVEDAD
    ;inc 6(ix) ;vy

    ;;COMENTAR PARA QUITAR SALTO RARO
    ; check boundary
    ; if y < 184 ret (256-184)
    ; sub #112
    ; ret c
    ; ; if y > 184
    ; ld 6(ix), #-14
    ; ld 2(ix), #112 ;vy

    ; Si la velocidad es 0 en x e y, el jugador puede volver a moverse
    ld a, 5(ix)
    ld c, 6(ix)
    or c
    ret nz

    call liberarMovimiento


    ld a, (#esperarAnim)
    cp #0
    ret z
    call bloquearMovimiento

ret


;Guarda la funcion sys_physics_one_entity en hl y entidad_movible en a
;A todas las entidades movibles les aplica la funcion
sys_physics_update::
    ld ix, #sys_physics_one_entity
    ld a, #2
    ld (#matching_type), a
    call man_entity_forall_matching
ret