<commit_before>#ifndef SPRITEMANAGER_H_
#define SPRITEMANAGER_H_

#include <vector>

#include "entity/Entity.h"
#include "entity/components/LookupComponentManager.h"

/**
 * Data structure for a sprite component.
 */
typedef struct
{
	char c; ///< The character to render for this Entity
	int attributes; ///< Any attributes (e.g. bold) to apply
	int color; ///< The color pair to use for this Entity
} SpriteComponent;

/**
 * SpriteManager is the ComponentManager for Sprite components.
 *
 * Sprites are representations of the entity on the screen; in the case of
 * Ro'glick, they are a combination of an ASCII character, one or more
 * attributes (e.g. bold), and a color pair.
 *
 * @todo Really bad smell here, as the implementation here is almost identical
 * to the one in PositionManager; definiately see about refactoring into a
 * common base class that both can inherit from, although this may be tricky
 * since both define entirely separate data structures for their components.
 */
class SpriteManager : public LookupComponentManager
{
	public:
		/**
		 * Default and NULL-equivalent SpriteComponent value.
		 */
		static const SpriteComponent NULL_SPRITE;

		/**
		 * Constructor will pre-allocate some space for performance.
		 */<commit_msg>Removed out-dated "bad smell" @todo<commit_after>#ifndef SPRITEMANAGER_H_
#define SPRITEMANAGER_H_

#include <vector>

#include "entity/Entity.h"
#include "entity/components/LookupComponentManager.h"

/**
 * Data structure for a sprite component.
 */
typedef struct
{
	char c; ///< The character to render for this Entity
	int attributes; ///< Any attributes (e.g. bold) to apply
	int color; ///< The color pair to use for this Entity
} SpriteComponent;

/**
 * SpriteManager is the ComponentManager for Sprite components.
 *
 * Sprites are representations of the entity on the screen; in the case of
 * Ro'glick, they are a combination of an ASCII character, one or more
 * attributes (e.g. bold), and a color pair.
 */
class SpriteManager : public LookupComponentManager
{
	public:
		/**
		 * Default and NULL-equivalent SpriteComponent value.
		 */
		static const SpriteComponent NULL_SPRITE;

		/**
		 * Constructor will pre-allocate some space for performance.
		 */
{'fraction_non_alphanumeric': 0.08606006275212909, 'fraction_numerical': 0.0, 'mean_word_length': 3.9054945054945054, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '401871', 'n_tokens_mistral': 662, 'n_tokens_neox': 612, 'n_words': 262}