Commit f75f4817 authored by wind2009's avatar wind2009

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

parents 2c20e27d b842fd1d
Pipeline #29213 failed with stages
in 7 minutes and 43 seconds
...@@ -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,43 +39,26 @@ ...@@ -41,43 +39,26 @@
#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
#include <string>
template<size_t N, typename... TR> template<size_t N, typename... TR>
inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) { inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
return swprintf(buf, N, fmt, args...); return swprintf(buf, N, fmt, args...);
} }
#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 "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"
#include <irrlicht.h>
using namespace irr; using namespace irr;
using namespace core; using namespace core;
using namespace scene; using namespace scene;
......
...@@ -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 YGOPRO_USE_IRRKLANG #ifdef YGOPRO_USE_IRRKLANG
#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;
......
...@@ -1233,6 +1233,6 @@ ...@@ -1233,6 +1233,6 @@
!setname 0x1b9 原石 !setname 0x1b9 原石
!setname 0x1ba 六武式 !setname 0x1ba 六武式
!setname 0x1bb 金属化 メタル化 !setname 0x1bb 金属化 メタル化
!setname 0x1bc 魔瞳 !setname 0x1bc 魔瞳 モルガナイト
!setname 0x1bd 蓟花 アザミナ !setname 0x1bd 蓟花 アザミナ
!setname 0x1be 祝台 !setname 0x1be 祝台
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