Petites modifs

This commit is contained in:
Timothée Leclaire-Fournier 2024-01-19 19:36:01 -05:00
parent f727a9df20
commit 42a4f5dfba
2 changed files with 18 additions and 8 deletions

View File

@ -95,11 +95,12 @@ bool GOLTeamH::setRule(std::string const& rule)
continue;
}
// On vérifie qu'il y ait un backslash avec un char après.
// S'il n'y a pas de chiffre, on vérifie qu'il y ait
// un backslash avec un S après.
if (firstPart && rule[i] == '/' && rule.size() > i + 1
&& (rule[i + 1] == 'S' || rule[i + 1] == 's')) {
i++; // On saute le S
firstPart = false;
firstPart = false; // Deuxième partie
continue;
}
else // Aucun slash + s, alors pas bon.
@ -168,10 +169,15 @@ void GOLTeamH::setSolidColor(State state, Color const& color)
mAliveColor = color;
}
// TODO
// TODO: performance
void GOLTeamH::processOneStep()
{
// On commence à itérer sur les côtés. En règlant ces cas particuliers, on
// peut éviter des branches dans la boucle principale. Le branch predictor
// aime cela.
for (size_t i{}; i < mData.width(); ++i) {
}
}
void GOLTeamH::updateImage(uint32_t* buffer, size_t buffer_size) const
@ -182,6 +188,7 @@ void GOLTeamH::updateImage(uint32_t* buffer, size_t buffer_size) const
auto s_ptr = buffer;
auto e_ptr = &buffer[buffer_size];
// On itère sur chaque éléments du tableau et on associe la couleur.
for (const auto& i : mData.data()) {
if (i == GridTeamH::CellType::alive) {
*s_ptr &= 0; // Clear
@ -197,10 +204,11 @@ void GOLTeamH::updateImage(uint32_t* buffer, size_t buffer_size) const
*s_ptr |= mDeadColor.green << 8;
*s_ptr |= mDeadColor.blue;
}
s_ptr++;
// Sanity check
if (s_ptr > e_ptr)
// Sanity check, pour éviter des problèmes
if (s_ptr >= e_ptr)
break;
}
}

View File

@ -40,9 +40,11 @@ private:
std::optional<BorderManagement> mBorderManagement;
std::optional<IterationType> mIteration;
GridTeamH mData;
// On utilise un bitset qui contient les règles de chaque nombre.
std::bitset<9> mParsedRuleRevive, mParsedRuleSurvive;
GridTeamH mData;
Color mDeadColor, mAliveColor;
// Fonction utilisée à l'interne.
std::optional<unsigned char> convertCharToNumber(const char c);
};