mirror of
https://github.com/Nimac0/SDL_Minigame
synced 2026-01-12 15:53:42 +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
136196f6a5
commit
b5cae00dae
@ -36,14 +36,12 @@ public:
|
|||||||
|
|
||||||
void addMusic(std::string id, const char* path);
|
void addMusic(std::string id, const char* path);
|
||||||
|
|
||||||
SDL_Texture* getTexture(std::string id);
|
|
||||||
Mix_Chunk* getSound(std::string id);
|
Mix_Chunk* getSound(std::string id);
|
||||||
Mix_Music* getMusic(std::string id);
|
Mix_Music* getMusic(std::string id);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Manager* man;
|
Manager* man;
|
||||||
std::map<std::string, SDL_Texture*> textures;
|
|
||||||
std::map<std::string, Mix_Chunk*> soundEffects;
|
std::map<std::string, Mix_Chunk*> soundEffects;
|
||||||
std::map<std::string, Mix_Music*> music;
|
std::map<std::string, Mix_Music*> music;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -51,6 +51,7 @@ public:
|
|||||||
~SpriteComponent();
|
~SpriteComponent();
|
||||||
|
|
||||||
void setTexture(Textures texture);
|
void setTexture(Textures texture);
|
||||||
|
void setMapTileTexture(const char* path);
|
||||||
|
|
||||||
void init() override;
|
void init() override;
|
||||||
void update() override;
|
void update() override;
|
||||||
|
|||||||
@ -16,6 +16,9 @@ class TextureManager
|
|||||||
for (auto& it : this->texture_cache) {
|
for (auto& it : this->texture_cache) {
|
||||||
SDL_DestroyTexture(it.second);
|
SDL_DestroyTexture(it.second);
|
||||||
}
|
}
|
||||||
|
for (auto& it : this->mapTile_texture_cache) {
|
||||||
|
SDL_DestroyTexture(it.second);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void addSingleTexture(Textures texture, const char* filePath);
|
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));
|
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) {
|
Mix_Chunk* AssetManager::getSound(std::string id) {
|
||||||
return soundEffects.at(id);
|
return soundEffects.at(id);
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
#include <SDL_timer.h>
|
#include <SDL_timer.h>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <magic_enum/magic_enum.hpp>
|
||||||
|
|
||||||
#include "AnimationHandler.h"
|
#include "AnimationHandler.h"
|
||||||
#include "Direction.h"
|
#include "Direction.h"
|
||||||
@ -18,11 +19,13 @@
|
|||||||
SpriteComponent::SpriteComponent(Textures texture, int zIndex) : RenderObject(zIndex, VEGO_Game().renderManager), textureXOffset(0), textureYOffset(0)
|
SpriteComponent::SpriteComponent(Textures texture, int zIndex) : RenderObject(zIndex, VEGO_Game().renderManager), textureXOffset(0), textureYOffset(0)
|
||||||
{
|
{
|
||||||
this->textureEnum = texture;
|
this->textureEnum = texture;
|
||||||
|
this->path = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
SpriteComponent::SpriteComponent(Textures texture, int xOffset, int yOffset, int zIndex) : RenderObject(zIndex, VEGO_Game().renderManager), textureXOffset(xOffset), textureYOffset(yOffset)
|
SpriteComponent::SpriteComponent(Textures texture, int xOffset, int yOffset, int zIndex) : RenderObject(zIndex, VEGO_Game().renderManager), textureXOffset(xOffset), textureYOffset(yOffset)
|
||||||
{
|
{
|
||||||
this->textureEnum = texture;
|
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) {
|
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);
|
playAnimation(defaultAnimation);
|
||||||
|
|
||||||
this->textureEnum = texture;
|
this->textureEnum = texture;
|
||||||
|
|
||||||
|
this->path = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
SpriteComponent::~SpriteComponent() {}
|
SpriteComponent::~SpriteComponent() {}
|
||||||
@ -55,7 +60,12 @@ void SpriteComponent::setTexture(Textures texture)
|
|||||||
|
|
||||||
void SpriteComponent::init()
|
void SpriteComponent::init()
|
||||||
{
|
{
|
||||||
setTexture(this->textureEnum);
|
if (this->path == "") {
|
||||||
|
setTexture(this->textureEnum);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setMapTileTexture(this->path);
|
||||||
|
}
|
||||||
|
|
||||||
this->transform = &entity->getComponent<TransformComponent>();
|
this->transform = &entity->getComponent<TransformComponent>();
|
||||||
|
|
||||||
@ -98,3 +108,7 @@ void SpriteComponent::setDirection(Direction direction)
|
|||||||
{
|
{
|
||||||
this->flipped = direction == Direction::RIGHT;
|
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
|
//returns tile if it exists already
|
||||||
if(mapTile_texture_cache.contains(std::string(path)))
|
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);
|
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);
|
this->mapTile_texture_cache.emplace(std::string(path), newTexture);
|
||||||
|
|
||||||
return newTexture;
|
return newTexture;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user