Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Spaceship/Spaceship.cpp

Committer:
evanso
Date:
2020-04-22
Revision:
10:aca793aa7abc
Parent:
9:1ddb8dc93e48
Child:
11:ab578a151f67

File content as of revision 10:aca793aa7abc:

#include "Spaceship.h"
 
const int k_spaceship_sprite_E[4][13] = {
    { 1,1,1,1,1,1,0,0,0,0,0,0,0 },
    { 0,1,1,1,1,1,1,1,1,0,0,0,0 },
    { 1,1,1,1,1,1,1,1,1,1,1,1,1 },
    { 0,0,1,1,1,1,1,0,0,0,0,0,0 },
};

const int k_spaceship_sprite_W[4][13] = {
    { 0,0,0,0,0,0,0,1,1,1,1,1,1 },
    { 0,0,0,0,1,1,1,1,1,1,1,1,0 },
    { 1,1,1,1,1,1,1,1,1,1,1,1,1 },
    { 0,0,0,0,0,0,1,1,1,1,1,0,0 },
};
 
Spaceship::Spaceship() {
    
}
 
Spaceship::~Spaceship() {
    
}
 
void Spaceship::init() {
    position_x_spaceship_ = 36;
    position_y_spaceship_ = 22;
    spaceship_sprite_direction_ = true;
}
 
void Spaceship::draw(N5110 &lcd) {
    off_screen_x_y_checker();
    // Draws spaceships at defined x and y positions with different sprite direction depending on joystick postion 
    if (spaceship_sprite_direction_){
        lcd.drawSprite(position_x_spaceship_, position_y_spaceship_, 4, 13, (int*)k_spaceship_sprite_E);
    }else if (!spaceship_sprite_direction_){
    lcd.drawSprite(position_x_spaceship_, position_y_spaceship_, 4, 13, (int*)k_spaceship_sprite_W);
    }
    // printf to find position of spaceship for making the off screen checkers
    //usb.printf("Spaceship Y postion = %d\n",position_y_spaceship_);
}

void Spaceship::clear_spaceship(N5110 &lcd){
    // Clears spaceship from LCD by drawing a white sprite
    lcd.drawRect(position_x_spaceship_, position_y_spaceship_, 13, 4, FILL_WHITE);
}

void Spaceship::off_screen_x_y_checker(){
    // checks y postion and alters y position 
    if (position_y_spaceship_ < 1) {
        position_y_spaceship_ = 1;
    }
    if (position_y_spaceship_ > 44) {
        position_y_spaceship_ = 44;
    }  
    
    if (position_x_spaceship_ > 52) {
        position_x_spaceship_ = 52;
    }
    if (position_x_spaceship_ < 22) {
        position_x_spaceship_ = 22;
    }
}   
 
void Spaceship::movement(Gamepad &pad){
    Direction joystick_direction = pad.get_direction();
    switch (joystick_direction) {
    case N: set_spaceship_peram(-1, 0, false , false); break;
    case NE: set_spaceship_peram(1, -1, true, true); break;
    case E: set_spaceship_peram(1, 0, true, true); break;
    case SE: set_spaceship_peram(1, 1, true, true); break;
    case S: set_spaceship_peram(0, 1, false, false); break;
    case SW: set_spaceship_peram(-1, 1, true, false); break;
    case W: set_spaceship_peram(-1, 0, true, false); break;
    case NW: set_spaceship_peram(-1, -1, true, false); break;
    }
}

int Spaceship::get_position_x_spaceship(){
    return position_x_spaceship_;
}

void Spaceship::set_spaceship_peram(int x_change,int y_change, bool sprite_change, bool sprite_param){
     position_x_spaceship_ += x_change;
        position_y_spaceship_ += y_change;
    if (sprite_change) {
        spaceship_sprite_direction_ = sprite_param;
    }
}