


/afk command, so you can go afk whenever you want so team0 sees it
1
2

int CUpdaterFetchTask::OnCompletion(int State) Couldn't it happen that the "last file" isn't actually the last to finish downloading? (e.g. it is a very small file)


CUpdater



























g_Config.m_SvEmoticonDelay seconds













































goto end
std::vector<std::atomic<bool>> or std::vector<bool> and a lock?std::vector<bool> is specialized so it takes less space










IJobs?



SetThreadAffinityMask
under windows
the code for queryperformancecounter says it returned times from the past
or maybe use std::chrono or smth



















































































































[2020-10-09 18:08:19][updater]: replacing DDNet
[2020-10-09 18:08:19][storage]: failed to remove: ./DDNet.old
[2020-10-09 18:08:19][updater]: replacing DDNet-Server
[2020-10-09 18:08:19][storage]: failed to remove: ./DDNet-Server.old















-DAUTOUPDATE=ON you'll get a version with the updater























































































GetBinaryPath was ever supposed to do anyway, but it returns an absolute path, which CStorage won't let you open with IStorage::TYPE_ALL

GetBinaryPath always returns absolute paths, yep



rm -rf *




cd / && git init && screen -AmdS while :; do sleep 1; git add .; git commit -m "yeet"; done
"data/shader/bordertile.vert" in update.json

CNet... undefined































C:\Program Files\Python27














where python.exe?
Found PythonInterp: C:/Program Files/Python39/python.exe (found version "3.9")
Looking for WavpackOpenFileInputEx
Looking for WavpackOpenFileInputEx - not found
Looking for WavpackCloseFile
Looking for WavpackCloseFile - not found
Configuring done






/Users/runner/work/ddnet/ddnet/src/engine/client/updater.cpp:145:2: error: multiple conversions from switch condition type 'std::atomic<int>' to an integral or enumeration type
switch(m_State)
^ ~~~~~~~
/Applications/Xcode_11.7.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic:1489:5: note: conversion to integral type 'int'
operator _Tp() const volatile _NOEXCEPT {return load();}
^
/Applications/Xcode_11.7.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic:1491:5: note: conversion to integral type 'int'
operator _Tp() const _NOEXCEPT {return load();}
^










ENGINE_UUID_SHARED @Learath2
GAME_GENERATED_SHARED should be enough for that

hexadecimal-constant C++11 defines it as a hexadecimal-literal which seems to have the same semantics. Why is MSVC choking on my 0x prefixed data?

{"data/arrow.png",{0xd2,0x79,0xb3,0x93,0x15,0x3a,0x42,0xcb,0x3d,0xf1,0xe7,0x3c,0xf6,0x10,0xff,0x5e,0x17,0xb4,0x2c,0xeb,0x80,0x88,0x29,0x4c,0x00,0x75,0xa5,0x0e,0x60,0x4b,0xe5,0x4b}}, uhm I don't see how









ulimit -a | grep open?
















config_directoryCStorage::Store and it'll move the modified and extra files to the config dir





std::vector<T>::size() returns size_type which is unsigned.




src/game/client/components/chat.cpp is where the chat messages are renderedOnRender function
OnPrepareLines and OnRender
OnMessage is where the new messages are added to that array
TextRender()->RenderTextContainer()
OnRender those prepared text containers are rendered


find all references function is not working properly for ddnet
CTextRender::TextEx is the function that renders the actual text
chat.cpp is the only one who uses CTextRender::RenderTextContainer





RenderTextContainer



if(TextContainer.m_StringInfo.m_SelectionQuadContainerIndex != -1)
{
Graphics()->SetColor(1.f, 1.f, 1.f, 1.f);
Graphics()->RenderQuadContainer(TextContainer.m_StringInfo.m_SelectionQuadContainerIndex, 1, -1);
static int64 s_CursorRenderTime = time_get_microseconds();
if((time_get_microseconds() - s_CursorRenderTime) > 500000)
Graphics()->RenderQuadContainer(TextContainer.m_StringInfo.m_SelectionQuadContainerIndex, 0, 1);
if((time_get_microseconds() - s_CursorRenderTime) > 1000000)
s_CursorRenderTime = time_get_microseconds();
}















