Actualizada la clase screen con nuevos procedimientos

This commit is contained in:
2022-08-30 17:31:33 +02:00
parent cbdc7d9fc3
commit 8616c3e165
6 changed files with 81 additions and 31 deletions

View File

@@ -42,6 +42,7 @@ Director::Director(std::string path)
input = new Input(asset->get("gamecontrollerdb.txt"));
initInput();
screen = new Screen(window, renderer, options, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
screen->setBorderColor(borderColor);
}
Director::~Director()

View File

@@ -87,16 +87,46 @@ void Game::update()
section.name = SECTION_PROG_QUIT;
break;
}
else if ((eventHandler->type == SDL_KEYDOWN) and (eventHandler->key.repeat == 0))
{
switch (eventHandler->key.keysym.scancode)
{
case SDL_SCANCODE_D:
debug = !debug;
break;
case SDL_SCANCODE_F:
screen->switchVideoMode();
break;
case SDL_SCANCODE_F1:
screen->setWindowSize(1);
break;
case SDL_SCANCODE_F2:
screen->setWindowSize(2);
break;
case SDL_SCANCODE_F3:
screen->setWindowSize(3);
break;
case SDL_SCANCODE_F4:
screen->setWindowSize(4);
break;
}
}
}
room->update();
player->update();
checkPlayerAndWalls(); // Debe ir detras del player update, por si se ha metido en algun muro
{
player->update();
checkPlayerAndWalls();
} // Debe ir detras del player update, por si se ha metido en algun muro
checkPlayerOnBorder();
checkPlayerOnFloor();
checkPlayerAndItems();
checkPlayerAndEnemies();
checkInput();
}
}
@@ -144,28 +174,6 @@ void Game::render()
screen->blit();
}
// Comprueba la entrada
void Game::checkInput()
{
/*
if (input->checkInput(INPUT_UP, REPEAT_FALSE))
changeRoom(room->getRoomUp());
if (input->checkInput(INPUT_DOWN, REPEAT_FALSE))
changeRoom(room->getRoomDown());
if (input->checkInput(INPUT_LEFT, REPEAT_FALSE))
changeRoom(room->getRoomLeft());
if (input->checkInput(INPUT_RIGHT, REPEAT_FALSE))
changeRoom(room->getRoomRight());
*/
if (input->checkInput(INPUT_BUTTON_2, REPEAT_FALSE))
debug = !debug;
}
// Cambia de habitación
bool Game::changeRoom(std::string file)
{

View File

@@ -43,9 +43,6 @@ private:
// Pinta los objetos en pantalla
void render();
// Comprueba la entrada y actua
void checkInput();
// Cambia de habitación
bool changeRoom(std::string file);

View File

@@ -89,7 +89,7 @@ void Screen::setVideoMode(int fullScreenMode)
}
// Si está activo el modo de pantalla completa añade el borde
if (fullScreenMode == SDL_WINDOW_FULLSCREEN_DESKTOP)
else if (fullScreenMode == SDL_WINDOW_FULLSCREEN_DESKTOP)
{
// Obten el alto y el ancho de la ventana
SDL_GetWindowSize(window, &screenWidth, &screenHeight);
@@ -137,4 +137,33 @@ void Screen::setVideoMode(int fullScreenMode)
// Modifica el tamaño del renderizador
SDL_RenderSetLogicalSize(renderer, screenWidth, screenHeight);
}
// Actualiza el valor de la variable
options->fullScreenMode = fullScreenMode;
}
// Camibia entre pantalla completa y ventana
void Screen::switchVideoMode()
{
if (options->fullScreenMode == 0)
{
setVideoMode(SDL_WINDOW_FULLSCREEN_DESKTOP);
}
else
{
setVideoMode(0);
}
}
// Cambia el tamaño de la ventana
void Screen::setWindowSize(int size)
{
options->windowSize = size;
setVideoMode(0);
}
// Cambia el color del borde
void Screen::setBorderColor(color_t color)
{
borderColor = color;
}

View File

@@ -51,6 +51,15 @@ public:
// Establece el modo de video
void setVideoMode(int fullScreenMode);
// Camibia entre pantalla completa y ventana
void switchVideoMode();
// Cambia el tamaño de la ventana
void setWindowSize(int size);
// Cambia el color del borde
void setBorderColor(color_t color);
};
#endif