Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Entity/Player/Player.cpp

Committer:
el17sm
Date:
2019-04-24
Revision:
13:d04a6caba40d
Parent:
12:a1c1991835ca
Child:
14:3361879490b2

File content as of revision 13:d04a6caba40d:

#include "Player.h"
#include "math.h"

// Constructor
Player::Player(float pos_x, float pos_y){
    moving = false;
    face = 0;
    hp = 1;
    hitbox.width = 6;
    hitbox.height = 5;
    position.x = pos_x;
    position.y = pos_y;
    sprite_size.width = 6;
    sprite_size.height = 12;
    sprite_size.offset_x = 0;
    sprite_size.offset_y = 7;
    frame.count = 0;
    frame.number = 0;
    frame.max = 4;
    for (int i = 0; i < bullets_max; i++){valid_bullets[i] = false;}
}

// Accessors
int get_attack(){return 1;};

// Functions
void Player::move(float mapped_x, float mapped_y){
    if(!matrix_collision_test(position.x + player_speed*mapped_x, position.y, 0)){
        position.x += player_speed*mapped_x;
    }
    if(!matrix_collision_test(position.x, position.y - player_speed*mapped_y, 0)){
        position.y -= player_speed*mapped_y;
    }
    moving = false;
    if (abs(mapped_x) + abs(mapped_y) > 0.1f){
        moving = true;
        if (mapped_y < 0 && abs(mapped_y) > abs(mapped_x)){
            face = 2;
        }
        else if (mapped_y > 0 && abs(mapped_y) > abs(mapped_x)){
            face = 0;
        }
        else if (mapped_x > 0 && abs(mapped_x) > abs(mapped_y)){
            face = 1;
        }
        else if (mapped_x < 0 && abs(mapped_x) > abs(mapped_y)){
            face = 3;
        }
        
        if (frame.number < frame.max){
            frame.count++;
        }
        else {
            frame.count = 0;
        }
    }
    else{
        frame.count = 0;
    }
    frame.number = (frame.count/4) % frame.max;
}

int * Player::get_frame(){
    return (int *) sprite_player[face][frame.number];
}

void Player::buttons(bool button_A, bool button_B, bool button_Y, bool button_X){
    if (button_Y){
        face = 0;
    }
    else if (button_B){
        face = 1;
    }
    else if (button_A){
        face = 2;
    }
    else if (button_X){
        face = 3;
    }
    for (int i = 0; i < bullets_max; i++){
        if (!valid_bullets[i]){
            bullets_array[i] = new Bullets(position.x, position.y, face);
            valid_bullets[i] = true;
            break;
        }
    }
}