Compare commits

..

No commits in common. "a164593cd85e7159929a4a530df1634b6eadc3ff" and "9d5971e23a57fdb8b95b8a06b35ef667395a8c09" have entirely different histories.

11 changed files with 122 additions and 130 deletions

3
.gitmodules vendored
View file

@ -13,6 +13,3 @@
[submodule "external/ImFileDialog"] [submodule "external/ImFileDialog"]
path = external/ImFileDialog path = external/ImFileDialog
url = https://github.com/dfranx/ImFileDialog.git url = https://github.com/dfranx/ImFileDialog.git
[submodule "external/svector"]
path = external/svector
url = https://github.com/martinus/svector.git

View file

@ -35,8 +35,6 @@ else ()
message(STATUS "ccache not found") message(STATUS "ccache not found")
endif () endif ()
add_subdirectory(external/svector)
option(BUILD_SHARED_LIBS "Build shared libraries" OFF) option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" OFF) option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" OFF)
option(GLFW_BUILD_TESTS "Build the GLFW test programs" OFF) option(GLFW_BUILD_TESTS "Build the GLFW test programs" OFF)
@ -106,7 +104,7 @@ add_executable(BillySheet ${SOURCES})
target_include_directories(BillySheet PRIVATE include include/imgui external/ImFileDialog) target_include_directories(BillySheet PRIVATE include include/imgui external/ImFileDialog)
set_target_properties(BillySheet spdlog svector PROPERTIES set_target_properties(BillySheet spdlog PROPERTIES
CXX_STANDARD 17 CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF CXX_EXTENSIONS OFF
@ -114,7 +112,7 @@ set_target_properties(BillySheet spdlog svector PROPERTIES
# UNITY_BUILD ON # UNITY_BUILD ON
) )
set_target_properties(spdlog svector PROPERTIES UNITY_BUILD ON) set_target_properties(spdlog PROPERTIES UNITY_BUILD ON)
set_target_properties(glfw PROPERTIES set_target_properties(glfw PROPERTIES
C_STANDARD 11 C_STANDARD 11
@ -124,35 +122,27 @@ set_target_properties(glfw PROPERTIES
UNITY_BUILD ON UNITY_BUILD ON
) )
set_target_properties(spdlog PROPERTIES UNITY_BUILD ON)
target_compile_definitions(BillySheet PRIVATE target_compile_definitions(BillySheet PRIVATE
$<$<CONFIG:Debug>:_GLIBCXX_DEBUG> $<$<CONFIG:Debug>:_GLIBCXX_DEBUG>
$<$<CONFIG:Debug>:SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_DEBUG> $<$<CONFIG:Debug>:SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_DEBUG>
$<$<CONFIG:Release>:SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_ERROR>) $<$<CONFIG:Release>:SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_ERROR>)
target_compile_definitions(spdlog PRIVATE $<$<CONFIG:Debug>:_GLIBCXX_DEBUG>) target_compile_definitions(spdlog PRIVATE
target_compile_definitions(svector INTERFACE $<$<CONFIG:Debug>:_GLIBCXX_DEBUG>) $<$<CONFIG:Debug>:_GLIBCXX_DEBUG>)
target_compile_definitions(glfw PRIVATE $<$<CONFIG:Debug>:_GLIBCXX_DEBUG>)
target_compile_definitions(glfw PRIVATE
$<$<CONFIG:Debug>:_GLIBCXX_DEBUG>)
target_compile_options(spdlog PRIVATE ${COMPILE_FLAGS}) target_compile_options(spdlog PRIVATE ${COMPILE_FLAGS})
target_compile_options(svector INTERFACE ${COMPILE_FLAGS})
target_compile_options(glfw PRIVATE ${COMPILE_FLAGS}) target_compile_options(glfw PRIVATE ${COMPILE_FLAGS})
target_compile_options(BillySheet PRIVATE ${COMPILE_FLAGS}) target_compile_options(BillySheet PRIVATE ${COMPILE_FLAGS})
target_link_options(spdlog PRIVATE ${LINKER_OPTIONS}) target_link_options(spdlog PRIVATE ${LINKER_OPTIONS})
target_link_options(svector INTERFACE ${LINKER_OPTIONS})
target_link_options(glfw PRIVATE ${LINKER_OPTIONS}) target_link_options(glfw PRIVATE ${LINKER_OPTIONS})
target_link_options(BillySheet PRIVATE ${LINKER_OPTIONS}) target_link_options(BillySheet PRIVATE ${LINKER_OPTIONS})
target_link_libraries(spdlog PRIVATE ${LINKER_FLAGS}) target_link_libraries(spdlog PRIVATE ${LINKER_FLAGS})
target_link_libraries(svector INTERFACE ${LINKER_FLAGS})
target_link_libraries(glfw PRIVATE ${LINKER_FLAGS}) target_link_libraries(glfw PRIVATE ${LINKER_FLAGS})
target_link_libraries(BillySheet glfw target_link_libraries(BillySheet glfw spdlog::spdlog_header_only OpenGL::OpenGL GLEW::GLEW nlohmann_json::nlohmann_json ${Boost_LIBRARIES} ${LINKER_FLAGS})
spdlog::spdlog_header_only
svector::svector
OpenGL::OpenGL
GLEW::GLEW
nlohmann_json::nlohmann_json
${Boost_LIBRARIES}
${LINKER_FLAGS}
)

1
external/svector vendored

@ -1 +0,0 @@
Subproject commit 74817cfbdbaceb415508de1ff10a0589bf8f25d7

View file

@ -10,7 +10,6 @@
#include <functional> #include <functional>
#include <variant> #include <variant>
#include <string_view> #include <string_view>
#include <ankerl/svector.h>
#include "characteristic/characteristic.hpp" #include "characteristic/characteristic.hpp"
// helper type for the visitor // helper type for the visitor
@ -46,7 +45,7 @@ namespace character {
class BillyObjects final { class BillyObjects final {
public: public:
using billyObject = std::variant<weapons, equipments, tools>; using billyObject = std::variant<weapons, equipments, tools>;
using container = ankerl::svector<billyObject, 3>; using container = std::array<billyObject, 3>;
static constexpr std::string_view sword{ "Sword" }; static constexpr std::string_view sword{ "Sword" };
static constexpr std::string_view lance{ "Lance" }; static constexpr std::string_view lance{ "Lance" };
@ -69,7 +68,9 @@ namespace character {
void pop_object(CharacterSheet &sheet) noexcept; void pop_object(CharacterSheet &sheet) noexcept;
[[nodiscard]] const container &get_objects() const noexcept { return objects; } [[nodiscard]] std::pair<const container &, std::int8_t> get_objects() const noexcept {
return { objects, end_object };
}
// void insert_weapon(weapons weapon, CharacterSheet &sheet) noexcept; // void insert_weapon(weapons weapon, CharacterSheet &sheet) noexcept;
@ -77,13 +78,15 @@ namespace character {
container objects; container objects;
std::plus<std::uint32_t> plus; std::plus<std::uint32_t> plus;
std::minus<std::uint32_t> minus; std::minus<std::uint32_t> minus;
std::uint8_t end_object{ 0 };
static void change_carac_weapon(const weapons &arg, static void change_carac_weapon(const weapons &arg,
CharacterSheet &sheet, CharacterSheet &sheet,
characteristic::Characteristic &localHabilete, characteristic::Characteristic &localHabilete,
characteristic::Characteristic &localAdresse, characteristic::Characteristic &localAdresse,
characteristic::Characteristic &localEndurance, characteristic::Characteristic &localEndurance,
const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &operation) noexcept; const std::function<std::uint32_t(std::uint32_t,
std::uint32_t)> &operation) noexcept;
static void change_carac_equipment(const equipments &arg, static void change_carac_equipment(const equipments &arg,
CharacterSheet &sheet, CharacterSheet &sheet,
@ -92,7 +95,8 @@ namespace character {
characteristic::Characteristic &localEndurance, characteristic::Characteristic &localEndurance,
characteristic::Characteristic &localChance, characteristic::Characteristic &localChance,
const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &primary, const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &primary,
const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &complement) noexcept; const std::function<std::uint32_t(std::uint32_t,
std::uint32_t)> &complement) noexcept;
static void change_carac_tools(const tools &arg, static void change_carac_tools(const tools &arg,
CharacterSheet &sheet, CharacterSheet &sheet,
@ -100,7 +104,8 @@ namespace character {
characteristic::Characteristic &localAdresse, characteristic::Characteristic &localAdresse,
characteristic::Characteristic &localEndurance, characteristic::Characteristic &localEndurance,
characteristic::Characteristic &localChance, characteristic::Characteristic &localChance,
const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &operation) noexcept; const std::function<std::uint32_t(std::uint32_t,
std::uint32_t)> &operation) noexcept;
}; };
} }

View file

@ -45,8 +45,6 @@ namespace character {
std::uint32_t damage{ 0 }; std::uint32_t damage{ 0 };
std::uint32_t critique{ 0 };
std::uint32_t glory{ 0 }; std::uint32_t glory{ 0 };
std::uint32_t money{ 0 }; std::uint32_t money{ 0 };

View file

@ -9,8 +9,9 @@ namespace character {
using characteristic::Characteristic; using characteristic::Characteristic;
void BillyObjects::push_object(const billyObject &object, CharacterSheet &sheet) noexcept { void BillyObjects::push_object(const billyObject &object, CharacterSheet &sheet) noexcept {
if (objects.size() < 3) { if (end_object < 3) {
objects.emplace_back(object); objects.at(end_object) = object;
++end_object;
auto &local_habilete = static_cast<Characteristic &>(sheet.habilete); auto &local_habilete = static_cast<Characteristic &>(sheet.habilete);
auto &local_adresse = static_cast<Characteristic &>(sheet.adresse); auto &local_adresse = static_cast<Characteristic &>(sheet.adresse);
@ -48,9 +49,9 @@ namespace character {
} }
void BillyObjects::pop_object(CharacterSheet &sheet) noexcept { void BillyObjects::pop_object(CharacterSheet &sheet) noexcept {
if (!objects.empty()) { if (end_object > 0) {
const billyObject obj = objects.back(); const auto &obj = objects.at(end_object - 1);
objects.pop_back(); --end_object;
auto &local_habilete = static_cast<Characteristic &>(sheet.habilete); auto &local_habilete = static_cast<Characteristic &>(sheet.habilete);
auto &local_adresse = static_cast<Characteristic &>(sheet.adresse); auto &local_adresse = static_cast<Characteristic &>(sheet.adresse);
@ -93,7 +94,8 @@ namespace character {
Characteristic &localAdresse, Characteristic &localAdresse,
Characteristic &localEndurance, Characteristic &localEndurance,
Characteristic &localChance, Characteristic &localChance,
const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &operation) noexcept { const std::function<std::uint32_t(std::uint32_t,
std::uint32_t)> &operation) noexcept {
switch (arg) { switch (arg) {
case tools::Fourche: case tools::Fourche:
localHabilete.materiel = operation(localHabilete.materiel, 1); localHabilete.materiel = operation(localHabilete.materiel, 1);
@ -118,7 +120,8 @@ namespace character {
Characteristic &localEndurance, Characteristic &localEndurance,
Characteristic &localChance, Characteristic &localChance,
const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &primary, const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &primary,
const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &complement) noexcept { const std::function<std::uint32_t(std::uint32_t,
std::uint32_t)> &complement) noexcept {
switch (arg) { switch (arg) {
case equipments::Chainmail: case equipments::Chainmail:
localHabilete.materiel = complement(localHabilete.materiel, 1); localHabilete.materiel = complement(localHabilete.materiel, 1);
@ -144,7 +147,8 @@ namespace character {
Characteristic &localHabilete, Characteristic &localHabilete,
Characteristic &localAdresse, Characteristic &localAdresse,
Characteristic &localEndurance, Characteristic &localEndurance,
const std::function<std::uint32_t(std::uint32_t, std::uint32_t)> &operation) noexcept { const std::function<std::uint32_t(std::uint32_t,
std::uint32_t)> &operation) noexcept {
switch (arg) { switch (arg) {
case weapons::Sword: case weapons::Sword:
localHabilete.materiel = operation(localHabilete.materiel, 4); localHabilete.materiel = operation(localHabilete.materiel, 4);

View file

@ -58,10 +58,9 @@ void gui::Gui::render_gui(const Controller &controller) {
for (std::size_t i = 0; i < GuiData::classes.size(); ++i) { for (std::size_t i = 0; i < GuiData::classes.size(); ++i) {
const bool is_selected = (data.billy.get_current_class() == static_cast<character::classe>(i)); const bool is_selected = (data.billy.get_current_class() == static_cast<character::classe>(i));
if (is_selected) { if (is_selected)
ImGui::SetItemDefaultFocus(); ImGui::SetItemDefaultFocus();
} }
}
ImGui::EndCombo(); ImGui::EndCombo();
} }
@ -162,7 +161,7 @@ void gui::Gui::chance_menu() noexcept {
ImVec2(ImGui::GetWindowWidth() / 3, ImGui::GetWindowHeight() * 0.2f), ImVec2(ImGui::GetWindowWidth() / 3, ImGui::GetWindowHeight() * 0.2f),
ImGuiChildFlags_Border); ImGuiChildFlags_Border);
ImGui::Text("Chance"); ImGui::Text("Chance");
characteristic_gui(static_cast<const Characteristic &>(data.billy.get_chance())); characteristic_gui(static_cast<const Characteristic&>(data.billy.get_chance()));
ImGui::EndChild(); ImGui::EndChild();
} }