/*
* Object.cpp
*
* Created on: 12-Oct-2009
* Author: matthew
*/
#include "Object.h"
#include "mylib.h"
Object::Object()
{
gravity = 0;
x=0;
y=0;
speed_x=0;
speed_y=0;
dynamic=false;
}
Object::Object(BITMAP *image)
{
x=0;
y=0;
speed_x=0;
speed_y=0;
dynamic=false;
h=image->h;
w=image->w;
gravity = 0;
curr = 0;
sprite.push_back(image);
}
Object::~Object()
{
}
int Object::getX()
{
return x;
}
int Object::getY()
{
return y;
}
void Object::setX(int _x)
{
x=_x;
}
void Object::setY(int _y)
{
y=_y;
}
int Object::getH()
{
return h;
}
int Object::getW()
{
return w;
}
void Object::setH(int _h)
{
h=_h;
}
void Object::setW(int _w)
{
w=_w;
}
int Object::getSpeedX()
{
return speed_x;
}
int Object::getSpeedY()
{
return speed_y;
}
void Object::setSpeedX(int _sx)
{
speed_x=_sx;
}
void Object::setSpeedY(int _sy)
{
speed_y=_sy;
}
void Object::move()
{
speed_y+=gravity;
int y_new = y + (int)speed_y;
int x_new = x+(int)speed_x;
if(y_new <0)
{
//If it goes beyond the top border, pull it back
y_new=0;
speed_y=0;
}
else if(y_new >600-h)
{
//If it goes beyond the bottom border, pull it back
y_new=600-h;
speed_y=0;
}
//Set new y
y = y_new;
if(x_new < 0)
{
//If it goes beyond the left border, pull it back
x_new=0;
speed_x*=-1;
}
else if(x_new >800-w)
{
//If it goes beyond the right border, pull it back
x_new=800-w;
speed_x*=-1;
}
//Set new x
x=x_new;
}
bool Object::getDynamic()
{
return dynamic;
}
void Object::setDynamic(bool value)
{
dynamic = value;
}
void Object::setSpriteN(unsigned int value)
{
curr= value;
}
int Object::getSpriteN()
{
return curr;
}
void Object::scroll(int speed)
{
x-=speed;
}
int Object::getGravity()
{
return gravity;
}
void Object::setGravity(int value)
{
gravity=value;
}
bool Object::onScreen()
{
if((x>800)|(x+w<0)|(y>600)|(y+h<0))
return false;
else return true;
}
void Object::loadSprite(BITMAP *image)
{
sprite.push_back(image);
}
BITMAP *Object::getSprite()
{
return sprite[curr];
}