This commit is contained in:
2026-03-22 20:23:27 +01:00
parent fa4a2b9924
commit 0c0e7c41af
6 changed files with 16 additions and 7 deletions

View File

@@ -48,6 +48,7 @@ namespace Game::Object {
std::string mName; std::string mName;
std::shared_ptr<Game::Renderer::Texture> mTex; std::shared_ptr<Game::Renderer::Texture> mTex;
Transform mTransform; Transform mTransform;
bool mIsFlipped = false; // Whether the texture should be rendered flipped horizontally or not
bool mIsActive; bool mIsActive;
int mZIndex = 0; // For rendering order; higher zIndex renders on top of lower zIndex int mZIndex = 0; // For rendering order; higher zIndex renders on top of lower zIndex
float mTiledScale = 1.f; // Only used if the texture is tiled, to determine how much to scale the texture when rendering (since the entire texture is rendered as a single tile, this is necessary to be able to have different sized tiles) float mTiledScale = 1.f; // Only used if the texture is tiled, to determine how much to scale the texture when rendering (since the entire texture is rendered as a single tile, this is necessary to be able to have different sized tiles)

BIN
resources/l3ladja.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -15,6 +15,9 @@ namespace Game::AGame {
int w, h; int w, h;
SDL_GetWindowSizeInPixels(Window::Window::getSDLWindowBackend(), &w, &h); SDL_GetWindowSizeInPixels(Window::Window::getSDLWindowBackend(), &w, &h);
mTransform.scaleX = 8.f;
mTransform.scaleY = 8.f;
mTransform.x -= mTex->getWidth() * mTransform.adjustedScaleX() / 2.f; mTransform.x -= mTex->getWidth() * mTransform.adjustedScaleX() / 2.f;
mTransform.y -= mTex->getHeight() * mTransform.adjustedScaleY() / 2.f; mTransform.y -= mTex->getHeight() * mTransform.adjustedScaleY() / 2.f;
@@ -30,10 +33,10 @@ namespace Game::AGame {
//Object::Camera::getInstance().move(1.f, 0.f); //Object::Camera::getInstance().move(1.f, 0.f);
// Simple movement // Simple movement
if (Input::isKeyPressed(SDL_SCANCODE_W)) mTransform.y -= mSpeed * deltaTime; if (Input::isKeyPressed(SDL_SCANCODE_W)) { mTransform.y -= mSpeed * deltaTime; }
if (Input::isKeyPressed(SDL_SCANCODE_S)) mTransform.y += mSpeed * deltaTime; if (Input::isKeyPressed(SDL_SCANCODE_S)) { mTransform.y += mSpeed * deltaTime; }
if (Input::isKeyPressed(SDL_SCANCODE_A)) mTransform.x -= mSpeed * deltaTime; if (Input::isKeyPressed(SDL_SCANCODE_A)) { mTransform.x -= mSpeed * deltaTime; mIsFlipped = false; }
if (Input::isKeyPressed(SDL_SCANCODE_D)) mTransform.x += mSpeed * deltaTime; if (Input::isKeyPressed(SDL_SCANCODE_D)) { mTransform.x += mSpeed * deltaTime; mIsFlipped = true; }
mSpeed = Input::isKeyPressed(SDL_SCANCODE_LSHIFT) ? 400.f : 200.f; mSpeed = Input::isKeyPressed(SDL_SCANCODE_LSHIFT) ? 400.f : 200.f;
} }
} }

View File

@@ -22,7 +22,7 @@ int main() {
//Object::Transform t1{100.f, 100.f, 0.f, 1.f, 1.f}; //Object::Transform t1{100.f, 100.f, 0.f, 1.f, 1.f};
State::GameState::getInstance().addEntity(std::make_unique<AGame::Background>("BG", std::make_shared<Game::Renderer::Texture>("../resources/bgtest.png", window.getRenderer()->getSDLRenderer()), Object::DEFAULT_TRANSFORM)); State::GameState::getInstance().addEntity(std::make_unique<AGame::Background>("BG", std::make_shared<Game::Renderer::Texture>("../resources/bgtest.png", window.getRenderer()->getSDLRenderer()), Object::DEFAULT_TRANSFORM));
State::GameState::getInstance().addEntity(std::make_unique<AGame::Player>("Player", std::make_shared<Game::Renderer::Texture>("../resources/missing_texture.png", window.getRenderer()->getSDLRenderer()), Object::DEFAULT_TRANSFORM)); State::GameState::getInstance().addEntity(std::make_unique<AGame::Player>("Player", std::make_shared<Game::Renderer::Texture>("../resources/l3ladja.png", window.getRenderer()->getSDLRenderer()), Object::DEFAULT_TRANSFORM));
//State::GameState::getInstance().addEntity(std::make_unique<AGame::Player>("Player2", std::make_shared<Game::Renderer::Font>("../resources/roboto.ttf", window.getRenderer()->getSDLRenderer(), 128, "Roboto"), t1)); //State::GameState::getInstance().addEntity(std::make_unique<AGame::Player>("Player2", std::make_shared<Game::Renderer::Font>("../resources/roboto.ttf", window.getRenderer()->getSDLRenderer(), 128, "Roboto"), t1));
window.run(); window.run();

View File

@@ -64,7 +64,7 @@ namespace Game::Object {
&dst, &dst,
mTransform.rotation, mTransform.rotation,
&center, &center,
SDL_FLIP_NONE mIsFlipped ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE
); );
} else { } else {
// Tiled rendering - render the texture repeatedly to fill the area defined by the entity's transform // Tiled rendering - render the texture repeatedly to fill the area defined by the entity's transform
@@ -89,7 +89,7 @@ namespace Game::Object {
&dst, &dst,
mTransform.rotation, mTransform.rotation,
nullptr, // No rotation center since each tile is rendered independently nullptr, // No rotation center since each tile is rendered independently
SDL_FLIP_NONE mIsFlipped ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE
); );
dst.y += dst.h; // Move down for the next tile in the column dst.y += dst.h; // Move down for the next tile in the column
} }

View File

@@ -20,6 +20,11 @@ namespace Game::Renderer {
mTex = SDL_CreateTextureFromSurface(renderer, surf); mTex = SDL_CreateTextureFromSurface(renderer, surf);
SDL_DestroySurface(surf); SDL_DestroySurface(surf);
// Apply a more pixelated scaling mode, since this is a pixel art game and the default linear filtering causes unwanted blurring when textures are scaled up
if (mTex && !SDL_SetTextureScaleMode(mTex, SDL_SCALEMODE_NEAREST)) {
WARN("Failed to set texture scale mode to NEAREST for '" << mId << "': " << SDL_GetError());
}
} }
Texture::Texture(const Texture& other) { Texture::Texture(const Texture& other) {