Skip to content

Commit

Permalink
Empieza a implementar Etiqueta
Browse files Browse the repository at this point in the history
- EtiquetasPreparadas utiliza Etiqueta.
  • Loading branch information
autosquash committed Jan 19, 2024
1 parent 1d6e9b6 commit 05efde1
Show file tree
Hide file tree
Showing 11 changed files with 128 additions and 40 deletions.
21 changes: 11 additions & 10 deletions src/templates/dibujar_elementos.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,17 @@
#include <tuple>
#include <vector>

// template <typename Key, typename Drawable>
// void dibujar_elementos(
// sf::RenderTarget &target, //
// const std::map<Key, std::unique_ptr<Drawable>> &elementos //
// ) {
// for (const auto &[_, elemento] : elementos) {
// target.draw(*elemento);
// }
// }

template <typename Key, typename Drawable>
void dibujar_elementos(
sf::RenderTarget &target, //
const std::map<Key, std::shared_ptr<Drawable>> &elementos //
) {
for (const auto &[_, elemento] : elementos) {
if (elemento) {
target.draw(*elemento);
}
}
}
template <typename Key, typename Drawable>
void dibujar_elementos(
sf::RenderTarget &target, //
Expand Down
38 changes: 37 additions & 1 deletion src/vista/componentes/etiqueta.h
Original file line number Diff line number Diff line change
@@ -1,26 +1,62 @@
#pragma once

#include "../../shared/font.h"
#include "../componente.h"
#include <SFML/Graphics/RenderTarget.hpp>
#include <SFML/Graphics/Text.hpp>

struct Etiqueta : public sf::Drawable {
struct EstiloTexto {
const int tamano;
const sf::Color &color;
};

class Etiqueta : public ComponenteConFont {
private:
sf::Text etiqueta;

public:
Etiqueta(
const std::string &texto, //
int tamano_fuente, //
const OptionalFont &font //
) {
this->font = font;
etiqueta.setString(texto);
if (font.exists()) {
etiqueta.setFont(*font.get_pointer());
etiqueta.setCharacterSize(tamano_fuente);
};
}
Etiqueta(
const std::string &texto, //
int tamano_fuente, //
const sf::Color &color, //
const OptionalFont &font, //
const sf::Vector2f &posicion //

)
: Etiqueta(texto, tamano_fuente, font) {
etiqueta.setFillColor(color);
etiqueta.setPosition(posicion);
}

/* Sobrecarga para usar EstiloTexto */
Etiqueta(
const std::string &texto, //
const EstiloTexto &estilo, //
const OptionalFont &font, //
const sf::Vector2f &posicion //
)
: Etiqueta(texto, estilo.tamano, estilo.color, font, posicion) {}

void actualizar_texto(const std::string &texto) { //
etiqueta.setString(texto);
}
virtual void draw(
sf::RenderTarget &target, //
sf::RenderStates states //
) const override {
assert(font.exists());
target.draw(etiqueta);
};
};
39 changes: 31 additions & 8 deletions src/vista/componentes/varios.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,37 @@
#include <SFML/Graphics/Text.hpp>
#include <iostream>

std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
int tamano_fuente, //
const OptionalFont &font //
) {
return std::make_shared<Etiqueta>(texto, tamano_fuente, font);
}

std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
int tamano_fuente, //
const sf::Color &color, //
const OptionalFont &font, //
const sf::Vector2f &posicion //

) {
return std::make_shared<Etiqueta>(
texto, tamano_fuente, color, font, posicion
);
}

/* Sobrecarga para usar EstiloTexto */
std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
const EstiloTexto &estilo, //
const OptionalFont &font, //
const sf::Vector2f &posicion //
) {
return std::make_shared<Etiqueta>(texto, estilo, font, posicion);
}

sf::Text crearEtiqueta(
const std::string &texto, //
int tamano_fuente, //
Expand All @@ -17,14 +48,6 @@ sf::Text crearEtiqueta(
return etiqueta;
}

Etiqueta crear_etiqueta(
const std::string &texto, //
int tamano_fuente, //
const OptionalFont &font //
) {
return Etiqueta(texto, tamano_fuente, font);
}

sf::Text crearEtiqueta(
const std::string &texto, //
int tamano_fuente, //
Expand Down
30 changes: 24 additions & 6 deletions src/vista/componentes/varios.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,43 @@ namespace sf {
class Text;
} // namespace sf

struct Etiqueta;
class Etiqueta;

namespace medidas {
constexpr int TAMANO_TEXTO_GRANDE = 32;
} // namespace medidas

struct EstiloTexto {
const int tamano;
const sf::Color &color;
};
struct EstiloTexto;

const auto Vector2f_CERO = sf::Vector2f(0, 0);

Etiqueta crear_etiqueta(
///// Creadores de Etiqueta /////

std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
int tamano_fuente, //
const OptionalFont & //
);

std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
int tamano_fuente, //
const sf::Color &color, //
const OptionalFont &font, //
const sf::Vector2f &posicion //

);

/* Sobrecarga para usar EstiloTexto */
std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
const EstiloTexto &estilo, //
const OptionalFont &font, //
const sf::Vector2f &posicion //
);

///// Creadores de sf::Text /////

sf::Text crearEtiqueta(
const std::string &texto, //
int tamano_fuente, //
Expand Down
1 change: 1 addition & 0 deletions src/vista/etiquetas/etiquetas.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "etiquetas.h"
#include "../basicos_vista.h"
#include "../cadenas.h"
#include "../componentes/etiqueta.h"
#include "../componentes/varios.h"
#include "../presentacion_vista.h"
#include "etiquetas_barra_estado.h"
Expand Down
1 change: 1 addition & 0 deletions src/vista/etiquetas/etiquetas_barra_estado.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "../../tiempo.h"
#include "../basicos_vista.h"
#include "../cadenas.h"
#include "../componentes/etiqueta.h"
#include "../componentes/varios.h"
#include "../presentador.h"
#include <SFML/Graphics/RenderTarget.hpp>
Expand Down
3 changes: 2 additions & 1 deletion src/vista/etiquetas/etiquetas_contadores.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "../../templates/dibujar_elementos.h"
#include "../../templates/helpers.h"
#include "../basicos_vista.h"
#include "../componentes/etiqueta.h"
#include "../componentes/varios.h"
#include "../presentador.h"
#include "fabrica_etiquetas_contadores.h"
Expand Down Expand Up @@ -128,7 +129,7 @@ void EtiquetasPreparadas::setup(const dominio::TiposDePizza &tp_disponibles) {
void EtiquetasPreparadas::actualizar(const PizzasToStrings &vista_preparadas) {
for (auto &[tp, linea] : vista_preparadas) {
assert(has_key(etiquetas_preparadas, tp));
etiquetas_preparadas.at(tp).setString(linea);
etiquetas_preparadas.at(tp)->actualizar_texto(linea);
}
}

Expand Down
12 changes: 7 additions & 5 deletions src/vista/etiquetas/etiquetas_contadores.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
namespace sf {
class RenderTarget;
}
class Etiqueta;

///// TarjetaPedido /////

Expand All @@ -25,15 +26,15 @@ class TarjetaPedido : public sf::Drawable {
) const override;
};

///// EtiquetasContadores /////
///// EtiquetasPreparadas /////

/*
* Contiene las etiquetas que muestran las pizzas en area de
* preparadas.
*/
class EtiquetasPreparadas : public ComponenteConFont {
using TipoPizza = dominio::TipoPizza;
using PizzasToLabels = std::map<TipoPizza, sf::Text>;
using PizzasToLabels = std::map<TipoPizza, std::shared_ptr<Etiqueta>>;

public:
PizzasToLabels etiquetas_preparadas;
Expand All @@ -47,13 +48,14 @@ class EtiquetasPreparadas : public ComponenteConFont {
sf::RenderStates states //
) const override;
};

///// EtiquetasPedidos /////

/*
* Contiene los elementos visuales que muestran las pizzas en area de
* preparadas, servidas y los pedidos.
* Contiene los elementos visuales que muestran los pedidos.
*/
class EtiquetasPedidos : public ComponenteConFont {
using TipoPizza = dominio::TipoPizza;
using PizzasToLabels = std::map<TipoPizza, sf::Text>;

private:
void _actualizar_vista_pedidos(const modelo::Pedidos &);
Expand Down
9 changes: 5 additions & 4 deletions src/vista/etiquetas/etiquetas_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "../../shared/log_init.h"
#include "../../textos.h"
#include "../basicos_vista.h"
#include "../componentes/etiqueta.h"
#include "../componentes/varios.h"
#include <SFML/Graphics/RenderTarget.hpp>
#include <iostream>
Expand Down Expand Up @@ -38,8 +39,8 @@ struct FabricaEtiquetasInfo : public ObjetoConFont {
public:
FabricaEtiquetasInfo(const OptionalFont &font) : ObjetoConFont(font) {}
sf::Text crear_etiqueta_instrucciones(
const std::string &plantilla, //
const NumNivelOpcional& num_nivel //
const std::string &plantilla, //
const NumNivelOpcional &num_nivel //
) const {
const auto estilo = estilos::INSTRUCCIONES;
const auto texto = construir_texto_instrucciones(plantilla, num_nivel);
Expand All @@ -63,8 +64,8 @@ struct FabricaEtiquetasInfo : public ObjetoConFont {
EtiquetasInfo::EtiquetasInfo(const OptionalFont &font) : ObjetoConFont(font) {}

void EtiquetasInfo::setup(
const std::string &instr, //
const NumNivelOpcional& num_nivel //
const std::string &instr, //
const NumNivelOpcional &num_nivel //
) {
const auto fabrica = FabricaEtiquetasInfo(font);
LOG(info) << "Construyendo instrucciones" << std::endl;
Expand Down
7 changes: 4 additions & 3 deletions src/vista/etiquetas/fabrica_etiquetas_contadores.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "fabrica_etiquetas_contadores.h"
#include "../basicos_vista.h"
#include "../componentes/etiqueta.h"
#include "../componentes/varios.h"

namespace medidas {
Expand Down Expand Up @@ -38,10 +39,10 @@ sf::Vector2f FabricaEtiquetasContadores::_obtener_posicion_etiqueta(
* Crea una etiqueta para un contador (dependiendo del panel tendra uno u
* otro significado)
*/
sf::Text FabricaEtiquetasContadores::_crear_etiqueta( //
std::shared_ptr<Etiqueta> FabricaEtiquetasContadores::_crear_etiqueta( //
sf::Vector2f posicion
) const {
return crearEtiqueta("", estilos::CONTADORES, font, posicion);
return crear_etiqueta("", estilos::CONTADORES, font, posicion);
}

///////////////////////////////////////////
Expand All @@ -54,7 +55,7 @@ FabricaEtiquetasContadores::FabricaEtiquetasContadores(const OptionalFont &font)
/*
* Crea una etiqueta de pizzas preparadas
*/
sf::Text
std::shared_ptr<Etiqueta>
FabricaEtiquetasContadores::crearEtiquetaPizzasPreparadas(size_t indice_etiqueta
) const {
const auto indice_panel = IndicePanel::PANEL_PREPARADAS;
Expand Down
7 changes: 5 additions & 2 deletions src/vista/etiquetas/fabrica_etiquetas_contadores.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
#include "../../shared/font.h"
#include <SFML/Graphics/Text.hpp>

class Etiqueta;

class FabricaEtiquetasContadores : public ObjetoConFont {
private:
sf::Vector2f _obtener_posicion_etiqueta(
Expand All @@ -11,9 +13,10 @@ class FabricaEtiquetasContadores : public ObjetoConFont {
int desplazamiento_vertical //
) const;

sf::Text _crear_etiqueta(sf::Vector2f posicion) const;
std::shared_ptr<Etiqueta> _crear_etiqueta(sf::Vector2f posicion) const;

public:
FabricaEtiquetasContadores(const OptionalFont &font);
sf::Text crearEtiquetaPizzasPreparadas(size_t indice_etiqueta) const;
std::shared_ptr<Etiqueta>
crearEtiquetaPizzasPreparadas(size_t indice_etiqueta) const;
};

0 comments on commit 05efde1

Please sign in to comment.