BillySheet/src/controller.cpp

63 lines
1.8 KiB
C++
Raw Normal View History

2022-01-17 19:57:00 +01:00
#include "controller.hpp"
2022-01-20 23:16:51 +01:00
#include <fstream>
2022-01-17 23:36:12 +01:00
#include <spdlog/spdlog.h>
2022-01-20 23:16:51 +01:00
#include <nlohmann/json.hpp>
#include "ImFileDialog.h"
#include "gui/menu/menu_data.hpp"
#include "character_sheet.hpp"
2022-01-20 22:30:14 +01:00
void Controller::control_menu() const noexcept {
if (ifd::FileDialog::Instance().IsDone(menu_data.open_character_key)) {
2022-01-17 23:36:12 +01:00
if (ifd::FileDialog::Instance().HasResult()) {
fs::path str = ifd::FileDialog::Instance().GetResult();
SPDLOG_DEBUG("path opening: {}", str.string());
2022-01-20 23:18:34 +01:00
const auto filename = str.filename();
const auto save_path = str.remove_filename();
menu_data.set_filename(*this, filename);
menu_data.set_save_path(*this, save_path);
std::ifstream file{ save_path / filename };
json j = json::parse(file);
file.close();
sheet = j.at("character_sheet").get<character::CharacterSheet>();
2022-01-17 23:36:12 +01:00
}
ifd::FileDialog::Instance().Close();
}
2022-01-20 22:30:14 +01:00
if (ifd::FileDialog::Instance().IsDone(menu_data.save_character_key)) {
2022-01-17 23:36:12 +01:00
if (ifd::FileDialog::Instance().HasResult()) {
2022-01-20 23:16:51 +01:00
fs::path str = ifd::FileDialog::Instance().GetResult();
2022-01-17 23:36:12 +01:00
SPDLOG_DEBUG("path saving: {}", str.string());
2022-01-20 23:16:51 +01:00
const auto filename = str.filename();
const auto save_path = str.remove_filename();
menu_data.set_filename(*this, filename);
menu_data.set_save_path(*this, save_path);
std::ofstream file{ save_path / filename };
json j;
j.emplace("character_sheet", sheet);
file << j.dump(4);
2022-01-17 23:36:12 +01:00
}
ifd::FileDialog::Instance().Close();
}
2022-01-20 22:30:14 +01:00
}
void Controller::control_sheet() const noexcept {
if (menu_data.is_edit_mode()) {
// TODO
2022-01-25 19:53:58 +01:00
switch (sheet.get_current_class()) {
case character::classe::Prudent:
// TODO
break;
case character::classe::Guerrier:
// TODO
break;
case character::classe::Paysan:
// TODO
break;
case character::classe::Debrouillard:
// TODO
break;
}
} else {
// TODO
}
}