forked from jaildesigner-jailgames/jaildoctors_dilemma
canvi de pc
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
#include "notifier.h" // Para Notify
|
||||
#include "options.h"
|
||||
#include "mouse.h"
|
||||
// #include "surface.h"
|
||||
#include "surface.h"
|
||||
|
||||
// [SINGLETON]
|
||||
Screen *Screen::screen_ = nullptr;
|
||||
@@ -39,7 +39,8 @@ Screen *Screen::get()
|
||||
// Constructor
|
||||
Screen::Screen(SDL_Window *window, SDL_Renderer *renderer)
|
||||
: window_(window),
|
||||
renderer_(renderer)
|
||||
renderer_(renderer),
|
||||
palettes_(Asset::get()->getListByType(AssetType::PALETTE))
|
||||
{
|
||||
// Ajusta los tamaños
|
||||
adjustGameCanvasRect();
|
||||
@@ -53,7 +54,7 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer)
|
||||
|
||||
// Crea la textura donde se dibujan los graficos del juego
|
||||
game_texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, options.game.width, options.game.height);
|
||||
//game_texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, options.game.width, options.game.height);
|
||||
// game_texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, options.game.width, options.game.height);
|
||||
if (!game_texture_)
|
||||
{
|
||||
// Registrar el error si está habilitado
|
||||
@@ -65,7 +66,7 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer)
|
||||
|
||||
// Crea la textura donde se dibuja el borde que rodea el area de juego
|
||||
border_texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, options.game.width + options.video.border.width * 2, options.game.height + options.video.border.height * 2);
|
||||
//border_texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, options.game.width + options.video.border.width * 2, options.game.height + options.video.border.height * 2);
|
||||
// border_texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, options.game.width + options.video.border.width * 2, options.game.height + options.video.border.height * 2);
|
||||
if (!border_texture_)
|
||||
{
|
||||
// Registrar el error si está habilitado
|
||||
@@ -77,11 +78,11 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer)
|
||||
|
||||
// Crea la surface donde se dibujan los graficos del juego
|
||||
game_surface_ = std::make_shared<Surface>(nullptr, options.game.width, options.game.height);
|
||||
game_surface_->loadPalette(Asset::get()->get("zx-spectrum-8x.gif"));
|
||||
game_surface_->loadPalette(palettes_.front());
|
||||
|
||||
// Crea la surface donde se dibujan los graficos del juego
|
||||
border_surface_ = std::make_shared<Surface>(nullptr, options.game.width + options.video.border.width * 2, options.game.height + options.video.border.height * 2);
|
||||
border_surface_->loadPalette(Asset::get()->get("zx-spectrum-8x.gif"));
|
||||
border_surface_->loadPalette(palettes_.front());
|
||||
|
||||
// Establece el modo de video
|
||||
setVideoMode(options.video.mode);
|
||||
@@ -106,7 +107,7 @@ void Screen::clear(Color color)
|
||||
}
|
||||
|
||||
// Limpia la pantalla
|
||||
void Screen::clear(Uint8 index)
|
||||
void Screen::clearSurface(Uint8 index)
|
||||
{
|
||||
game_surface_->clear(index);
|
||||
}
|
||||
@@ -125,7 +126,7 @@ void Screen::render()
|
||||
game_surface_->copyToTexture(renderer_, game_texture_);
|
||||
|
||||
// Renderiza sobre gameCanvas los overlays
|
||||
//renderNotifications();
|
||||
// renderNotifications();
|
||||
|
||||
// Si está el borde activo, vuelca gameCanvas sobre borderCanvas
|
||||
if (options.video.border.enabled)
|
||||
@@ -140,6 +141,9 @@ void Screen::render()
|
||||
// Vuelca el contenido del renderizador en pantalla
|
||||
void Screen::renderWithoutNotifier()
|
||||
{
|
||||
// Copia la surface a game_texture_
|
||||
game_surface_->copyToTexture(renderer_, game_texture_);
|
||||
|
||||
// Si está el borde activo, vuelca gameCanvas sobre borderCanvas
|
||||
if (options.video.border.enabled)
|
||||
{
|
||||
@@ -373,4 +377,17 @@ void Screen::resetShaders()
|
||||
void Screen::setRenderSurfaceData(std::shared_ptr<Surface> surface)
|
||||
{
|
||||
(surface) ? game_surface_->redirectSurfaceDataTo(surface) : game_surface_->restoreOriginalSurfaceData();
|
||||
}
|
||||
|
||||
// Cambia la paleta
|
||||
void Screen::nextPalette()
|
||||
{
|
||||
++current_palette_;
|
||||
if (current_palette_ == static_cast<int>(palettes_.size()))
|
||||
{
|
||||
current_palette_ = 0;
|
||||
}
|
||||
|
||||
game_surface_->loadPalette(palettes_.at(current_palette_));
|
||||
border_surface_->loadPalette(palettes_.at(current_palette_));
|
||||
}
|
||||
Reference in New Issue
Block a user