module game.player;

import game.data;
import game.animation.animation;
import game.animation.manager;

class Player: Entity {
    private int playerSpeed;
    private AnimationManager animation;

    this(in Texture2D texture, in Rectangle frame, in Vector2 position, in int playerSpeed) {
        super(texture, frame, position);
        this.playerSpeed = playerSpeed;

        animation = AnimationManager();
        animation.addAnimation(KeyboardKey.KEY_NULL, Animation(texture, 8, 3, 0.1f, 1));
        animation.addAnimation(KeyboardKey.KEY_W, Animation(texture, 8, 3, 0.1f, 3));
        animation.addAnimation(KeyboardKey.KEY_S, Animation(texture, 8, 3, 0.1f, 2));
        animation.addAnimation(KeyboardKey.KEY_A, Animation(texture, 8, 3, 0.1f, 2));
        animation.addAnimation(KeyboardKey.KEY_D, Animation(texture, 8, 3, 0.1f, 3));
    }
    
    override void update() {}

    override void processEvents() {
        if(IsKeyDown(KeyboardKey.KEY_W)) {
            move(0, -playerSpeed);
            animation.update(KeyboardKey.KEY_W);
        } else if(IsKeyDown(KeyboardKey.KEY_S)) {
            move(0, playerSpeed);
            animation.update(KeyboardKey.KEY_S);
        } else if(IsKeyDown(KeyboardKey.KEY_A)) {
            move(-playerSpeed, 0);
            animation.update(KeyboardKey.KEY_A);
        } else if(IsKeyDown(KeyboardKey.KEY_D)) {
            move(playerSpeed, 0);
            animation.update(KeyboardKey.KEY_D);
        } else {
            animation.update(KeyboardKey.KEY_NULL);
        }
    }

    override void draw() {
        animation.draw(position);
    }
}