Converted CardPrimitive's basicAbilities from a map<int, int> to a bitset. With 92 abilities, that means our base container for abilities is now 16 bytes in size (down from 28), and is a fixed size, whereas the map would grow by 8 bytes per added ability.

This commit is contained in:
wrenczes@gmail.com
2011-04-26 09:35:38 +00:00
parent 425e49e608
commit a73fd4e99f
10 changed files with 74 additions and 90 deletions

View File

@@ -53,11 +53,8 @@ void MTGCardInstance::copy(MTGCardInstance * card)
{
MTGCard * source = card->model;
CardPrimitive * data = source->data;
for (map<int, int>::const_iterator it = data->basicAbilities.begin(); it != data->basicAbilities.end(); ++it)
{
int i = it->first;
basicAbilities[i] = data->basicAbilities[i];
}
basicAbilities = card->basicAbilities;
for (size_t i = 0; i < data->types.size(); i++)
{
types.push_back(data->types[i]);
@@ -1048,18 +1045,20 @@ JSample * MTGCardInstance::getSample()
}
}
for (map<int, int>::const_iterator it = basicAbilities.begin(); it != basicAbilities.end(); ++it)
if (basicAbilities.any())
{
int i = it->first;
if (!basicAbilities[i])
continue;
string type = Constants::MTGBasicAbilities[i];
type = type + ".wav";
js = WResourceManager::Instance()->RetrieveSample(type);
if (js)
for (size_t x = 0; x < basicAbilities.size(); ++x)
{
sample = string(type);
return js;
if (!basicAbilities.test(x))
continue;
string type = Constants::MTGBasicAbilities[x];
type = type + ".wav";
js = WResourceManager::Instance()->RetrieveSample(type);
if (js)
{
sample = string(type);
return js;
}
}
}