ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18jkeo

Dependencies:   mbed

Alien/Alien.cpp

Committer:
josh_ohara
Date:
2020-05-01
Revision:
19:43de9fd725ba
Parent:
18:828e9f6ddfdb
Child:
20:0b6f1cfc5be6

File content as of revision 19:43de9fd725ba:

#include "Alien.h"


void Alien::init(int x, int y, int size) {
    Alive = true;
    Shoot = false;
    StartX = x;
    StartY = y;
    X = x;
    Y = y;
    Size = size;
    Speed = 1;
    alien_bullet_vector.init();
    
}

void Alien::render(N5110 &lcd) {
    if(Alive == true){
        lcd.drawRect(X, Y, Size, Size, FILL_BLACK);
        alien_bullet_vector.render(lcd);
    } 
}

Vector2D Alien::get_position() {
    Vector2D p = {X,Y};
    return p;
}

void Alien::update(int step_x, int remainder_x, Gamepad &pad, int counter) {
    X+=Speed;
    int c = counter;
    int _step_x = step_x;
    int _remainder_x = remainder_x;
    if (X < 1 + _remainder_x*_step_x) {
        X = 1 + _remainder_x*_step_x;
        Speed = -Speed;
        Y = Y + 2;
    }
    if (X > WIDTH - Size - 1 - (4-_remainder_x)*_step_x) {
        X = WIDTH - Size - 1 - (4-_remainder_x)*_step_x;
        Speed = -Speed;
        Y = Y + 2;
    }
    flag_set(c);
    alien_bullet_vector.update(X,Y,Shoot);
    Shoot = false;
}

void Alien::set_life(bool x){
    Alive = x;
}

bool Alien::get_life(){
    bool x = Alive;
    return x;
}

void Alien::flag_set(int counter){
    int c = counter;
    if(c%7 == 1){
        int r = rand()%10;
        if(r < 3) {
        Shoot = true;
        }
    }
}