1. Список говнокодов пользователя Kirinyale

    Всего: 24

  2. C++ / Говнокод #12870

    +25

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    bool Channel::applyPreprocessorSettings()
    {
    	if (captureDeviceID_.empty() || !isSafeToChangeSettingsNow())
    		CHANNEL_LOG("deferring applyPreprocessorSettings()");
    		needApplyPreprocessorSettings_ = true;
    		return false;
    
    	// ... (куча кода)
    	
    	return true;
    }

    Никогда - слышите, НИКОГДА! - не пишите на C++ одновременно с питоном.

    Kirinyale, 09 Апреля 2013

    Комментарии (51)
  3. Lua / Говнокод #9627

    −87

    1. 1
    2. 2
    3. 3
    4. 4
    Splash = playGrayscaleSplashFx
    
    playGrayscaleSplashFx = function()
    end

    Хороший, годный аналог #define true false.
    Обнаружен в Lua-скрипте, автоматически включающемся во все скриптовые контексты (примерный аналог precompiled header).

    playGrayscaleSplashFx - функция, экспортируемая в Lua из C++ кода.

    Внёс в неё изменения, попытался протестировать результат... долго думал.

    Kirinyale, 07 Марта 2012

    Комментарии (31)
  4. C++ / Говнокод #7581

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    class PieceDragging
    {
    ...
    };

    Переделываю всё тот же (недавно упоминавшийся) Jigsaw. Попытался произнести вслух название класса одного из состояний. Коллеги оценили. Придётся рефакторить...

    Kirinyale, 18 Августа 2011

    Комментарии (4)
  5. C++ / Говнокод #7529

    +163

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void Model::setPieceRotationAngleDegrees(uint pieceIndex, float angleDegrees)
    {
    	check(pieceIndex < cfg_.getPiecesQuantity());
    	pieces_[pieceIndex].angle_ += angleDegrees;
    
    	if (pieces_[pieceIndex].angle_ == 360.0f)
    	{
    		pieces_[pieceIndex].angle_ = 0.0f;
    	}
    }

    Фееричный сеттер в модели простенького Jigsaw-паззла.

    Kirinyale, 12 Августа 2011

    Комментарии (14)
  6. C++ / Говнокод #7444

    +152

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    if (getMaterialDom().ztest_)
     {
      device.SetRenderState(D3DRS_ZENABLE, TRUE);
      device.SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
     }
     else
      device.SetRenderState(D3DRS_ZENABLE, FALSE);
    
    if (getMaterialDom().zwrite_)
    	device.SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
    else
    	device.SetRenderState(D3DRS_ZWRITEENABLE, FALSE);

    Реализация параметров материала z-test и z-write в 3D-движке.

    Kirinyale, 04 Августа 2011

    Комментарии (30)
  7. Lua / Говнокод #7297

    −96

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    function onUpdate(this)
    			
    	local  a;
    
    	a = math.floor( math.random() * 1000);
    
    	if(a==68)then
    		playParticleFx(this,"/particles/spider/spider_lift.psysl",10);
    		--logWarning("spirder1");
    	end
    
    	if(a==35)then
    		playParticleFx(this,"/particles/spider/spider_lift_1.psysl",10);
    		--logWarning("spirder2");
    	end
    
    	if(a==73)then
    		playParticleFx(this,"/particles/spider/spider_lift_2.psysl",10);
    		--logWarning("spirder3");
    	end
    
    end;

    Выдержка из Lua-скрипта.
    Выпускаем побегать декоративного паучка по случайными интервалам времени.

    Kirinyale, 20 Июля 2011

    Комментарии (22)
  8. C++ / Говнокод #6252

    +171

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    ...
    
    bool GameLocations::checkButtonsEnabled() const
    {
    	GameClassT& gc = GameClass::instance();
    	return
    		!gc.getCurrentLocationPopup() &&
    		!gc.getHud().getCurrentWindowFore() &&
    		!gc.isMenuOpen() &&
    		!gc.isEndOfDay() &&
    		!GameClass::instance().isMouseConsumedThisFrame();
    }
    
    ...
    
    void LocationPopupBase::update(float dt)
    {
    	...
    
    	const bool inputEnabled =
    		m_isActive &&
    		!m_talentUsedWindowActive &&
    		!m_dialogueManager.isVisible() &&
    		!GameClass::instance().getHud().getCurrentWindowBack() &&
    		!GameClass::instance().getHud().getCurrentWindowFore() &&
    		(!m_currentAction ||
    		 ((*m_currentActionPhase == AP_Finalize) && !m_currentAction->m_immediateFinalize)) &&
    		 m_actionSequenceCallbacks.empty();
    
    	setInputEnabled(inputEnabled);
    }
    
    ...

    Вот во что со временем превращаются игровые проекты, в которых нет никакой стейт-машины или хоть какого-нибудь её аналога.

    Это - только вершина айсберга. Разнообразные (старые и новые) баги обработки ввода постоянно появляются из ниоткуда, исчезают в никуда, а фиксить их приходится минимум по пять раз в неделю.

    Kirinyale, 06 Апреля 2011

    Комментарии (12)
  9. C++ / Говнокод #6165

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 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)
    }

    Внезапные изменения в спецификации такие внезапные.
    Мне всегда становится страшно, когда из-за них я начинаю рожать что-то подобное.

    Kirinyale, 31 Марта 2011

    Комментарии (13)
  10. C++ / Говнокод #6021

    +167

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    PopupWindow* GameLocations::getCurrentPopup()
    {
    	if(m_curPopup != nullptr && m_curPopup->needsClose())
    	{
    		m_curPopup->onClose();
    		m_curPopup = nullptr;
    		m_walker->BeginWalk(m_graph->getClosestNode(m_currentLocationId));
    	}
    	return m_curPopup;
    }

    Kirinyale, 18 Марта 2011

    Комментарии (14)
  11. C++ / Говнокод #5982

    +160

    1. 1
    2. 2
    float alpha = float(m_startAlpha) + 255.0f * (getElapsed() / (m_duration * (1.0f - float(m_startAlpha) / 255.0f)));
    m_target->setAlpha(static_cast<uint8_t>(alpha));

    Выдержка из обновления объекта-действия, производящего линейный фейд-аут объекта...

    Общение с чужим говнокодом не проходит бесследно... что же я курил, перед тем как ЭТО соорудить?

    Kirinyale, 14 Марта 2011

    Комментарии (5)