From 4618b9d7f14a331d9edb345d2232ca673aed5400 Mon Sep 17 00:00:00 2001 From: gulliver-madrid <49131885+gulliver-madrid@users.noreply.github.com> Date: Tue, 7 Nov 2023 10:54:16 +0100 Subject: [PATCH] =?UTF-8?q?A=C3=B1ade=20despachar=5Fpizza()=20a=20EstadoMo?= =?UTF-8?q?delo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/estado_nivel.cpp | 12 ++++++++++++ src/estado_nivel.h | 5 +++++ src/modelo/control_pizzas.h | 2 +- src/nivel.cpp | 4 ++-- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/estado_nivel.cpp b/src/estado_nivel.cpp index 4f88a964..cd43713f 100644 --- a/src/estado_nivel.cpp +++ b/src/estado_nivel.cpp @@ -1,5 +1,6 @@ #include "estado_nivel.h" #include "general.h" +#include "modelo/control_pizzas.h" //////// EstadoModelo @@ -16,6 +17,17 @@ void EstadoModelo::anadir_encargo(dominio::TipoPizza tp) { encargos.anadir(encargo); } +/* + * Despacha una pizza a los clientes del tipo indicado. Devuelve true si ya + * se han cubierto todos los pedidos, y false en caso contrario. + */ +bool EstadoModelo::despachar_pizza( // + const dominio::TipoPizza tp +) { + control_pizzas.procesar_despacho(tp); + return (!control_pizzas.faltan_pedidos_por_cubrir()); +} + //////// Estado Estado::Estado(FaseNivel fase, modelo::ControlPizzas &control) diff --git a/src/estado_nivel.h b/src/estado_nivel.h index 3aad9bef..bb0770e1 100644 --- a/src/estado_nivel.h +++ b/src/estado_nivel.h @@ -14,7 +14,12 @@ struct EstadoModelo { GestorTiempoJuego gestor_tiempo; EstadoModelo(modelo::ControlPizzas &control); + /* Encarga una pizza de tipo tp */ void anadir_encargo(dominio::TipoPizza tp); + /* Despacha una pizza del tipo indicado. */ + bool despachar_pizza( // + const dominio::TipoPizza tp + ); }; /* Estado mutable de un nivel */ diff --git a/src/modelo/control_pizzas.h b/src/modelo/control_pizzas.h index 85b884a5..5544ef13 100644 --- a/src/modelo/control_pizzas.h +++ b/src/modelo/control_pizzas.h @@ -21,7 +21,7 @@ namespace modelo { const EsSistemaEstatico &es_estatico; ControlPizzas(Pedidos pedidos_, const EsSistemaEstatico &es_estatico); const dominio::TiposDePizza &get_tipos_disponibles() const; - void procesar_despacho(const dominio::TipoPizza tp); + void procesar_despacho(dominio::TipoPizza tp); int obtener_total_preparadas() const; int obtener_objetivo_total_estatico() const; bool faltan_pedidos_por_cubrir() const; diff --git a/src/nivel.cpp b/src/nivel.cpp index da25175c..e052c942 100644 --- a/src/nivel.cpp +++ b/src/nivel.cpp @@ -40,8 +40,8 @@ class Realizador : public RealizadorBase { const dominio::TipoPizza tp ) { assert(estado.fase_actual == FaseNivel::Activa); - estado.estado_modelo.control_pizzas.procesar_despacho(tp); - if (!estado.estado_modelo.control_pizzas.faltan_pedidos_por_cubrir()) { + const auto pedidos_cubiertos = estado.estado_modelo.despachar_pizza(tp); + if (pedidos_cubiertos) { return FaseNivel::EsperaAntesDeResultado; } return std::nullopt;