Skip to content

Commit

Permalink
[no compila] wip
Browse files Browse the repository at this point in the history
  • Loading branch information
autosquash committed Jan 23, 2024
1 parent 7a8ef34 commit 82cf02b
Show file tree
Hide file tree
Showing 18 changed files with 230 additions and 133 deletions.
68 changes: 2 additions & 66 deletions src/vista/botones_app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "basicos_vista.h"
#include "componentes/botones.h"
#include "componentes/crear_etiqueta.h"
#include "datos_botones.h"
#include <SFML/Graphics/RenderTarget.hpp>
#include <algorithm>
#include <cassert>
Expand All @@ -12,22 +13,6 @@
using std::move;
using std::vector;

namespace colores {
namespace botones_encargar {
const auto FONDO = sf::Color::Green;
const auto TEXTO = sf::Color::Black;
} // namespace botones_encargar
namespace botones_despachar {
const auto FONDO = sf::Color::Green;
const auto TEXTO = sf::Color::Black;
} // namespace botones_despachar
} // namespace colores

namespace medidas {
const auto POSICION_BOTON_EMPEZAR = sf::Vector2f(500, 450);
const auto DIF_VERTICAL_BOTONES_ENCARGAR = 80;
} // namespace medidas

///////////////////////////////////////////
// BotonesGenerales
//////////////////////////////////////////
Expand Down Expand Up @@ -66,55 +51,6 @@ namespace {
return result;
}

/**
* Crea y posiciona los botones asociados con la accion "encargar".
* @param font: Fuente a utilizar para el texto del boton.
* @param tp_disponibles: Tipos de pizza disponibles para encargar.
* @return TipoPizzaToBoton: Un mapa que asocia cada TipoPizza con un
* BotonConTexto.
*/
TipoPizzaToBoton _crear_botones_encargar(
const OptionalFont &font, //
const dominio::TiposDePizza &tp_disponibles //
) {
// Constantes para definir la posicion de cada boton
const auto rect_panel = basicos_vista::obtener_rect_panel( //
IndicePanel::PANEL_ENCARGAR
);
const sf::Vector2f pos_panel = rect_panel.getPosition();
const auto pos_inicial_relativa_al_panel = sf::Vector2f(
medidas::MARGEN_IZQ_ETIQUETAS, medidas::FILA_CONTENIDO_PANEL
);

// Lambda para crear boton data
const auto crear_boton_data = [](dominio::TipoPizza tp) {
assert(has_key(tipo_pizza_to_string, tp));
const std::string pizza_str = tipo_pizza_to_string.at(tp);
return BotonData{
pizza_str, //
colores::botones_encargar::FONDO, //
colores::botones_encargar::TEXTO //
};
};

// Crea los botones
TipoPizzaToBoton botones;
vector<BotonConTexto *> ordenados;
for (auto tp : tp_disponibles) {
const BotonData boton_data = crear_boton_data(tp);
botones.emplace(tp, BotonConTexto({boton_data, font}));
botones.at(tp).establecer_contenedor(rect_panel);
ordenados.push_back(&botones.at(tp));
}

// Posiciona los botones
const int dif_vertical = medidas::DIF_VERTICAL_BOTONES_ENCARGAR;
colocar_botones_en_vertical(
ordenados, pos_inicial_relativa_al_panel, dif_vertical
);
return botones;
}

TipoPizzaToBoton _crear_botones_despachar(
const OptionalFont &font, //
const dominio::TiposDePizza &tp_disponibles //
Expand Down Expand Up @@ -223,7 +159,7 @@ BotonesApp::BotonesApp(
)
: empezar(_crear_boton_empezar(font)),
generales(_crear_botones_generales(font)),
encargar(_crear_botones_encargar(font, tp_disponibles)),

despachar(_crear_botones_despachar(font, tp_disponibles)) {
_establecer_todos();
}
Expand Down
1 change: 1 addition & 0 deletions src/vista/botones_app.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class BotonesApp : public sf::Drawable {

public:
BotonConTexto empezar;
// Solo para recibir input
TipoPizzaToBoton encargar;
TipoPizzaToBoton despachar;
BotonesGenerales generales;
Expand Down
62 changes: 62 additions & 0 deletions src/vista/botones_encargar.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#pragma once

#include "../modelo/dominio.h"
#include "../templates/helpers.h"
#include "basicos_vista.h"
#include "componentes/boton_con_texto.h"
#include "componentes/botones.h"
#include "datos_botones.h"
#include <cassert>
#include <vector>

using std::vector;
using TipoPizzaToBoton = std::map<dominio::TipoPizza, BotonConTexto>;

/**
* Crea y posiciona los botones asociados con la accion "encargar".
* @param font: Fuente a utilizar para el texto del boton.
* @param tp_disponibles: Tipos de pizza disponibles para encargar.
* @return TipoPizzaToBoton: Un mapa que asocia cada TipoPizza con un
* BotonConTexto.
*/
TipoPizzaToBoton _crear_botones_encargar(
const OptionalFont &font, //
const dominio::TiposDePizza &tp_disponibles //
) {
// Constantes para definir la posicion de cada boton
const auto rect_panel = basicos_vista::obtener_rect_panel( //
IndicePanel::PANEL_ENCARGAR
);
const sf::Vector2f pos_panel = rect_panel.getPosition();
const auto pos_inicial_relativa_al_panel = sf::Vector2f(
medidas::MARGEN_IZQ_ETIQUETAS, medidas::FILA_CONTENIDO_PANEL
);

// Lambda para crear boton data
const auto crear_boton_data = [](dominio::TipoPizza tp) {
assert(has_key(tipo_pizza_to_string, tp));
const std::string pizza_str = tipo_pizza_to_string.at(tp);
return BotonData{
pizza_str, //
colores::botones_encargar::FONDO, //
colores::botones_encargar::TEXTO //
};
};

// Crea los botones
TipoPizzaToBoton botones;
vector<BotonConTexto *> ordenados;
for (auto tp : tp_disponibles) {
const BotonData boton_data = crear_boton_data(tp);
botones.emplace(tp, BotonConTexto({boton_data, font}));
botones.at(tp).establecer_contenedor(rect_panel);
ordenados.push_back(&botones.at(tp));
}

// Posiciona los botones
const int dif_vertical = medidas::DIF_VERTICAL_BOTONES_ENCARGAR;
colocar_botones_en_vertical(
ordenados, pos_inicial_relativa_al_panel, dif_vertical
);
return botones;
}
13 changes: 7 additions & 6 deletions src/vista/componentes/barra_progreso.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "barra_progreso.h"
#include "../../templates/dibujar_elementos.h"
#include "etiqueta.h"
#include "crear_etiqueta.h"
#include "etiqueta.h"
#include <cassert>

///////////////////////////////////////////
Expand Down Expand Up @@ -55,11 +55,12 @@ std::shared_ptr<Etiqueta> BarraProgresoConNombre::_crear_etiqueta(
const OptionalFont &font //
) {
return crear_etiqueta(
texto, //
24, //
color_texto, //
font, //
{posicion_barra.x + 20, posicion_barra.y + 5} //
texto, //
24, //
color_texto, //
font, //
{posicion_barra.x + 20, posicion_barra.y + 5}, //
std::string("etiqueta barra progreso")
);
}

Expand Down
6 changes: 4 additions & 2 deletions src/vista/componentes/boton_con_texto.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "boton_con_texto.h"
#include "../../templates/dibujar_elementos.h"
#include "etiqueta.h"
#include "crear_etiqueta.h"
#include "etiqueta.h"
#include <SFML/Graphics/RenderTarget.hpp>
#include <cassert>

Expand Down Expand Up @@ -160,7 +160,9 @@ BotonConTexto::BotonConTexto(
boton_data.data.texto, //
medidas::TAMANO_TEXTO_BOTONES * escala, //
boton_data.data.color_texto, //
boton_data.font //
boton_data.font, //
Vector2f_CERO, //
"etiqueta boton" //
);
const sf::FloatRect rect_etiqueta = _etiqueta->get_global_bounds();

Expand Down
29 changes: 16 additions & 13 deletions src/vista/componentes/crear_etiqueta.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,33 @@
std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
int tamano_fuente, //
const OptionalFont &font //
const OptionalFont &font, //
const std::string nombre //
) {
return std::make_shared<Etiqueta>(texto, tamano_fuente, font);
return std::make_shared<Etiqueta>(texto, tamano_fuente, font, nombre);
}

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

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

/* Sobrecarga para usar EstiloTexto */
std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
const EstiloTexto &estilo, //
const OptionalFont &font, //
const sf::Vector2f &posicion //
const std::string &texto, //
const EstiloTexto &estilo, //
const OptionalFont &font, //
const sf::Vector2f &posicion, //
const std::string nombre //
) {
return std::make_shared<Etiqueta>(texto, estilo, font, posicion);
return std::make_shared<Etiqueta>(texto, estilo, font, posicion, nombre);
}
24 changes: 14 additions & 10 deletions src/vista/componentes/crear_etiqueta.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,26 @@ const auto Vector2f_CERO = sf::Vector2f(0, 0);
std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
int tamano_fuente, //
const OptionalFont & //
const OptionalFont &, //
const std::string nombre //
);

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

);
// const sf::Vector2f &posicion = Vector2f_CERO //

/* Sobrecarga para usar EstiloTexto */
std::shared_ptr<Etiqueta> crear_etiqueta(
const std::string &texto, //
const EstiloTexto &estilo, //
const OptionalFont &font, //
const sf::Vector2f &posicion //
const std::string &texto, //
const EstiloTexto &estilo, //
const OptionalFont &font, //
const sf::Vector2f &posicion, //
const std::string nombre //
);
31 changes: 18 additions & 13 deletions src/vista/componentes/etiqueta.cpp
Original file line number Diff line number Diff line change
@@ -1,38 +1,43 @@
#include "etiqueta.h"
#include "../../juego_assert.h"
#include "../../shared/font.h"

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

Etiqueta::Etiqueta(
const std::string &texto, //
int tamano_fuente, //
const sf::Color &color, //
const OptionalFont &font, //
const sf::Vector2f &posicion //
const std::string &texto, //
int tamano_fuente, //
const sf::Color &color, //
const OptionalFont &font, //
const sf::Vector2f &posicion, //
const std::string nombre //
)
: Etiqueta(texto, tamano_fuente, font) {
: Etiqueta(texto, tamano_fuente, font, nombre) {
etiqueta.setFillColor(color);
etiqueta.setPosition(posicion);
}

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

void Etiqueta::actualizar_texto(const std::string &texto) { //
etiqueta.setString(texto);
Expand All @@ -47,6 +52,6 @@ void Etiqueta::draw(
sf::RenderTarget &target, //
sf::RenderStates states //
) const {
assert(font.exists());
juego_assert(font.exists(), nombre);
target.draw(etiqueta);
};
Loading

0 comments on commit 82cf02b

Please sign in to comment.