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

10
todo.md
View File

@@ -7,12 +7,18 @@
(A) Decidir un diseño para qué sucede en caso de morir: Recordar el punto por donde se entró al mapa y la velocidad en el eje X/Y que llevaba el personaje, crear puntos de reaparicion en las habitaciones, etc {cm:2022-08-29}
En el Jet Set Willy el juego recuerda la posicion y el momento. En las Tres Luces de Glaurung solo la posición. Se va a optar por seguir el diseño del Jet Set Willy {cm:2022-08-29}
(A) Crear tiles que maten {cm:2022-08-29}
(A) Crear tiles que deslicen, (no tipo hielo sino cinta)
(A) Tiles animados
(A) Crear ascensores
(A) Enemigos de diferente tamaño
(A) Color de los items
(A) Temporizador de inicio de los items
(A) Color de los items al estilo jet set willy de amstrad, que brillan con dos colores
(A) Temporizador de inicio de los items, para poder hacer que brillen a distinto ritmo. Esto es incompatible con lo anterior
(A) Poner la info de debug con la tipografia adecuada
(A) El modo debug debe pintar la rejilla
(A) Tecla F para pasar a pantalla completa
(A) Tecla + y - para cambiar tamaño de ventana. O control F1 a F4
## TEMAS