Compare commits

..

3 commits

5 changed files with 80 additions and 38 deletions

View file

@ -125,7 +125,6 @@ class Application: public Platform::Sdl2Application, public efsw::FileWatchListe
void drawGeneralInfo();
void drawResearchInventory();
void drawMaterialRow(Containers::StringView name, std::int32_t tier, GameData::MaterialID id);
void drawUnavailableMaterialRow(Containers::StringView name, std::int32_t tier);
void drawMassManager();
void drawDeleteMassPopup(int mass_index);
void drawDeleteStagedMassPopup(Containers::StringView filename);

View file

@ -313,7 +313,7 @@ Application::drawResearchInventory() {
drawMaterialRow("Lunarite", 4, GameData::MaterialID::Lunarite);
drawMaterialRow("Asterite", 5, GameData::MaterialID::Asterite);
drawMaterialRow("Hallite fragma", 6, GameData::MaterialID::HalliteFragma);
drawUnavailableMaterialRow("Unnoctinium", 7);
drawMaterialRow("Unnoctinium", 7, GameData::MaterialID::Unnoctinium);
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
ImGui::TableSetColumnIndex(1);
@ -325,19 +325,19 @@ Application::drawResearchInventory() {
drawMaterialRow("Soldus", 4, GameData::MaterialID::Soldus);
drawMaterialRow("Synthesized N", 5, GameData::MaterialID::SynthesisedN);
drawMaterialRow("Nanoc", 6, GameData::MaterialID::Nanoc);
drawUnavailableMaterialRow("Abyssillite", 7);
drawMaterialRow("Abyssillite", 7, GameData::MaterialID::Abyssillite);
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
ImGui::TableSetColumnIndex(1);
ImGui::TextUnformatted("Architect materials");
drawMaterialRow("Alcarbonite", 1, GameData::MaterialID::Alcarbonite);
drawMaterialRow("Keriphene", 2, GameData::MaterialID::Keriphene);
drawMaterialRow("Nitinol-CM", 3, GameData::MaterialID::NitinolCM);
drawMaterialRow("Quarkium", 4, GameData::MaterialID::Quarkium);
drawMaterialRow("Alterene", 5, GameData::MaterialID::Alterene);
drawMaterialRow("Cosmium", 6, GameData::MaterialID::Cosmium);
drawUnavailableMaterialRow("Purified quarkium", 7);
drawMaterialRow("Alcarbonite", 1, GameData::MaterialID::Alcarbonite);
drawMaterialRow("Keriphene", 2, GameData::MaterialID::Keriphene);
drawMaterialRow("Nitinol-CM", 3, GameData::MaterialID::NitinolCM);
drawMaterialRow("Quarkium", 4, GameData::MaterialID::Quarkium);
drawMaterialRow("Alterene", 5, GameData::MaterialID::Alterene);
drawMaterialRow("Cosmium", 6, GameData::MaterialID::Cosmium);
drawMaterialRow("Purified quarkium", 7, GameData::MaterialID::PurifiedQuarkium);
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
ImGui::TableSetColumnIndex(1);
@ -349,7 +349,7 @@ Application::drawResearchInventory() {
drawMaterialRow("Mineral exoskeletology", 4, GameData::MaterialID::MineralExoskeletology);
drawMaterialRow("Carbonized skin", 5, GameData::MaterialID::CarbonisedSkin);
drawMaterialRow("Isolated void particle", 6, GameData::MaterialID::IsolatedVoidParticle);
drawUnavailableMaterialRow("Weaponised physiology", 7);
drawMaterialRow("Weaponised physiology", 7, GameData::MaterialID::WeaponisedPhysiology);
ImGui::EndTable();
}
@ -382,17 +382,6 @@ Application::drawMaterialRow(Containers::StringView name, std::int32_t tier, Gam
}
}
void
Application::drawUnavailableMaterialRow(Containers::StringView name, std::int32_t tier) {
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
ImGui::Text("T%i", tier);
ImGui::TableSetColumnIndex(1);
ImGui::TextUnformatted(name.cbegin(), name.cend());
ImGui::TableSetColumnIndex(2);
ImGui::TextDisabled("Unavailable as of game version " SAVETOOL_SUPPORTED_GAME_VERSION);
}
void
Application::drawMassManager() {
if(!_massManager) {

View file

@ -25,6 +25,7 @@ enum MaterialID : std::int32_t {
Lunarite = 0xC3503,
Asterite = 0xC3504,
HalliteFragma = 0xC3505,
Unnoctinium = 0xC3506,
Ednil = 0xC350A,
Nuflalt = 0xC350B,
@ -32,13 +33,15 @@ enum MaterialID : std::int32_t {
Soldus = 0xC350D,
SynthesisedN = 0xC350E,
Nanoc = 0xC350F,
Abyssillite = 0xC3510,
Alcarbonite = 0xC3514,
Keriphene = 0xC3515,
NitinolCM = 0xC3516,
Quarkium = 0xC3517,
Alterene = 0xC3518,
Cosmium = 0xC3519,
Alcarbonite = 0xC3514,
Keriphene = 0xC3515,
NitinolCM = 0xC3516,
Quarkium = 0xC3517,
Alterene = 0xC3518,
Cosmium = 0xC3519,
PurifiedQuarkium = 0xC351A,
MixedComposition = 0xDBBA0,
VoidResidue = 0xDBBA1,
@ -46,6 +49,7 @@ enum MaterialID : std::int32_t {
MineralExoskeletology = 0xDBBA3,
CarbonisedSkin = 0xDBBA4,
IsolatedVoidParticle = 0xDBBA5,
WeaponisedPhysiology = 0xDBBA6,
};
}

View file

@ -37,6 +37,7 @@ static const std::map<std::int32_t, Containers::StringView> melee_grips {
{5, "Guardian Grip (1H)"_s},
{6, "Knight Guard Grip (1H)"_s},
{7, "Saber Guard Grip (1H)"_s},
{8, "Base Grip (1H)"_s},
{100, "Combat Side Grip (1H)"_s},
{101, "Hollowed Side Grip (1H)"_s},
@ -44,39 +45,60 @@ static const std::map<std::int32_t, Containers::StringView> melee_grips {
{103, "Plated Side Grip (1H)"_s},
{104, "Locked Side Grip (1H)"_s},
{105, "Longpoint Side Grip (1H)"_s},
{106, "Concave Side Grip (1H)"_s},
{107, "Polehead Side Grip (1H)"_s},
{108, "Base Side Grip (1H)"_s},
{200, "Combat Dual Grip (1H)"_s},
{201, "Hollowed Dual Grip (1H)"_s},
{202, "Plated Dual Grip (1H)"_s},
{203, "Concave Dual Grip (1H)"_s},
{204, "Polehead Dual Grip (1H)"_s},
{400, "Combat Twin Grip (1H)"_s},
{401, "Sepal Twin Grip (1H)"_s},
{402, "Hollowed Twin Grip (1H)"_s},
{403, "Knuckle Guard Twin Grip (1H)"_s},
{404, "Arched Twin Grip (1H)"_s},
{405, "Handguard Twin Grip (1H)"_s},
{406, "Fullguard Twin Grip (1H)"_s},
{407, "Base Twin Grip (1H)"_s},
{1000, "Combat Knuckle (R/L)"_s},
{1001, "Battle Fist (R/L)"_s},
{1002, "Guard Knuckle (R/L)"_s},
{1003, "Heavy Fist (R/L)"_s},
{1004, "Thick Fist (R/L)"_s},
{1005, "Base Fist (R/L)"_s},
{2000, "Combat Polearm (2H)"_s},
{2001, "Dual Guard Polearm (2H)"_s},
{2002, "Sepal Polearm (2H)"_s},
{2003, "Fin Polearm (2H)"_s},
{2004, "Arched Polearm (2H)"_s},
{2005, "Sharp Polearm (2H)"_s},
{2006, "Ring Polearm (2H)"_s},
{2007, "Base Polearm (2H)"_s},
{2100, "Combat Side Polearm (2H)"_s},
{2101, "Plated Side Polearm (2H)"_s},
{2102, "Locked Side Polearm (2H)"_s},
{2103, "Fin Side Polearm (2H)"_s},
{2104, "Heavy Side Polearm (2H)"_s},
{2105, "Base Side Polearm (2H)"_s},
{2200, "Combat Dual Polearm (2H)"_s},
{2201, "Studded Dual Polearm (2H)"_s},
{2202, "Circular Dual Polearm (2H)"_s},
{2400, "Combat Twin Blade (2H)"_s},
{2401, "Guard Twin Blade (2H)"_s},
{2402, "Sepal Twin Blade (2H)"_s},
{2403, "Fin Twin Blade (2H)"_s},
{2404, "Arched Twin Blade (2H)"_s},
{2405, "Holder Twin Blade (2H)"_s},
{2406, "Ring Twin Blade (2H)"_s},
{2407, "Base Twin Blade (2H)"_s},
};
static const std::map<std::int32_t, Containers::StringView> melee_assaulters {
@ -92,6 +114,7 @@ static const std::map<std::int32_t, Containers::StringView> melee_assaulters {
{9, "Long Flat Gouger"_s},
{10, "Long Curved Blade"_s},
{11, "Long Broad Blade"_s},
{12, "Base L Sword"_s},
{20, "Long Combat Edge"_s},
{21, "Long Attached Edge"_s},
@ -105,6 +128,7 @@ static const std::map<std::int32_t, Containers::StringView> melee_assaulters {
{100, "Short Metal Blade"_s},
{101, "Short Assault Blade"_s},
{102, "Short Fin Blade"_s},
{103, "Base S Sword"_s},
{120, "Short Combat Edge"_s},
@ -120,6 +144,7 @@ static const std::map<std::int32_t, Containers::StringView> melee_assaulters {
{200, "Bracer"_s},
{201, "Custom Bracer"_s},
{202, "Base Hammer"_s},
{210, "Expanded Bracer"_s},
{211, "Expanded Custom Bracer"_s},
@ -127,10 +152,18 @@ static const std::map<std::int32_t, Containers::StringView> melee_assaulters {
{300, "Heavy Smasher"_s},
{301, "Heavy Basher"_s},
{302, "Heavy Torch Mace"_s},
{303, "Heavy Spike Club"_s},
{304, "Heavy Diamond Smasher"_s},
{305, "Heavy Spinning Smasher (Motion)"_s},
{306, "Base L Mace"_s},
{400, "Light Smasher"_s},
{401, "Light Basher"_s},
{402, "Light Torch Mace"_s},
{403, "Light Spike Club"_s},
{404, "Light Diamond Smasher"_s},
{405, "Light Spinning Smasher"_s},
{406, "Base S Mace"_s},
{420, "War Hammer"_s},
{421, "Great Hammer"_s},
@ -142,13 +175,16 @@ static const std::map<std::int32_t, Containers::StringView> melee_assaulters {
{500, "Combat Lance"_s},
{501, "Gouger Lance"_s},
{502, "Pointy Lance"_s},
{503, "Spinning Pointy Lance (Motion)"_s},
{504, "Crystal Lance"_s},
{510, "Piercer"_s},
{600, "Short Combat Lance"_s},
{601, "Short Pointy Lance"_s},
{602, "Short Spinning Pointy Lance (Motion)"_s},
{603, "Short Crystal Lance"_s},
{605, "Short Combat Drill (Motion)"_s},
{610, "Short Piercer"_s},
{700, "Combat Axe"_s},
@ -264,6 +300,11 @@ static const std::map<std::int32_t, Containers::StringView> bshooter_barrels {
{397, "Short D Base Barrel (Detonate)"_s},
{398, "Medium D Base Barrel (Detonate)"_s},
{399, "Long D Base Barrel (Detonate)"_s},
{400, "Heavy Burst Barrel (Pile Bunker) (Motion)"_s},
{401, "Under Guard Barrel (Pile Bunker) (Motion)"_s},
{402, "Facthold Barrel (Pile Bunker) (Motion)"_s},
{499, "Long P Base Barrel (Pile Bunker) (Motion)"_s},
};
// endregion
@ -318,6 +359,11 @@ static const std::map<std::int32_t, Containers::StringView> eshooter_busters {
{397, "Short W Base Buster (Wave)"_s},
{398, "Medium W Base Buster (Wave)"_s},
{399, "Long W Base Buster (Wave)"_s},
{400, "Wiredcharge Buster (Prism) (Motion)"_s},
{402, "Heavyclamp Buster (Prism) (Motion)"_s},
{402, "Curlescent Buster (Prism) (Motion)"_s},
{499, "Long P Base Buster (Prism) (Motion)"_s},
};
// endregion

View file

@ -141,6 +141,7 @@ Profile::refreshValues() {
_materials[GameData::MaterialID::Lunarite] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Lunarite);
_materials[GameData::MaterialID::Asterite] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Asterite);
_materials[GameData::MaterialID::HalliteFragma] = getResource(PROFILE_MATERIAL, GameData::MaterialID::HalliteFragma);
_materials[GameData::MaterialID::Unnoctinium] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Unnoctinium);
_materials[GameData::MaterialID::Ednil] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Ednil);
_materials[GameData::MaterialID::Nuflalt] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Nuflalt);
@ -148,13 +149,15 @@ Profile::refreshValues() {
_materials[GameData::MaterialID::Soldus] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Soldus);
_materials[GameData::MaterialID::SynthesisedN] = getResource(PROFILE_MATERIAL, GameData::MaterialID::SynthesisedN);
_materials[GameData::MaterialID::Nanoc] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Nanoc);
_materials[GameData::MaterialID::Abyssillite] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Abyssillite);
_materials[GameData::MaterialID::Alcarbonite] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Alcarbonite);
_materials[GameData::MaterialID::Keriphene] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Keriphene);
_materials[GameData::MaterialID::NitinolCM] = getResource(PROFILE_MATERIAL, GameData::MaterialID::NitinolCM);
_materials[GameData::MaterialID::Quarkium] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Quarkium);
_materials[GameData::MaterialID::Alterene] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Alterene);
_materials[GameData::MaterialID::Cosmium] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Cosmium);
_materials[GameData::MaterialID::Alcarbonite] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Alcarbonite);
_materials[GameData::MaterialID::Keriphene] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Keriphene);
_materials[GameData::MaterialID::NitinolCM] = getResource(PROFILE_MATERIAL, GameData::MaterialID::NitinolCM);
_materials[GameData::MaterialID::Quarkium] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Quarkium);
_materials[GameData::MaterialID::Alterene] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Alterene);
_materials[GameData::MaterialID::Cosmium] = getResource(PROFILE_MATERIAL, GameData::MaterialID::Cosmium);
_materials[GameData::MaterialID::PurifiedQuarkium] = getResource(PROFILE_MATERIAL, GameData::MaterialID::PurifiedQuarkium);
_materials[GameData::MaterialID::MixedComposition] = getResource(PROFILE_QUARK_DATA, GameData::MaterialID::MixedComposition);
_materials[GameData::MaterialID::VoidResidue] = getResource(PROFILE_QUARK_DATA, GameData::MaterialID::VoidResidue);
@ -162,6 +165,7 @@ Profile::refreshValues() {
_materials[GameData::MaterialID::MineralExoskeletology] = getResource(PROFILE_QUARK_DATA, GameData::MaterialID::MineralExoskeletology);
_materials[GameData::MaterialID::CarbonisedSkin] = getResource(PROFILE_QUARK_DATA, GameData::MaterialID::CarbonisedSkin);
_materials[GameData::MaterialID::IsolatedVoidParticle] = getResource(PROFILE_QUARK_DATA, GameData::MaterialID::IsolatedVoidParticle);
_materials[GameData::MaterialID::WeaponisedPhysiology] = getResource(PROFILE_QUARK_DATA, GameData::MaterialID::WeaponisedPhysiology);
_valid = true;
}
@ -260,7 +264,7 @@ Profile::material(GameData::MaterialID id) const {
bool
Profile::setMaterial(GameData::MaterialID id, std::int32_t amount) {
Containers::StringView container = id > GameData::MaterialID::MixedComposition ? PROFILE_QUARK_DATA : PROFILE_MATERIAL;
Containers::StringView container = id >= GameData::MaterialID::MixedComposition ? PROFILE_QUARK_DATA : PROFILE_MATERIAL;
auto mats_prop = _profile.at<Gvas::Types::ArrayProperty>(container);
if(!mats_prop) {