mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-27 22:49:25 +02:00
Reduce size of Bonus struct from 320 bytes to 296 bytes.
- Internal enums were resized to occupy single byte. - Duration bitmask uses 16 bit integer directly instead of std::bitset<11> which consumed 8 bytes. - Fields shuffled to minimise padding and keep the most useful data on first 2 cache lines.
This commit is contained in:
@@ -119,7 +119,7 @@ std::string Bonus::Description(std::optional<si32> customValue) const
|
||||
if(descriptionHelper.empty())
|
||||
{
|
||||
// still no description - try to generate one based on duration
|
||||
if ((duration & BonusDuration::ONE_BATTLE).any())
|
||||
if ((duration & BonusDuration::ONE_BATTLE) != 0)
|
||||
{
|
||||
if (val > 0)
|
||||
descriptionHelper.appendTextID("core.arraytxt.110"); //+%d Temporary until next battle"
|
||||
@@ -248,7 +248,7 @@ DLL_LINKAGE std::ostream & operator<<(std::ostream &out, const Bonus &bonus)
|
||||
#define printField(field) out << "\t" #field ": " << (int)bonus.field << "\n"
|
||||
printField(val);
|
||||
out << "\tSubtype: " << bonus.subtype.toString() << "\n";
|
||||
printField(duration.to_ulong());
|
||||
printField(duration);
|
||||
printField(source);
|
||||
out << "\tSource ID: " << bonus.sid.toString() << "\n";
|
||||
if(bonus.additionalInfo != CAddInfo::NONE)
|
||||
|
||||
Reference in New Issue
Block a user