Fix mistakes after previous merge and make it compile.
Rewrite the function interpolating between time stamps as it was
written after the original pull request was created. Add unit tests
for it.
I couldn't help myself and also changed some enums to enum classes and
did some renames.
There exists `CreateDirectory` `#define` somewhere and it results in
failed compilation of `resourcemanager.cpp`.
Similarly for `RemoveDirectory`. See
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createdirectorya
Rename the two methods to remove the conflict.
The fail occurs at least when using Visual Studio 2022 Preview.
I moved m_engine creation to the constructor.
However, it is not complete until after calling m_engine->Create().
The UT segfault because the pointer is not null and destructor calls
m_engine->Destroy() on an incomplete object.
(Yes, UTs test incomplete SUT.)
So I moved back the m_engine creation to CApp::Create() but before
the SDL initialization as m_engine holds the flag for vsync.
It's just listing directories of a mod for now, but should give some
idea what the mod changes.
Also moved some functionality from pathman to modman.
Mods added with the `-mod` parameter are now managed by modman.
Moved list of mods logic to a new CModManager class.
The list of enabled mods is now managed by a flag instead of directory
names of mods.
Mods are now disabled by default.
Also general cleanup, fixing issues from the code review in
https://github.com/colobot/colobot/pull/1191 and fixing linter issues.
Regression: the state of enabled/disabled mods is now not persistent.
The plan is to use some kind of config file for this.
Assertion failed: ploc->_Mbcurmax == 1 || ploc->_Mbcurmax == 2
Apparently MS C/C++ library doesn't support UTF-8 locales, which causes the assertion to fail. My solution is to ignore the system locale and try to set the classic one.
LibreOffice seems to have this problem fixed in less simple way: https://gerrit.libreoffice.org/#/c/54110/