You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
51 lines
1.1 KiB
#include "../pch.h"
|
|
#include "../StorageEditor/StorageEditor.h"
|
|
#include <memory>
|
|
|
|
class InputManager {
|
|
|
|
public:
|
|
typedef int MenuOption;
|
|
|
|
private:
|
|
std::shared_ptr<StorageEditor> editor;
|
|
|
|
MenuOption selectedOption;
|
|
|
|
MenuOption askMenuOption(const std::string& question, const std::vector<std::string>& answers);
|
|
|
|
void displayDialog(const std::string& question, const std::vector<std::string>& answers);
|
|
|
|
struct WareAndAmount {
|
|
Ware ware;
|
|
int amount;
|
|
};
|
|
|
|
public:
|
|
|
|
InputManager(std::shared_ptr<StorageEditor> storageEditor);
|
|
|
|
void displayMainMenu();
|
|
|
|
void displayWaren(const std::vector<Ware>& waren);
|
|
|
|
|
|
WareAndAmount displayAddWareDialog();
|
|
|
|
WareAndAmount displayRemoveWareDialog();
|
|
|
|
MenuOption getSelectedOption();
|
|
|
|
void setSelectedOption(MenuOption option);
|
|
|
|
template <typename T>
|
|
T getInput(const std::string& message) const;
|
|
|
|
bool getNeedsCooling();
|
|
|
|
std::vector<WareAndAmount> sortAndGroupWaren(const std::vector<Ware>& waren);
|
|
|
|
|
|
|
|
|
|
};
|