Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Entity/Player/Bullets/Bullets.cpp

Committer:
el17sm
Date:
2019-05-09
Revision:
53:93338b52489d
Parent:
51:4d0cd75e7ed3
Child:
57:1c12361b6e3d

File content as of revision 53:93338b52489d:

#include "Bullets.h"

// Constructor
Bullets::Bullets(float pos_x, float pos_y, int dir)
{
    face = dir;
    hp = 1;
    
    hitbox.width = 3;
    hitbox.height = 3;
    
    position.x = pos_x;
    position.y = pos_y;
    
    sprite_size.width = 3;
    sprite_size.height = 3;
    sprite_size.offset_x = -1;
    sprite_size.offset_y = -4;
}

// Functions
void Bullets::move(float speed, float unused, char * unused2, bool * unused3)   //  Moves regarding face(constant after constructed)
{
    if (face == 0) {
        position.y -= speed;
    } else if (face == 1) {
        position.x += speed;
    } else if (face == 2) {
        position.y += speed;
    } else if (face == 3) {
        position.x -= speed;
    }
}

void Bullets::draw(N5110 &lcd)
{
    lcd.drawSpriteTransparent(position.x+sprite_size.offset_x,
                              position.y+sprite_size.offset_y,
                              sprite_size.height,
                              sprite_size.width,
                              (char *) bullets_sprite);
}

void Bullets::take_damage(int damage)   // Taking damage, currently not used(has to be inherited, as well as useful for possible future use)
{
    hp -= damage;
}

bool Bullets::out_of_bounds_check(char * map, bool * doorways)  // Returns true when bullets exit map or collide with walls
{
    if (entity_to_map_collision_test(position.x, position.y, map, doorways)) {
        return true;
    }
    if ((0 > position.x) || (position.x > 84) || (0 > position.y) || (position.y > 48)) {
        return true;
    }
    return false;
}