mirror of
https://github.com/Nimac0/SDL_Minigame
synced 2026-01-12 13:43:41 +00:00
Extra map for MapTiles generated by TMX file now works like intended.
removed textures map from AssetManager as it is no longer used. Updated SpriteComponent to now check if it is a normal Texture or a MapTileTexture. Added if condition in TextureManager::LoadMapTileTexture to check if the texture was able to be loaded by SDL
This commit is contained in:
parent
27a80d9766
commit
cbd1993c20
@ -36,14 +36,12 @@ public:
|
||||
|
||||
void addMusic(std::string id, const char* path);
|
||||
|
||||
SDL_Texture* getTexture(std::string id);
|
||||
Mix_Chunk* getSound(std::string id);
|
||||
Mix_Music* getMusic(std::string id);
|
||||
|
||||
private:
|
||||
|
||||
Manager* man;
|
||||
std::map<std::string, SDL_Texture*> textures;
|
||||
std::map<std::string, Mix_Chunk*> soundEffects;
|
||||
std::map<std::string, Mix_Music*> music;
|
||||
};
|
||||
|
||||
@ -51,6 +51,7 @@ public:
|
||||
~SpriteComponent();
|
||||
|
||||
void setTexture(Textures texture);
|
||||
void setMapTileTexture(const char* path);
|
||||
|
||||
void init() override;
|
||||
void update() override;
|
||||
|
||||
@ -16,6 +16,9 @@ class TextureManager
|
||||
for (auto& it : this->texture_cache) {
|
||||
SDL_DestroyTexture(it.second);
|
||||
}
|
||||
for (auto& it : this->mapTile_texture_cache) {
|
||||
SDL_DestroyTexture(it.second);
|
||||
}
|
||||
}
|
||||
|
||||
void addSingleTexture(Textures texture, const char* filePath);
|
||||
|
||||
@ -31,9 +31,6 @@ void AssetManager::addMusic(std::string id, const char* path)
|
||||
music.emplace(id, this->man->getGame()->soundManager->loadMusic(path));
|
||||
}
|
||||
|
||||
SDL_Texture* AssetManager::getTexture(std::string id) {
|
||||
return textures.at(id);
|
||||
}
|
||||
|
||||
Mix_Chunk* AssetManager::getSound(std::string id) {
|
||||
return soundEffects.at(id);
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
#include <SDL_timer.h>
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
#include <magic_enum/magic_enum.hpp>
|
||||
|
||||
#include "AnimationHandler.h"
|
||||
#include "Direction.h"
|
||||
@ -18,11 +19,13 @@
|
||||
SpriteComponent::SpriteComponent(Textures texture, int zIndex) : RenderObject(zIndex, VEGO_Game().renderManager), textureXOffset(0), textureYOffset(0)
|
||||
{
|
||||
this->textureEnum = texture;
|
||||
this->path = "";
|
||||
}
|
||||
|
||||
SpriteComponent::SpriteComponent(Textures texture, int xOffset, int yOffset, int zIndex) : RenderObject(zIndex, VEGO_Game().renderManager), textureXOffset(xOffset), textureYOffset(yOffset)
|
||||
{
|
||||
this->textureEnum = texture;
|
||||
this->path = "";
|
||||
}
|
||||
|
||||
SpriteComponent::SpriteComponent(const char* path, int xOffset, int yOffset, int zIndex) : RenderObject(zIndex, VEGO_Game().renderManager), textureXOffset(xOffset), textureYOffset(yOffset) {
|
||||
@ -44,6 +47,8 @@ SpriteComponent::SpriteComponent(
|
||||
playAnimation(defaultAnimation);
|
||||
|
||||
this->textureEnum = texture;
|
||||
|
||||
this->path = "";
|
||||
}
|
||||
|
||||
SpriteComponent::~SpriteComponent() {}
|
||||
@ -55,7 +60,12 @@ void SpriteComponent::setTexture(Textures texture)
|
||||
|
||||
void SpriteComponent::init()
|
||||
{
|
||||
if (this->path == "") {
|
||||
setTexture(this->textureEnum);
|
||||
}
|
||||
else {
|
||||
setMapTileTexture(this->path);
|
||||
}
|
||||
|
||||
this->transform = &entity->getComponent<TransformComponent>();
|
||||
|
||||
@ -98,3 +108,7 @@ void SpriteComponent::setDirection(Direction direction)
|
||||
{
|
||||
this->flipped = direction == Direction::RIGHT;
|
||||
}
|
||||
|
||||
void SpriteComponent::setMapTileTexture(const char *path) {
|
||||
this->texture = VEGO_Game().textureManager->loadMapTileTexture(path);
|
||||
}
|
||||
|
||||
@ -46,10 +46,13 @@ SDL_Texture* TextureManager::loadMapTileTexture(const char *path) {
|
||||
|
||||
//returns tile if it exists already
|
||||
if(mapTile_texture_cache.contains(std::string(path)))
|
||||
return mapTile_texture_cache.at(std::string(path));
|
||||
return mapTile_texture_cache.find(std::string(path))->second;
|
||||
|
||||
auto newTexture = IMG_LoadTexture(VEGO_Game().renderer, path);
|
||||
|
||||
if (newTexture == nullptr)
|
||||
throw std::runtime_error(std::string("Couldn't load texture '") + path + "'");
|
||||
|
||||
this->mapTile_texture_cache.emplace(std::string(path), newTexture);
|
||||
|
||||
return newTexture;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user