Commit b360ed98 authored by mercury233's avatar mercury233 Committed by GitHub

Merge pull request #2981 from mercury233/patch-copilot-fix-1

parents bbd99ad4 8722cc62
...@@ -834,6 +834,7 @@ video::IImage* CGUITTFont::createTextureFromChar(const uchar32_t& ch) { ...@@ -834,6 +834,7 @@ video::IImage* CGUITTFont::createTextureFromChar(const uchar32_t& ch) {
core::dimension2du glyph_size(glyph.source_rect.getSize()); core::dimension2du glyph_size(glyph.source_rect.getSize());
video::IImage* image = Driver->createImage(format, glyph_size); video::IImage* image = Driver->createImage(format, glyph_size);
pageholder->copyTo(image, irr::core::vector2di(0, 0), glyph.source_rect); pageholder->copyTo(image, irr::core::vector2di(0, 0), glyph.source_rect);
pageholder->drop();
tex->unlock(); tex->unlock();
return image; return image;
......
...@@ -163,6 +163,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -163,6 +163,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
return true; return true;
break; break;
} }
break;
} }
case irr::gui::EGET_BUTTON_CLICKED: { case irr::gui::EGET_BUTTON_CLICKED: {
soundManager.PlaySoundEffect(SOUND_BUTTON); soundManager.PlaySoundEffect(SOUND_BUTTON);
...@@ -1011,6 +1012,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -1011,6 +1012,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
InstantSearch(); InstantSearch();
break; break;
} }
break;
} }
case irr::gui::EGET_LISTBOX_CHANGED: { case irr::gui::EGET_LISTBOX_CHANGED: {
switch(id) { switch(id) {
......
...@@ -907,8 +907,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -907,8 +907,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} else { } else {
if (select_continuous) if (select_continuous)
myswprintf(formatBuffer, L"%ls", dataManager.unknown_string); myswprintf(formatBuffer, L"%ls", dataManager.unknown_string);
else if (cant_check_grave && selectable_cards[i]->location == LOCATION_GRAVE) else if (cant_check_grave && selectable_cards[i + pos]->location == LOCATION_GRAVE)
myswprintf(formatBuffer, L"%ls", dataManager.FormatLocation(selectable_cards[i]->location, 0)); myswprintf(formatBuffer, L"%ls", dataManager.FormatLocation(selectable_cards[i + pos]->location, 0));
else if (selectable_cards[i + pos]->location == LOCATION_OVERLAY) else if (selectable_cards[i + pos]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)", myswprintf(formatBuffer, L"%ls[%d](%d)",
dataManager.FormatLocation(selectable_cards[i + pos]->overlayTarget), selectable_cards[i + pos]->overlayTarget->sequence + 1, selectable_cards[i + pos]->sequence + 1); dataManager.FormatLocation(selectable_cards[i + pos]->overlayTarget), selectable_cards[i + pos]->overlayTarget->sequence + 1, selectable_cards[i + pos]->sequence + 1);
......
...@@ -197,7 +197,7 @@ public: ...@@ -197,7 +197,7 @@ public:
//! \return Myself. //! \return Myself.
_Iter& operator-=(const difference_type v) { _Iter& operator-=(const difference_type v) {
if(v == 0) return *this; if(v == 0) return *this;
if(v > 0) return operator+=(v * -1); if(v < 0) return operator+=(-v);
if(pos == 0) if(pos == 0)
return *this; return *this;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#define NOMINMAX #define NOMINMAX
#include <Windows.h> #include <Windows.h>
#include <shellapi.h>
class FileSystem { class FileSystem {
public: public:
...@@ -71,13 +72,18 @@ public: ...@@ -71,13 +72,18 @@ public:
} }
static bool DeleteDir(const wchar_t* wdir) { static bool DeleteDir(const wchar_t* wdir) {
wchar_t pdir[256]; size_t len = std::wcslen(wdir);
wchar_t pdir[1024 + 1]{};
if(len >= 1024)
return false;
BufferIO::CopyWideString(wdir, pdir); BufferIO::CopyWideString(wdir, pdir);
// pFrom must be double-null terminated for SHFileOperationW
// pdir[len] is already '\0' and pdir[len+1] is '\0' due to zero-init
SHFILEOPSTRUCTW lpFileOp{}; SHFILEOPSTRUCTW lpFileOp{};
lpFileOp.hwnd = nullptr; lpFileOp.hwnd = nullptr;
lpFileOp.wFunc = FO_DELETE; lpFileOp.wFunc = FO_DELETE;
lpFileOp.pFrom = pdir; lpFileOp.pFrom = pdir;
lpFileOp.pTo = 0; lpFileOp.pTo = nullptr;
lpFileOp.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT; lpFileOp.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT;
return SHFileOperationW(&lpFileOp) == 0; return SHFileOperationW(&lpFileOp) == 0;
} }
......
...@@ -17,7 +17,7 @@ public: ...@@ -17,7 +17,7 @@ public:
void LeaveGame(DuelPlayer* dp) override; void LeaveGame(DuelPlayer* dp) override;
void ToDuelist(DuelPlayer* dp) override; void ToDuelist(DuelPlayer* dp) override;
void ToObserver(DuelPlayer* dp) override; void ToObserver(DuelPlayer* dp) override;
void PlayerReady(DuelPlayer* dp, bool ready) override; void PlayerReady(DuelPlayer* dp, bool is_ready) override;
void PlayerKick(DuelPlayer* dp, unsigned char pos) override; void PlayerKick(DuelPlayer* dp, unsigned char pos) override;
void UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) override; void UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) override;
void StartDuel(DuelPlayer* dp) override; void StartDuel(DuelPlayer* dp) override;
......
...@@ -257,7 +257,7 @@ bool SoundManager::IsPlayingMusic(wchar_t* music) { ...@@ -257,7 +257,7 @@ bool SoundManager::IsPlayingMusic(wchar_t* music) {
if(music) { if(music) {
return !mywcsncasecmp(currentPlayingMusic, music, 1024) && ma_sound_is_playing(&soundBGM); return !mywcsncasecmp(currentPlayingMusic, music, 1024) && ma_sound_is_playing(&soundBGM);
} else { } else {
return ma_sound_is_playing(&soundBGM); return currentPlayingMusic[0] && ma_sound_is_playing(&soundBGM);
} }
#endif #endif
#ifdef YGOPRO_USE_IRRKLANG #ifdef YGOPRO_USE_IRRKLANG
......
...@@ -143,7 +143,6 @@ void TagDuel::LeaveGame(DuelPlayer* dp) { ...@@ -143,7 +143,6 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
NetServer::SendPacketToPlayer(players[i], STOC_HS_PLAYER_CHANGE, scpc); NetServer::SendPacketToPlayer(players[i], STOC_HS_PLAYER_CHANGE, scpc);
for(auto pit = observers.begin(); pit != observers.end(); ++pit) for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::SendPacketToPlayer(*pit, STOC_HS_PLAYER_CHANGE, scpc); NetServer::SendPacketToPlayer(*pit, STOC_HS_PLAYER_CHANGE, scpc);
NetServer::DisconnectPlayer(dp);
} else if(duel_stage != DUEL_STAGE_END) { } else if(duel_stage != DUEL_STAGE_END) {
EndDuel(); EndDuel();
DuelEndProc(); DuelEndProc();
...@@ -228,7 +227,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) { ...@@ -228,7 +227,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
unsigned int deckerror = 0; unsigned int deckerror = 0;
if(!host_info.no_check_deck) { if(!host_info.no_check_deck) {
if(deck_error[dp->type]) { if(deck_error[dp->type]) {
deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type]; deckerror = (DECKERROR_UNKNOWNCARD << 28) | deck_error[dp->type];
} else { } else {
deckerror = deckManager.CheckDeck(pdeck[dp->type], host_info.lflist, host_info.rule); deckerror = deckManager.CheckDeck(pdeck[dp->type], host_info.lflist, host_info.rule);
} }
......
...@@ -17,7 +17,7 @@ public: ...@@ -17,7 +17,7 @@ public:
void LeaveGame(DuelPlayer* dp) override; void LeaveGame(DuelPlayer* dp) override;
void ToDuelist(DuelPlayer* dp) override; void ToDuelist(DuelPlayer* dp) override;
void ToObserver(DuelPlayer* dp) override; void ToObserver(DuelPlayer* dp) override;
void PlayerReady(DuelPlayer* dp, bool ready) override; void PlayerReady(DuelPlayer* dp, bool is_ready) override;
void PlayerKick(DuelPlayer* dp, unsigned char pos) override; void PlayerKick(DuelPlayer* dp, unsigned char pos) override;
void UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) override; void UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) override;
void StartDuel(DuelPlayer* dp) override; void StartDuel(DuelPlayer* dp) override;
......
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