Files
obligaron ccaf8d1dac Use uint8_t in msg/multi/sync and fix MSVC warnings (#6856)
* Fix MSVC warnings in msg.cpp

* Move TBuffer to multi.cpp

* Fix MSVC warnings in multi.cpp

* SNet* change databytes to size_t

* msg/muli/sync: Change playerId to uint8_t
2023-12-16 18:56:06 +01:00

134 lines
2.9 KiB
C++

#include "dvlnet/cdwrap.h"
namespace devilution::net {
void cdwrap::reset()
{
dvlnet_wrap = make_net_fn_();
dvlnet_wrap->setup_gameinfo(game_init_info);
if (game_pw != std::nullopt) {
dvlnet_wrap->setup_password(*game_pw);
} else {
dvlnet_wrap->clear_password();
}
for (const auto &[eventType, eventHandler] : registered_handlers)
dvlnet_wrap->SNetRegisterEventHandler(eventType, eventHandler);
}
int cdwrap::create(std::string addrstr)
{
reset();
return dvlnet_wrap->create(addrstr);
}
int cdwrap::join(std::string addrstr)
{
game_init_info = buffer_t();
reset();
return dvlnet_wrap->join(addrstr);
}
void cdwrap::setup_gameinfo(buffer_t info)
{
game_init_info = std::move(info);
if (dvlnet_wrap)
dvlnet_wrap->setup_gameinfo(game_init_info);
}
bool cdwrap::SNetReceiveMessage(uint8_t *sender, void **data, size_t *size)
{
return dvlnet_wrap->SNetReceiveMessage(sender, data, size);
}
bool cdwrap::SNetSendMessage(uint8_t playerID, void *data, size_t size)
{
return dvlnet_wrap->SNetSendMessage(playerID, data, size);
}
bool cdwrap::SNetReceiveTurns(char **data, size_t *size, uint32_t *status)
{
return dvlnet_wrap->SNetReceiveTurns(data, size, status);
}
bool cdwrap::SNetSendTurn(char *data, size_t size)
{
return dvlnet_wrap->SNetSendTurn(data, size);
}
void cdwrap::SNetGetProviderCaps(struct _SNETCAPS *caps)
{
dvlnet_wrap->SNetGetProviderCaps(caps);
}
bool cdwrap::SNetUnregisterEventHandler(event_type evtype)
{
registered_handlers.erase(evtype);
if (dvlnet_wrap)
return dvlnet_wrap->SNetUnregisterEventHandler(evtype);
return true;
}
bool cdwrap::SNetRegisterEventHandler(event_type evtype, SEVTHANDLER func)
{
registered_handlers[evtype] = func;
if (dvlnet_wrap)
return dvlnet_wrap->SNetRegisterEventHandler(evtype, func);
return true;
}
bool cdwrap::SNetLeaveGame(int type)
{
return dvlnet_wrap->SNetLeaveGame(type);
}
bool cdwrap::SNetDropPlayer(int playerid, uint32_t flags)
{
return dvlnet_wrap->SNetDropPlayer(playerid, flags);
}
bool cdwrap::SNetGetOwnerTurnsWaiting(uint32_t *turns)
{
return dvlnet_wrap->SNetGetOwnerTurnsWaiting(turns);
}
bool cdwrap::SNetGetTurnsInTransit(uint32_t *turns)
{
return dvlnet_wrap->SNetGetTurnsInTransit(turns);
}
std::string cdwrap::make_default_gamename()
{
return dvlnet_wrap->make_default_gamename();
}
bool cdwrap::send_info_request()
{
return dvlnet_wrap->send_info_request();
}
void cdwrap::clear_gamelist()
{
dvlnet_wrap->clear_gamelist();
}
std::vector<GameInfo> cdwrap::get_gamelist()
{
return dvlnet_wrap->get_gamelist();
}
void cdwrap::setup_password(std::string pw)
{
game_pw = pw;
return dvlnet_wrap->setup_password(pw);
}
void cdwrap::clear_password()
{
game_pw = std::nullopt;
return dvlnet_wrap->clear_password();
}
} // namespace devilution::net