BillySheet/src/controller.cpp

63 lines
2.2 KiB
C++
Raw Permalink 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 {
2024-01-28 20:31:50 +01:00
if (ifd::FileDialog::Instance().IsDone(menu_data.open_character_key)) {
if (ifd::FileDialog::Instance().HasResult()) {
fs::path str = ifd::FileDialog::Instance().GetResult();
SPDLOG_DEBUG("path opening: {}", str.string());
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>();
}
ifd::FileDialog::Instance().Close();
}
if (ifd::FileDialog::Instance().IsDone(menu_data.save_character_key)) {
if (ifd::FileDialog::Instance().HasResult()) {
fs::path str = ifd::FileDialog::Instance().GetResult();
SPDLOG_DEBUG("path saving: {}", str.string());
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);
}
ifd::FileDialog::Instance().Close();
}
2022-01-20 22:30:14 +01:00
}
void Controller::control_sheet() const noexcept {
2024-01-28 20:31:50 +01:00
if (menu_data.is_edit_mode()) {
// TODO
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
}
}