tex
This commit is contained in:
@@ -48,6 +48,7 @@ namespace Game::Object {
|
||||
std::string mName;
|
||||
std::shared_ptr<Game::Renderer::Texture> mTex;
|
||||
Transform mTransform;
|
||||
bool mIsFlipped = false; // Whether the texture should be rendered flipped horizontally or not
|
||||
bool mIsActive;
|
||||
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)
|
||||
|
||||
BIN
resources/l3ladja.png
Normal file
BIN
resources/l3ladja.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
@@ -15,6 +15,9 @@ namespace Game::AGame {
|
||||
int 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.y -= mTex->getHeight() * mTransform.adjustedScaleY() / 2.f;
|
||||
|
||||
@@ -30,10 +33,10 @@ namespace Game::AGame {
|
||||
//Object::Camera::getInstance().move(1.f, 0.f);
|
||||
|
||||
// Simple movement
|
||||
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_A)) mTransform.x -= mSpeed * deltaTime;
|
||||
if (Input::isKeyPressed(SDL_SCANCODE_D)) mTransform.x += 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_A)) { mTransform.x -= mSpeed * deltaTime; mIsFlipped = false; }
|
||||
if (Input::isKeyPressed(SDL_SCANCODE_D)) { mTransform.x += mSpeed * deltaTime; mIsFlipped = true; }
|
||||
mSpeed = Input::isKeyPressed(SDL_SCANCODE_LSHIFT) ? 400.f : 200.f;
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ int main() {
|
||||
|
||||
//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::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));
|
||||
|
||||
window.run();
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace Game::Object {
|
||||
&dst,
|
||||
mTransform.rotation,
|
||||
¢er,
|
||||
SDL_FLIP_NONE
|
||||
mIsFlipped ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE
|
||||
);
|
||||
} else {
|
||||
// Tiled rendering - render the texture repeatedly to fill the area defined by the entity's transform
|
||||
@@ -89,7 +89,7 @@ namespace Game::Object {
|
||||
&dst,
|
||||
mTransform.rotation,
|
||||
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
|
||||
}
|
||||
|
||||
@@ -20,6 +20,11 @@ namespace Game::Renderer {
|
||||
|
||||
mTex = SDL_CreateTextureFromSurface(renderer, 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) {
|
||||
|
||||
Reference in New Issue
Block a user