1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-19 04:53:12 +01:00

Implement ride music objects and refactor

This commit is contained in:
Ted John
2021-01-09 20:54:02 +00:00
parent db4841ca45
commit 2f39442d25
35 changed files with 1401 additions and 674 deletions

View File

@@ -113,6 +113,12 @@ public:
return std::vector<uint8_t>(dataPtr, dataPtr + dataSize);
}
std::unique_ptr<std::istream> GetFileStream(std::string_view path) const override
{
auto data = GetFileData(path);
return std::make_unique<memstream>(std::move(data));
}
void SetFileData(std::string_view path, std::vector<uint8_t>&& data) override
{
STUB();
@@ -127,6 +133,34 @@ public:
{
STUB();
}
private:
class memstream final : public std::istream
{
private:
class vector_streambuf : public std::basic_streambuf<char, std::char_traits<char>>
{
public:
explicit vector_streambuf(const std::vector<uint8_t>& vec)
{
this->setg(
reinterpret_cast<char*>(const_cast<unsigned char*>(vec.data())),
reinterpret_cast<char*>(const_cast<unsigned char*>(vec.data())),
reinterpret_cast<char*>(const_cast<unsigned char*>(vec.data() + vec.size())));
}
};
std::vector<uint8_t> _data;
vector_streambuf _streambuf;
public:
memstream(std::vector<uint8_t>&& data)
: std::istream(&_streambuf)
, _data(data)
, _streambuf(_data)
{
}
};
};
namespace Zip