From 084e7e173f83b0d08118d6db79d37e8ce246e880 Mon Sep 17 00:00:00 2001 From: gulliver-madrid <49131885+gulliver-madrid@users.noreply.github.com> Date: Fri, 12 Jan 2024 17:22:38 +0100 Subject: [PATCH] Barras progreso ya no necesita conocer al modelo --- dev/estructura.md | 5 +++-- src/vista/barras_progreso.cpp | 10 +++------- src/vista/barras_progreso.h | 4 ++-- src/vista/enlace_vista.cpp | 13 +++++++++---- src/vista/paneles.cpp | 5 +++-- src/vista/paneles.h | 2 +- src/vista/presentaciones.h | 11 +++++++++++ src/vista/presentador.h | 6 +----- src/vista/vista.cpp | 27 ++++++++++----------------- src/vista/vista.h | 14 +++++++------- 10 files changed, 50 insertions(+), 47 deletions(-) create mode 100644 src/vista/presentaciones.h diff --git a/dev/estructura.md b/dev/estructura.md index f6a7fcd7..d0557650 100644 --- a/dev/estructura.md +++ b/dev/estructura.md @@ -199,13 +199,12 @@ - vista/barras_progreso.cpp: - vista/barras_progreso.h - - modelo/modelo.h - vista/basicos_vista.h - vista/vista_data.h - vista/barras_progreso.h: - vista/componentes/barra_progreso.h - - vista/presentador.h + - vista/presentaciones.h - vista/basicos_vista.cpp: - vista/basicos_vista.h @@ -254,6 +253,7 @@ - fase_nivel.h - log_init.h - templates/helpers.h + - vista/presentador.h - vista/vista.h - vista/enlace_vista.h: @@ -344,6 +344,7 @@ - vista/presentador.h: - modelo/modelo.h - modelo/modelo_shared.h + - vista/presentaciones.h - vista/vista_shared.h - vista/vista.cpp: diff --git a/src/vista/barras_progreso.cpp b/src/vista/barras_progreso.cpp index 26ed9956..ac005fb6 100644 --- a/src/vista/barras_progreso.cpp +++ b/src/vista/barras_progreso.cpp @@ -1,5 +1,4 @@ #include "barras_progreso.h" -#include "../modelo/modelo.h" #include "basicos_vista.h" #include "vista_data.h" @@ -9,12 +8,9 @@ namespace medidas { /* Crea y actualiza las barras de progreso */ std::vector crear_barras_progreso( - const EstadoPreparacionPizzas &preparacion, const sf::Vector2f &pos_panel, - const sf::Font &font + const VistaPreparacionPizzas &vista_preparacion_pizzas, + const sf::Vector2f &pos_panel, const sf::Font &font ) { - const auto vista_preparaciones_pizzas = - presentador::estado_preparacion_pizzas_to_vista(preparacion); - std::vector vect{}; const int pos_x = pos_panel.x + medidas::MARGEN_IZQ_ETIQUETAS; const int pos_y_inicial = pos_panel.y + medidas::FILA_CONTENIDO_PANEL; @@ -22,7 +18,7 @@ std::vector crear_barras_progreso( const int largo = 40; const auto dimensiones = sf::Vector2f(ancho, largo); int i = 0; - for (auto &vista_preparacion_pizza : vista_preparaciones_pizzas) { + for (auto &vista_preparacion_pizza : vista_preparacion_pizzas) { const int offset_y = i * medidas::DIFERENCIA_VERTICAL_ENTRE_BARRAS_PROGRESO; const int pos_y = pos_y_inicial + offset_y; diff --git a/src/vista/barras_progreso.h b/src/vista/barras_progreso.h index c8f07399..d6698f9f 100644 --- a/src/vista/barras_progreso.h +++ b/src/vista/barras_progreso.h @@ -1,13 +1,13 @@ #pragma once #include "componentes/barra_progreso.h" -#include "presentador.h" +#include "presentaciones.h" #include struct EstadoPreparacionPizzas; std::vector crear_barras_progreso( // - const EstadoPreparacionPizzas &, // + const VistaPreparacionPizzas &, // const sf::Vector2f &pos_panel, // const sf::Font & // ); diff --git a/src/vista/enlace_vista.cpp b/src/vista/enlace_vista.cpp index 78e96d8f..893b9b95 100644 --- a/src/vista/enlace_vista.cpp +++ b/src/vista/enlace_vista.cpp @@ -2,6 +2,7 @@ #include "../fase_nivel.h" #include "../log_init.h" #include "../templates/helpers.h" +#include "presentador.h" #include "vista.h" #include #include @@ -105,17 +106,21 @@ void EnlaceVista::actualizar_interfaz_grafico( modelo_amplio.modelo_interno ); vista->activar_botones_condicionalmente(activacion_botones); - std::optional preparacion; + std::optional vista_preparacion; const auto fase_actual = modelo_amplio.get_fase_actual(); if ( // fase_actual == FaseNivel::Activa || fase_actual == FaseNivel::EsperaAntesDeResultado ) { - preparacion.emplace( - modelo_amplio.modelo_interno.obtener_estado_preparacion_pizzas() + const auto preparacion = + modelo_amplio.modelo_interno.obtener_estado_preparacion_pizzas(); + vista_preparacion.emplace( + presentador::estado_preparacion_pizzas_to_vista(preparacion) ); } - vista->actualizarIU(target, modelo_amplio, preparacion, tiempo_real_actual); + vista->actualizarIU( + target, modelo_amplio, vista_preparacion, tiempo_real_actual + ); } PresentacionVista EnlaceVista::get_presentacion_vista() const { // diff --git a/src/vista/paneles.cpp b/src/vista/paneles.cpp index 8fcffffb..610d424f 100644 --- a/src/vista/paneles.cpp +++ b/src/vista/paneles.cpp @@ -73,7 +73,8 @@ void TitulosPaneles::draw( PanelesCompletos::PanelesCompletos(const sf::Font &font) : ObjetoConFont(font), titulos_paneles(font) {} -void PanelesCompletos::actualizar(const EstadoPreparacionPizzas &preparacion // +void PanelesCompletos::actualizar( + const VistaPreparacionPizzas &vista_preparacion // ) { if (!visible) return; @@ -81,7 +82,7 @@ void PanelesCompletos::actualizar(const EstadoPreparacionPizzas &preparacion // IndicePanel::PANEL_EN_PREPARACION ); barras_progreso_con_nombres = crear_barras_progreso( // - preparacion, pos_panel, font + vista_preparacion, pos_panel, font ); } diff --git a/src/vista/paneles.h b/src/vista/paneles.h index 6441aa49..7c79a1e3 100644 --- a/src/vista/paneles.h +++ b/src/vista/paneles.h @@ -35,7 +35,7 @@ struct PanelesCompletos : public ObjetoConFont, public sf::Drawable { PanelesCompletos(const sf::Font &); - void actualizar(const EstadoPreparacionPizzas & // + void actualizar(const VistaPreparacionPizzas & // ); virtual void draw( sf::RenderTarget &target, // diff --git a/src/vista/presentaciones.h b/src/vista/presentaciones.h new file mode 100644 index 00000000..890a6633 --- /dev/null +++ b/src/vista/presentaciones.h @@ -0,0 +1,11 @@ +#pragma once + +#include +#include + +struct VistaPreparacionPizza { + std::string nombre_pizza; + int porcentaje; +}; + +using VistaPreparacionPizzas = std::vector; diff --git a/src/vista/presentador.h b/src/vista/presentador.h index 5d703f1f..007e9f77 100644 --- a/src/vista/presentador.h +++ b/src/vista/presentador.h @@ -2,15 +2,11 @@ #include "../modelo/modelo.h" #include "../modelo/modelo_shared.h" +#include "presentaciones.h" #include "vista_shared.h" #include #include -struct VistaPreparacionPizza { - std::string nombre_pizza; - int porcentaje; -}; - namespace presentador { std::string crea_linea_completitud_pizza( diff --git a/src/vista/vista.cpp b/src/vista/vista.cpp index d1f9dc6a..031e7863 100644 --- a/src/vista/vista.cpp +++ b/src/vista/vista.cpp @@ -69,25 +69,18 @@ namespace { ///// Vista (private) ///// -// TODO: diferenciar entre actualizacion de datos y dibujado -void Vista::_actualizar_paneles(const EstadoPreparacionPizzas &preparacion // -) { - // TODO: usar el sistema nativo de dibujo de SFML. - paneles_completos.actualizar(preparacion); -} - void Vista::_dibujar_paneles(sf::RenderTarget &target) const { // TODO: usar el sistema nativo de dibujo de SFML. target.draw(paneles_completos); } void Vista::_actualizar_vista_paneles( - const std::optional &preparacion + const std::optional &vista_preparacion ) { - paneles_completos.visible = preparacion.has_value(); - if (preparacion) { - _actualizar_paneles(preparacion.value()); + paneles_completos.visible = vista_preparacion.has_value(); + if (vista_preparacion) { + paneles_completos.actualizar(vista_preparacion.value()); } } @@ -133,11 +126,11 @@ void Vista::set_presentacion_vista( /* * Actualiza el interfaz grafico */ -void Vista::actualizarIU( // - sf::RenderTarget &target, // - const ModeloAmplio &modelo_amplio, // - const std::optional preparacion, // - const sf::Time &tiempo_real_actual // +void Vista::actualizarIU( // + sf::RenderTarget &target, // + const ModeloAmplio &modelo_amplio, // + const std::optional &vista_preparacion, // + const sf::Time &tiempo_real_actual // ) { // Limpia la target y empieza a pintar los componentes visuales @@ -146,7 +139,7 @@ void Vista::actualizarIU( // grid.draw(target, GRID_SIZE, GRID_TONE); const auto fase_actual = modelo_amplio.get_fase_actual(); - _actualizar_vista_paneles(preparacion); + _actualizar_vista_paneles(vista_preparacion); actualizar_etiquetas(target, etiquetas, modelo_amplio, tiempo_real_actual); target.draw(botones); diff --git a/src/vista/vista.h b/src/vista/vista.h index 583a1964..7b125a0d 100644 --- a/src/vista/vista.h +++ b/src/vista/vista.h @@ -25,10 +25,10 @@ class Vista : public ObjetoConFont, public sf::Drawable { private: const dominio::TiposDePizza &tp_disponibles; - void _actualizar_paneles(const EstadoPreparacionPizzas &); + void _actualizar_paneles(const VistaPreparacionPizzas &); void _dibujar_paneles(sf::RenderTarget &target) const; void - _actualizar_vista_paneles(const std::optional &); + _actualizar_vista_paneles(const std::optional &); public: std::shared_ptr presentacion_vista; @@ -51,11 +51,11 @@ class Vista : public ObjetoConFont, public sf::Drawable { std::shared_ptr // ); - void actualizarIU( // - sf::RenderTarget &, // - const ModeloAmplio &, // - const std::optional, // - const sf::Time &tiempo_real_actual // + void actualizarIU( // + sf::RenderTarget &, // + const ModeloAmplio &, // + const std::optional &, // + const sf::Time &tiempo_real_actual // ); void mostrar_elementos_fase_activa();