Commit 81c836ca authored by wind2009's avatar wind2009

Merge remote-tracking branch 'upstream/master' into develop

parents 7501b725 b57b331b
Pipeline #32624 passed with stages
in 8 minutes and 54 seconds
......@@ -260,7 +260,7 @@ const wchar_t* DataManager::GetCounterName(int code) const {
const wchar_t* DataManager::GetSetName(int code) const {
auto csit = _setnameStrings.find(code);
if(csit == _setnameStrings.end())
return nullptr;
return unknown_string;
return csit->second.c_str();
}
std::vector<unsigned int> DataManager::GetSetCodes(std::wstring setname) const {
......@@ -356,11 +356,9 @@ std::wstring DataManager::FormatSetName(const uint16_t setcode[]) const {
if (!setcode[i])
break;
const wchar_t* setname = GetSetName(setcode[i]);
if(setname) {
if (!buffer.empty())
buffer.push_back(L'|');
buffer.append(setname);
}
if (!buffer.empty())
buffer.push_back(L'|');
buffer.append(setname);
}
if (buffer.empty())
return std::wstring(unknown_string);
......
......@@ -9,6 +9,7 @@
#include "deck_manager.h"
#include "replay.h"
#include <thread>
#include <array>
namespace ygo {
......@@ -101,18 +102,17 @@ void DuelClient::ClientRead(bufferevent* bev, void* ctx) {
int len = evbuffer_get_length(input);
if (len < 2)
return;
unsigned char* duel_client_read = new unsigned char[SIZE_NETWORK_BUFFER];
std::array<unsigned char, SIZE_NETWORK_BUFFER> duel_client_read;
uint16_t packet_len = 0;
while (len >= 2) {
evbuffer_copyout(input, &packet_len, sizeof packet_len);
if (len < packet_len + 2)
break;
int read_len = evbuffer_remove(input, duel_client_read, packet_len + 2);
int read_len = evbuffer_remove(input, duel_client_read.data(), packet_len + 2);
if (read_len > 2)
HandleSTOCPacketLan(&duel_client_read[2], read_len - 2);
len -= packet_len + 2;
}
delete[] duel_client_read;
}
void DuelClient::ClientEvent(bufferevent* bev, short events, void* ctx) {
if (events & BEV_EVENT_CONNECTED) {
......
......@@ -4,6 +4,7 @@
#include "tag_duel.h"
#include "deck_manager.h"
#include <thread>
#include <array>
namespace ygo {
std::unordered_map<bufferevent*, DuelPlayer> NetServer::users;
......@@ -126,18 +127,17 @@ void NetServer::ServerEchoRead(bufferevent *bev, void *ctx) {
int len = evbuffer_get_length(input);
if (len < 2)
return;
unsigned char* net_server_read = new unsigned char[SIZE_NETWORK_BUFFER];
std::array<unsigned char, SIZE_NETWORK_BUFFER> net_server_read;
uint16_t packet_len = 0;
while (len >= 2) {
evbuffer_copyout(input, &packet_len, sizeof packet_len);
if (len < packet_len + 2)
break;
int read_len = evbuffer_remove(input, net_server_read, packet_len + 2);
int read_len = evbuffer_remove(input, net_server_read.data(), packet_len + 2);
if (read_len > 2)
HandleCTOSPacket(&users[bev], &net_server_read[2], read_len - 2);
len -= packet_len + 2;
}
delete[] net_server_read;
}
void NetServer::ServerEchoEvent(bufferevent* bev, short events, void* ctx) {
if (events & (BEV_EVENT_EOF | BEV_EVENT_ERROR)) {
......
......@@ -14,7 +14,7 @@
namespace ygo {
constexpr int SIZE_NETWORK_BUFFER = 0x20000;
constexpr int MAX_DATA_SIZE = SIZE_NETWORK_BUFFER - 3;
constexpr int MAX_DATA_SIZE = UINT16_MAX - 1;
constexpr int MAINC_MAX = 250; // the limit of card_state
constexpr int SIDEC_MAX = MAINC_MAX;
......
......@@ -13,8 +13,8 @@ namespace ygo {
#define REPLAY_UNIFORM 0x10
// max size
#define MAX_REPLAY_SIZE 0x20000
#define MAX_COMP_SIZE 0x2000
constexpr int MAX_REPLAY_SIZE = 0x20000;
constexpr int MAX_COMP_SIZE = UINT16_MAX + 1;
struct ReplayHeader {
unsigned int id{};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment