forked from jaildesigner-jailgames/jaildoctors_dilemma
bfff, a casa a meitat enfangà.. be..
Estic acabant de convertir Title
This commit is contained in:
@@ -8,9 +8,9 @@
|
||||
|
||||
struct SurfaceData
|
||||
{
|
||||
Uint8 *data;
|
||||
Uint16 width;
|
||||
Uint16 height;
|
||||
Uint8 *data; // Listado de indices de la paleta que conforman la imagen almacenada
|
||||
Uint16 width; // Ancho de la imagen
|
||||
Uint16 height; // Alto de la imagen
|
||||
|
||||
// Constructor por defecto
|
||||
SurfaceData() : data(nullptr), width(0), height(0) {}
|
||||
@@ -60,10 +60,11 @@ struct SurfaceData
|
||||
class Surface
|
||||
{
|
||||
private:
|
||||
std::shared_ptr<SurfaceData> surface_dest_;
|
||||
std::shared_ptr<SurfaceData> surface_;
|
||||
std::array<Uint32, 256> palette_;
|
||||
int transparent_color_;
|
||||
std::shared_ptr<SurfaceData> surface_data_dest_; // Puntero a la SurfaceData remota donde copiar la información
|
||||
std::shared_ptr<SurfaceData> surface_data_; // SurfaceData propia
|
||||
std::shared_ptr<SurfaceData> original_surface_data_; // SurfaceData original para restauración
|
||||
std::array<Uint32, 256> palette_; // Paleta para volcar la SurfaceData a una Textura
|
||||
int transparent_color_; // Indice de la paleta que se omite en la copia de datos
|
||||
|
||||
// Pone un pixel en la superficie de destino
|
||||
void putPixel(int x, int y, Uint8 color);
|
||||
@@ -73,43 +74,53 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Surface(std::shared_ptr<SurfaceData> surface_dest, int w, int h);
|
||||
Surface(std::shared_ptr<SurfaceData> surface_dest, const std::string &file_path);
|
||||
Surface(std::shared_ptr<SurfaceData> surface_data_dest, int w, int h);
|
||||
Surface(std::shared_ptr<SurfaceData> surface_data_dest, const std::string &file_path);
|
||||
|
||||
// Destructor
|
||||
~Surface();
|
||||
|
||||
// Carga una superficie desde un archivo
|
||||
// Carga una SurfaceData desde un archivo
|
||||
SurfaceData loadSurface(const std::string &file_path);
|
||||
|
||||
// Carga una paleta desde un archivo
|
||||
void loadPalette(const std::string &file_path);
|
||||
|
||||
// Copia una región de la superficie de origen a la superficie de destino
|
||||
// Copia una región de la SurfaceData de origen a la SurfaceData de destino
|
||||
void render(int dx, int dy, int sx, int sy, int w, int h);
|
||||
void render(int x, int y, SDL_Rect *clip = nullptr, SDL_RendererFlip flip = SDL_FLIP_NONE);
|
||||
|
||||
// Copia una región de la SurfaceData de origen a la SurfaceData de destino reemplazando un color por otro
|
||||
void renderWithColorReplace(int x, int y, Uint8 source_color = 0, Uint8 target_color = 0, SDL_Rect *clip = nullptr, SDL_RendererFlip flip = SDL_FLIP_NONE);
|
||||
|
||||
// Establece un color en la paleta
|
||||
void setColor(int index, Uint32 color);
|
||||
|
||||
// Rellena la superficie con un color
|
||||
// Rellena la SurfaceData con un color
|
||||
void clear(Uint8 color);
|
||||
|
||||
// Vuelca la superficie a una textura
|
||||
// Vuelca la SurfaceData a una textura
|
||||
void copyToTexture(SDL_Renderer *renderer, SDL_Texture *texture);
|
||||
|
||||
// Realiza un efecto de fundido en la paleta
|
||||
bool fadePalette();
|
||||
|
||||
// Getters
|
||||
std::shared_ptr<SurfaceData> getSurface() const { return surface_; }
|
||||
std::shared_ptr<SurfaceData> getSurfaceData() const { return surface_data_; }
|
||||
int getTransparentColor() const { return transparent_color_; }
|
||||
int getWidth() const { return surface_->width; }
|
||||
int getHeight() const { return surface_->height; }
|
||||
int getWidth() const { return surface_data_->width; }
|
||||
int getHeight() const { return surface_data_->height; }
|
||||
|
||||
// Setters
|
||||
void setTransparentColor(int color) { transparent_color_ = color; }
|
||||
void setSurfaceDest(std::shared_ptr<SurfaceData> surface_dest) { surface_dest_ = surface_dest; }
|
||||
void setSurfaceDataDest(std::shared_ptr<SurfaceData> surface_data_dest) { surface_data_dest_ = surface_data_dest; }
|
||||
void setPalette(const std::array<Uint32, 256> &palette) { palette_ = palette; }
|
||||
void setSurface(std::shared_ptr<SurfaceData> surface) { surface_ = surface; }
|
||||
void setSurface(std::shared_ptr<SurfaceData> surface) { surface_data_ = surface; }
|
||||
|
||||
// Permite que una Surface apunte al SurfaceData de otra Surface
|
||||
void redirectSurfaceDataTo(const std::shared_ptr<SurfaceData> &newSurfaceData) { surface_data_ = newSurfaceData; }
|
||||
void redirectSurfaceDataTo(const std::shared_ptr<Surface> &otherSurface) { surface_data_ = otherSurface->getSurfaceData(); }
|
||||
|
||||
// Método para restaurar
|
||||
void restoreOriginalSurfaceData() { surface_data_ = original_surface_data_; }
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user