ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Miner/Miner.cpp

Committer:
el17arm
Date:
2019-04-09
Revision:
28:a38070a1cdcf
Parent:
Minerengine/Miner.cpp@ 27:e73dd64ef334

File content as of revision 28:a38070a1cdcf:

#include "Miner.h"

Miner::Miner()
{
}

Miner::~Miner()
{
}

Vector2D Miner::get_pos()
{
    Vector2D p = {_x,_y};
    printf("miner x = %f \n", p.x);
    return p;
}

void Miner::miner_draw(N5110 &lcd)
{
    if (_direction == 1) {
        lcd.drawSprite(_x,_y,8,3,(int *)miner_right);
    }
    if (_direction == 0) {
        lcd.drawSprite(_x,_y,8,3,(int *)miner_left);
    }

}
void Miner::miner_land(N5110 &lcd)
{
    _jump = (lcd.getPixel(_x+4,_y+8) || lcd.getPixel(_x-1,_y+8));

    _gravity = !lcd.getPixel(_x,_y+8) && !lcd.getPixel(_x+2, _y+8);
}

void Miner::miner_move(Direction d, N5110 &lcd)
{
    if (d==E || d==NE) {
        _x++;
        _direction = 1; //chooses right facing sprite
    }
    if (d==W || d==NW) {
        _x --;
        _direction = 0; //chooses left facing sprite
    }
    if(_x > 81){
        _x=WIDTH-3;
        }
    if(_x < 0){
        _x=0;
        }
}

void Miner::miner_jump(N5110 &lcd, Gamepad &pad)
{
    if(pad.check_event(Gamepad::A_PRESSED) && _jump==1) {
    _y-=8;
    pad.tone(750,0.1);
    }
}

void Miner::miner_gravity(N5110 &lcd)
{
    if(_gravity == 1) {
        _y = _y + 1;
    }
}

void Miner::enemy_init(int x, int y, volatile int d)
{
    _xe = x;
    _ye = y;
    _distance = d;
}

void Miner::enemy_move(N5110 &lcd)
{   
    lcd.drawSprite(_x,_y,5,3, (int *) enemy);
    if (_turn_flag == 0) {
        _x = _x + 0.5;
        _counter++;
    }
    if(_counter == _distance) {
        _turn_flag = 1;
    }
    if (_turn_flag == 1) {
        _x = _x - 0.5;
        _counter--;
    }
    if (_counter == 0) {
        _turn_flag = 0;
    }
}

bool Miner::enemy_collision()
{
    Vector2D p = get_pos();
    
    if (p.x < _x+2 && p.x+2 > _x && p.y < _y+4 && p.y+8 > _y) {
        return true;
    } else {
        return false;
    }
}