Musallam Bseiso / Engine

Engine.cpp

Committer:
musallambseiso
Date:
2017-03-21
Revision:
4:e84724dcad49
Child:
5:88886c1bd2c1

File content as of revision 4:e84724dcad49:

#include "Engine.h"

Engine::Engine()
{
}

Engine::~Engine()
{
}

void Engine::init(int friendly_width,int friendly_height,int ship_size,int speed)
{
    _friendly_width = friendly_width;
    _friendly_height = friendly_height;
    _ship_size = ship_size;
    _speed = speed;
    _friendlyx = GAP;

    _friendly.init(_friendlyx,_friendly_height,_friendly_width);
    _ship1.init(_ship_size,_speed);
    _ship2.init(_ship_size,_speed);
    _ship3.init(_ship_size,_speed);
    _ship4.init(_ship_size,_speed);
    _ship5.init(_ship_size,_speed);
}

void Engine::read_input(Gamepad &pad)
{
    _d = pad.get_direction();
    _mag = pad.get_mag();
}

void Engine::draw(N5110 &lcd)
{
    lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
    _friendly.draw(lcd);
}

void Engine::ship1_gen(N5110 &lcd)
{
    _ship1.draw(lcd);
}

void Engine::ship2_gen(N5110 &lcd)
{
    _ship2.draw(lcd);
}

void Engine::ship3_gen(N5110 &lcd)
{
    _ship3.draw(lcd);
}

void Engine::ship4_gen(N5110 &lcd)
{
    _ship4.draw(lcd);
}

void Engine::ship5_gen(N5110 &lcd)
{
    _ship5.draw(lcd);
}

void Engine::update(Gamepad &pad)
{
    check_pass(pad);
    check_death(pad);

    _friendly.update(_d,_mag);
    _ship1.update();
    _ship2.update();
    _ship3.update();
    _ship4.update();
    _ship5.update();
    
}

void Engine::check_pass(Gamepad &pad)
{
    Vector2D ship1_pos = _ship1.get_pos();
    
    if (ship1_pos.x + _ship_size < 0) {
        _ship1.init(_ship_size,_speed);
    }
    
    Vector2D ship2_pos = _ship2.get_pos();
    
    if (ship2_pos.x + _ship_size < 0) {
        _ship2.init(_ship_size,_speed);
    }
    
    Vector2D ship3_pos = _ship3.get_pos();
    
    if (ship3_pos.x + _ship_size < 0) {
        _ship3.init(_ship_size,_speed);
    }
    
    Vector2D ship4_pos = _ship4.get_pos();
    
    if (ship4_pos.x + _ship_size < 0) {
        _ship4.init(_ship_size,_speed);
    }
    
    Vector2D ship5_pos = _ship5.get_pos();
    
    if (ship5_pos.x + _ship_size < 0) {
        _ship5.init(_ship_size,_speed);
    }
}

void Engine::check_death(Gamepad &pad)
{
    Vector2D friendly_pos = _friendly.get_pos();
    Vector2D ship1_pos = _ship1.get_pos();

    // overlap check
    if ((ship1_pos.y == friendly_pos.y) &&
        (ship1_pos.x == friendly_pos.x) ||
        (ship2_pos.y == friendly_pos.y) &&
        (ship2_pos.x == friendly_pos.x) ||
        (ship3_pos.y == friendly_pos.y) &&
        (ship3_pos.x == friendly_pos.x) ||
        (ship4_pos.y == friendly_pos.y) &&
        (ship4_pos.x == friendly_pos.x) ||
        (ship5_pos.y == friendly_pos.y) &&
        (ship5_pos.x == friendly_pos.x)) {
            
        pad.tone(1000.0,0.1);
    }
    
}