Commit 914fd2a8 authored by fallenstardust's avatar fallenstardust

update gframe

parent 14a92f4d
...@@ -215,8 +215,8 @@ void ClientCard::ClearData() { ...@@ -215,8 +215,8 @@ void ClientCard::ClearData() {
bool ClientCard::client_card_sort(ClientCard* c1, ClientCard* c2) { bool ClientCard::client_card_sort(ClientCard* c1, ClientCard* c2) {
if(c1->is_selected != c2->is_selected) if(c1->is_selected != c2->is_selected)
return c1->is_selected < c2->is_selected; return c1->is_selected < c2->is_selected;
int32 cp1 = c1->overlayTarget ? c1->overlayTarget->controler : c1->controler; int cp1 = c1->overlayTarget ? c1->overlayTarget->controler : c1->controler;
int32 cp2 = c2->overlayTarget ? c2->overlayTarget->controler : c2->controler; int cp2 = c2->overlayTarget ? c2->overlayTarget->controler : c2->controler;
if(cp1 != cp2) if(cp1 != cp2)
return cp1 < cp2; return cp1 < cp2;
if(c1->location != c2->location) if(c1->location != c2->location)
......
...@@ -15,7 +15,7 @@ struct CardDataC : card_data { ...@@ -15,7 +15,7 @@ struct CardDataC : card_data {
unsigned int ot{}; unsigned int ot{};
unsigned int category{}; unsigned int category{};
bool is_setcodes(std::vector <uint32> values) const { bool is_setcodes(std::vector <uint32_t> values) const {
for (auto& value : values) { for (auto& value : values) {
if (is_setcode(value)) if (is_setcode(value))
return true; return true;
......
...@@ -382,7 +382,7 @@ std::wstring DataManager::FormatLinkMarker(unsigned int link_marker) const { ...@@ -382,7 +382,7 @@ std::wstring DataManager::FormatLinkMarker(unsigned int link_marker) const {
buffer.append(L"[\u2198]"); buffer.append(L"[\u2198]");
return buffer; return buffer;
} }
uint32 DataManager::CardReader(uint32 code, card_data* pData) { uint32_t DataManager::CardReader(uint32_t code, card_data* pData) {
if (!dataManager.GetData(code, pData)) if (!dataManager.GetData(code, pData))
pData->clear(); pData->clear();
return 0; return 0;
......
...@@ -52,7 +52,7 @@ public: ...@@ -52,7 +52,7 @@ public:
static unsigned char scriptBuffer[0x20000]; static unsigned char scriptBuffer[0x20000];
static const wchar_t* unknown_string; static const wchar_t* unknown_string;
static uint32 CardReader(uint32, card_data*); static uint32_t CardReader(uint32_t, card_data*);
static unsigned char* ScriptReaderEx(const char* script_name, int* slen); static unsigned char* ScriptReaderEx(const char* script_name, int* slen);
static unsigned char* ScriptReader(const char* script_name, int* slen); static unsigned char* ScriptReader(const char* script_name, int* slen);
static unsigned char* ScriptReaderZip(const char* script_name, int* slen); static unsigned char* ScriptReaderZip(const char* script_name, int* slen);
......
...@@ -89,11 +89,11 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, int rule) { ...@@ -89,11 +89,11 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, int rule) {
if(!list) if(!list)
return 0; return 0;
int dc = 0; int dc = 0;
if((int)deck.main.size() < DECK_MIN_SIZE || (int)deck.main.size() > DECK_MAX_SIZE) if(deck.main.size() < DECK_MIN_SIZE || deck.main.size() > DECK_MAX_SIZE)
return ((unsigned)DECKERROR_MAINCOUNT << 28) + deck.main.size(); return ((unsigned)DECKERROR_MAINCOUNT << 28) + deck.main.size();
if((int)deck.extra.size() > EXTRA_MAX_SIZE) if(deck.extra.size() > EXTRA_MAX_SIZE)
return ((unsigned)DECKERROR_EXTRACOUNT << 28) + deck.extra.size(); return ((unsigned)DECKERROR_EXTRACOUNT << 28) + deck.extra.size();
if((int)deck.side.size() > SIDE_MAX_SIZE) if(deck.side.size() > SIDE_MAX_SIZE)
return ((unsigned)DECKERROR_SIDECOUNT << 28) + deck.side.size(); return ((unsigned)DECKERROR_SIDECOUNT << 28) + deck.side.size();
if (rule < 0 || rule >= 6) if (rule < 0 || rule >= 6)
return 0; return 0;
......
...@@ -647,37 +647,32 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -647,37 +647,32 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
wchar_t formatBuffer[2048]; wchar_t formatBuffer[2048];
switch(command_location) { switch(command_location) {
case LOCATION_DECK: { case LOCATION_DECK: {
for(int32 i = (int32)deck[command_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(deck[command_controler].rbegin(), deck[command_controler].rend());
selectable_cards.push_back(deck[command_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1000), deck[command_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1000), deck[command_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
} }
case LOCATION_MZONE: { case LOCATION_MZONE: {
ClientCard* pcard = mzone[command_controler][command_sequence]; ClientCard* pcard = mzone[command_controler][command_sequence];
for(int32 i = 0; i < (int32)pcard->overlayed.size(); ++i) selectable_cards.assign(pcard->overlayed.begin(), pcard->overlayed.end());
selectable_cards.push_back(pcard->overlayed[i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), pcard->overlayed.size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), pcard->overlayed.size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
for(int32 i = (int32)grave[command_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(grave[command_controler].rbegin(), grave[command_controler].rend());
selectable_cards.push_back(grave[command_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[command_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[command_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
for(int32 i = (int32)remove[command_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(remove[command_controler].rbegin(), remove[command_controler].rend());
selectable_cards.push_back(remove[command_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[command_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[command_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
for(int32 i = (int32)extra[command_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(extra[command_controler].rbegin(), extra[command_controler].rend());
selectable_cards.push_back(extra[command_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[command_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[command_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1179,8 +1174,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1179,8 +1174,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_DECK: { case LOCATION_DECK: {
if(deck[hovered_controler].size() == 0) if(deck[hovered_controler].size() == 0)
break; break;
for(int32 i = (int32)deck[hovered_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(deck[hovered_controler].rbegin(), deck[hovered_controler].rend());
selectable_cards.push_back(deck[hovered_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1000), deck[hovered_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1000), deck[hovered_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1188,8 +1182,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1188,8 +1182,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_MZONE: { case LOCATION_MZONE: {
if(!clicked_card || clicked_card->overlayed.size() == 0) if(!clicked_card || clicked_card->overlayed.size() == 0)
break; break;
for(int32 i = 0; i < (int32)clicked_card->overlayed.size(); ++i) selectable_cards.assign(clicked_card->overlayed.begin(), clicked_card->overlayed.end());
selectable_cards.push_back(clicked_card->overlayed[i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), clicked_card->overlayed.size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), clicked_card->overlayed.size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1197,8 +1190,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1197,8 +1190,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
if(grave[hovered_controler].size() == 0) if(grave[hovered_controler].size() == 0)
break; break;
for(int32 i = (int32)grave[hovered_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(grave[hovered_controler].rbegin(), grave[hovered_controler].rend());
selectable_cards.push_back(grave[hovered_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[hovered_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[hovered_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1206,8 +1198,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1206,8 +1198,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
if(remove[hovered_controler].size() == 0) if(remove[hovered_controler].size() == 0)
break; break;
for(int32 i = (int32)remove[hovered_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(remove[hovered_controler].rbegin(), remove[hovered_controler].rend());
selectable_cards.push_back(remove[hovered_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[hovered_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[hovered_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1215,8 +1206,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1215,8 +1206,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
if(extra[hovered_controler].size() == 0) if(extra[hovered_controler].size() == 0)
break; break;
for(int32 i = (int32)extra[hovered_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(extra[hovered_controler].rbegin(), extra[hovered_controler].rend());
selectable_cards.push_back(extra[hovered_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[hovered_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[hovered_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1234,8 +1224,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1234,8 +1224,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_MZONE: { case LOCATION_MZONE: {
if(!clicked_card || clicked_card->overlayed.size() == 0) if(!clicked_card || clicked_card->overlayed.size() == 0)
break; break;
for(int32 i = 0; i < (int32)clicked_card->overlayed.size(); ++i) selectable_cards.assign(clicked_card->overlayed.begin(), clicked_card->overlayed.end());
selectable_cards.push_back(clicked_card->overlayed[i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), clicked_card->overlayed.size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1007), clicked_card->overlayed.size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1243,8 +1232,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1243,8 +1232,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
if(grave[hovered_controler].size() == 0) if(grave[hovered_controler].size() == 0)
break; break;
for(int32 i = (int32)grave[hovered_controler].size() - 1; i >= 0 ; --i) selectable_cards.assign(grave[hovered_controler].rbegin(), grave[hovered_controler].rend());
selectable_cards.push_back(grave[hovered_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[hovered_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1004), grave[hovered_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1252,8 +1240,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1252,8 +1240,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
if (remove[hovered_controler].size() == 0) if (remove[hovered_controler].size() == 0)
break; break;
for (int32 i = (int32)remove[hovered_controler].size() - 1; i >= 0; --i) selectable_cards.assign(remove[hovered_controler].rbegin(), remove[hovered_controler].rend());
selectable_cards.push_back(remove[hovered_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[hovered_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1005), remove[hovered_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
...@@ -1261,8 +1248,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1261,8 +1248,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
if (extra[hovered_controler].size() == 0) if (extra[hovered_controler].size() == 0)
break; break;
for (int32 i = (int32)extra[hovered_controler].size() - 1; i >= 0; --i) selectable_cards.assign(extra[hovered_controler].rbegin(), extra[hovered_controler].rend());
selectable_cards.push_back(extra[hovered_controler][i]);
myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[hovered_controler].size()); myswprintf(formatBuffer, L"%ls(%d)", dataManager.GetSysString(1006), extra[hovered_controler].size());
mainGame->stCardSelect->setText(formatBuffer); mainGame->stCardSelect->setText(formatBuffer);
break; break;
......
...@@ -200,7 +200,7 @@ inline bool check_msg_size(int size) { ...@@ -200,7 +200,7 @@ inline bool check_msg_size(int size) {
return true; return true;
} }
inline unsigned int GetPosition(unsigned char* qbuf, int offset) { inline unsigned int GetPosition(unsigned char* qbuf, size_t offset) {
unsigned int info = 0; unsigned int info = 0;
std::memcpy(&info, qbuf + offset, sizeof info); std::memcpy(&info, qbuf + offset, sizeof info);
return info >> 24; return info >> 24;
......
...@@ -937,7 +937,7 @@ void ReplayMode::ReplayReload() { ...@@ -937,7 +937,7 @@ void ReplayMode::ReplayReload() {
ReloadLocation(0, LOCATION_REMOVED, flag, queryBuffer); ReloadLocation(0, LOCATION_REMOVED, flag, queryBuffer);
ReloadLocation(1, LOCATION_REMOVED, flag, queryBuffer); ReloadLocation(1, LOCATION_REMOVED, flag, queryBuffer);
} }
uint32 ReplayMode::MessageHandler(intptr_t fduel, uint32 type) { uint32_t ReplayMode::MessageHandler(intptr_t fduel, uint32_t type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
char msgbuf[1024]; char msgbuf[1024];
......
...@@ -47,7 +47,7 @@ public: ...@@ -47,7 +47,7 @@ public:
static void ReplayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); static void ReplayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static void ReplayReload(); static void ReplayReload();
static uint32 MessageHandler(intptr_t fduel, uint32 type); static uint32_t MessageHandler(intptr_t fduel, uint32_t type);
}; };
} }
......
...@@ -448,28 +448,19 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -448,28 +448,19 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
last_replay.WriteInt32(host_info.draw_count, false); last_replay.WriteInt32(host_info.draw_count, false);
last_replay.WriteInt32(opt, false); last_replay.WriteInt32(opt, false);
last_replay.Flush(); last_replay.Flush();
last_replay.WriteInt32(pdeck[0].main.size(), false); auto load = [&](const std::vector<code_pointer>& deck_container, uint8_t p, uint8_t location) {
for(int32 i = (int32)pdeck[0].main.size() - 1; i >= 0; --i) { last_replay.WriteInt32(deck_container.size(), false);
new_card(pduel, pdeck[0].main[i]->first, 0, 0, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE); for (auto cit = deck_container.rbegin(); cit != deck_container.rend(); ++cit) {
last_replay.WriteInt32(pdeck[0].main[i]->first, false); new_card(pduel, (*cit)->first, p, p, location, 0, POS_FACEDOWN_DEFENSE);
} last_replay.WriteInt32((*cit)->first, false);
last_replay.WriteInt32(pdeck[0].extra.size(), false); }
for(int32 i = (int32)pdeck[0].extra.size() - 1; i >= 0; --i) { };
new_card(pduel, pdeck[0].extra[i]->first, 0, 0, LOCATION_EXTRA, 0, POS_FACEDOWN_DEFENSE); load(pdeck[0].main, 0, LOCATION_DECK);
last_replay.WriteInt32(pdeck[0].extra[i]->first, false); load(pdeck[0].extra, 0, LOCATION_EXTRA);
} load(pdeck[1].main, 1, LOCATION_DECK);
last_replay.WriteInt32(pdeck[1].main.size(), false); load(pdeck[1].extra, 1, LOCATION_EXTRA);
for(int32 i = (int32)pdeck[1].main.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[1].main[i]->first, 1, 1, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[1].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[1].extra.size(), false);
for(int32 i = (int32)pdeck[1].extra.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[1].extra[i]->first, 1, 1, LOCATION_EXTRA, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[1].extra[i]->first, false);
}
last_replay.Flush(); last_replay.Flush();
unsigned char startbuf[32]; unsigned char startbuf[32]{};
auto pbuf = startbuf; auto pbuf = startbuf;
BufferIO::WriteInt8(pbuf, MSG_START); BufferIO::WriteInt8(pbuf, MSG_START);
BufferIO::WriteInt8(pbuf, 0); BufferIO::WriteInt8(pbuf, 0);
...@@ -567,7 +558,7 @@ void SingleDuel::Surrender(DuelPlayer* dp) { ...@@ -567,7 +558,7 @@ void SingleDuel::Surrender(DuelPlayer* dp) {
if(dp->type > 1 || !pduel) if(dp->type > 1 || !pduel)
return; return;
unsigned char wbuf[3]; unsigned char wbuf[3];
uint32 player = dp->type; uint32_t player = dp->type;
wbuf[0] = MSG_WIN; wbuf[0] = MSG_WIN;
wbuf[1] = 1 - player; wbuf[1] = 1 - player;
wbuf[2] = 0; wbuf[2] = 0;
...@@ -1584,7 +1575,7 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag) ...@@ -1584,7 +1575,7 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
for (auto pit = observers.begin(); pit != observers.end(); ++pit) for (auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::ReSendToPlayer(*pit); NetServer::ReSendToPlayer(*pit);
} }
uint32 SingleDuel::MessageHandler(intptr_t fduel, uint32 type) { uint32_t SingleDuel::MessageHandler(intptr_t fduel, uint32_t type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
char msgbuf[1024]; char msgbuf[1024];
...@@ -1597,7 +1588,7 @@ void SingleDuel::SingleTimer(evutil_socket_t fd, short events, void* arg) { ...@@ -1597,7 +1588,7 @@ void SingleDuel::SingleTimer(evutil_socket_t fd, short events, void* arg) {
sd->time_elapsed++; sd->time_elapsed++;
if(sd->time_elapsed >= sd->time_limit[sd->last_response] || sd->time_limit[sd->last_response] <= 0) { if(sd->time_elapsed >= sd->time_limit[sd->last_response] || sd->time_limit[sd->last_response] <= 0) {
unsigned char wbuf[3]; unsigned char wbuf[3];
uint32 player = sd->last_response; uint32_t player = sd->last_response;
wbuf[0] = MSG_WIN; wbuf[0] = MSG_WIN;
wbuf[1] = 1 - player; wbuf[1] = 1 - player;
wbuf[2] = 0x3; wbuf[2] = 0x3;
......
...@@ -824,7 +824,7 @@ void SingleMode::SinglePlayReload() { ...@@ -824,7 +824,7 @@ void SingleMode::SinglePlayReload() {
ReloadLocation(0, LOCATION_REMOVED, flag, queryBuffer); ReloadLocation(0, LOCATION_REMOVED, flag, queryBuffer);
ReloadLocation(1, LOCATION_REMOVED, flag, queryBuffer); ReloadLocation(1, LOCATION_REMOVED, flag, queryBuffer);
} }
uint32 SingleMode::MessageHandler(intptr_t fduel, uint32 type) { uint32_t SingleMode::MessageHandler(intptr_t fduel, uint32_t type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
char msgbuf[1024]; char msgbuf[1024];
......
...@@ -185,7 +185,7 @@ void TagDuel::ToDuelist(DuelPlayer* dp) { ...@@ -185,7 +185,7 @@ void TagDuel::ToDuelist(DuelPlayer* dp) {
} else { } else {
if(ready[dp->type]) if(ready[dp->type])
return; return;
uint8 dptype = (dp->type + 1) % 4; unsigned char dptype = (dp->type + 1) % 4;
while(players[dptype]) while(players[dptype])
dptype = (dptype + 1) % 4; dptype = (dptype + 1) % 4;
STOC_HS_PlayerChange scpc; STOC_HS_PlayerChange scpc;
...@@ -426,52 +426,30 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -426,52 +426,30 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
last_replay.WriteInt32(host_info.draw_count, false); last_replay.WriteInt32(host_info.draw_count, false);
last_replay.WriteInt32(opt, false); last_replay.WriteInt32(opt, false);
last_replay.Flush(); last_replay.Flush();
// auto load_single = [&](const std::vector<code_pointer>& deck_container, uint8_t p, uint8_t location) {
last_replay.WriteInt32(pdeck[0].main.size(), false); last_replay.WriteInt32(deck_container.size(), false);
for(int32 i = (int32)pdeck[0].main.size() - 1; i >= 0; --i) { for (auto cit = deck_container.rbegin(); cit != deck_container.rend(); ++cit) {
new_card(pduel, pdeck[0].main[i]->first, 0, 0, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE); new_card(pduel, (*cit)->first, p, p, location, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[0].main[i]->first, false); last_replay.WriteInt32((*cit)->first, false);
} }
last_replay.WriteInt32(pdeck[0].extra.size(), false); };
for(int32 i = (int32)pdeck[0].extra.size() - 1; i >= 0; --i) { auto load_tag = [&](const std::vector<code_pointer>& deck_container, uint8_t p, uint8_t location) {
new_card(pduel, pdeck[0].extra[i]->first, 0, 0, LOCATION_EXTRA, 0, POS_FACEDOWN_DEFENSE); last_replay.WriteInt32(deck_container.size(), false);
last_replay.WriteInt32(pdeck[0].extra[i]->first, false); for (auto cit = deck_container.rbegin(); cit != deck_container.rend(); ++cit) {
} new_tag_card(pduel, (*cit)->first, p, location);
// last_replay.WriteInt32((*cit)->first, false);
last_replay.WriteInt32(pdeck[1].main.size(), false); }
for(int32 i = (int32)pdeck[1].main.size() - 1; i >= 0; --i) { };
new_tag_card(pduel, pdeck[1].main[i]->first, 0, LOCATION_DECK); load_single(pdeck[0].main, 0, LOCATION_DECK);
last_replay.WriteInt32(pdeck[1].main[i]->first, false); load_single(pdeck[0].extra, 0, LOCATION_EXTRA);
} load_tag(pdeck[1].main, 0, LOCATION_DECK);
last_replay.WriteInt32(pdeck[1].extra.size(), false); load_tag(pdeck[1].extra, 0, LOCATION_EXTRA);
for(int32 i = (int32)pdeck[1].extra.size() - 1; i >= 0; --i) { load_single(pdeck[3].main, 1, LOCATION_DECK);
new_tag_card(pduel, pdeck[1].extra[i]->first, 0, LOCATION_EXTRA); load_single(pdeck[3].extra, 1, LOCATION_EXTRA);
last_replay.WriteInt32(pdeck[1].extra[i]->first, false); load_tag(pdeck[2].main, 1, LOCATION_DECK);
} load_tag(pdeck[2].extra, 1, LOCATION_EXTRA);
//
last_replay.WriteInt32(pdeck[3].main.size(), false);
for(int32 i = (int32)pdeck[3].main.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[3].main[i]->first, 1, 1, LOCATION_DECK, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[3].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[3].extra.size(), false);
for(int32 i = (int32)pdeck[3].extra.size() - 1; i >= 0; --i) {
new_card(pduel, pdeck[3].extra[i]->first, 1, 1, LOCATION_EXTRA, 0, POS_FACEDOWN_DEFENSE);
last_replay.WriteInt32(pdeck[3].extra[i]->first, false);
}
//
last_replay.WriteInt32(pdeck[2].main.size(), false);
for(int32 i = (int32)pdeck[2].main.size() - 1; i >= 0; --i) {
new_tag_card(pduel, pdeck[2].main[i]->first, 1, LOCATION_DECK);
last_replay.WriteInt32(pdeck[2].main[i]->first, false);
}
last_replay.WriteInt32(pdeck[2].extra.size(), false);
for(int32 i = (int32)pdeck[2].extra.size() - 1; i >= 0; --i) {
new_tag_card(pduel, pdeck[2].extra[i]->first, 1, LOCATION_EXTRA);
last_replay.WriteInt32(pdeck[2].extra[i]->first, false);
}
last_replay.Flush(); last_replay.Flush();
unsigned char startbuf[32]; unsigned char startbuf[32]{};
auto pbuf = startbuf; auto pbuf = startbuf;
BufferIO::WriteInt8(pbuf, MSG_START); BufferIO::WriteInt8(pbuf, MSG_START);
BufferIO::WriteInt8(pbuf, 0); BufferIO::WriteInt8(pbuf, 0);
...@@ -536,18 +514,18 @@ void TagDuel::DuelEndProc() { ...@@ -536,18 +514,18 @@ void TagDuel::DuelEndProc() {
void TagDuel::Surrender(DuelPlayer* dp) { void TagDuel::Surrender(DuelPlayer* dp) {
if(dp->type > 3 || !pduel) if(dp->type > 3 || !pduel)
return; return;
uint32 player = dp->type; uint32_t player = dp->type;
if(surrender[player]) if(surrender[player])
return; return;
static const uint32 teammatemap[] = { 1, 0, 3, 2 }; static const uint32_t teammatemap[] = { 1, 0, 3, 2 };
uint32 teammate = teammatemap[player]; uint32_t teammate = teammatemap[player];
if(!surrender[teammate]) { if(!surrender[teammate]) {
surrender[player] = true; surrender[player] = true;
NetServer::SendPacketToPlayer(players[player], STOC_TEAMMATE_SURRENDER); NetServer::SendPacketToPlayer(players[player], STOC_TEAMMATE_SURRENDER);
NetServer::SendPacketToPlayer(players[teammate], STOC_TEAMMATE_SURRENDER); NetServer::SendPacketToPlayer(players[teammate], STOC_TEAMMATE_SURRENDER);
return; return;
} }
static const uint32 winplayermap[] = { 1, 1, 0, 0 }; static const uint32_t winplayermap[] = { 1, 1, 0, 0 };
unsigned char wbuf[3]; unsigned char wbuf[3];
wbuf[0] = MSG_WIN; wbuf[0] = MSG_WIN;
wbuf[1] = winplayermap[player]; wbuf[1] = winplayermap[player];
...@@ -1731,7 +1709,7 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) { ...@@ -1731,7 +1709,7 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
} }
} }
} }
uint32 TagDuel::MessageHandler(intptr_t fduel, uint32 type) { uint32_t TagDuel::MessageHandler(intptr_t fduel, uint32_t type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
char msgbuf[1024]; char msgbuf[1024];
...@@ -1744,7 +1722,7 @@ void TagDuel::TagTimer(evutil_socket_t fd, short events, void* arg) { ...@@ -1744,7 +1722,7 @@ void TagDuel::TagTimer(evutil_socket_t fd, short events, void* arg) {
sd->time_elapsed++; sd->time_elapsed++;
if(sd->time_elapsed >= sd->time_limit[sd->last_response] || sd->time_limit[sd->last_response] <= 0) { if(sd->time_elapsed >= sd->time_limit[sd->last_response] || sd->time_limit[sd->last_response] <= 0) {
unsigned char wbuf[3]; unsigned char wbuf[3];
uint32 player = sd->last_response; uint32_t player = sd->last_response;
wbuf[0] = MSG_WIN; wbuf[0] = MSG_WIN;
wbuf[1] = 1 - player; wbuf[1] = 1 - player;
wbuf[2] = 0x3; wbuf[2] = 0x3;
......
...@@ -38,7 +38,7 @@ public: ...@@ -38,7 +38,7 @@ public:
void RefreshExtra(int player, int flag = 0xe81fff, int use_cache = 1); void RefreshExtra(int player, int flag = 0xe81fff, int use_cache = 1);
void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static uint32 MessageHandler(intptr_t fduel, uint32 type); static uint32_t MessageHandler(intptr_t fduel, uint32_t type);
static void TagTimer(evutil_socket_t fd, short events, void* arg); static void TagTimer(evutil_socket_t fd, short events, void* arg);
private: private:
......
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