- 1
- 2
- 3
https://github.com/GSC-fake/Cossacks-back-to-war/blob/master/BackToWar_135/addon_2_project/ADDON_2_PROJECT/ADDON_PROJECT_130
Исходный код казаков. Трезвым лучше не читать. Я вас предупредил.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 5
0
https://github.com/GSC-fake/Cossacks-back-to-war/blob/master/BackToWar_135/addon_2_project/ADDON_2_PROJECT/ADDON_PROJECT_130
Исходный код казаков. Трезвым лучше не читать. Я вас предупредил.
−51
#include <stddef.h>
#define H 0.2
#define A 0
#define B 2
void main( void )
{
const double h = 0.2;
const int b = 2;
const int a = 0;
const size_t size1 = (b - a) / h;
double arr1[size1] = { 1 }; // Вы видете тут VLA? А он есть
const size_t size2 = (B - A) / H;
double arr2[size2] = { 1 }; // И тут есть
double arr3[(const size_t)((b - a) / h)] = { 1 }; // И тут тоже
double arr4[(const size_t)((B - A) / H)] = { 1 }; // И здесь тоже
double arr5[10] = { 1 }; // Ну хоть тут нет, слава Селестии
}
Такие дела. Без инициализатора, конечно же, работает. Но мне интересно, почему он это именует variable-sized object? Везде константы.
+2
int CHud :: DrawHudNumber( int x, int y, int iFlags, int iNumber, int r, int g, int b)
{
int iWidth = GetSpriteRect(m_HUD_number_0).right - GetSpriteRect(m_HUD_number_0).left;
int k;
if (iNumber > 0)
{
// SPR_Draw 100's
if (iNumber >= 100)
{
k = iNumber/100;
SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
x += iWidth;
}
else if (iFlags & (DHN_3DIGITS))
{
//SPR_DrawAdditive( 0, x, y, &rc );
x += iWidth;
}
// SPR_Draw 10's
if (iNumber >= 10)
{
k = (iNumber % 100)/10;
SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
x += iWidth;
}
else if (iFlags & (DHN_3DIGITS | DHN_2DIGITS))
{
//SPR_DrawAdditive( 0, x, y, &rc );
x += iWidth;
}
// SPR_Draw ones
k = iNumber % 10;
SPR_Set(GetSprite(m_HUD_number_0 + k), r, g, b );
SPR_DrawAdditive(0, x, y, &GetSpriteRect(m_HUD_number_0 + k));
x += iWidth;
}
else if (iFlags & DHN_DRAWZERO)
{
SPR_Set(GetSprite(m_HUD_number_0), r, g, b );
// SPR_Draw 100's
if (iFlags & (DHN_3DIGITS))
{
//SPR_DrawAdditive( 0, x, y, &rc );
x += iWidth;
}
if (iFlags & (DHN_3DIGITS | DHN_2DIGITS))
{
//SPR_DrawAdditive( 0, x, y, &rc );
x += iWidth;
}
// SPR_Draw ones
SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_0));
x += iWidth;
}
return x;
}
int CHud::GetNumWidth( int iNumber, int iFlags )
{
if (iFlags & (DHN_3DIGITS))
return 3;
if (iFlags & (DHN_2DIGITS))
return 2;
if (iNumber <= 0)
{
if (iFlags & (DHN_DRAWZERO))
return 1;
else
return 0;
}
if (iNumber < 10)
return 1;
if (iNumber < 100)
return 2;
return 3;
}
Программишка, я тут тебе принёс ещё кода из Half-Life 1.
https://github.com/ValveSoftware/halflife/blob/master/cl_dll/hud_redraw.cpp#L252
Собственно, что код-то делает? Рисует спрайты с циферками. Те, что показывают текущее количество HP, брони, амуниции.
+3
#if defined(OSVR_WINDOWS)
static const auto SEARCH_PATH_ENV = "PATH";
static const auto SEARCH_PATH_SEP = ";";
#else
static const auto SEARCH_PATH_ENV = "LD_LIBRARY_PATH";
static const auto SEARCH_PATH_SEP = ":";
#endif
void wrappedPutenv(std::string const &val) {
#ifdef _MSC_VER
_putenv_s(SEARCH_PATH_ENV, val.c_str());
#else // not microsoft runtime specific
auto newValue = SEARCH_PATH_ENV + "=" + val;
// Have to allocate new string because it becomes part of the
// environment.
char *newString = static_cast<char *>(malloc(newValue.size() + 1));
std::copy(begin(newValue), end(newValue), newString);
#endif
}
Момент, когда я считаю, что C++-ный auto -- чистое зло(строка 14).
Код из OSVR-Vive, плагина к OSVR, который работает с HTC Vive.
+4
class Panel
{
// ...
friend class Panel;
// ...
}
Нашёл такое в хедерах VGUI1 -- игрового тулкита от Valve для Gold Source.
Объясните, умные люди, зачем?