0
0
mirror of https://github.com/Nimac0/SDL_Minigame synced 2026-01-12 15:53:42 +00:00

Compare commits

..

3 Commits

Author SHA1 Message Date
Freezarite
a583e2d2f1
Merge 7dbcfe876cdd9a084d55be0c687e0642a55a8839 into a8052b4bbbbaa72b5832bdd4e689bdeb14c41edf 2024-11-30 14:43:54 +00:00
freezarite
7dbcfe876c Added some doxygen documentation to TextureEnumBase.h and TextureManager.h 2024-11-30 15:43:15 +01:00
freezarite
cbd1993c20 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
2024-11-30 15:42:56 +01:00
5 changed files with 69 additions and 5 deletions

2
.gitignore vendored
View File

@ -6,8 +6,6 @@ Makefile
install_manifest.txt
.cache/
build/
cmake-build-debug/
.idea/
# Compiled files
*.suo

View File

@ -1,3 +1,18 @@
/*!
* \file Textures.h
* \brief Forward declaration of the \c Textures enum class.
*
* This file contains a forward declaration of the \c Textures enum class, which is used as a base
* class for texture identifiers in the engine. It allows developers to define their own set of texture
* types in their own implementation, providing flexibility in texture management within the engine.
*
* \details
* The \c Textures enum class is intended to be implemented by the developer within their own scope.
* This allows for customized texture entries to be defined based on the specific needs of the project.
* The base declaration ensures that the enum class can be referenced and used consistently throughout
* the engine while leaving the details of the texture identifiers up to the implementation.
*/
#pragma once
enum class Textures;

View File

@ -8,6 +8,22 @@
#include <vector>
#include "TextureEnumBase.h"
/*!
* \class TextureManager
* \brief A manager for loading, caching, and drawing textures.
*
* The `TextureManager` class is responsible for handling texture loading, caching,
* and rendering in the engine. It provides functions to add, load, and draw textures
* from files, as well as manage sprite sheets.
*
* It uses two caches: one for regular textures (`texture_cache`) and one for
* map tile textures (`mapTile_texture_cache`). This allows for efficient texture reuse
* and management across different parts of the game.
*
* \note Textures are identified by an enum class `Textures` which is user-defined.
* Developers are expected to define the texture types in their own implementation.
*/
class TextureManager
{
public:
@ -21,12 +37,50 @@ class TextureManager
}
}
/*!
* \brief Adds a single texture to the cache.
* \param texture The texture identifier.
* \param filePath The file path to the texture file.
*
* This function loads the texture from the specified file and stores it in
* the `texture_cache`. If loading the texture fails, an exception is thrown.
*/
void addSingleTexture(Textures texture, const char* filePath);
/*!
* \brief Adds multiple textures to the cache.
* \param textures A map of texture identifiers and corresponding file paths.
*
* This function iterates over the provided map of textures and loads each
* texture using `addSingleTexture`. It allows developers to add several
* textures at once.
*/
void addTextures(const std::map<Textures, const char*>& textures);
/*!
* \brief Loads a texture from the cache.
* \param texture The texture identifier.
* \return A pointer to the `SDL_Texture` if found, or `nullptr` if not found.
*
* This function looks up a texture in the `texture_cache` and returns the
* corresponding `SDL_Texture*`. If the texture is not found, it logs an error
* message and returns `nullptr`.
*/
SDL_Texture* loadTexture(Textures texture);
static std::vector<SDL_Rect> splitSpriteSheet(SDL_Texture* spriteSheet, int width, int height, int spritesOnSheet);
static void draw(SDL_Renderer* renderer, SDL_Texture* texture, SDL_Rect src, SDL_Rect dest, bool flipped = false);
/*!
* \brief Loads a map tile texture from the file system and caches it.
* \param path The file path to the texture.
* \return A pointer to the `SDL_Texture` representing the map tile.
*
* This function checks if the map tile texture is already cached. If not, it
* loads the texture from the file system and stores it in the cache.
*
* If loading fails, an exception is thrown with a descriptive error message.
* /todo should not be usable for the developer and only be accessed by the map class
*/
SDL_Texture* loadMapTileTexture(const char* path);
private:

View File

@ -98,8 +98,6 @@ void GameInternal::init(const char* title, int xpos, int ypos, int width, int he
// loading music
// assets->addMusic("background_music", "assets/sound/background_music.mp3");
this->gameInstance = GameFactory::instance().create(this);
this->gameInstance->init();
}

View File

@ -4,7 +4,6 @@
#include <stdexcept>
#include <string>
#include <VEGO.h>
#include <linux/soundcard.h>
#include "GameInternal.h"