108 lines
2.9 KiB
C++
108 lines
2.9 KiB
C++
#include "sdlpp_renderobject.hpp"
|
|
|
|
namespace SDLPP {
|
|
bool RenderObject::colidesWith( const RenderObject &other ) const {
|
|
if ( !hasCollisions() || !other.hasCollisions() || getHidden() ||
|
|
other.getHidden() ) {
|
|
return false;
|
|
}
|
|
for ( const auto &x : collisions ) {
|
|
for ( const auto &y : other.getCollisions() ) {
|
|
if ( x->colidesWith( *y ) )
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
bool RenderObject::hasCollisions() const {
|
|
return !collisions.empty();
|
|
}
|
|
const std::vector< std::shared_ptr< CollisionPolygon > > &
|
|
RenderObject::getCollisions() const {
|
|
return collisions;
|
|
}
|
|
void RenderObject::setTexture( const std::shared_ptr< Texture > &t ) {
|
|
texture = t;
|
|
}
|
|
void RenderObject::setTexture( const std::string &img_path ) {
|
|
texture = std::make_shared< Texture >( renderer, img_path );
|
|
}
|
|
void RenderObject::setTexture( Font &font, const std::string &text,
|
|
const std::string &color,
|
|
const std::string &outline_color,
|
|
int outline_size ) {
|
|
texture = std::make_shared< Texture >( renderer, font, text, color,
|
|
outline_color, outline_size );
|
|
}
|
|
void RenderObject::unsetTexture() {
|
|
texture.reset();
|
|
}
|
|
void RenderObject::unsetColor() {
|
|
polygon.reset();
|
|
}
|
|
// per second, relative to window width
|
|
void RenderObject::setMovementSpeed( double speed ) {
|
|
movementSpeed = speed;
|
|
}
|
|
void RenderObject::addMovement( int x, int y ) {
|
|
movementDirection.first += x;
|
|
movementDirection.second += y;
|
|
}
|
|
void RenderObject::resetMovementX() {
|
|
movementDirection.first = 0;
|
|
}
|
|
void RenderObject::resetMovementY() {
|
|
movementDirection.second = 0;
|
|
}
|
|
void RenderObject::clearColided() {
|
|
colidedWith.clear();
|
|
}
|
|
void RenderObject::addColided( std::shared_ptr< RenderObject > &obj ) {
|
|
colidedWith.push_back( obj );
|
|
}
|
|
std::vector< std::shared_ptr< RenderObject > > &RenderObject::getColidedWith() {
|
|
return colidedWith;
|
|
}
|
|
void RenderObject::setId( uint64_t input_id ) {
|
|
id = input_id;
|
|
}
|
|
uint64_t RenderObject::getId() {
|
|
return id;
|
|
}
|
|
void RenderObject::setHidden( bool hid ) {
|
|
hidden = hid;
|
|
}
|
|
bool RenderObject::getHidden() const {
|
|
return hidden;
|
|
}
|
|
void RenderObject::destroy() {
|
|
setHidden( true );
|
|
kill = true;
|
|
}
|
|
bool RenderObject::getKilled() {
|
|
return kill;
|
|
}
|
|
void RenderObject::setColiderColor( const std::string &color ) {
|
|
colider_color = getColorsHEX( color );
|
|
}
|
|
void RenderObject::setPermanent( bool perm ) {
|
|
permanent = perm;
|
|
setStatic( perm );
|
|
}
|
|
bool RenderObject::getPermanent() const {
|
|
return permanent;
|
|
}
|
|
bool RenderObject::isStatic() {
|
|
return is_static;
|
|
}
|
|
void RenderObject::setStatic( bool stat ) {
|
|
is_static = stat;
|
|
}
|
|
std::shared_ptr< Renderer > RenderObject::getRenderer() const {
|
|
return renderer;
|
|
}
|
|
void RenderObject::setSceneID( int id ) {
|
|
scene_id = id;
|
|
}
|
|
} // namespace SDLPP
|