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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user