2dkg/2dkg_zad5/2dgk_zad5/KDrawable.cpp
2022-01-20 08:52:14 +01:00

27 lines
1.2 KiB
C++

#include "KDrawable.h"
#include "KCamera.h"
namespace KapitanGame
{
std::atomic<int> KDrawable::IdCounter{ 0 };
KDrawable::KDrawable(const KVector2D& position, const KTexture& texture, SDL_Rect* tileClip, const SDL_RendererFlip flip) :
Id(++IdCounter), Position(position), Texture(texture), TileClip(tileClip), Flip(flip)
{
}
void KDrawable::Render(SDL_Renderer* renderer, const KCamera& camera, const float parallaxFactor) const
{
if (TileClip != nullptr)
Texture.RenderEx(renderer, Position.X - Constants::TILE_WIDTH / 2.f - camera.GetViewport().x * parallaxFactor, Position.Y - Constants::TILE_HEIGHT / 2.f - camera.GetViewport().y, 0, TileClip, camera.GetScale(), Flip); // NOLINT(clang-diagnostic-implicit-int-float-conversion, bugprone-narrowing-conversions, cppcoreguidelines-narrowing-conversions)
else
Texture.Render(renderer, Position.X - Texture.GetWidth() / 2.f - camera.GetViewport().x * parallaxFactor, Position.Y - Texture.GetHeight() / 2.f - camera.GetViewport().y, nullptr, camera.GetScale()); // NOLINT(clang-diagnostic-implicit-int-float-conversion, bugprone-narrowing-conversions, cppcoreguidelines-narrowing-conversions)
}
KVector2D KDrawable::GetPosition() const
{
return Position;
}
}