From 507d1af6329bec2af46884e6922b59167a46edff Mon Sep 17 00:00:00 2001 From: knox Date: Tue, 31 Oct 2023 15:22:45 +0100 Subject: [PATCH] added soto strikes && barebone for the dagda CM --- killproof_me/KillproofUITable.h | 326 ++++++------ killproof_me/Killproofs.cpp | 196 +++---- killproof_me/Killproofs.h | 621 +++++++++++----------- killproof_me/Lang.h | Bin 44694 -> 46886 bytes killproof_me/icons/Cerus.png | Bin 0 -> 7723 bytes killproof_me/icons/Dagda.png | Bin 0 -> 7120 bytes killproof_me/killproof_me.rc | 400 +++++++------- killproof_me/killproof_me.vcxproj | 436 +++++++-------- killproof_me/killproof_me.vcxproj.filters | 384 ++++++------- killproof_me/resource.h | 149 +++--- 10 files changed, 1277 insertions(+), 1235 deletions(-) create mode 100644 killproof_me/icons/Cerus.png create mode 100644 killproof_me/icons/Dagda.png diff --git a/killproof_me/KillproofUITable.h b/killproof_me/KillproofUITable.h index b26e933..46e0f4b 100644 --- a/killproof_me/KillproofUITable.h +++ b/killproof_me/KillproofUITable.h @@ -1,159 +1,167 @@ -#pragma once - -#include "global.h" -#include "Lang.h" -#include "Killproofs.h" -#include "Player.h" -#include "resource.h" - -#include "extension/IconLoader.h" -#include "extension/Windows/MainTable.h" - -using std::string_literals::operator ""s; - -constexpr ImU32 JOIN_TIME_ID = 32; -constexpr ImU32 ACCOUNT_NAME_ID = 29; -constexpr ImU32 CHARACTER_NAME_ID = 30; -constexpr ImU32 KILLPROOF_ID_ID = 31; -constexpr ImU32 SUBGROUP_ID = 64; - -static std::optional UCE_TEXTURE; -static std::optional MAI_TRIN_TEXTURE; -static std::optional ANKKA_TEXTURE; -static std::optional LI_TEXTURE; -static std::optional HARVEST_TEXTURE; -static std::optional OLC_TEXTURE; - -#define GET_TEXTURE_CUSTOM(optional, id) \ - std::invoke([] { \ - auto& iconLoader = IconLoader::instance(); \ - if (!optional) \ - optional = iconLoader.LoadTexture(id); \ - return iconLoader.GetTexture(optional.value()); \ - }) - -// the index is used for the order -static const std::vector COLUMN_SETUP { - // general stuff - {JOIN_TIME_ID, [] {return "#"s;}, []{return nullptr;}, "0", true}, - {ACCOUNT_NAME_ID, [] {return Localization::STranslate(KMT_AccountName);}, []{return nullptr;}, "0", true}, - {CHARACTER_NAME_ID, [] {return Localization::STranslate(KMT_CharacterName);}, []{return nullptr;}, "0", true}, - {KILLPROOF_ID_ID, [] {return Localization::STranslate(KMT_KillproofId);}, []{return nullptr;}, "0", true}, - {SUBGROUP_ID, [] {return Localization::STranslate(KMT_SubgroupText);}, []{return nullptr;}, "0", false}, - - // Raids - // {0, [] {return to_string_short(Killproof::li);}, []{ return GET_TEXTURE(LI, ID_LI); }, "1", true}, - // {1, [] {return to_string_short(Killproof::ld);}, []{ return GET_TEXTURE(LD, ID_LD); }, "1", true}, - {2, [] {return to_string_short(Killproof::liLd);}, []{ return GET_TEXTURE(LI, ID_LI); }, "1", true}, - - // fractals - {3, [] {return to_string_short(Killproof::uce);}, []{ return GET_TEXTURE_CUSTOM(UCE_TEXTURE, ID_UFE); }, "2", true}, - {4, [] {return to_string_short(Killproof::ufe);}, []{ return GET_TEXTURE_CUSTOM(UCE_TEXTURE, ID_UFE); }, "2", true}, - - // W1 - {5, [] {return to_string_short(Killproof::vg);}, []{ return GET_TEXTURE(VG, ID_VG); }, "1.1", [] {return to_string_long(Killproof::vg);}, false}, - {6, [] {return to_string_short(Killproof::gorse);}, []{ return GET_TEXTURE(Gorse, ID_Gorse); }, "1.1", [] {return to_string_long(Killproof::gorse);}, false}, - {7, [] {return to_string_short(Killproof::sabetha);}, []{ return GET_TEXTURE(Sabetha, ID_Sabetha); }, "1.1", [] {return to_string_long(Killproof::sabetha);}, false}, - - // W2 - {8, [] {return to_string_short(Killproof::sloth);}, []{ return GET_TEXTURE(Sloth, ID_Sloth); }, "1.2", false}, - {9, [] {return to_string_short(Killproof::matthias);}, []{ return GET_TEXTURE(Matt, ID_Matt); }, "1.2", [] {return to_string_long(Killproof::matthias);}, false}, - - // W3 - {10, [] {return to_string_short(Killproof::escort);}, []{ return GET_TEXTURE(Escort, ID_Escort); }, "1.3", false}, - {11, [] {return to_string_short(Killproof::kc);}, []{ return GET_TEXTURE(KC, ID_KC); }, "1.3", [] {return to_string_long(Killproof::kc);}, false}, - {12, [] {return to_string_short(Killproof::xera);}, []{ return GET_TEXTURE(Xera, ID_Xera); }, "1.3", false}, - - // W4 - {13, [] {return to_string_short(Killproof::cairn);}, []{ return GET_TEXTURE(Cairn, ID_Cairn); }, "1.4", [] {return to_string_long(Killproof::cairn);}, false}, - {14, [] {return to_string_short(Killproof::mo);}, []{ return GET_TEXTURE(MO, ID_MO); }, "1.4", [] {return to_string_long(Killproof::mo);}, false}, - {15, [] {return to_string_short(Killproof::samarog);}, []{ return GET_TEXTURE(Samarog, ID_Samarog); }, "1.4", false}, - {16, [] {return to_string_short(Killproof::deimos);}, []{ return GET_TEXTURE(Deimos, ID_Deimos); }, "1.4", false}, - - // W5 - {17, [] {return to_string_short(Killproof::desmina);}, []{ return GET_TEXTURE(Desmina, ID_Desmina); }, "1.5", [] {return to_string_long(Killproof::desmina);}, false}, - {18, [] {return to_string_short(Killproof::river);}, []{ return GET_TEXTURE(River, ID_River); }, "1.5", [] {return to_string_long(Killproof::river);}, false}, - {19, [] {return to_string_short(Killproof::statues);}, []{ return GET_TEXTURE(Statues, ID_Statues); }, "1.5", false}, - {20, [] {return to_string_short(Killproof::dhuum);}, []{ return GET_TEXTURE(Dhuum, ID_Dhuum); }, "1.5", true}, - - // W6 - {21, [] {return to_string_short(Killproof::ca);}, []{ return GET_TEXTURE(CA, ID_CA); }, "1.6", [] {return to_string_long(Killproof::ca);}, false}, - {22, [] {return to_string_short(Killproof::twins);}, []{ return GET_TEXTURE(Twins, ID_Twins); }, "1.6", [] {return to_string_long(Killproof::twins);}, false}, - {23, [] {return to_string_short(Killproof::qadim);}, []{ return GET_TEXTURE(Qadim1, ID_Qadim1); }, "1.6", true}, - - // W7 - {24, [] {return to_string_short(Killproof::sabir);}, []{ return GET_TEXTURE(Sabir, ID_Sabir); }, "1.7", false}, - {25, [] {return to_string_short(Killproof::adina);}, []{ return GET_TEXTURE(Adina, ID_Adina); }, "1.7", false}, - {26, [] {return to_string_short(Killproof::qadim2);}, []{ return GET_TEXTURE(Qadim2, ID_Qadim2); }, "1.7", [] {return to_string_long(Killproof::qadim2);}, true}, - - // Strikes - {27, [] {return to_string_short(Killproof::boneskinnerVial);}, []{ return GET_TEXTURE(Vial, ID_Boneskinner_Vial); }, "3", [] {return to_string_long(Killproof::boneskinnerVial);}, true}, - - // EOD strikes - {35, [] {return to_string_short(Killproof::maiTrin);}, []{ return GET_TEXTURE_CUSTOM(MAI_TRIN_TEXTURE, ID_Mai_Trin); }, "3", [] {return to_string_long(Killproof::maiTrin);}, false}, - {33, [] {return to_string_short(Killproof::ankka);}, []{ return GET_TEXTURE_CUSTOM(ANKKA_TEXTURE, ID_Ankka); }, "3", [] {return to_string_long(Killproof::ankka);}, false}, - {37, [] {return to_string_short(Killproof::ministerLi);}, []{ return GET_TEXTURE_CUSTOM(LI_TEXTURE, ID_Minister_Li); }, "3", [] {return to_string_long(Killproof::ministerLi);}, false}, - {34, [] {return to_string_short(Killproof::harvest);}, []{ return GET_TEXTURE_CUSTOM(HARVEST_TEXTURE, ID_Harvest); }, "3", [] {return to_string_long(Killproof::harvest);}, false}, - {36, [] {return to_string_short(Killproof::maiTrinCM);}, []{ return GET_TEXTURE_CUSTOM(MAI_TRIN_TEXTURE, ID_Mai_Trin); }, "3", [] {return to_string_long(Killproof::maiTrinCM);}, false}, - {38, [] {return to_string_short(Killproof::ankkaCM);}, []{ return GET_TEXTURE_CUSTOM(ANKKA_TEXTURE, ID_Ankka); }, "3", [] {return to_string_long(Killproof::ankkaCM);}, false}, - {39, [] {return to_string_short(Killproof::ministerLiCM);}, []{ return GET_TEXTURE_CUSTOM(LI_TEXTURE, ID_Minister_Li); }, "3", [] {return to_string_long(Killproof::ministerLiCM);}, false}, - {40, [] {return to_string_short(Killproof::harvestCM);}, []{ return GET_TEXTURE_CUSTOM(HARVEST_TEXTURE, ID_Harvest); }, "3", [] {return to_string_long(Killproof::harvestCM);}, false}, - {42, [] {return to_string_short(Killproof::olc);}, []{ return GET_TEXTURE_CUSTOM(OLC_TEXTURE, ID_OLC); }, "3", [] {return to_string_long(Killproof::olc);}, false}, - {43, [] {return to_string_short(Killproof::olcCM);}, []{ return GET_TEXTURE_CUSTOM(OLC_TEXTURE, ID_OLC); }, "3", [] {return to_string_long(Killproof::olcCM);}, false}, - - {41, [] {return to_string_short(Killproof::bananas);}, []{ return GET_TEXTURE(Bananas, ID_Bananas); }, "4", [] {return to_string_long(Killproof::bananas);}, false}, -}; - -// Key is the mapId found in the mumbleLink -// Value is a vector of columns that should be shown for that map. The Values are the UserIds from the ColumnSetup. -// TODO: update this when the above vector changes! -static const std::unordered_map> mapIdToColumnSetup = { - {1155, {0, 1, 2, 7, 9, 12, 16, 20, 23, 26, 41}}, // Aerodrome - {1062, {0, 1, 2, 5, 6, 7}}, // W1 - {1149, {0, 1, 2, 8, 9}}, // W2 - {1156, {0, 1, 2, 10, 11, 12}}, // W3 - {1188, {0, 1, 2, 13, 14, 15, 16}}, // W4 - {1264, {0, 1, 2, 17, 18, 19, 20}}, // W5 - {1303, {0, 1, 2, 21, 22, 23}}, // W6 - {1323, {0, 1, 2, 24, 25, 26}}, // W7 - {1370, {0, 1, 2, 27}}, // Eye of the north - {1432, {0, 1, 2, 35, 36}}, // MaiTrin strike - {1450, {0, 1, 2, 33, 38}}, // Ankka strike - {1451, {0, 1, 2, 37, 39}}, // MinisterLi strike - {1437, {0, 1, 2, 34, 40}}, // HarvestTemple strike - {1485, {0, 1, 2, 42, 43}}, // OLC Strike - {1428, {0, 1, 2, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43}}, // Arborstone -}; - -class KillproofUITable : public MainTable<> { -public: - KillproofUITable(MainWindow* pMainWindow, MainTableFlags pFlags) - : MainTable<>(COLUMN_SETUP, pMainWindow, pFlags) {} - -protected: - void DrawRows(TableColumnIdx pFirstColumnIndex) override; - void Sort(const ImGuiTableColumnSortSpecs* mColumnSortSpecs) override; - - Alignment& getAlignment() override; - Alignment& getHeaderAlignment() override; - std::string getTableId() override; - int& getMaxDisplayed() override; - bool& getShowAlternatingBackground() override; - TableSettings& getTableSettings() override; - bool& getHighlightHoveredRows() override; - const char* getCategoryName(const std::string& pCat) override; - void MigrateSettings() override; - bool getCustomColumnsFeatureActive() override { return true; } - bool& getCustomColumnsActive() override; - int getCustomColumnsFirstColumn() override { return 5; } - bool& getShowHeaderAsText() override; - -private: - template - bool drawRow(TableColumnIdx pFirstColumnIndex, const Player& pPlayer, bool pHasLinked, bool pTotal = false, bool pTotalText = false); - - template - void drawTextColumn(bool& pOpen, const std::string& pText, const std::string& pUsername, const std::atomic& pStatus, bool pTreeNode, bool pIsCommander); - - void openInBrowser(const std::string& username); -}; +#pragma once + +#include "global.h" +#include "Lang.h" +#include "Killproofs.h" +#include "Player.h" +#include "resource.h" + +#include "extension/IconLoader.h" +#include "extension/Windows/MainTable.h" + +using std::string_literals::operator ""s; + +constexpr ImU32 JOIN_TIME_ID = 32; +constexpr ImU32 ACCOUNT_NAME_ID = 29; +constexpr ImU32 CHARACTER_NAME_ID = 30; +constexpr ImU32 KILLPROOF_ID_ID = 31; +constexpr ImU32 SUBGROUP_ID = 64; + +static std::optional UCE_TEXTURE; +static std::optional MAI_TRIN_TEXTURE; +static std::optional ANKKA_TEXTURE; +static std::optional LI_TEXTURE; +static std::optional HARVEST_TEXTURE; +static std::optional OLC_TEXTURE; +static std::optional DAGDA_TEXTURE; +static std::optional CERUS_TEXTURE; + +#define GET_TEXTURE_CUSTOM(optional, id) \ + std::invoke([] { \ + auto& iconLoader = IconLoader::instance(); \ + if (!optional) \ + optional = iconLoader.LoadTexture(id); \ + return iconLoader.GetTexture(optional.value()); \ + }) + +// the index is used for the order +static const std::vector COLUMN_SETUP { + // general stuff + {JOIN_TIME_ID, [] {return "#"s;}, []{return nullptr;}, "0", true}, + {ACCOUNT_NAME_ID, [] {return Localization::STranslate(KMT_AccountName);}, []{return nullptr;}, "0", true}, + {CHARACTER_NAME_ID, [] {return Localization::STranslate(KMT_CharacterName);}, []{return nullptr;}, "0", true}, + {KILLPROOF_ID_ID, [] {return Localization::STranslate(KMT_KillproofId);}, []{return nullptr;}, "0", true}, + {SUBGROUP_ID, [] {return Localization::STranslate(KMT_SubgroupText);}, []{return nullptr;}, "0", false}, + + // Raids + // {0, [] {return to_string_short(Killproof::li);}, []{ return GET_TEXTURE(LI, ID_LI); }, "1", true}, + // {1, [] {return to_string_short(Killproof::ld);}, []{ return GET_TEXTURE(LD, ID_LD); }, "1", true}, + {2, [] {return to_string_short(Killproof::liLd);}, []{ return GET_TEXTURE(LI, ID_LI); }, "1", true}, + + // fractals + {3, [] {return to_string_short(Killproof::uce);}, []{ return GET_TEXTURE_CUSTOM(UCE_TEXTURE, ID_UFE); }, "2", true}, + {4, [] {return to_string_short(Killproof::ufe);}, []{ return GET_TEXTURE_CUSTOM(UCE_TEXTURE, ID_UFE); }, "2", true}, + + // W1 + {5, [] {return to_string_short(Killproof::vg);}, []{ return GET_TEXTURE(VG, ID_VG); }, "1.1", [] {return to_string_long(Killproof::vg);}, false}, + {6, [] {return to_string_short(Killproof::gorse);}, []{ return GET_TEXTURE(Gorse, ID_Gorse); }, "1.1", [] {return to_string_long(Killproof::gorse);}, false}, + {7, [] {return to_string_short(Killproof::sabetha);}, []{ return GET_TEXTURE(Sabetha, ID_Sabetha); }, "1.1", [] {return to_string_long(Killproof::sabetha);}, false}, + + // W2 + {8, [] {return to_string_short(Killproof::sloth);}, []{ return GET_TEXTURE(Sloth, ID_Sloth); }, "1.2", false}, + {9, [] {return to_string_short(Killproof::matthias);}, []{ return GET_TEXTURE(Matt, ID_Matt); }, "1.2", [] {return to_string_long(Killproof::matthias);}, false}, + + // W3 + {10, [] {return to_string_short(Killproof::escort);}, []{ return GET_TEXTURE(Escort, ID_Escort); }, "1.3", false}, + {11, [] {return to_string_short(Killproof::kc);}, []{ return GET_TEXTURE(KC, ID_KC); }, "1.3", [] {return to_string_long(Killproof::kc);}, false}, + {12, [] {return to_string_short(Killproof::xera);}, []{ return GET_TEXTURE(Xera, ID_Xera); }, "1.3", false}, + + // W4 + {13, [] {return to_string_short(Killproof::cairn);}, []{ return GET_TEXTURE(Cairn, ID_Cairn); }, "1.4", [] {return to_string_long(Killproof::cairn);}, false}, + {14, [] {return to_string_short(Killproof::mo);}, []{ return GET_TEXTURE(MO, ID_MO); }, "1.4", [] {return to_string_long(Killproof::mo);}, false}, + {15, [] {return to_string_short(Killproof::samarog);}, []{ return GET_TEXTURE(Samarog, ID_Samarog); }, "1.4", false}, + {16, [] {return to_string_short(Killproof::deimos);}, []{ return GET_TEXTURE(Deimos, ID_Deimos); }, "1.4", false}, + + // W5 + {17, [] {return to_string_short(Killproof::desmina);}, []{ return GET_TEXTURE(Desmina, ID_Desmina); }, "1.5", [] {return to_string_long(Killproof::desmina);}, false}, + {18, [] {return to_string_short(Killproof::river);}, []{ return GET_TEXTURE(River, ID_River); }, "1.5", [] {return to_string_long(Killproof::river);}, false}, + {19, [] {return to_string_short(Killproof::statues);}, []{ return GET_TEXTURE(Statues, ID_Statues); }, "1.5", false}, + {20, [] {return to_string_short(Killproof::dhuum);}, []{ return GET_TEXTURE(Dhuum, ID_Dhuum); }, "1.5", true}, + + // W6 + {21, [] {return to_string_short(Killproof::ca);}, []{ return GET_TEXTURE(CA, ID_CA); }, "1.6", [] {return to_string_long(Killproof::ca);}, false}, + {22, [] {return to_string_short(Killproof::twins);}, []{ return GET_TEXTURE(Twins, ID_Twins); }, "1.6", [] {return to_string_long(Killproof::twins);}, false}, + {23, [] {return to_string_short(Killproof::qadim);}, []{ return GET_TEXTURE(Qadim1, ID_Qadim1); }, "1.6", true}, + + // W7 + {24, [] {return to_string_short(Killproof::sabir);}, []{ return GET_TEXTURE(Sabir, ID_Sabir); }, "1.7", false}, + {25, [] {return to_string_short(Killproof::adina);}, []{ return GET_TEXTURE(Adina, ID_Adina); }, "1.7", false}, + {26, [] {return to_string_short(Killproof::qadim2);}, []{ return GET_TEXTURE(Qadim2, ID_Qadim2); }, "1.7", [] {return to_string_long(Killproof::qadim2);}, true}, + + // Strikes + {27, [] {return to_string_short(Killproof::boneskinnerVial);}, []{ return GET_TEXTURE(Vial, ID_Boneskinner_Vial); }, "3", [] {return to_string_long(Killproof::boneskinnerVial);}, true}, + + // EOD strikes + {35, [] {return to_string_short(Killproof::maiTrin);}, []{ return GET_TEXTURE_CUSTOM(MAI_TRIN_TEXTURE, ID_Mai_Trin); }, "3", [] {return to_string_long(Killproof::maiTrin);}, false}, + {33, [] {return to_string_short(Killproof::ankka);}, []{ return GET_TEXTURE_CUSTOM(ANKKA_TEXTURE, ID_Ankka); }, "3", [] {return to_string_long(Killproof::ankka);}, false}, + {37, [] {return to_string_short(Killproof::ministerLi);}, []{ return GET_TEXTURE_CUSTOM(LI_TEXTURE, ID_Minister_Li); }, "3", [] {return to_string_long(Killproof::ministerLi);}, false}, + {34, [] {return to_string_short(Killproof::harvest);}, []{ return GET_TEXTURE_CUSTOM(HARVEST_TEXTURE, ID_Harvest); }, "3", [] {return to_string_long(Killproof::harvest);}, false}, + {36, [] {return to_string_short(Killproof::maiTrinCM);}, []{ return GET_TEXTURE_CUSTOM(MAI_TRIN_TEXTURE, ID_Mai_Trin); }, "3", [] {return to_string_long(Killproof::maiTrinCM);}, false}, + {38, [] {return to_string_short(Killproof::ankkaCM);}, []{ return GET_TEXTURE_CUSTOM(ANKKA_TEXTURE, ID_Ankka); }, "3", [] {return to_string_long(Killproof::ankkaCM);}, false}, + {39, [] {return to_string_short(Killproof::ministerLiCM);}, []{ return GET_TEXTURE_CUSTOM(LI_TEXTURE, ID_Minister_Li); }, "3", [] {return to_string_long(Killproof::ministerLiCM);}, false}, + {40, [] {return to_string_short(Killproof::harvestCM);}, []{ return GET_TEXTURE_CUSTOM(HARVEST_TEXTURE, ID_Harvest); }, "3", [] {return to_string_long(Killproof::harvestCM);}, false}, + {42, [] {return to_string_short(Killproof::olc);}, []{ return GET_TEXTURE_CUSTOM(OLC_TEXTURE, ID_OLC); }, "3", [] {return to_string_long(Killproof::olc);}, false}, + {43, [] {return to_string_short(Killproof::olcCM);}, []{ return GET_TEXTURE_CUSTOM(OLC_TEXTURE, ID_OLC); }, "3", [] {return to_string_long(Killproof::olcCM);}, false}, + {44, [] {return to_string_short(Killproof::co);}, []{ return GET_TEXTURE_CUSTOM(DAGDA_TEXTURE, ID_Dagda); }, "3", [] {return to_string_long(Killproof::co);}, false}, + {45, [] {return to_string_short(Killproof::coCM);}, []{ return GET_TEXTURE_CUSTOM(DAGDA_TEXTURE, ID_Dagda); }, "3", [] {return to_string_long(Killproof::coCM);}, false}, + {46, [] {return to_string_short(Killproof::febe);}, []{ return GET_TEXTURE_CUSTOM(CERUS_TEXTURE, ID_Cerus); }, "3", [] {return to_string_long(Killproof::febe);}, false}, + + {41, [] {return to_string_short(Killproof::bananas);}, []{ return GET_TEXTURE(Bananas, ID_Bananas); }, "4", [] {return to_string_long(Killproof::bananas);}, false}, +}; + +// Key is the mapId found in the mumbleLink +// Value is a vector of columns that should be shown for that map. The Values are the UserIds from the ColumnSetup. +// TODO: update this when the above vector changes! +static const std::unordered_map> mapIdToColumnSetup = { + {1155, {2, 7, 9, 12, 16, 20, 23, 26, 41}}, // Aerodrome + {1062, {2, 5, 6, 7}}, // W1 + {1149, {2, 8, 9}}, // W2 + {1156, {2, 10, 11, 12}}, // W3 + {1188, {2, 13, 14, 15, 16}}, // W4 + {1264, {2, 17, 18, 19, 20}}, // W5 + {1303, {2, 21, 22, 23}}, // W6 + {1323, {2, 24, 25, 26}}, // W7 + {1370, {2, 27}}, // Eye of the north + {1432, {2, 35, 36}}, // MaiTrin strike + {1450, {2, 33, 38}}, // Ankka strike + {1451, {2, 37, 39}}, // MinisterLi strike + {1437, {2, 34, 40}}, // HarvestTemple strike + {1485, {2, 42, 43}}, // OLC Strike + {1428, {2, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43}}, // Arborstone + {1509, {2, 44, 45, 46}}, // Wizard's Tower + {1515, {2, 44, 45}}, // Cosmic Observatory + {1520, {2, 46}}, // Temple of Febe +}; + +class KillproofUITable : public MainTable<> { +public: + KillproofUITable(MainWindow* pMainWindow, MainTableFlags pFlags) + : MainTable<>(COLUMN_SETUP, pMainWindow, pFlags) {} + +protected: + void DrawRows(TableColumnIdx pFirstColumnIndex) override; + void Sort(const ImGuiTableColumnSortSpecs* mColumnSortSpecs) override; + + Alignment& getAlignment() override; + Alignment& getHeaderAlignment() override; + std::string getTableId() override; + int& getMaxDisplayed() override; + bool& getShowAlternatingBackground() override; + TableSettings& getTableSettings() override; + bool& getHighlightHoveredRows() override; + const char* getCategoryName(const std::string& pCat) override; + void MigrateSettings() override; + bool getCustomColumnsFeatureActive() override { return true; } + bool& getCustomColumnsActive() override; + int getCustomColumnsFirstColumn() override { return 5; } + bool& getShowHeaderAsText() override; + +private: + template + bool drawRow(TableColumnIdx pFirstColumnIndex, const Player& pPlayer, bool pHasLinked, bool pTotal = false, bool pTotalText = false); + + template + void drawTextColumn(bool& pOpen, const std::string& pText, const std::string& pUsername, const std::atomic& pStatus, bool pTreeNode, bool pIsCommander); + + void openInBrowser(const std::string& username); +}; diff --git a/killproof_me/Killproofs.cpp b/killproof_me/Killproofs.cpp index a727760..14e0712 100644 --- a/killproof_me/Killproofs.cpp +++ b/killproof_me/Killproofs.cpp @@ -1,95 +1,101 @@ -#include "Killproofs.h" - -#include "Lang.h" - -#include "extension/Localization.h" - -const std::string& toStringShort(Killproof e) { - switch (e) { - // case Killproof::li: return Localization::STranslate(KMT_Li_Short); - // case Killproof::ld: return Localization::STranslate(KMT_Ld_Short); - case Killproof::liLd: return Localization::STranslate(KMT_LiLd_Short); - case Killproof::uce: return Localization::STranslate(KMT_Uce_Short); - case Killproof::ufe: return Localization::STranslate(KMT_Ufe_Short); - case Killproof::vg: return Localization::STranslate(KMT_Vg_Short); - case Killproof::gorse: return Localization::STranslate(KMT_Gorse_Short); - case Killproof::sabetha: return Localization::STranslate(KMT_Sabetha_Short); - case Killproof::sloth: return Localization::STranslate(KMT_Sloth_Short); - case Killproof::matthias: return Localization::STranslate(KMT_Matthias_Short); - case Killproof::escort: return Localization::STranslate(KMT_Escort_Short); - case Killproof::kc: return Localization::STranslate(KMT_Kc_Short); - case Killproof::xera: return Localization::STranslate(KMT_Xera_Short); - case Killproof::cairn: return Localization::STranslate(KMT_Cairn_Short); - case Killproof::mo: return Localization::STranslate(KMT_Mo_Short); - case Killproof::samarog: return Localization::STranslate(KMT_Samarog_Short); - case Killproof::deimos: return Localization::STranslate(KMT_Deimos_Short); - case Killproof::desmina: return Localization::STranslate(KMT_Desmina_Short); - case Killproof::river: return Localization::STranslate(KMT_River_Short); - case Killproof::statues: return Localization::STranslate(KMT_Statues_Short); - case Killproof::dhuum: return Localization::STranslate(KMT_Dhuum_Short); - case Killproof::ca: return Localization::STranslate(KMT_Ca_Short); - case Killproof::twins: return Localization::STranslate(KMT_Twins_Short); - case Killproof::qadim: return Localization::STranslate(KMT_Qadim_Short); - case Killproof::sabir: return Localization::STranslate(KMT_Sabir_Short); - case Killproof::adina: return Localization::STranslate(KMT_Adina_Short); - case Killproof::qadim2: return Localization::STranslate(KMT_Qadim2_Short); - case Killproof::boneskinnerVial: return Localization::STranslate(KMT_BoneskinnerVial_Short); - case Killproof::ankka: return Localization::STranslate(KMT_Ankka_Short); - case Killproof::ministerLi: return Localization::STranslate(KMT_MinisterLi_Short); - case Killproof::harvest: return Localization::STranslate(KMT_Harvest_Short); - case Killproof::maiTrin: return Localization::STranslate(KMT_MaiTrin_Short); - case Killproof::maiTrinCM: return Localization::STranslate(KMT_MaiTrinCM_Short); - case Killproof::ankkaCM: return Localization::STranslate(KMT_AnkkaCM_Short); - case Killproof::ministerLiCM: return Localization::STranslate(KMT_MinisterLiCM_Short); - case Killproof::harvestCM: return Localization::STranslate(KMT_HarvestCM_Short); - case Killproof::olc: return Localization::STranslate(KMT_OLC_Short); - case Killproof::olcCM: return Localization::STranslate(KMT_OLCCM_Short); - case Killproof::bananas: return Localization::STranslate(KMT_Bananas); - default: return Localization::STranslate(ET_Unknown); - } -} - -const std::string& toStringLong(Killproof e) { - switch (e) { - case Killproof::vg: return Localization::STranslate(KMT_Vg_Long); - case Killproof::gorse: return Localization::STranslate(KMT_Gorse_Long); - case Killproof::sabetha: return Localization::STranslate(KMT_Sabetha_Long); - case Killproof::matthias: return Localization::STranslate(KMT_Matthias_Long); - case Killproof::kc: return Localization::STranslate(KMT_Kc_Long); - case Killproof::cairn: return Localization::STranslate(KMT_Cairn_Long); - case Killproof::mo: return Localization::STranslate(KMT_Mo_Long); - case Killproof::desmina: return Localization::STranslate(KMT_Desmina_Long); - case Killproof::river: return Localization::STranslate(KMT_River_Long); - case Killproof::ca: return Localization::STranslate(KMT_Ca_Long); - case Killproof::twins: return Localization::STranslate(KMT_Twins_Long); - case Killproof::qadim2: return Localization::STranslate(KMT_Qadim2_Long); - case Killproof::boneskinnerVial: return Localization::STranslate(KMT_BoneskinnerVial_Long); - case Killproof::ankka: return Localization::STranslate(KMT_Ankka_Long); - case Killproof::ministerLi: return Localization::STranslate(KMT_MinisterLi_Long); - case Killproof::harvest: return Localization::STranslate(KMT_Harvest_Long); - case Killproof::maiTrin: return Localization::STranslate(KMT_MaiTrin_Long); - case Killproof::maiTrinCM: return Localization::STranslate(KMT_MaiTrinCM_Long); - case Killproof::ankkaCM: return Localization::STranslate(KMT_AnkkaCM_Long); - case Killproof::ministerLiCM: return Localization::STranslate(KMT_MinisterLiCM_Long); - case Killproof::harvestCM: return Localization::STranslate(KMT_HarvestCM_Long); - case Killproof::olc: return Localization::STranslate(KMT_OLC_Long); - case Killproof::olcCM: return Localization::STranslate(KMT_OLCCM_Long); - case Killproof::bananas: return Localization::STranslate(KMT_Bananas); - default: return Localization::STranslate(ET_Unknown); - } -} - -std::optional Killproofs::GetAmount(const Killproof& id) const { - std::lock_guard guard(mapMutex); - const auto killproofIt = killproofs.find(id); - if (killproofIt == killproofs.end()) { - return std::nullopt; - } - return killproofIt->second; -} - -void Killproofs::SetAmount(Killproof pId, const int32_t& pAmount) { - std::lock_guard guard(mapMutex); - - killproofs[pId] = pAmount; -} +#include "Killproofs.h" + +#include "Lang.h" + +#include "extension/Localization.h" + +const std::string& toStringShort(Killproof e) { + switch (e) { + // case Killproof::li: return Localization::STranslate(KMT_Li_Short); + // case Killproof::ld: return Localization::STranslate(KMT_Ld_Short); + case Killproof::liLd: return Localization::STranslate(KMT_LiLd_Short); + case Killproof::uce: return Localization::STranslate(KMT_Uce_Short); + case Killproof::ufe: return Localization::STranslate(KMT_Ufe_Short); + case Killproof::vg: return Localization::STranslate(KMT_Vg_Short); + case Killproof::gorse: return Localization::STranslate(KMT_Gorse_Short); + case Killproof::sabetha: return Localization::STranslate(KMT_Sabetha_Short); + case Killproof::sloth: return Localization::STranslate(KMT_Sloth_Short); + case Killproof::matthias: return Localization::STranslate(KMT_Matthias_Short); + case Killproof::escort: return Localization::STranslate(KMT_Escort_Short); + case Killproof::kc: return Localization::STranslate(KMT_Kc_Short); + case Killproof::xera: return Localization::STranslate(KMT_Xera_Short); + case Killproof::cairn: return Localization::STranslate(KMT_Cairn_Short); + case Killproof::mo: return Localization::STranslate(KMT_Mo_Short); + case Killproof::samarog: return Localization::STranslate(KMT_Samarog_Short); + case Killproof::deimos: return Localization::STranslate(KMT_Deimos_Short); + case Killproof::desmina: return Localization::STranslate(KMT_Desmina_Short); + case Killproof::river: return Localization::STranslate(KMT_River_Short); + case Killproof::statues: return Localization::STranslate(KMT_Statues_Short); + case Killproof::dhuum: return Localization::STranslate(KMT_Dhuum_Short); + case Killproof::ca: return Localization::STranslate(KMT_Ca_Short); + case Killproof::twins: return Localization::STranslate(KMT_Twins_Short); + case Killproof::qadim: return Localization::STranslate(KMT_Qadim_Short); + case Killproof::sabir: return Localization::STranslate(KMT_Sabir_Short); + case Killproof::adina: return Localization::STranslate(KMT_Adina_Short); + case Killproof::qadim2: return Localization::STranslate(KMT_Qadim2_Short); + case Killproof::boneskinnerVial: return Localization::STranslate(KMT_BoneskinnerVial_Short); + case Killproof::ankka: return Localization::STranslate(KMT_Ankka_Short); + case Killproof::ministerLi: return Localization::STranslate(KMT_MinisterLi_Short); + case Killproof::harvest: return Localization::STranslate(KMT_Harvest_Short); + case Killproof::maiTrin: return Localization::STranslate(KMT_MaiTrin_Short); + case Killproof::maiTrinCM: return Localization::STranslate(KMT_MaiTrinCM_Short); + case Killproof::ankkaCM: return Localization::STranslate(KMT_AnkkaCM_Short); + case Killproof::ministerLiCM: return Localization::STranslate(KMT_MinisterLiCM_Short); + case Killproof::harvestCM: return Localization::STranslate(KMT_HarvestCM_Short); + case Killproof::olc: return Localization::STranslate(KMT_OLC_Short); + case Killproof::olcCM: return Localization::STranslate(KMT_OLCCM_Short); + case Killproof::co: return Localization::STranslate(KMT_CO_Short); + case Killproof::coCM: return Localization::STranslate(KMT_COCM_Short); + case Killproof::febe: return Localization::STranslate(KMT_FEBE_Short); + case Killproof::bananas: return Localization::STranslate(KMT_Bananas); + default: return Localization::STranslate(ET_Unknown); + } +} + +const std::string& toStringLong(Killproof e) { + switch (e) { + case Killproof::vg: return Localization::STranslate(KMT_Vg_Long); + case Killproof::gorse: return Localization::STranslate(KMT_Gorse_Long); + case Killproof::sabetha: return Localization::STranslate(KMT_Sabetha_Long); + case Killproof::matthias: return Localization::STranslate(KMT_Matthias_Long); + case Killproof::kc: return Localization::STranslate(KMT_Kc_Long); + case Killproof::cairn: return Localization::STranslate(KMT_Cairn_Long); + case Killproof::mo: return Localization::STranslate(KMT_Mo_Long); + case Killproof::desmina: return Localization::STranslate(KMT_Desmina_Long); + case Killproof::river: return Localization::STranslate(KMT_River_Long); + case Killproof::ca: return Localization::STranslate(KMT_Ca_Long); + case Killproof::twins: return Localization::STranslate(KMT_Twins_Long); + case Killproof::qadim2: return Localization::STranslate(KMT_Qadim2_Long); + case Killproof::boneskinnerVial: return Localization::STranslate(KMT_BoneskinnerVial_Long); + case Killproof::ankka: return Localization::STranslate(KMT_Ankka_Long); + case Killproof::ministerLi: return Localization::STranslate(KMT_MinisterLi_Long); + case Killproof::harvest: return Localization::STranslate(KMT_Harvest_Long); + case Killproof::maiTrin: return Localization::STranslate(KMT_MaiTrin_Long); + case Killproof::maiTrinCM: return Localization::STranslate(KMT_MaiTrinCM_Long); + case Killproof::ankkaCM: return Localization::STranslate(KMT_AnkkaCM_Long); + case Killproof::ministerLiCM: return Localization::STranslate(KMT_MinisterLiCM_Long); + case Killproof::harvestCM: return Localization::STranslate(KMT_HarvestCM_Long); + case Killproof::olc: return Localization::STranslate(KMT_OLC_Long); + case Killproof::olcCM: return Localization::STranslate(KMT_OLCCM_Long); + case Killproof::co: return Localization::STranslate(KMT_CO_Long); + case Killproof::coCM: return Localization::STranslate(KMT_COCM_Long); + case Killproof::febe: return Localization::STranslate(KMT_FEBE_Long); + case Killproof::bananas: return Localization::STranslate(KMT_Bananas); + default: return Localization::STranslate(ET_Unknown); + } +} + +std::optional Killproofs::GetAmount(const Killproof& id) const { + std::lock_guard guard(mapMutex); + const auto killproofIt = killproofs.find(id); + if (killproofIt == killproofs.end()) { + return std::nullopt; + } + return killproofIt->second; +} + +void Killproofs::SetAmount(Killproof pId, const int32_t& pAmount) { + std::lock_guard guard(mapMutex); + + killproofs[pId] = pAmount; +} diff --git a/killproof_me/Killproofs.h b/killproof_me/Killproofs.h index 68db5df..9124b52 100644 --- a/killproof_me/Killproofs.h +++ b/killproof_me/Killproofs.h @@ -1,304 +1,317 @@ -#pragma once - -#include -#include -#include -#include -#include - -#define amountVal int32_t - -/** - * The ID of each killproof item. - * This also is the UserID of the `MainTable`, make sure it is corresponding to it. - */ -enum class Killproof : int { - // raid - // li, - // ld, - liLd = 2, - // added li and ld - // fractal - uce, - ufe, - // w1 - vg, - gorse, - sabetha, - // w2 - sloth, - matthias, - // w3 - escort, - kc, - xera, - // w4 - cairn, - mo, - samarog, - deimos, - // w5 - desmina, - river, - statues, - dhuum, - // w6 - ca, - twins, - qadim, - // w7 - sabir, - adina, - qadim2, - - // strikes - boneskinnerVial, - - // EOD strikes - ankka = 33, - harvest = 34, - maiTrin = 35, - maiTrinCM = 36, - ministerLi = 37, - ankkaCM = 38, - ministerLiCM = 39, - harvestCM = 40, - olc = 42, - olcCM = 43, - - // MISC - bananas = 41, - - // no final entry anymore, use `magic_enum` to iterate over the enum. -}; - -const std::string& toStringShort(Killproof e); - -inline const std::string& to_string_short(Killproof e) { - return toStringShort(e); -} - -const std::string& toStringLong(Killproof e); - -inline const std::string& to_string_long(Killproof e) { - return toStringLong(e); -} - -class Killproofs { - std::map killproofs; - mutable std::mutex mapMutex; - -public: - /** - * GETTER - */ - std::optional GetAmount(const Killproof& id) const; - - /** - * SETTER - */ - void SetAmount(Killproof pId, const amountVal& pAmount); - - template - void SetAmount(const std::string& id, const amountVal& amount) { - SetAmount(std::stoi(id), amount); - } - - template - void SetAmount(const int& id, const amountVal& amount) { - std::lock_guard guard(mapMutex); - - if constexpr (CofferIds) { - switch (id) { - case 91203: - killproofs[Killproof::vg] = amount; - break; - case 91215: - killproofs[Killproof::gorse] = amount; - break; - case 91147: - killproofs[Killproof::sabetha] = amount; - break; - case 91160: - killproofs[Killproof::sloth] = amount; - break; - case 91252: - killproofs[Killproof::matthias] = amount; - break; - case 91262: - killproofs[Killproof::escort] = amount; - break; - case 91187: - killproofs[Killproof::kc] = amount; - break; - case 91182: - killproofs[Killproof::xera] = amount; - break; - case 91186: - killproofs[Killproof::cairn] = amount; - break; - case 91191: - killproofs[Killproof::mo] = amount; - break; - case 91267: - killproofs[Killproof::samarog] = amount; - break; - case 91233: - killproofs[Killproof::deimos] = amount; - break; - case 91211: - killproofs[Killproof::desmina] = amount; - break; - case 91244: - killproofs[Killproof::river] = amount; - break; - case 91138: - killproofs[Killproof::statues] = amount; - break; - case 91220: - killproofs[Killproof::dhuum] = amount; - break; - case 91157: - killproofs[Killproof::ca] = amount; - break; - case 91166: - killproofs[Killproof::twins] = amount; - break; - case 91237: - killproofs[Killproof::qadim] = amount; - break; - case 91200: - killproofs[Killproof::adina] = amount; - break; - case 91241: - killproofs[Killproof::sabir] = amount; - break; - case 91260: - killproofs[Killproof::qadim2] = amount; - break; - } - } else { - switch (id) { - case 77302: - // killproofs[Killproof::li] = amount; - // set li/ld amount - killproofs[Killproof::liLd] += amount; - break; - case 88485: - // killproofs[Killproof::ld] = amount; - // set li/ld amount - killproofs[Killproof::liLd] += amount; - break; - case 81743: - killproofs[Killproof::uce] = amount; - break; - case 94020: - killproofs[Killproof::ufe] = amount; - break; - case 77705: - killproofs[Killproof::vg] = amount; - break; - case 77751: - killproofs[Killproof::gorse] = amount; - break; - case 77728: - killproofs[Killproof::sabetha] = amount; - break; - case 77706: - killproofs[Killproof::sloth] = amount; - break; - case 77679: - killproofs[Killproof::matthias] = amount; - break; - case 78873: - killproofs[Killproof::escort] = amount; - break; - case 78902: - killproofs[Killproof::kc] = amount; - break; - case 78942: - killproofs[Killproof::xera] = amount; - break; - case 80623: - killproofs[Killproof::cairn] = amount; - break; - case 80269: - killproofs[Killproof::mo] = amount; - break; - case 80087: - killproofs[Killproof::samarog] = amount; - break; - case 80542: - killproofs[Killproof::deimos] = amount; - break; - case 85993: - killproofs[Killproof::desmina] = amount; - break; - case 85785: - killproofs[Killproof::river] = amount; - break; - case 85800: - killproofs[Killproof::statues] = amount; - break; - case 85633: - killproofs[Killproof::dhuum] = amount; - break; - case 88543: - killproofs[Killproof::ca] = amount; - break; - case 88860: - killproofs[Killproof::twins] = amount; - break; - case 88645: - killproofs[Killproof::qadim] = amount; - break; - case 91270: - killproofs[Killproof::sabir] = amount; - break; - case 91246: - killproofs[Killproof::adina] = amount; - break; - case 91175: - killproofs[Killproof::qadim2] = amount; - break; - case 93781: - killproofs[Killproof::boneskinnerVial] = amount; - break; - case 95982: - killproofs[Killproof::ankka] = amount; - break; - case 96638: - killproofs[Killproof::ankkaCM] = amount; - break; - case 97132: - killproofs[Killproof::harvest] = amount; - break; - case 95638: - killproofs[Killproof::maiTrin] = amount; - break; - case 97269: - killproofs[Killproof::maiTrinCM] = amount; - break; - case 97451: - killproofs[Killproof::ministerLi] = amount; - break; - case 96419: - killproofs[Killproof::ministerLiCM] = amount; - break; - case 95986: - killproofs[Killproof::harvestCM] = amount; - break; - case 99165: - killproofs[Killproof::olc] = amount; - break; - case 99204: - killproofs[Killproof::olcCM] = amount; - break; - case 12251: - killproofs[Killproof::bananas] = amount; - break; - default: break; - } - } - } -}; +#pragma once + +#include +#include +#include +#include +#include + +#define amountVal int32_t + +/** + * The ID of each killproof item. + * This also is the UserID of the `MainTable`, make sure it is corresponding to it. + */ +enum class Killproof : int { + // raid + // li, + // ld, + liLd = 2, + // added li and ld + // fractal + uce, + ufe, + // w1 + vg, + gorse, + sabetha, + // w2 + sloth, + matthias, + // w3 + escort, + kc, + xera, + // w4 + cairn, + mo, + samarog, + deimos, + // w5 + desmina, + river, + statues, + dhuum, + // w6 + ca, + twins, + qadim, + // w7 + sabir, + adina, + qadim2, + + // strikes + boneskinnerVial, + + // EOD strikes + ankka = 33, + harvest = 34, + maiTrin = 35, + maiTrinCM = 36, + ministerLi = 37, + ankkaCM = 38, + ministerLiCM = 39, + harvestCM = 40, + olc = 42, + olcCM = 43, + co = 44, + coCM = 45, + febe = 46, + + // MISC + bananas = 41, + + // no final entry anymore, use `magic_enum` to iterate over the enum. +}; + +const std::string& toStringShort(Killproof e); + +inline const std::string& to_string_short(Killproof e) { + return toStringShort(e); +} + +const std::string& toStringLong(Killproof e); + +inline const std::string& to_string_long(Killproof e) { + return toStringLong(e); +} + +class Killproofs { + std::map killproofs; + mutable std::mutex mapMutex; + +public: + /** + * GETTER + */ + std::optional GetAmount(const Killproof& id) const; + + /** + * SETTER + */ + void SetAmount(Killproof pId, const amountVal& pAmount); + + template + void SetAmount(const std::string& id, const amountVal& amount) { + SetAmount(std::stoi(id), amount); + } + + template + void SetAmount(const int& id, const amountVal& amount) { + std::lock_guard guard(mapMutex); + + if constexpr (CofferIds) { + switch (id) { + case 91203: + killproofs[Killproof::vg] = amount; + break; + case 91215: + killproofs[Killproof::gorse] = amount; + break; + case 91147: + killproofs[Killproof::sabetha] = amount; + break; + case 91160: + killproofs[Killproof::sloth] = amount; + break; + case 91252: + killproofs[Killproof::matthias] = amount; + break; + case 91262: + killproofs[Killproof::escort] = amount; + break; + case 91187: + killproofs[Killproof::kc] = amount; + break; + case 91182: + killproofs[Killproof::xera] = amount; + break; + case 91186: + killproofs[Killproof::cairn] = amount; + break; + case 91191: + killproofs[Killproof::mo] = amount; + break; + case 91267: + killproofs[Killproof::samarog] = amount; + break; + case 91233: + killproofs[Killproof::deimos] = amount; + break; + case 91211: + killproofs[Killproof::desmina] = amount; + break; + case 91244: + killproofs[Killproof::river] = amount; + break; + case 91138: + killproofs[Killproof::statues] = amount; + break; + case 91220: + killproofs[Killproof::dhuum] = amount; + break; + case 91157: + killproofs[Killproof::ca] = amount; + break; + case 91166: + killproofs[Killproof::twins] = amount; + break; + case 91237: + killproofs[Killproof::qadim] = amount; + break; + case 91200: + killproofs[Killproof::adina] = amount; + break; + case 91241: + killproofs[Killproof::sabir] = amount; + break; + case 91260: + killproofs[Killproof::qadim2] = amount; + break; + } + } else { + switch (id) { + case 77302: + // killproofs[Killproof::li] = amount; + // set li/ld amount + killproofs[Killproof::liLd] += amount; + break; + case 88485: + // killproofs[Killproof::ld] = amount; + // set li/ld amount + killproofs[Killproof::liLd] += amount; + break; + case 81743: + killproofs[Killproof::uce] = amount; + break; + case 94020: + killproofs[Killproof::ufe] = amount; + break; + case 77705: + killproofs[Killproof::vg] = amount; + break; + case 77751: + killproofs[Killproof::gorse] = amount; + break; + case 77728: + killproofs[Killproof::sabetha] = amount; + break; + case 77706: + killproofs[Killproof::sloth] = amount; + break; + case 77679: + killproofs[Killproof::matthias] = amount; + break; + case 78873: + killproofs[Killproof::escort] = amount; + break; + case 78902: + killproofs[Killproof::kc] = amount; + break; + case 78942: + killproofs[Killproof::xera] = amount; + break; + case 80623: + killproofs[Killproof::cairn] = amount; + break; + case 80269: + killproofs[Killproof::mo] = amount; + break; + case 80087: + killproofs[Killproof::samarog] = amount; + break; + case 80542: + killproofs[Killproof::deimos] = amount; + break; + case 85993: + killproofs[Killproof::desmina] = amount; + break; + case 85785: + killproofs[Killproof::river] = amount; + break; + case 85800: + killproofs[Killproof::statues] = amount; + break; + case 85633: + killproofs[Killproof::dhuum] = amount; + break; + case 88543: + killproofs[Killproof::ca] = amount; + break; + case 88860: + killproofs[Killproof::twins] = amount; + break; + case 88645: + killproofs[Killproof::qadim] = amount; + break; + case 91270: + killproofs[Killproof::sabir] = amount; + break; + case 91246: + killproofs[Killproof::adina] = amount; + break; + case 91175: + killproofs[Killproof::qadim2] = amount; + break; + case 93781: + killproofs[Killproof::boneskinnerVial] = amount; + break; + case 95982: + killproofs[Killproof::ankka] = amount; + break; + case 96638: + killproofs[Killproof::ankkaCM] = amount; + break; + case 97132: + killproofs[Killproof::harvest] = amount; + break; + case 95638: + killproofs[Killproof::maiTrin] = amount; + break; + case 97269: + killproofs[Killproof::maiTrinCM] = amount; + break; + case 97451: + killproofs[Killproof::ministerLi] = amount; + break; + case 96419: + killproofs[Killproof::ministerLiCM] = amount; + break; + case 95986: + killproofs[Killproof::harvestCM] = amount; + break; + case 99165: + killproofs[Killproof::olc] = amount; + break; + case 99204: + killproofs[Killproof::olcCM] = amount; + break; + case 100068: + killproofs[Killproof::co] = amount; + break; + // TODO: change number to actual id + // case 100068: + // killproofs[Killproof::cocm] = amount; + // break; + case 100858: + killproofs[Killproof::febe] = amount; + break; + case 12251: + killproofs[Killproof::bananas] = amount; + break; + default: break; + } + } + } +}; diff --git a/killproof_me/Lang.h b/killproof_me/Lang.h index 0e20ee4e9298316d07c7c93038dd2298e6f83872..bff8095a64b225e8e76bfab4f53bdb6407339aad 100644 GIT binary patch delta 1068 zcmbPsmucBMrVV9$%+3t{lM7j8!SqBnX)yheM-d{eSp_n0;A(J7QL4m=aAqmJ!Whi1OV@PBu0m>CIR072{ z7+iq-bcPg$#L0^85Hl9~NP^8$REIf3(v&PSC-5fHcA2*u2nZvnpy(*g~9&8P}P>*an4c zGCYt9fq?)CYog-cngWxF^1g&P5ni6W&_{K1LQx)?w{beI2$=Zuf!=mz_zceqAU=_a f-V&Fm37Sikmjxz&n8+ncFrI;)mfU=9`Ux=rwv6ba delta 41 vcmZ4Xj%nImrVV9$n;rP0q&7Ebzfzvupv|?pByfT%h_R`%Ky`E6f)io@Z=De> diff --git a/killproof_me/icons/Cerus.png b/killproof_me/icons/Cerus.png new file mode 100644 index 0000000000000000000000000000000000000000..48749b1daa00a85e4de89b885a40a59d29f098f0 GIT binary patch literal 7723 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 literal 0 HcmV?d00001 diff --git a/killproof_me/icons/Dagda.png b/killproof_me/icons/Dagda.png new file mode 100644 index 0000000000000000000000000000000000000000..5caa5880e32104ca53611b7fa248d32a6b89db29 GIT binary patch literal 7120 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 - - - - Debug Mock - x64 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - Win32Proj - {ced1256c-bc5c-44a8-a319-b45e0ee480b0} - killproof_me - 10.0 - - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - true - d3d9_arcdps_killproof_me - - - true - d3d9_arcdps_killproof_me - - - false - d3d9_arcdps_killproof_me - - - true - --overlay-ports=$(SolutionDir)modules\extension\vcpkg-overlay-ports - - - true - --overlay-ports=$(SolutionDir)modules\extension\vcpkg-overlay-ports - - - true - --overlay-ports=$(SolutionDir)modules\extension\vcpkg-overlay-ports - - - true - - - - Level3 - true - MAGIC_ENUM_RANGE_MAX=256;NOMINMAX;_DEBUG;IMGUI_DEFINE_MATH_OPERATORS;_WINDOWS;%(PreprocessorDefinitions) - true - stdcpplatest - MultiThreadedDebug - $(SolutionDir)modules\;%(AdditionalIncludeDirectories) - true - - - Windows - true - $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName).lib - atls.lib;crypt32.lib;Ws2_32.lib;Wldap32.lib;Version.lib;%(AdditionalDependencies) - - - - - Level3 - true - MAGIC_ENUM_RANGE_MAX=256;NOMINMAX;_DEBUG;IMGUI_DEFINE_MATH_OPERATORS;_WINDOWS;%(PreprocessorDefinitions) - true - stdcpplatest - MultiThreadedDebug - $(SolutionDir)modules\;%(AdditionalIncludeDirectories) - true - - - Windows - true - $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName).lib - atls.lib;crypt32.lib;Ws2_32.lib;Wldap32.lib;Version.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - MAGIC_ENUM_RANGE_MAX=256;NOMINMAX;NDEBUG;IMGUI_DEFINE_MATH_OPERATORS;_WINDOWS;%(PreprocessorDefinitions) - true - stdcpplatest - MultiThreaded - $(SolutionDir)modules\;%(AdditionalIncludeDirectories) - true - - - Windows - true - true - true - $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName).lib - atls.lib;crypt32.lib;Ws2_32.lib;Wldap32.lib;Version.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - {5aff3fc8-8e6f-4fda-9867-93bb861ab635} - - - {dab9bae4-7c01-4d28-90fe-b49387e9fb24} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug Mock + x64 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {ced1256c-bc5c-44a8-a319-b45e0ee480b0} + killproof_me + 10.0 + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + true + d3d9_arcdps_killproof_me + + + true + d3d9_arcdps_killproof_me + + + false + d3d9_arcdps_killproof_me + + + true + --overlay-ports=$(SolutionDir)modules\extension\vcpkg-overlay-ports + + + true + --overlay-ports=$(SolutionDir)modules\extension\vcpkg-overlay-ports + + + true + --overlay-ports=$(SolutionDir)modules\extension\vcpkg-overlay-ports + + + true + + + + Level3 + true + MAGIC_ENUM_RANGE_MAX=256;NOMINMAX;_DEBUG;IMGUI_DEFINE_MATH_OPERATORS;_WINDOWS;%(PreprocessorDefinitions) + true + stdcpplatest + MultiThreadedDebug + $(SolutionDir)modules\;%(AdditionalIncludeDirectories) + true + + + Windows + true + $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName).lib + atls.lib;crypt32.lib;Ws2_32.lib;Wldap32.lib;Version.lib;%(AdditionalDependencies) + + + + + Level3 + true + MAGIC_ENUM_RANGE_MAX=256;NOMINMAX;_DEBUG;IMGUI_DEFINE_MATH_OPERATORS;_WINDOWS;%(PreprocessorDefinitions) + true + stdcpplatest + MultiThreadedDebug + $(SolutionDir)modules\;%(AdditionalIncludeDirectories) + true + + + Windows + true + $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName).lib + atls.lib;crypt32.lib;Ws2_32.lib;Wldap32.lib;Version.lib;%(AdditionalDependencies) + + + + + Level3 + true + true + true + MAGIC_ENUM_RANGE_MAX=256;NOMINMAX;NDEBUG;IMGUI_DEFINE_MATH_OPERATORS;_WINDOWS;%(PreprocessorDefinitions) + true + stdcpplatest + MultiThreaded + $(SolutionDir)modules\;%(AdditionalIncludeDirectories) + true + + + Windows + true + true + true + $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName).lib + atls.lib;crypt32.lib;Ws2_32.lib;Wldap32.lib;Version.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + {5aff3fc8-8e6f-4fda-9867-93bb861ab635} + + + {dab9bae4-7c01-4d28-90fe-b49387e9fb24} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/killproof_me/killproof_me.vcxproj.filters b/killproof_me/killproof_me.vcxproj.filters index 73ca0ab..7fc57bb 100644 --- a/killproof_me/killproof_me.vcxproj.filters +++ b/killproof_me/killproof_me.vcxproj.filters @@ -1,190 +1,196 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + \ No newline at end of file diff --git a/killproof_me/resource.h b/killproof_me/resource.h index bd877d6..d15d5eb 100644 --- a/killproof_me/resource.h +++ b/killproof_me/resource.h @@ -1,73 +1,76 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by killproof_me.rc -// -#define ID_Adina 102 -#define IDB_PNG3 103 -#define ID_Sabir 103 -#define IDB_PNG4 104 -#define ID_CA 104 -#define IDB_PNG5 105 -#define ID_Desmina 105 -#define IDB_PNG6 106 -#define ID_Dhuum 106 -#define IDB_PNG7 107 -#define ID_Qadim2 107 -#define IDB_PNG8 108 -#define ID_Deimos 108 -#define IDB_PNG9 109 -#define ID_Gorse 109 -#define ID_Samarog 110 -#define ID_KC 111 -#define ID_LD 112 -#define ID_LILD 114 -#define ID_Qadim1 115 -#define IDB_PNG15 116 -#define ID_MO 116 -#define IDB_PNG16 117 -#define ID_Xera 117 -#define IDB_PNG17 118 -#define ID_River 118 -#define IDB_PNG18 119 -#define ID_Sabetha 119 -#define IDB_PNG19 120 -#define ID_Sloth 120 -#define IDB_PNG20 121 -#define ID_Statues 121 -#define IDB_PNG21 122 -#define ID_Escort 122 -#define IDB_PNG22 123 -#define ID_Twins 123 -#define IDB_PNG23 124 -#define ID_UFE 124 -#define IDB_PNG24 125 -#define ID_VG 125 -#define IDB_PNG25 126 -#define ID_Matt 126 -#define ID_Cairn 127 -#define IDB_PNG1 128 -#define ID_LI 128 -#define ID_ 129 -#define ID_Boneskinner_Vial 129 -#define IDB_PNG2 130 -#define ID_Commander_White 130 -#define ID_Mai_Trin 131 -#define ID_Ankka 132 -#define ID_Minister_Li 133 -#define IDB_PNG10 134 -#define ID_Harvest 134 -#define IDB_PNG11 167 -#define ID_Bananas 167 -#define IDB_PNG12 168 -#define ID_OLC 168 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 169 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by killproof_me.rc +// +#define ID_Adina 102 +#define IDB_PNG3 103 +#define ID_Sabir 103 +#define IDB_PNG4 104 +#define ID_CA 104 +#define IDB_PNG5 105 +#define ID_Desmina 105 +#define IDB_PNG6 106 +#define ID_Dhuum 106 +#define IDB_PNG7 107 +#define ID_Qadim2 107 +#define IDB_PNG8 108 +#define ID_Deimos 108 +#define IDB_PNG9 109 +#define ID_Gorse 109 +#define ID_Samarog 110 +#define ID_KC 111 +#define ID_LD 112 +#define ID_LILD 114 +#define ID_Qadim1 115 +#define IDB_PNG15 116 +#define ID_MO 116 +#define IDB_PNG16 117 +#define ID_Xera 117 +#define IDB_PNG17 118 +#define ID_River 118 +#define IDB_PNG18 119 +#define ID_Sabetha 119 +#define IDB_PNG19 120 +#define ID_Sloth 120 +#define IDB_PNG20 121 +#define ID_Statues 121 +#define IDB_PNG21 122 +#define ID_Escort 122 +#define IDB_PNG22 123 +#define ID_Twins 123 +#define IDB_PNG23 124 +#define ID_UFE 124 +#define IDB_PNG24 125 +#define ID_VG 125 +#define IDB_PNG25 126 +#define ID_Matt 126 +#define ID_Cairn 127 +#define IDB_PNG1 128 +#define ID_LI 128 +#define ID_ 129 +#define ID_Boneskinner_Vial 129 +#define IDB_PNG2 130 +#define ID_Commander_White 130 +#define ID_Mai_Trin 131 +#define ID_Ankka 132 +#define ID_Minister_Li 133 +#define IDB_PNG10 134 +#define ID_Harvest 134 +#define IDB_PNG11 167 +#define ID_Bananas 167 +#define IDB_PNG12 168 +#define ID_OLC 168 +#define ID_Cerus 169 +#define IDB_PNG13 170 +#define ID_Dagda 170 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 171 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif