feat: Simplify the BinaryStream API
This commit is contained in:
+20
-29
@@ -25,10 +25,11 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define BinaryStreamManager LegacyScriptBinaryStreamManager::getInstance()
|
||||||
#define EXPORTAPI(funcName, type, fuc) \
|
#define EXPORTAPI(funcName, type, fuc) \
|
||||||
RemoteCall::exportAs("GMLIB_BinaryStream_API", funcName, [](uint64 BinaryStreamId, type value) -> void { \
|
RemoteCall::exportAs("GMLIB_BinaryStream_API", funcName, [](uint64 id, type value) -> void { \
|
||||||
auto binaryStream = LegacyScriptBinaryStreamManager::getInstance().getBinaryStream(BinaryStreamId); \
|
auto bs = BinaryStreamManager.getBinaryStream(id); \
|
||||||
if (binaryStream != nullptr) fuc; \
|
if (bs != nullptr) fuc; \
|
||||||
})
|
})
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@@ -37,39 +38,29 @@ template <typename T, typename R, typename A, typename... AS>
|
|||||||
struct Info<R (T::*)(A, AS...)> {
|
struct Info<R (T::*)(A, AS...)> {
|
||||||
using ArgT = A;
|
using ArgT = A;
|
||||||
};
|
};
|
||||||
#define EXPORTAPI2(T) EXPORTAPI(#T, Info<decltype(&GMLIB_BinaryStream::T)>::ArgT, binaryStream->T(value))
|
#define EXPORTAPI2(T) EXPORTAPI(#T, Info<decltype(&GMLIB_BinaryStream::T)>::ArgT, bs->T(value))
|
||||||
|
|
||||||
void Export_BinaryStream_API() {
|
void Export_BinaryStream_API() {
|
||||||
RemoteCall::exportAs("GMLIB_BinaryStream_API", "create", []() -> uint64 {
|
RemoteCall::exportAs("GMLIB_BinaryStream_API", "create", []() -> uint64 {
|
||||||
auto id = LegacyScriptBinaryStreamManager::getInstance().getNextId();
|
auto id = BinaryStreamManager.getNextId();
|
||||||
LegacyScriptBinaryStreamManager::getInstance().cretateBinaryStream(id);
|
BinaryStreamManager.cretateBinaryStream(id);
|
||||||
return id;
|
return id;
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_BinaryStream_API", "reset", [](uint64 BinaryStreamId) -> void {
|
RemoteCall::exportAs("GMLIB_BinaryStream_API", "reset", [](uint64 id) -> void {
|
||||||
if (LegacyScriptBinaryStreamManager::getInstance().getBinaryStream(BinaryStreamId) == nullptr)
|
if (BinaryStreamManager.getBinaryStream(id) == nullptr) BinaryStreamManager.cretateBinaryStream(id);
|
||||||
LegacyScriptBinaryStreamManager::getInstance().cretateBinaryStream(BinaryStreamId);
|
else BinaryStreamManager.getBinaryStream(id)->reset();
|
||||||
LegacyScriptBinaryStreamManager::getInstance().getBinaryStream(BinaryStreamId)->reset();
|
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs(
|
RemoteCall::exportAs("GMLIB_BinaryStream_API", "sendTo", [](uint64 id, Player* player) -> void {
|
||||||
"GMLIB_BinaryStream_API",
|
if (auto bs = BinaryStreamManager.getBinaryStream(id); bs != nullptr) bs->sendTo(*player);
|
||||||
"sendTo",
|
|
||||||
[](uint64 BinaryStreamId, Player* player) -> void {
|
|
||||||
auto binaryStream = LegacyScriptBinaryStreamManager::getInstance().getBinaryStream(BinaryStreamId);
|
|
||||||
if (binaryStream != nullptr) binaryStream->sendTo(*player);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
RemoteCall::exportAs("GMLIB_BinaryStream_API", "destroy", [](uint64 BinaryStreamId) -> void {
|
|
||||||
LegacyScriptBinaryStreamManager::getInstance().removeBinaryStream(BinaryStreamId);
|
|
||||||
});
|
});
|
||||||
EXPORTAPI("writePacketHeader", int, binaryStream->writePacketHeader((MinecraftPacketIds)value));
|
RemoteCall::exportAs("GMLIB_BinaryStream_API", "destroy", [](uint64 id) -> void {
|
||||||
EXPORTAPI("writeUuid", std::string const&, binaryStream->writeUuid(mce::UUID::fromString(value)));
|
BinaryStreamManager.removeBinaryStream(id);
|
||||||
EXPORTAPI(
|
});
|
||||||
"writeItem",
|
EXPORTAPI("writePacketHeader", int, bs->writePacketHeader((MinecraftPacketIds)value));
|
||||||
ItemStack*,
|
EXPORTAPI("writeUuid", std::string const&, bs->writeUuid(mce::UUID::fromString(value)));
|
||||||
binaryStream->writeType<NetworkItemStackDescriptor>(NetworkItemStackDescriptor(*value))
|
EXPORTAPI("writeItem", ItemStack*, bs->writeType(NetworkItemStackDescriptor(*value)));
|
||||||
);
|
EXPORTAPI("writeString", std::string const&, bs->writeString(value));
|
||||||
EXPORTAPI("writeString", std::string const&, binaryStream->writeString(value));
|
EXPORTAPI("writeCompoundTag", CompoundTag*, bs->writeCompoundTag(*value));
|
||||||
EXPORTAPI("writeCompoundTag", CompoundTag*, binaryStream->writeCompoundTag(*value));
|
|
||||||
EXPORTAPI2(writeBool);
|
EXPORTAPI2(writeBool);
|
||||||
EXPORTAPI2(writeByte);
|
EXPORTAPI2(writeByte);
|
||||||
EXPORTAPI2(writeDouble);
|
EXPORTAPI2(writeDouble);
|
||||||
|
|||||||
Reference in New Issue
Block a user