Refactors constants out of Disciplines.h.

This commit is contained in:
2023-04-25 13:32:50 -07:00
parent 053da18030
commit c3cd1e65ff
5 changed files with 70 additions and 65 deletions

View File

@@ -18,6 +18,7 @@ using std::vector;
const int kBackgroundPoints = 5; const int kBackgroundPoints = 5;
const int kInitialGeneration = 13; const int kInitialGeneration = 13;
const int kDisciplinePoints = 3;
CharacterType::CharacterType() { CharacterType::CharacterType() {
// Scalars // Scalars
@@ -67,7 +68,7 @@ CharacterType::CharacterType() {
} }
// Disciplines // Disciplines
for (int id = 0; id <= kDisciplinesCount; id++) { for (int id = 0; id <= GetNumDisciplines(); id++) {
SetDisciplineValue(id, 0); SetDisciplineValue(id, 0);
} }
} }
@@ -212,7 +213,7 @@ void CharacterType::FillDisciplineValues(std::vector<int>& values) const {
// TODO: This method sucks, but was needed in QBasic. // TODO: This method sucks, but was needed in QBasic.
values.clear(); values.clear();
values.push_back(0); // To pad the indexes. values.push_back(0); // To pad the indexes.
for (int id = 1; id <= kDisciplinesCount; id++) { for (int id = 1; id <= GetNumDisciplines(); id++) {
values.push_back(GetDisciplineValue(id)); values.push_back(GetDisciplineValue(id));
} }
} }

View File

@@ -13,6 +13,7 @@
#include "Utils.h" #include "Utils.h"
#include "sbf-cpp/Abilities.h" #include "sbf-cpp/Abilities.h"
#include "sbf-cpp/Backgrounds.h" #include "sbf-cpp/Backgrounds.h"
#include "sbf-cpp/Disciplines.h"
namespace SBF { namespace SBF {
namespace { namespace {
@@ -209,7 +210,7 @@ void CGSpendDisciplinePoint(CharacterType& ch) {
MaybeClearScreen(); MaybeClearScreen();
MenuStyle ms; MenuStyle ms;
ms.show_cancel = true; ms.show_cancel = true;
ms.cancel_item_id = kDisciplinesCount + 1; ms.cancel_item_id = GetNumDisciplines() + 1;
vector<int> values = ch.GetDisciplineValues(); vector<int> values = ch.GetDisciplineValues();
vector<string> labels; vector<string> labels;
FillDisciplineLabels(labels); FillDisciplineLabels(labels);
@@ -345,7 +346,7 @@ void ShowCharacterSheet(CharacterType& ch) {
const int kRightColumnWidth = 37; const int kRightColumnWidth = 37;
vector<string> discipline_strings; vector<string> discipline_strings;
size_t index; size_t index;
for (index = 1; index <= kDisciplinesCount; index++) { for (index = 1; index <= GetNumDisciplines(); index++) {
int value = ch.GetDisciplineValue(index); int value = ch.GetDisciplineValue(index);
if (value > 0) { if (value > 0) {
string suffix = ""; string suffix = "";

View File

@@ -7,6 +7,59 @@ namespace SBF {
using std::string; using std::string;
using std::vector; using std::vector;
const std::string kDisciplineAnimalismLabel = "Animalism";
const std::string kDisciplineAuspexLabel = "Auspex";
const std::string kDisciplineBardoLabel = "Bardo";
const std::string kDisciplineCelerityLabel = "Celerity";
const std::string kDisciplineChimestryLabel = "Chimestry";
const std::string kDisciplineDementationLabel = "Dementation";
const std::string kDisciplineDominateLabel = "Dominate";
const std::string kDisciplineFortitudeLabel = "Fortitude";
const std::string kDisciplineMelpomineeLabel = "Melpominee";
const std::string kDisciplineMortisLabel = "Mortis";
const std::string kDisciplineMytherceriaLabel = "Mytherceria";
const std::string kDisciplineNecromancyLabel = "Necromancy";
const std::string kDisciplineObeahLabel = "Obeah";
const std::string kDisciplineObfuscateLabel = "Obfuscate";
const std::string kDisciplineObtenebrationLabel = "Obtenebration";
const std::string kDisciplinePotenceLabel = "Potence";
const std::string kDisciplinePresenceLabel = "Presence";
const std::string kDisciplineProteanLabel = "Protean";
const std::string kDisciplineQuietusLabel = "Quietus";
const std::string kDisciplineSerpentisLabel = "Serpentis";
const std::string kDisciplineSpiritusLabel = "Spiritus";
const std::string kDisciplineThanantosisLabel = "Thanantosis";
const std::string kDisciplineThaumaturgyLabel = "Thaumaturgy";
const std::string kDisciplineVicissitudeLabel = "Vicissitude";
const int kDisciplinesCount = 24;
const std::string kDisciplines[] = {
"",
kDisciplineAnimalismLabel,
kDisciplineAuspexLabel,
kDisciplineBardoLabel,
kDisciplineCelerityLabel,
kDisciplineChimestryLabel,
kDisciplineDementationLabel,
kDisciplineDominateLabel,
kDisciplineFortitudeLabel,
kDisciplineMelpomineeLabel,
kDisciplineMortisLabel,
kDisciplineMytherceriaLabel,
kDisciplineNecromancyLabel,
kDisciplineObeahLabel,
kDisciplineObfuscateLabel,
kDisciplineObtenebrationLabel,
kDisciplinePotenceLabel,
kDisciplinePresenceLabel,
kDisciplineProteanLabel,
kDisciplineQuietusLabel,
kDisciplineSerpentisLabel,
kDisciplineSpiritusLabel,
kDisciplineThanantosisLabel,
kDisciplineThaumaturgyLabel,
kDisciplineVicissitudeLabel,
};
string GetDisciplineLabel(int disciplineId) { string GetDisciplineLabel(int disciplineId) {
if (disciplineId > 0 && disciplineId <= kDisciplinesCount) { if (disciplineId > 0 && disciplineId <= kDisciplinesCount) {
return kDisciplines[disciplineId]; return kDisciplines[disciplineId];
@@ -21,4 +74,8 @@ void FillDisciplineLabels(vector<string>& labels) {
labels.push_back(GetDisciplineLabel(id)); labels.push_back(GetDisciplineLabel(id));
} }
} }
int GetNumDisciplines() {
return kDisciplinesCount;
}
} // End namespace SBF } // End namespace SBF

View File

@@ -16,83 +16,31 @@
* @{ * @{
*/ */
namespace SBF { namespace SBF {
const int kDisciplinePoints = 3;
const int kDisciplineAnimalismId = 1; const int kDisciplineAnimalismId = 1;
const std::string kDisciplineAnimalismLabel = "Animalism";
const int kDisciplineAuspexId = 2; const int kDisciplineAuspexId = 2;
const std::string kDisciplineAuspexLabel = "Auspex";
const int kDisciplineBardoId = 3; const int kDisciplineBardoId = 3;
const std::string kDisciplineBardoLabel = "Bardo";
const int kDisciplineCelerityId = 4; const int kDisciplineCelerityId = 4;
const std::string kDisciplineCelerityLabel = "Celerity";
const int kDisciplineChimestryId = 5; const int kDisciplineChimestryId = 5;
const std::string kDisciplineChimestryLabel = "Chimestry";
const int kDisciplineDementationId = 6; const int kDisciplineDementationId = 6;
const std::string kDisciplineDementationLabel = "Dementation";
const int kDisciplineDominateId = 7; const int kDisciplineDominateId = 7;
const std::string kDisciplineDominateLabel = "Dominate";
const int kDisciplineFortitudeId = 8; const int kDisciplineFortitudeId = 8;
const std::string kDisciplineFortitudeLabel = "Fortitude";
const int kDisciplineMelpomineeId = 9; const int kDisciplineMelpomineeId = 9;
const std::string kDisciplineMelpomineeLabel = "Melpominee";
const int kDisciplineMortisId = 10; const int kDisciplineMortisId = 10;
const std::string kDisciplineMortisLabel = "Mortis";
const int kDisciplineMytherceriaId = 11; const int kDisciplineMytherceriaId = 11;
const std::string kDisciplineMytherceriaLabel = "Mytherceria";
const int kDisciplineNecromancyId = 12; const int kDisciplineNecromancyId = 12;
const std::string kDisciplineNecromancyLabel = "Necromancy";
const int kDisciplineObeahId = 13; const int kDisciplineObeahId = 13;
const std::string kDisciplineObeahLabel = "Obeah";
const int kDisciplineObfuscateId = 14; const int kDisciplineObfuscateId = 14;
const std::string kDisciplineObfuscateLabel = "Obfuscate";
const int kDisciplineObtenebrationId = 15; const int kDisciplineObtenebrationId = 15;
const std::string kDisciplineObtenebrationLabel = "Obtenebration";
const int kDisciplinePotenceId = 16; const int kDisciplinePotenceId = 16;
const std::string kDisciplinePotenceLabel = "Potence";
const int kDisciplinePresenceId = 17; const int kDisciplinePresenceId = 17;
const std::string kDisciplinePresenceLabel = "Presence";
const int kDisciplineProteanId = 18; const int kDisciplineProteanId = 18;
const std::string kDisciplineProteanLabel = "Protean";
const int kDisciplineQuietusId = 19; const int kDisciplineQuietusId = 19;
const std::string kDisciplineQuietusLabel = "Quietus";
const int kDisciplineSerpentisId = 20; const int kDisciplineSerpentisId = 20;
const std::string kDisciplineSerpentisLabel = "Serpentis";
const int kDisciplineSpiritusId = 21; const int kDisciplineSpiritusId = 21;
const std::string kDisciplineSpiritusLabel = "Spiritus";
const int kDisciplineThanantosisId = 22; const int kDisciplineThanantosisId = 22;
const std::string kDisciplineThanantosisLabel = "Thanantosis";
const int kDisciplineThaumaturgyId = 23; const int kDisciplineThaumaturgyId = 23;
const std::string kDisciplineThaumaturgyLabel = "Thaumaturgy";
const int kDisciplineVicissitudeId = 24; const int kDisciplineVicissitudeId = 24;
const std::string kDisciplineVicissitudeLabel = "Vicissitude";
const int kDisciplinesCount = 24;
const std::string kDisciplines[] = {
"",
kDisciplineAnimalismLabel,
kDisciplineAuspexLabel,
kDisciplineBardoLabel,
kDisciplineCelerityLabel,
kDisciplineChimestryLabel,
kDisciplineDementationLabel,
kDisciplineDominateLabel,
kDisciplineFortitudeLabel,
kDisciplineMelpomineeLabel,
kDisciplineMortisLabel,
kDisciplineMytherceriaLabel,
kDisciplineNecromancyLabel,
kDisciplineObeahLabel,
kDisciplineObfuscateLabel,
kDisciplineObtenebrationLabel,
kDisciplinePotenceLabel,
kDisciplinePresenceLabel,
kDisciplineProteanLabel,
kDisciplineQuietusLabel,
kDisciplineSerpentisLabel,
kDisciplineSpiritusLabel,
kDisciplineThanantosisLabel,
kDisciplineThaumaturgyLabel,
kDisciplineVicissitudeLabel,
};
/// @brief Gets the label for a discipline with a specific id. /// @brief Gets the label for a discipline with a specific id.
/// @param discipline_id The id of the discipline to get the label for. /// @param discipline_id The id of the discipline to get the label for.
@@ -102,6 +50,8 @@ std::string GetDisciplineLabel(int discipline_id);
/// @brief Fills the provided vector with all of the valid discipline labels. /// @brief Fills the provided vector with all of the valid discipline labels.
/// @param discipline_labels The vector to fill. It will be cleared first. /// @param discipline_labels The vector to fill. It will be cleared first.
void FillDisciplineLabels(std::vector<std::string>& discipline_labels); void FillDisciplineLabels(std::vector<std::string>& discipline_labels);
int GetNumDisciplines();
} // End namespace SBF } // End namespace SBF
/** @}*/ /** @}*/

View File

@@ -52,14 +52,10 @@ TestResults test_FillDisciplineLabels() {
auto fnToTest = []() -> string { auto fnToTest = []() -> string {
ostringstream error_message; ostringstream error_message;
vector<string> expected = { vector<string> expected = {
kDisciplineAnimalismLabel, kDisciplineAuspexLabel, kDisciplineBardoLabel, "Animalism", "Auspex", "Bardo", "Celerity", "Chimestry", "Dementation",
kDisciplineCelerityLabel, kDisciplineChimestryLabel, kDisciplineDementationLabel, "Dominate", "Fortitude", "Melpominee", "Mortis", "Mytherceria", "Necromancy",
kDisciplineDominateLabel, kDisciplineFortitudeLabel, kDisciplineMelpomineeLabel, "Obeah", "Obfuscate", "Obtenebration", "Potence", "Presence", "Protean",
kDisciplineMortisLabel, kDisciplineMytherceriaLabel, kDisciplineNecromancyLabel, "Quietus", "Serpentis", "Spiritus", "Thanantosis", "Thaumaturgy", "Vicissitude",
kDisciplineObeahLabel, kDisciplineObfuscateLabel, kDisciplineObtenebrationLabel,
kDisciplinePotenceLabel, kDisciplinePresenceLabel, kDisciplineProteanLabel,
kDisciplineQuietusLabel, kDisciplineSerpentisLabel, kDisciplineSpiritusLabel,
kDisciplineThanantosisLabel, kDisciplineThaumaturgyLabel, kDisciplineVicissitudeLabel,
}; };
vector<string> actual = {"This should be removed."}; vector<string> actual = {"This should be removed."};
FillDisciplineLabels(actual); FillDisciplineLabels(actual);