Resource: afegida pantalla de progres de càrrega
Screen: Afegit objecte de text propi per a la clase
This commit is contained in:
@@ -53,18 +53,22 @@ Screen::Screen()
|
||||
// Inicializa variables
|
||||
adjustRenderLogicalSize();
|
||||
|
||||
// Muestra la ventana
|
||||
show();
|
||||
|
||||
// Inicializa los shaders
|
||||
initShaders(); // Se ha de ejecutar con la ventana visible
|
||||
initShaders();
|
||||
|
||||
// Crea el objeto de texto
|
||||
createText();
|
||||
|
||||
#ifdef DEBUG
|
||||
debug_info_.text = text_;
|
||||
setDebugInfoEnabled(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Destructor
|
||||
Screen::~Screen()
|
||||
{
|
||||
SDL_DestroyTexture(game_canvas_);
|
||||
|
||||
SDL_DestroyRenderer(renderer_);
|
||||
SDL_DestroyWindow(window_);
|
||||
}
|
||||
@@ -239,18 +243,19 @@ void Screen::renderInfo()
|
||||
// Carga el contenido del archivo GLSL
|
||||
void Screen::loadShaders()
|
||||
{
|
||||
const std::string GLSL_FILE = param.game.game_area.rect.h == 256 ? "crtpi_256.glsl" : "crtpi_240.glsl";
|
||||
std::ifstream f(Asset::get()->get(GLSL_FILE).c_str());
|
||||
shader_source_ = std::string((std::istreambuf_iterator<char>(f)), std::istreambuf_iterator<char>());
|
||||
if (shader_source_.empty())
|
||||
{
|
||||
const std::string GLSL_FILE = param.game.game_area.rect.h == 256 ? "crtpi_256.glsl" : "crtpi_240.glsl";
|
||||
std::ifstream f(Asset::get()->get(GLSL_FILE).c_str());
|
||||
shader_source_ = std::string((std::istreambuf_iterator<char>(f)), std::istreambuf_iterator<char>());
|
||||
}
|
||||
}
|
||||
|
||||
// Inicializa los shaders
|
||||
void Screen::initShaders()
|
||||
{
|
||||
if (shader_source_.empty())
|
||||
{
|
||||
loadShaders();
|
||||
}
|
||||
show(); // Se ha de ejecutar con la ventana visible
|
||||
loadShaders();
|
||||
shader::init(window_, game_canvas_, shader_source_);
|
||||
}
|
||||
|
||||
@@ -401,20 +406,27 @@ void Screen::getDisplayInfo()
|
||||
}
|
||||
}
|
||||
|
||||
// Activa / desactiva el escalado entero
|
||||
// Alterna entre activar y desactivar el escalado entero
|
||||
void Screen::toggleIntegerScale()
|
||||
{
|
||||
options.video.integer_scale = !options.video.integer_scale;
|
||||
SDL_SetRenderLogicalPresentation(Screen::get()->getRenderer(), param.game.width, param.game.height, options.video.integer_scale ? SDL_LOGICAL_PRESENTATION_INTEGER_SCALE : SDL_LOGICAL_PRESENTATION_LETTERBOX);
|
||||
}
|
||||
|
||||
// Activa / desactiva el vsync
|
||||
// Alterna entre activar y desactivar el V-Sync
|
||||
void Screen::toggleVSync()
|
||||
{
|
||||
options.video.v_sync = !options.video.v_sync;
|
||||
SDL_SetRenderVSync(renderer_, options.video.v_sync ? 1 : SDL_RENDERER_VSYNC_DISABLED);
|
||||
}
|
||||
|
||||
// Establece el estado del V-Sync
|
||||
void Screen::setVSync(bool enabled)
|
||||
{
|
||||
options.video.v_sync = enabled;
|
||||
SDL_SetRenderVSync(renderer_, enabled ? 1 : SDL_RENDERER_VSYNC_DISABLED);
|
||||
}
|
||||
|
||||
// Obtiene los punteros a los singletones
|
||||
void Screen::getSingletons()
|
||||
{
|
||||
@@ -429,4 +441,11 @@ void Screen::applySettings()
|
||||
SDL_SetRenderLogicalPresentation(Screen::get()->getRenderer(), param.game.width, param.game.height, options.video.integer_scale ? SDL_LOGICAL_PRESENTATION_INTEGER_SCALE : SDL_LOGICAL_PRESENTATION_LETTERBOX);
|
||||
adjustWindowSize();
|
||||
setFullscreenMode();
|
||||
}
|
||||
|
||||
// Crea el objeto de texto
|
||||
void Screen::createText()
|
||||
{
|
||||
auto texture = std::make_shared<Texture>(getRenderer(), Asset::get()->get("aseprite.png"));
|
||||
text_ = std::make_unique<Text>(texture, Asset::get()->get("aseprite.txt"));
|
||||
}
|
||||
Reference in New Issue
Block a user