tex
This commit is contained in:
@@ -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
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;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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();
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace Game::Object {
|
|||||||
&dst,
|
&dst,
|
||||||
mTransform.rotation,
|
mTransform.rotation,
|
||||||
¢er,
|
¢er,
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user