- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
enum EPlayerStat { ... };
typedef std::pair<EPlayerStat, int> StatDelta;
...
void GameClassT::showTooltipStats(const float2& pos, const std::vector<StatDelta>& statDeltas)
{
//...
if (statDeltas.empty())
return;
// Выбираем тип баббла в зависимости от количества статов, которые в нём нужно отобразить.
// Баббл с последним статом "wish chance" выглядит немного не так, как остальные,
// но возможен (пока что) только для варианта с тремя статами.
Bubble* const bubblesNormal[] =
{
&m_bubbleTooltipStats1SE,
&m_bubbleTooltipStats2SE,
&m_bubbleTooltipStats3SE,
&m_bubbleTooltipStats4SE
};
Bubble* const bubblesWish[] =
{
nullptr,
nullptr,
&m_bubbleTooltipStats3SE_Wish,
nullptr
};
Bubble* const* const bubbles = (statDeltas.end() == std::find_if(statDeltas.begin(), statDeltas.end(),
[](const StatDelta& delta) -> bool { return delta.first == PS_WishChance; }))
? bubblesNormal : bubblesWish;
Bubble& bubble = *bubbles[(statDeltas.size() <= ARRAY_SIZE(bubbles)) ? (statDeltas.size() - 1) : (ARRAY_SIZE(bubbles) - 1)];
if (&bubble == nullptr)
{
RZT_LOG_WARNING("Bubble with %d stats with wish chance is not supported!", statDeltas.size());
return;
}
// Настраиваем выбранный баббл.
//... (здесь вызываются всякие методы через ссылку bubble)
}
Внезапные изменения в спецификации такие внезапные.
Мне всегда становится страшно, когда из-за них я начинаю рожать что-то подобное.