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

Merge branch 'master' into mercury233-patch-1

parents f998a5f7 848348ca
...@@ -32,12 +32,12 @@ ClientCard::~ClientCard() { ...@@ -32,12 +32,12 @@ ClientCard::~ClientCard() {
} }
overlayed.clear(); overlayed.clear();
} }
void ClientCard::SetCode(int code) { void ClientCard::SetCode(int x) {
if((location == LOCATION_HAND) && (this->code != (unsigned int)code)) { if((location == LOCATION_HAND) && (code != (unsigned int)x)) {
this->code = code; code = x;
mainGame->dField.MoveCard(this, 5); mainGame->dField.MoveCard(this, 5);
} else } else
this->code = code; code = x;
} }
void ClientCard::UpdateInfo(unsigned char* buf) { void ClientCard::UpdateInfo(unsigned char* buf) {
int flag = BufferIO::ReadInt32(buf); int flag = BufferIO::ReadInt32(buf);
......
...@@ -98,7 +98,7 @@ public: ...@@ -98,7 +98,7 @@ public:
ClientCard() = default; ClientCard() = default;
~ClientCard(); ~ClientCard();
void SetCode(int code); void SetCode(int x);
void UpdateInfo(unsigned char* buf); void UpdateInfo(unsigned char* buf);
void ClearTarget(); void ClearTarget();
void ClearData(); void ClearData();
......
#ifndef __CONFIG_H #ifndef YGOPRO_CONFIG_H
#define __CONFIG_H #define YGOPRO_CONFIG_H
#pragma once
#define _IRR_STATIC_LIB_ #define _IRR_STATIC_LIB_
#define IRR_COMPILE_WITH_DX9_DEV_PACK #define IRR_COMPILE_WITH_DX9_DEV_PACK
...@@ -41,13 +39,8 @@ ...@@ -41,13 +39,8 @@
#define SOCKADDR sockaddr #define SOCKADDR sockaddr
#define SOCKET_ERRNO() (errno) #define SOCKET_ERRNO() (errno)
#include <wchar.h>
#define mywcsncasecmp wcsncasecmp #define mywcsncasecmp wcsncasecmp
#define mystrncasecmp strncasecmp #define mystrncasecmp strncasecmp
inline int _wtoi(const wchar_t * s) {
wchar_t * endptr;
return (int)wcstol(s, &endptr, 10);
}
#endif #endif
template<size_t N, typename... TR> template<size_t N, typename... TR>
...@@ -56,25 +49,13 @@ inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) { ...@@ -56,25 +49,13 @@ inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
} }
#include <irrlicht.h> #include <irrlicht.h>
#ifdef __APPLE__
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else //__APPLE__
#include <GL/gl.h>
#include <GL/glu.h>
#endif //__APPLE__
#include "CGUITTFont.h"
#include "CGUIImageButton.h"
#include <iostream>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h> #include <wchar.h>
#include <thread> #include <iostream>
#include <mutex>
#include <algorithm> #include <algorithm>
#include <string>
#include "bufferio.h" #include "bufferio.h"
#include "myfilesystem.h"
#include "mysignal.h"
#include "../ocgcore/ocgapi.h" #include "../ocgcore/ocgapi.h"
#include "../ocgcore/common.h" #include "../ocgcore/common.h"
......
...@@ -127,7 +127,7 @@ bool DataManager::LoadStrings(IReadFile* reader) { ...@@ -127,7 +127,7 @@ bool DataManager::LoadStrings(IReadFile* reader) {
while(reader->read(&ch[0], 1)) { while(reader->read(&ch[0], 1)) {
if(ch[0] == '\0') if(ch[0] == '\0')
break; break;
strcat(linebuf, ch); std::strcat(linebuf, ch);
if(ch[0] == '\n') { if(ch[0] == '\n') {
ReadStringConfLine(linebuf); ReadStringConfLine(linebuf);
linebuf[0] = '\0'; linebuf[0] = '\0';
...@@ -144,22 +144,22 @@ void DataManager::ReadStringConfLine(const char* linebuf) { ...@@ -144,22 +144,22 @@ void DataManager::ReadStringConfLine(const char* linebuf) {
wchar_t strBuffer[4096]{}; wchar_t strBuffer[4096]{};
if (sscanf(linebuf, "!%63s", strbuf) != 1) if (sscanf(linebuf, "!%63s", strbuf) != 1)
return; return;
if(!strcmp(strbuf, "system")) { if(!std::strcmp(strbuf, "system")) {
if (sscanf(&linebuf[7], "%d %240[^\n]", &value, strbuf) != 2) if (sscanf(&linebuf[7], "%d %240[^\n]", &value, strbuf) != 2)
return; return;
BufferIO::DecodeUTF8(strbuf, strBuffer); BufferIO::DecodeUTF8(strbuf, strBuffer);
_sysStrings[value] = strBuffer; _sysStrings[value] = strBuffer;
} else if(!strcmp(strbuf, "victory")) { } else if(!std::strcmp(strbuf, "victory")) {
if (sscanf(&linebuf[8], "%x %240[^\n]", &value, strbuf) != 2) if (sscanf(&linebuf[8], "%x %240[^\n]", &value, strbuf) != 2)
return; return;
BufferIO::DecodeUTF8(strbuf, strBuffer); BufferIO::DecodeUTF8(strbuf, strBuffer);
_victoryStrings[value] = strBuffer; _victoryStrings[value] = strBuffer;
} else if(!strcmp(strbuf, "counter")) { } else if(!std::strcmp(strbuf, "counter")) {
if (sscanf(&linebuf[8], "%x %240[^\n]", &value, strbuf) != 2) if (sscanf(&linebuf[8], "%x %240[^\n]", &value, strbuf) != 2)
return; return;
BufferIO::DecodeUTF8(strbuf, strBuffer); BufferIO::DecodeUTF8(strbuf, strBuffer);
_counterStrings[value] = strBuffer; _counterStrings[value] = strBuffer;
} else if(!strcmp(strbuf, "setname")) { } else if(!std::strcmp(strbuf, "setname")) {
//using tab for comment //using tab for comment
if (sscanf(&linebuf[8], "%x %240[^\t\n]", &value, strbuf) != 2) if (sscanf(&linebuf[8], "%x %240[^\t\n]", &value, strbuf) != 2)
return; return;
......
#include "config.h" #include "config.h"
#include "deck_con.h" #include "deck_con.h"
#include "myfilesystem.h"
#include "data_manager.h" #include "data_manager.h"
#include "deck_manager.h" #include "deck_manager.h"
#include "image_manager.h" #include "image_manager.h"
...@@ -461,7 +462,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -461,7 +462,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
} }
for(int i = 0; i < (int)mainGame->lstDecks->getItemCount(); i++) { for(int i = 0; i < (int)mainGame->lstDecks->getItemCount(); i++) {
if(!mywcsncasecmp(mainGame->lstDecks->getListItem(i), deckname, 256)) { if(!mywcsncasecmp(mainGame->lstDecks->getListItem(i), deckname, 256)) {
deckManager.LoadDeck(filepath); deckManager.LoadCurrentDeck(filepath);
prev_deck = i; prev_deck = i;
mainGame->cbDBDecks->setSelected(prev_deck); mainGame->cbDBDecks->setSelected(prev_deck);
mainGame->lstDecks->setSelected(prev_deck); mainGame->lstDecks->setSelected(prev_deck);
...@@ -495,7 +496,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -495,7 +496,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
ChangeCategory(catesel); ChangeCategory(catesel);
for(int i = 0; i < (int)mainGame->lstDecks->getItemCount(); i++) { for(int i = 0; i < (int)mainGame->lstDecks->getItemCount(); i++) {
if(!mywcsncasecmp(mainGame->lstDecks->getListItem(i), newdeckname, 256)) { if(!mywcsncasecmp(mainGame->lstDecks->getListItem(i), newdeckname, 256)) {
deckManager.LoadDeck(newfilepath); deckManager.LoadCurrentDeck(newfilepath);
prev_deck = i; prev_deck = i;
mainGame->cbDBDecks->setSelected(prev_deck); mainGame->cbDBDecks->setSelected(prev_deck);
mainGame->lstDecks->setSelected(prev_deck); mainGame->lstDecks->setSelected(prev_deck);
...@@ -522,7 +523,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -522,7 +523,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if(decksel != -1) { if(decksel != -1) {
mainGame->lstDecks->setSelected(decksel); mainGame->lstDecks->setSelected(decksel);
mainGame->cbDBDecks->setSelected(decksel); mainGame->cbDBDecks->setSelected(decksel);
deckManager.LoadDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); deckManager.LoadCurrentDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
} }
RefreshReadonly(prev_category); RefreshReadonly(prev_category);
prev_deck = decksel; prev_deck = decksel;
...@@ -559,7 +560,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -559,7 +560,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
ChangeCategory(catesel); ChangeCategory(catesel);
for(int i = 0; i < (int)mainGame->lstDecks->getItemCount(); i++) { for(int i = 0; i < (int)mainGame->lstDecks->getItemCount(); i++) {
if(!mywcsncasecmp(mainGame->lstDecks->getListItem(i), deckname, 256)) { if(!mywcsncasecmp(mainGame->lstDecks->getListItem(i), deckname, 256)) {
deckManager.LoadDeck(newfilepath); deckManager.LoadCurrentDeck(newfilepath);
prev_deck = i; prev_deck = i;
mainGame->cbDBDecks->setSelected(prev_deck); mainGame->cbDBDecks->setSelected(prev_deck);
mainGame->lstDecks->setSelected(prev_deck); mainGame->lstDecks->setSelected(prev_deck);
...@@ -597,7 +598,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -597,7 +598,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
ChangeCategory(catesel); ChangeCategory(catesel);
for(int i = 0; i < (int)mainGame->lstDecks->getItemCount(); i++) { for(int i = 0; i < (int)mainGame->lstDecks->getItemCount(); i++) {
if(!mywcsncasecmp(mainGame->lstDecks->getListItem(i), deckname, 256)) { if(!mywcsncasecmp(mainGame->lstDecks->getListItem(i), deckname, 256)) {
deckManager.LoadDeck(newfilepath); deckManager.LoadCurrentDeck(newfilepath);
prev_deck = i; prev_deck = i;
mainGame->cbDBDecks->setSelected(prev_deck); mainGame->cbDBDecks->setSelected(prev_deck);
mainGame->lstDecks->setSelected(prev_deck); mainGame->lstDecks->setSelected(prev_deck);
...@@ -650,7 +651,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -650,7 +651,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break; break;
} }
case BUTTON_SIDE_RELOAD: { case BUTTON_SIDE_RELOAD: {
deckManager.LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect); deckManager.LoadCurrentDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect);
break; break;
} }
case BUTTON_BIG_CARD_ORIG_SIZE: { case BUTTON_BIG_CARD_ORIG_SIZE: {
...@@ -696,7 +697,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -696,7 +697,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
sel = count - 1; sel = count - 1;
mainGame->cbDBDecks->setSelected(sel); mainGame->cbDBDecks->setSelected(sel);
if(sel != -1) if(sel != -1)
deckManager.LoadDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); deckManager.LoadCurrentDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
mainGame->stACMessage->setText(dataManager.GetSysString(1338)); mainGame->stACMessage->setText(dataManager.GetSysString(1338));
mainGame->PopupElement(mainGame->wACMessage, 20); mainGame->PopupElement(mainGame->wACMessage, 20);
prev_deck = sel; prev_deck = sel;
...@@ -710,7 +711,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -710,7 +711,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
ChangeCategory(catesel); ChangeCategory(catesel);
} else if(prev_operation == COMBOBOX_DBDECKS) { } else if(prev_operation == COMBOBOX_DBDECKS) {
int decksel = mainGame->cbDBDecks->getSelected(); int decksel = mainGame->cbDBDecks->getSelected();
deckManager.LoadDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); deckManager.LoadCurrentDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
prev_deck = decksel; prev_deck = decksel;
is_modified = false; is_modified = false;
} else if(prev_operation == BUTTON_MANAGE_DECK) { } else if(prev_operation == BUTTON_MANAGE_DECK) {
...@@ -827,7 +828,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -827,7 +828,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
} }
int decksel = mainGame->cbDBDecks->getSelected(); int decksel = mainGame->cbDBDecks->getSelected();
if(decksel >= 0) { if(decksel >= 0) {
deckManager.LoadDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); deckManager.LoadCurrentDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
} }
prev_deck = decksel; prev_deck = decksel;
is_modified = false; is_modified = false;
...@@ -986,7 +987,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -986,7 +987,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
wchar_t catepath[256]; wchar_t catepath[256];
deckManager.GetCategoryPath(catepath, mainGame->lstCategories->getSelected(), mainGame->lstCategories->getListItem(mainGame->lstCategories->getSelected())); deckManager.GetCategoryPath(catepath, mainGame->lstCategories->getSelected(), mainGame->lstCategories->getListItem(mainGame->lstCategories->getSelected()));
myswprintf(filepath, L"%ls/%ls.ydk", catepath, mainGame->lstDecks->getListItem(decksel)); myswprintf(filepath, L"%ls/%ls.ydk", catepath, mainGame->lstDecks->getListItem(decksel));
deckManager.LoadDeck(filepath, showing_pack); deckManager.LoadCurrentDeck(filepath, showing_pack);
RefreshPackListScroll(); RefreshPackListScroll();
prev_deck = decksel; prev_deck = decksel;
break; break;
...@@ -1300,12 +1301,12 @@ void DeckBuilder::GetHoveredCard() { ...@@ -1300,12 +1301,12 @@ void DeckBuilder::GetHoveredCard() {
} else if(x >= 810 && x <= 995 && y >= 165 && y <= 626) { } else if(x >= 810 && x <= 995 && y >= 165 && y <= 626) {
hovered_pos = 4; hovered_pos = 4;
hovered_seq = (y - 165) / 66; hovered_seq = (y - 165) / 66;
int pos = mainGame->scrFilter->getPos() + hovered_seq; int current_pos = mainGame->scrFilter->getPos() + hovered_seq;
if(pos >= (int)results.size()) { if(current_pos >= (int)results.size()) {
hovered_seq = -1; hovered_seq = -1;
hovered_code = 0; hovered_code = 0;
} else { } else {
hovered_code = results[pos]->first; hovered_code = results[current_pos]->first;
} }
} }
if(is_draging) { if(is_draging) {
...@@ -1633,7 +1634,7 @@ void DeckBuilder::ChangeCategory(int catesel) { ...@@ -1633,7 +1634,7 @@ void DeckBuilder::ChangeCategory(int catesel) {
mainGame->RefreshDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); mainGame->RefreshDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
mainGame->cbDBDecks->setSelected(0); mainGame->cbDBDecks->setSelected(0);
RefreshReadonly(catesel); RefreshReadonly(catesel);
deckManager.LoadDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); deckManager.LoadCurrentDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
is_modified = false; is_modified = false;
prev_category = catesel; prev_category = catesel;
prev_deck = 0; prev_deck = 0;
......
This diff is collapsed.
...@@ -48,19 +48,20 @@ public: ...@@ -48,19 +48,20 @@ public:
const std::unordered_map<int, int>* GetLFListContent(int lfhash); const std::unordered_map<int, int>* GetLFListContent(int lfhash);
int CheckDeck(Deck& deck, int lfhash, int rule); int CheckDeck(Deck& deck, int lfhash, int rule);
int LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_packlist = false); int LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_packlist = false);
int LoadDeck(Deck& deck, std::istringstream& deckStream, bool is_packlist = false);
bool LoadSide(Deck& deck, int* dbuf, int mainc, int sidec); bool LoadSide(Deck& deck, int* dbuf, int mainc, int sidec);
void GetCategoryPath(wchar_t* ret, int index, const wchar_t* text); void GetCategoryPath(wchar_t* ret, int index, const wchar_t* text);
void GetDeckFile(wchar_t* ret, irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUIComboBox* cbDeck); void GetDeckFile(wchar_t* ret, irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUIComboBox* cbDeck);
bool LoadDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUIComboBox* cbDeck);
FILE* OpenDeckFile(const wchar_t* file, const char* mode); FILE* OpenDeckFile(const wchar_t* file, const char* mode);
IReadFile* OpenDeckReader(const wchar_t* file); IReadFile* OpenDeckReader(const wchar_t* file);
bool LoadDeck(const wchar_t* file, bool is_packlist = false); bool LoadCurrentDeck(const wchar_t* file, bool is_packlist = false);
bool LoadDeck(std::istringstream* deckStream, bool is_packlist = false); bool LoadCurrentDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUIComboBox* cbDeck);
bool SaveDeck(Deck& deck, const wchar_t* file); bool SaveDeck(Deck& deck, const wchar_t* file);
bool DeleteDeck(const wchar_t* file); bool DeleteDeck(const wchar_t* file);
bool CreateCategory(const wchar_t* name); bool CreateCategory(const wchar_t* name);
bool RenameCategory(const wchar_t* oldname, const wchar_t* newname); bool RenameCategory(const wchar_t* oldname, const wchar_t* newname);
bool DeleteCategory(const wchar_t* name); bool DeleteCategory(const wchar_t* name);
bool SaveDeckBuffer(const int deckbuf[], const wchar_t* name);
}; };
extern DeckManager deckManager; extern DeckManager deckManager;
......
...@@ -218,7 +218,7 @@ void Game::DrawBackGround() { ...@@ -218,7 +218,7 @@ void Game::DrawBackGround() {
} }
} }
void Game::DrawLinkedZones(ClientCard* pcard) { void Game::DrawLinkedZones(ClientCard* pcard) {
int mark = pcard->link_marker; auto mark = pcard->link_marker;
ClientCard* pcard2; ClientCard* pcard2;
if (dField.hovered_sequence < 5) { if (dField.hovered_sequence < 5) {
if (mark & LINK_MARKER_LEFT && dField.hovered_sequence > 0) { if (mark & LINK_MARKER_LEFT && dField.hovered_sequence > 0) {
...@@ -235,25 +235,25 @@ void Game::DrawLinkedZones(ClientCard* pcard) { ...@@ -235,25 +235,25 @@ void Game::DrawLinkedZones(ClientCard* pcard) {
if ((mark & LINK_MARKER_TOP_LEFT && dField.hovered_sequence == 2) if ((mark & LINK_MARKER_TOP_LEFT && dField.hovered_sequence == 2)
|| (mark & LINK_MARKER_TOP && dField.hovered_sequence == 1) || (mark & LINK_MARKER_TOP && dField.hovered_sequence == 1)
|| (mark & LINK_MARKER_TOP_RIGHT && dField.hovered_sequence == 0)) { || (mark & LINK_MARKER_TOP_RIGHT && dField.hovered_sequence == 0)) {
int mark = (dField.hovered_sequence == 2) ? LINK_MARKER_BOTTOM_RIGHT : (dField.hovered_sequence == 1) ? LINK_MARKER_BOTTOM : LINK_MARKER_BOTTOM_LEFT; int arrow = (dField.hovered_sequence == 2) ? LINK_MARKER_BOTTOM_RIGHT : (dField.hovered_sequence == 1) ? LINK_MARKER_BOTTOM : LINK_MARKER_BOTTOM_LEFT;
pcard2 = dField.mzone[dField.hovered_controler][5]; pcard2 = dField.mzone[dField.hovered_controler][5];
if (!pcard2) { if (!pcard2) {
pcard2 = dField.mzone[1 - dField.hovered_controler][6]; pcard2 = dField.mzone[1 - dField.hovered_controler][6];
mark = (dField.hovered_sequence == 2) ? LINK_MARKER_TOP_LEFT : (dField.hovered_sequence == 1) ? LINK_MARKER_TOP : LINK_MARKER_TOP_RIGHT; arrow = (dField.hovered_sequence == 2) ? LINK_MARKER_TOP_LEFT : (dField.hovered_sequence == 1) ? LINK_MARKER_TOP : LINK_MARKER_TOP_RIGHT;
} }
CheckMutual(pcard2, mark); CheckMutual(pcard2, arrow);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][5], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][5], 4, matManager.iRectangle, 2);
} }
if ((mark & LINK_MARKER_TOP_LEFT && dField.hovered_sequence == 4) if ((mark & LINK_MARKER_TOP_LEFT && dField.hovered_sequence == 4)
|| (mark & LINK_MARKER_TOP && dField.hovered_sequence == 3) || (mark & LINK_MARKER_TOP && dField.hovered_sequence == 3)
|| (mark & LINK_MARKER_TOP_RIGHT && dField.hovered_sequence == 2)) { || (mark & LINK_MARKER_TOP_RIGHT && dField.hovered_sequence == 2)) {
int mark = (dField.hovered_sequence == 4) ? LINK_MARKER_BOTTOM_RIGHT : (dField.hovered_sequence == 3) ? LINK_MARKER_BOTTOM : LINK_MARKER_BOTTOM_LEFT; int arrow = (dField.hovered_sequence == 4) ? LINK_MARKER_BOTTOM_RIGHT : (dField.hovered_sequence == 3) ? LINK_MARKER_BOTTOM : LINK_MARKER_BOTTOM_LEFT;
pcard2 = dField.mzone[dField.hovered_controler][6]; pcard2 = dField.mzone[dField.hovered_controler][6];
if (!pcard2) { if (!pcard2) {
pcard2 = dField.mzone[1 - dField.hovered_controler][5]; pcard2 = dField.mzone[1 - dField.hovered_controler][5];
mark = (dField.hovered_sequence == 4) ? LINK_MARKER_TOP_LEFT : (dField.hovered_sequence == 3) ? LINK_MARKER_TOP : LINK_MARKER_TOP_RIGHT; arrow = (dField.hovered_sequence == 4) ? LINK_MARKER_TOP_LEFT : (dField.hovered_sequence == 3) ? LINK_MARKER_TOP : LINK_MARKER_TOP_RIGHT;
} }
CheckMutual(pcard2, mark); CheckMutual(pcard2, arrow);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][6], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][6], 4, matManager.iRectangle, 2);
} }
} }
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "game.h" #include "game.h"
#include "replay.h" #include "replay.h"
#include "replay_mode.h" #include "replay_mode.h"
#include <thread>
namespace ygo { namespace ygo {
...@@ -61,8 +62,8 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g ...@@ -61,8 +62,8 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g
rnd.reset((uint_fast32_t)std::random_device()()); rnd.reset((uint_fast32_t)std::random_device()());
if(!create_game) { if(!create_game) {
timeval timeout = {5, 0}; timeval timeout = {5, 0};
event* resp_event = event_new(client_base, 0, EV_TIMEOUT, ConnectTimeout, 0); event* timeout_event = event_new(client_base, 0, EV_TIMEOUT, ConnectTimeout, 0);
event_add(resp_event, &timeout); event_add(timeout_event, &timeout);
} }
std::thread(ClientThread).detach(); std::thread(ClientThread).detach();
return true; return true;
...@@ -144,10 +145,10 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) { ...@@ -144,10 +145,10 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
BufferIO::CopyWStr(mainGame->ebServerPass->getText(), cscg.pass, 20); BufferIO::CopyWStr(mainGame->ebServerPass->getText(), cscg.pass, 20);
cscg.info.rule = mainGame->cbRule->getSelected(); cscg.info.rule = mainGame->cbRule->getSelected();
cscg.info.mode = mainGame->cbMatchMode->getSelected(); cscg.info.mode = mainGame->cbMatchMode->getSelected();
cscg.info.start_hand = _wtoi(mainGame->ebStartHand->getText()); cscg.info.start_hand = wcstol(mainGame->ebStartHand->getText(),nullptr,10);
cscg.info.start_lp = _wtoi(mainGame->ebStartLP->getText()); cscg.info.start_lp = wcstol(mainGame->ebStartLP->getText(),nullptr,10);
cscg.info.draw_count = _wtoi(mainGame->ebDrawCount->getText()); cscg.info.draw_count = wcstol(mainGame->ebDrawCount->getText(),nullptr,10);
cscg.info.time_limit = _wtoi(mainGame->ebTimeLimit->getText()); cscg.info.time_limit = wcstol(mainGame->ebTimeLimit->getText(),nullptr,10);
cscg.info.lflist = mainGame->cbHostLFlist->getItemData(mainGame->cbHostLFlist->getSelected()); cscg.info.lflist = mainGame->cbHostLFlist->getItemData(mainGame->cbHostLFlist->getSelected());
cscg.info.duel_rule = mainGame->cbDuelRule->getSelected() + 1; cscg.info.duel_rule = mainGame->cbDuelRule->getSelected() + 1;
cscg.info.no_check_deck = mainGame->chkNoCheckDeck->isChecked(); cscg.info.no_check_deck = mainGame->chkNoCheckDeck->isChecked();
...@@ -1402,8 +1403,8 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) { ...@@ -1402,8 +1403,8 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
else if (pcard->location == LOCATION_EXTRA) else if (pcard->location == LOCATION_EXTRA)
mainGame->dField.extra_act = true; mainGame->dField.extra_act = true;
else { else {
int seq = mainGame->dInfo.duel_rule >= 4 ? 0 : 6; int left_seq = mainGame->dInfo.duel_rule >= 4 ? 0 : 6;
if (pcard->location == LOCATION_SZONE && pcard->sequence == seq && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget) if (pcard->location == LOCATION_SZONE && pcard->sequence == left_seq && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget)
mainGame->dField.pzone_act[pcard->controler] = true; mainGame->dField.pzone_act[pcard->controler] = true;
} }
} }
...@@ -3148,8 +3149,8 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) { ...@@ -3148,8 +3149,8 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
pcard = mainGame->dField.GetCard(player, LOCATION_DECK, mainGame->dField.deck[player].size() - 1); pcard = mainGame->dField.GetCard(player, LOCATION_DECK, mainGame->dField.deck[player].size() - 1);
mainGame->dField.deck[player].erase(mainGame->dField.deck[player].end() - 1); mainGame->dField.deck[player].erase(mainGame->dField.deck[player].end() - 1);
mainGame->dField.AddCard(pcard, player, LOCATION_HAND, 0); mainGame->dField.AddCard(pcard, player, LOCATION_HAND, 0);
for(size_t i = 0; i < mainGame->dField.hand[player].size(); ++i) for(int j = 0; j < (int)mainGame->dField.hand[player].size(); ++j)
mainGame->dField.MoveCard(mainGame->dField.hand[player][i], 10); mainGame->dField.MoveCard(mainGame->dField.hand[player][j], 10);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
mainGame->WaitFrameSignal(5); mainGame->WaitFrameSignal(5);
} }
......
...@@ -1456,7 +1456,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1456,7 +1456,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
DuelClient::SetResponseB(respbuf, selectable_cards.size() * 2); DuelClient::SetResponseB(respbuf, selectable_cards.size() * 2);
DuelClient::SendResponse(); DuelClient::SendResponse();
} else { } else {
wchar_t formatBuffer[2048];
myswprintf(formatBuffer, dataManager.GetSysString(204), select_counter_count, dataManager.GetCounterName(select_counter_type)); myswprintf(formatBuffer, dataManager.GetSysString(204), select_counter_count, dataManager.GetCounterName(select_counter_type));
mainGame->stHintMsg->setText(formatBuffer); mainGame->stHintMsg->setText(formatBuffer);
} }
...@@ -1665,8 +1664,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1665,8 +1664,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
player_name = mainGame->dInfo.clientname_tag; player_name = mainGame->dInfo.clientname_tag;
} }
std::wstring str(player_name); std::wstring str(player_name);
const auto& player_desc_hints = mainGame->dField.player_desc_hints[mplayer]; const auto& mplayer_hints = mainGame->dField.player_desc_hints[mplayer];
for(auto iter = player_desc_hints.begin(); iter != player_desc_hints.end(); ++iter) { for(auto iter = mplayer_hints.begin(); iter != mplayer_hints.end(); ++iter) {
myswprintf(formatBuffer, L"\n*%ls", dataManager.GetDesc(iter->first)); myswprintf(formatBuffer, L"\n*%ls", dataManager.GetDesc(iter->first));
str.append(formatBuffer); str.append(formatBuffer);
} }
......
This diff is collapsed.
...@@ -2,12 +2,25 @@ ...@@ -2,12 +2,25 @@
#define GAME_H #define GAME_H
#include "config.h" #include "config.h"
#ifdef __APPLE__
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else //__APPLE__
#include <GL/gl.h>
#include <GL/glu.h>
#endif //__APPLE__
#include "CGUIImageButton.h"
#include "CGUITTFont.h"
#include "mysignal.h"
#include "client_field.h" #include "client_field.h"
#include "deck_con.h" #include "deck_con.h"
#include "menu_handler.h" #include "menu_handler.h"
#include <time.h>
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
#include <list> #include <list>
#include <mutex>
#include <functional>
#define DEFAULT_DUEL_RULE 5 #define DEFAULT_DUEL_RULE 5
......
...@@ -38,7 +38,7 @@ int main(int argc, char* argv[]) { ...@@ -38,7 +38,7 @@ int main(int argc, char* argv[]) {
#ifdef _WIN32 #ifdef _WIN32
#ifndef _DEBUG #ifndef _DEBUG
char* pstrext; char* pstrext;
if(argc == 2 && (pstrext = strrchr(argv[1], '.')) if(argc == 2 && (pstrext = std::strrchr(argv[1], '.'))
&& (!mystrncasecmp(pstrext, ".ydk", 4) || !mystrncasecmp(pstrext, ".yrp", 4))) { && (!mystrncasecmp(pstrext, ".ydk", 4) || !mystrncasecmp(pstrext, ".yrp", 4))) {
wchar_t exepath[MAX_PATH]; wchar_t exepath[MAX_PATH];
GetModuleFileNameW(NULL, exepath, MAX_PATH); GetModuleFileNameW(NULL, exepath, MAX_PATH);
......
#include "image_manager.h" #include "image_manager.h"
#include "game.h" #include "game.h"
#include <thread>
namespace ygo { namespace ygo {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "data_manager.h" #include "data_manager.h"
#include <unordered_map> #include <unordered_map>
#include <queue> #include <queue>
#include <mutex>
namespace ygo { namespace ygo {
......
#include "config.h" #include "config.h"
#include "menu_handler.h" #include "menu_handler.h"
#include "myfilesystem.h"
#include "netserver.h" #include "netserver.h"
#include "duelclient.h" #include "duelclient.h"
#include "deck_manager.h" #include "deck_manager.h"
...@@ -96,7 +97,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -96,7 +97,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
evutil_freeaddrinfo(answer); evutil_freeaddrinfo(answer);
} }
} }
unsigned int remote_port = _wtoi(mainGame->ebJoinPort->getText()); unsigned int remote_port = wcstol(mainGame->ebJoinPort->getText(), nullptr, 10);
BufferIO::CopyWStr(pstr, mainGame->gameConf.lasthost, 100); BufferIO::CopyWStr(pstr, mainGame->gameConf.lasthost, 100);
BufferIO::CopyWStr(mainGame->ebJoinPort->getText(), mainGame->gameConf.lastport, 20); BufferIO::CopyWStr(mainGame->ebJoinPort->getText(), mainGame->gameConf.lastport, 20);
if(DuelClient::StartClient(remote_addr, remote_port, false)) { if(DuelClient::StartClient(remote_addr, remote_port, false)) {
...@@ -161,20 +162,20 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -161,20 +162,20 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break; break;
} }
case BUTTON_HP_KICK: { case BUTTON_HP_KICK: {
int id = 0; int index = 0;
while(id < 4) { while(index < 4) {
if(mainGame->btnHostPrepKick[id] == caller) if(mainGame->btnHostPrepKick[index] == caller)
break; break;
id++; ++index;
} }
CTOS_Kick csk; CTOS_Kick csk;
csk.pos = id; csk.pos = index;
DuelClient::SendPacketToServer(CTOS_HS_KICK, csk); DuelClient::SendPacketToServer(CTOS_HS_KICK, csk);
break; break;
} }
case BUTTON_HP_READY: { case BUTTON_HP_READY: {
if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 || if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 ||
!deckManager.LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) { !deckManager.LoadCurrentDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) {
mainGame->gMutex.lock(); mainGame->gMutex.lock();
soundManager.PlaySoundEffect(SOUND_INFO); soundManager.PlaySoundEffect(SOUND_INFO);
mainGame->env->addMessageBox(L"", dataManager.GetSysString(1406)); mainGame->env->addMessageBox(L"", dataManager.GetSysString(1406));
...@@ -252,7 +253,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -252,7 +253,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->dField.Clear(); mainGame->dField.Clear();
mainGame->HideElement(mainGame->wReplay); mainGame->HideElement(mainGame->wReplay);
mainGame->device->setEventReceiver(&mainGame->dField); mainGame->device->setEventReceiver(&mainGame->dField);
unsigned int start_turn = _wtoi(mainGame->ebRepStartTurn->getText()); unsigned int start_turn = wcstol(mainGame->ebRepStartTurn->getText(), nullptr, 10);
if(start_turn == 1) if(start_turn == 1)
start_turn = 0; start_turn = 0;
ReplayMode::StartReplay(start_turn); ReplayMode::StartReplay(start_turn);
...@@ -294,40 +295,40 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -294,40 +295,40 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if(mainGame->lstReplayList->getSelected() == -1) if(mainGame->lstReplayList->getSelected() == -1)
break; break;
Replay replay; Replay replay;
wchar_t ex_filename[256]; wchar_t ex_filename[256]{};
wchar_t namebuf[4][20]; wchar_t namebuf[4][20]{};
wchar_t filename[256]; wchar_t filename[256]{};
myswprintf(ex_filename, L"%ls", mainGame->lstReplayList->getListItem(mainGame->lstReplayList->getSelected())); myswprintf(ex_filename, L"%ls", mainGame->lstReplayList->getListItem(mainGame->lstReplayList->getSelected()));
if(!replay.OpenReplay(ex_filename)) if(!replay.OpenReplay(ex_filename))
break; break;
const ReplayHeader& rh = replay.pheader; const ReplayHeader& rh = replay.pheader;
if(rh.flag & REPLAY_SINGLE_MODE) if(rh.flag & REPLAY_SINGLE_MODE)
break; break;
int max = (rh.flag & REPLAY_TAG) ? 4 : 2; int player_count = (rh.flag & REPLAY_TAG) ? 4 : 2;
//player name //player name
for(int i = 0; i < max; ++i) for(int i = 0; i < player_count; ++i)
replay.ReadName(namebuf[i]); replay.ReadName(namebuf[i]);
//skip pre infos //skip pre infos
for(int i = 0; i < 4; ++i) for(int i = 0; i < 4; ++i)
replay.ReadInt32(); replay.ReadInt32();
//deck //deck
for(int i = 0; i < max; ++i) { std::vector<int> deckbuf;
for(int i = 0; i < player_count; ++i) {
deckbuf.clear();
int main = replay.ReadInt32(); int main = replay.ReadInt32();
Deck tmp_deck; deckbuf.push_back(main);
for (int j = 0; j < main; ++j) { for (int j = 0; j < main; ++j) {
auto card = dataManager.GetCodePointer(replay.ReadInt32()); deckbuf.push_back(replay.ReadInt32());
if (card != dataManager.datas_end)
tmp_deck.main.push_back(card);
} }
int extra = replay.ReadInt32(); int extra = replay.ReadInt32();
deckbuf.push_back(extra);
for (int j = 0; j < extra; ++j) { for (int j = 0; j < extra; ++j) {
auto card = dataManager.GetCodePointer(replay.ReadInt32()); deckbuf.push_back(replay.ReadInt32());
if (card != dataManager.datas_end)
tmp_deck.extra.push_back(card);
} }
deckbuf.push_back(0);
FileSystem::SafeFileName(namebuf[i]); FileSystem::SafeFileName(namebuf[i]);
myswprintf(filename, L"deck/%ls-%d %ls.ydk", ex_filename, i + 1, namebuf[i]); myswprintf(filename, L"deck/%ls-%d %ls.ydk", ex_filename, i + 1, namebuf[i]);
deckManager.SaveDeck(tmp_deck, filename); deckManager.SaveDeckBuffer(deckbuf.data(), filename);
} }
mainGame->stACMessage->setText(dataManager.GetSysString(1335)); mainGame->stACMessage->setText(dataManager.GetSysString(1335));
mainGame->PopupElement(mainGame->wACMessage, 20); mainGame->PopupElement(mainGame->wACMessage, 20);
...@@ -425,7 +426,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -425,7 +426,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
} }
case BUTTON_DECK_EDIT: { case BUTTON_DECK_EDIT: {
mainGame->RefreshCategoryDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); mainGame->RefreshCategoryDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
if(open_file && deckManager.LoadDeck(open_file_name)) { if(open_file && deckManager.LoadCurrentDeck(open_file_name)) {
#ifdef WIN32 #ifdef WIN32
wchar_t *dash = wcsrchr(open_file_name, L'\\'); wchar_t *dash = wcsrchr(open_file_name, L'\\');
#else #else
...@@ -463,7 +464,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -463,7 +464,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
} }
open_file = false; open_file = false;
} else if(mainGame->cbDBCategory->getSelected() != -1 && mainGame->cbDBDecks->getSelected() != -1) { } else if(mainGame->cbDBCategory->getSelected() != -1 && mainGame->cbDBDecks->getSelected() != -1) {
deckManager.LoadDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); deckManager.LoadCurrentDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
mainGame->ebDeckname->setText(L""); mainGame->ebDeckname->setText(L"");
} }
mainGame->HideElement(mainGame->wMainMenu); mainGame->HideElement(mainGame->wMainMenu);
...@@ -546,7 +547,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -546,7 +547,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
tm* st = localtime(&curtime); tm* st = localtime(&curtime);
wcsftime(infobuf, 256, L"%Y/%m/%d %H:%M:%S\n", st); wcsftime(infobuf, 256, L"%Y/%m/%d %H:%M:%S\n", st);
repinfo.append(infobuf); repinfo.append(infobuf);
wchar_t namebuf[4][20]; wchar_t namebuf[4][20]{};
ReplayMode::cur_replay.ReadName(namebuf[0]); ReplayMode::cur_replay.ReadName(namebuf[0]);
ReplayMode::cur_replay.ReadName(namebuf[1]); ReplayMode::cur_replay.ReadName(namebuf[1]);
if(ReplayMode::cur_replay.pheader.flag & REPLAY_TAG) { if(ReplayMode::cur_replay.pheader.flag & REPLAY_TAG) {
...@@ -586,9 +587,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -586,9 +587,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
std::wstring message = L""; std::wstring message = L"";
bool in_message = false; bool in_message = false;
while(fgets(linebuf, 1024, fp)) { while(fgets(linebuf, 1024, fp)) {
if(!strncmp(linebuf, "--[[message", 11)) { if(!std::strncmp(linebuf, "--[[message", 11)) {
size_t len = strlen(linebuf); size_t len = std::strlen(linebuf);
char* msgend = strrchr(linebuf, ']'); char* msgend = std::strrchr(linebuf, ']');
if(len <= 13) { if(len <= 13) {
in_message = true; in_message = true;
continue; continue;
...@@ -599,7 +600,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -599,7 +600,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break; break;
} }
} }
if(!strncmp(linebuf, "]]", 2)) { if(!std::strncmp(linebuf, "]]", 2)) {
in_message = false; in_message = false;
break; break;
} }
...@@ -632,7 +633,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -632,7 +633,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->env->setFocus(mainGame->wHostPrepare); mainGame->env->setFocus(mainGame->wHostPrepare);
if(static_cast<irr::gui::IGUICheckBox*>(caller)->isChecked()) { if(static_cast<irr::gui::IGUICheckBox*>(caller)->isChecked()) {
if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 || if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 ||
!deckManager.LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) { !deckManager.LoadCurrentDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) {
mainGame->gMutex.lock(); mainGame->gMutex.lock();
static_cast<irr::gui::IGUICheckBox*>(caller)->setChecked(false); static_cast<irr::gui::IGUICheckBox*>(caller)->setChecked(false);
soundManager.PlaySoundEffect(SOUND_INFO); soundManager.PlaySoundEffect(SOUND_INFO);
......
#include "netserver.h" #include "netserver.h"
#include "single_duel.h" #include "single_duel.h"
#include "tag_duel.h" #include "tag_duel.h"
#include <thread>
namespace ygo { namespace ygo {
std::unordered_map<bufferevent*, DuelPlayer> NetServer::users; std::unordered_map<bufferevent*, DuelPlayer> NetServer::users;
......
...@@ -253,7 +253,7 @@ public: ...@@ -253,7 +253,7 @@ public:
#define NETPLAYER_TYPE_OBSERVER 7 #define NETPLAYER_TYPE_OBSERVER 7
#define CTOS_RESPONSE 0x1 // byte array #define CTOS_RESPONSE 0x1 // byte array
#define CTOS_UPDATE_DECK 0x2 // int32_t array #define CTOS_UPDATE_DECK 0x2 // mainc, sidec, int32_t[mainc + sidec]
#define CTOS_HAND_RESULT 0x3 // CTOS_HandResult #define CTOS_HAND_RESULT 0x3 // CTOS_HandResult
#define CTOS_TP_RESULT 0x4 // CTOS_TPResult #define CTOS_TP_RESULT 0x4 // CTOS_TPResult
#define CTOS_PLAYER_INFO 0x10 // CTOS_PlayerInfo #define CTOS_PLAYER_INFO 0x10 // CTOS_PlayerInfo
......
#include "replay.h" #include "replay.h"
#include "myfilesystem.h"
#include "lzma/LzmaLib.h" #include "lzma/LzmaLib.h"
namespace ygo { namespace ygo {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include "game.h" #include "game.h"
#include "../ocgcore/common.h" #include "../ocgcore/common.h"
#include "../ocgcore/mtrandom.h" #include "../ocgcore/mtrandom.h"
#include <thread>
namespace ygo { namespace ygo {
......
...@@ -440,7 +440,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -440,7 +440,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
pduel = create_duel(duel_seed); pduel = create_duel(duel_seed);
set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count); set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count);
set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count); set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count);
int opt = (int)host_info.duel_rule << 16; unsigned int opt = (unsigned int)host_info.duel_rule << 16;
if(host_info.no_shuffle_deck) if(host_info.no_shuffle_deck)
opt |= DUEL_PSEUDO_SHUFFLE; opt |= DUEL_PSEUDO_SHUFFLE;
last_replay.WriteInt32(host_info.start_lp, false); last_replay.WriteInt32(host_info.start_lp, false);
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include "game.h" #include "game.h"
#include "../ocgcore/common.h" #include "../ocgcore/common.h"
#include "../ocgcore/mtrandom.h" #include "../ocgcore/mtrandom.h"
#include <thread>
namespace ygo { namespace ygo {
......
#include "sound_manager.h" #include "sound_manager.h"
#include "myfilesystem.h"
#ifdef IRRKLANG_STATIC #ifdef IRRKLANG_STATIC
#include "../ikpmp3/ikpMP3.h" #include "../ikpmp3/ikpMP3.h"
#endif #endif
......
...@@ -417,7 +417,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -417,7 +417,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
pduel = create_duel(duel_seed); pduel = create_duel(duel_seed);
set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count); set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count);
set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count); set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count);
int opt = (int)host_info.duel_rule << 16; unsigned int opt = (unsigned int)host_info.duel_rule << 16;
if(host_info.no_shuffle_deck) if(host_info.no_shuffle_deck)
opt |= DUEL_PSEUDO_SHUFFLE; opt |= DUEL_PSEUDO_SHUFFLE;
opt |= DUEL_TAG_MODE; opt |= DUEL_TAG_MODE;
......
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