Lab 6 for ECE 2036,a lame version of Galiga that needs to have the bullet fixed, but focuses on the concept of polymorphism

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

graphics.cpp

Committer:
nasiromar
Date:
2022-04-27
Revision:
0:660af2d0e42d

File content as of revision 0:660af2d0e42d:

#include "graphics.h"
#include "global.h"

#define STOP_D 0
#define GO_RIGHT 1
#define GO_LEFT 2

#define GEAR_1 .3

//The characters for LAME
#include "Sprites/bullet.cpp"
#include "Sprites/BobUp.cpp"
#include "Sprites/ship.cpp"
#include "Sprites/BobDown.cpp"
#include "Sprites/Alice.cpp"
#include "Sprites/rocket.cpp"




//constructors
AliceAlien::AliceAlien()
{
    setInput(NO_HIT);
    setState(NO_DAMAGE);

}

BobAlien::BobAlien()
{
    setInput(NO_HIT);
    setState(NO_DAMAGE);
     setDirPos(true);
    

}

Ship::Ship()
{
    setInput(NO_HIT);
    setState(NO_DAMAGE);
    setGear(STOP);

}

Rocket::Rocket()
{
    setInput(NO_HIT);
    //loadedRocket = false;
}

Bullet::Bullet()
{
    setInput(NO_HIT);
    //loadedBullet = false;
}

//Draw Functions
void BobAlien::draw(int u,int v)
{
    //Use get state here to make bob draw the differnt types
    uLCD.BLIT(u,v,11,11,BobUp);
}

void AliceAlien::draw(int u,int v)
{
    //Use get state here to make bob draw the differnt types
    uLCD.BLIT(u,v,11,11,Alice);
}

void Ship::draw(int u,int v)
{
    //Use get state here to make bob draw the differnt types
    uLCD.BLIT(u,v,11,11,ship);
}

void Bullet::draw(int u,int v)
{
    //Use get state here to make bob draw the differnt types
    uLCD.BLIT(u,v,11,11,bullet);
}

void Rocket::draw(int u,int v)
{
    //Use get state here to make bob draw the differnt types
    uLCD.BLIT(u,v,11,11,rocket);
}

//Screen Object Base functions

void ScreenObjects::setState(StateType currState)
{
    state = currState;
}

void ScreenObjects::setInput(InputType Input)
{
    input = Input;
}

int ScreenObjects::getHealth()
{
    return health;
}

void ScreenObjects::setHealth(int HP)
{
    health = HP;
}

int * ScreenObjects::getPosition()
{
    int * positionPointer = NULL;
    positionPointer = Position;
    return positionPointer;
}

int * ScreenObjects::getPrevPosition()
{
    return previousPosition;
}

void ScreenObjects::setPosition(int posx,int posy)
{
    Position[0] = posx;
    Position[1] = posy;
}

void ScreenObjects::setPrevPosition(int * newPos)
{
    previousPosition = newPos;
}

void ScreenObjects::erase(int u, int v)
{
    uLCD.filled_rectangle(u, v, u+10, v+10, BLACK);
}


int ScreenObjects::getDirection()
{

    return direction;

}

void ScreenObjects::setDirection(int num)
{

    direction = num;

}

bool ScreenObjects::getDirPos()
{

    return dirPos;

}

void ScreenObjects::setDirPos(bool val)
{

    dirPos = val;

}

//Bullet Class Functions


bool Bullet::getLoaded()
{
    load = loadedBullet;
    return load;
}

void Bullet::update()
{
    setPrevPosition(getPosition());

    if(getLoaded()) {
        setPosition(getShipPosition()[0],getShipPosition()[1]-1);
    }

}



//Rocket Class Functions

//

//Ship Class Functions

void Ship::setGear(GearShift Gears)
{
    gear = Gears;
}

GearShift Ship::getGear()
{
    return gear;
}


int Ship::move(double tiltDirection)
{
    if (tiltDirection>GEAR_1) {
        setGear(GEAR1);
        return GO_RIGHT;
    }
    if (tiltDirection<-1*GEAR_1) {
        setGear(GEAR1);
        return GO_LEFT;
    }

    else {
        setGear(STOP);
        return STOP_D;
    }
}


int * Ship::getShipPosition()
{
    return shipPos;
}

void Ship::setShipPos(int * val)
{
    shipPos = val;
}


void Ship::update()
{
    setPrevPosition(getPosition());

    //Stop
    if(getGear() == STOP || getPosition()[0] <=11 || getPosition()[0] > 117) {
        setPosition((getPosition()[0]),getPosition()[1]);
        setShipPos(getPosition());
    }

    //Gear1
    if(getGear() == GEAR1 && getPosition()[0] <= 117) {
        erase(getPosition()[0],getPosition()[1]);//move
        if(getDirection() == GO_LEFT) {
            setPosition((getPosition()[0]-2),getPosition()[1]);
           setShipPos(getPosition());
        }
        if(getDirection() == GO_RIGHT) {
            setPosition((getPosition()[0]+2),getPosition()[1]);
            setShipPos(getPosition());
        }
    }

}

//Bob ALien Class Functions
void BobAlien::update()
{
    setPrevPosition(getPosition());
    erase(getPosition()[0],getPosition()[1]);//move
    
    if(getPosition()[0] < 117 && getDirPos() )
        {
         setDirection(GO_RIGHT);   
        }
    
    if(getPosition()[0] > 117)
    {
        setDirPos(false);
        setDirection(STOP_D);
    }
    
    if(getDirection() == STOP_D)
    {
     setPosition((getPosition()[0]),getPosition()[1]+5); 
     setDirection(GO_LEFT);  
    }
    
    if(getPosition()[0] <= 10 && getDirPos() == false)
    {
        setDirPos(true);
    }
    
   
    
    if(getDirection() == GO_LEFT && getDirPos() == false) {
        setPosition((getPosition()[0]-1),getPosition()[1]);    
    }
    if(getDirection() == GO_RIGHT) {
        setPosition((getPosition()[0]+1),getPosition()[1]);
    }
    
}


//Alice Alien Class Functions
void AliceAlien::update()
{
    setPrevPosition(getPosition());
    erase(getPosition()[0],getPosition()[1]);//move
    
    if(getPosition()[0] < 117 && getDirPos() )
        {
         setDirection(GO_RIGHT);   
        }
    
    if(getPosition()[0] > 117)
    {
        setDirPos(false);
        setDirection(STOP_D);
    }
    
    if(getDirection() == STOP_D)
    {
     setPosition((getPosition()[0]),getPosition()[1]+5); 
     setDirection(GO_LEFT);  
    }
    
    if(getPosition()[0] <= 10 && getDirPos() == false)
    {
        setDirPos(true);
    }
    
   
    
    if(getDirection() == GO_LEFT && getDirPos() == false) {
        setPosition((getPosition()[0]-1),getPosition()[1]);    
    }
    if(getDirection() == GO_RIGHT) {
        setPosition((getPosition()[0]+1),getPosition()[1]);
    }
}

//Rocket Class Functions
void Rocket::update()
{
    setPrevPosition(getPosition());

}