#include #include #include #include "HtmxShItemList.hpp" #include "HtmxShAttributeList.hpp" #include "HtmxShCondition.hpp" #include "ShadowrunCharacterForm.hpp" using namespace std; static const vector cCharacterInfo = { "Name", "Metatype", "Age", "Sex", "Nuyen", "Lifestyle", "Total Karma", "C. Karma", "Street Cred", "Notoriety", "Fame" }; static const vector cAttributes = { "Body", "Agility", "Reaction", "Strength", "Charisma", "Intuition", "Logic", "Willpower", "Edge", "Essence", "Initiative" }; static const vector cSkillParameters = { "Name", "RTG.", "ATT.", }; static const vector cContactsParameters = { "Name", "Loyalty", }; static const vector cRangedWeaponsParameters = { "Weapon", "Damage", "AP", "Mode", "RC", "Ammo" }; static const vector cImplantParameters = { "Implant", "Rating", "Essence", "Notes", }; static const vector cMeleeWeaponParameters = { "Weapon", "Reach", "Damage", "AP", }; static const vector cArmorParamters = { "Armor", "Ballistic", "Impact", "Notes", }; static const vector genCheckboxIds(){ vector vec; HtmxShCondition::genIds(vec, "Physical Condition", 18); HtmxShCondition::genIds(vec, "Stun Condition", 12); return vec; } static const vector genFormIds(){ vector vec; vec.reserve(200); // OBS make sure to update both here and in ShadowrunCharacterForm() HtmxShAttributeList::genIds(vec, "Character Info", cCharacterInfo); HtmxShAttributeList::genIds(vec, "Attributes", cAttributes); HtmxShItemList::genIds(vec, "Active Skills", cSkillParameters, 8); HtmxShItemList::genIds(vec, "Knowledge Skills", cSkillParameters, 8); vec.push_back("positive_qualities"); vec.push_back("negative_qualities"); vec.push_back("datapack_notes"); auto v = genCheckboxIds(); vec.insert(vec.end(), v.begin(), v.end()); HtmxShCondition::genIds(vec, "Physical Condition", 18); HtmxShCondition::genIds(vec, "Stun Condition", 12); HtmxShItemList::genIds(vec, "Contacts", cContactsParameters, 6); HtmxShItemList::genIds(vec, "Ranged Weapons", cRangedWeaponsParameters, 7); HtmxShItemList::genIds(vec, "Cyberware and Bioware", cImplantParameters, 18); HtmxShItemList::genIds(vec, "Melee Weapons", cMeleeWeaponParameters, 7); HtmxShItemList::genIds(vec, "Armor", cArmorParamters , 3); vec.push_back("notes"); return vec; } const std::vector ShadowrunCharacterForm::m_formIds = genFormIds(); const std::vector ShadowrunCharacterForm::m_checkboxIds = genCheckboxIds(); ShadowrunCharacterForm::ShadowrunCharacterForm(std::map& data) { html.reserve(30000); html += "
"; html += "
"; html += HtmxShAttributeList("Character Info", cCharacterInfo, data).htmx(); html += HtmxShAttributeList("Attributes", cAttributes, data).htmx(); html += HtmxShItemList("Active Skills", cSkillParameters, 8, data).htmx(); html += HtmxShItemList("Knowledge Skills", cSkillParameters, 8, data).htmx(); auto valuePos = data.contains("positive_qualities") ? data["positive_qualities"] : ""; auto valueNeg = data.contains("negative_qualities") ? data["negative_qualities"] : ""; // add Qualities html += format("
" "

Qualities

" "" "" "
", valuePos, valueNeg); auto valueNotes = data.contains("datapack_notes") ? data["datapack_notes"] : ""; // add datapack notes html += format("
" "

Datajack / Commlink / Cyberdeck / Notes

" "" "
", valueNotes); html += HtmxShCondition("Physical Condition", 18, data).htmx(); html += HtmxShCondition("Stun Condition", 12, data).htmx(); html += HtmxShItemList("Contacts", cContactsParameters, 6, data).htmx(); html += HtmxShItemList("Ranged Weapons", cRangedWeaponsParameters, 7, data).htmx(); html += HtmxShItemList("Cyberware and Bioware", cImplantParameters, 18, data).htmx(); html += HtmxShItemList("Melee Weapons", cMeleeWeaponParameters, 7, data).htmx(); html += HtmxShItemList("Armor", cArmorParamters , 3, data).htmx(); html += "
"; valueNotes = data.contains("notes") ? data["notes"] : ""; html += format("
" "
", valueNotes); html += "
" "" "
" "
"; }