Commit 2ad66465 authored by nanahira's avatar nanahira

merge

parents 37dd4773 fd6aed89
language: cpp language: cpp
dist: trusty dist: xenial
git: git:
submodules: false submodules: false
addons: addons:
ssh_known_hosts: ssh_known_hosts:
- github.com - github.com
apt: apt:
# sources:
# - ubuntu-toolchain-r-test
packages: packages:
- libevent-dev # - gcc-6
- libsqlite3-dev # - g++-6
- libevent-dev
- libsqlite3-dev
env: env:
- DATABASE_FILE=cards.cdb - DATABASE_FILE=cards.cdb
before_install: before_install:
- git submodule update --init --recursive - git submodule update --init --recursive
#- sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
#- sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++
#- g++ --version
- wget -O - https://github.com/premake/premake-core/releases/download/v5.0.0-alpha12/premake-5.0.0-alpha12-linux.tar.gz | tar zfx - - wget -O - https://github.com/premake/premake-core/releases/download/v5.0.0-alpha12/premake-5.0.0-alpha12-linux.tar.gz | tar zfx -
- wget -O - https://www.lua.org/ftp/lua-5.3.5.tar.gz | tar zfx -; cd lua-5.3.5; sudo make linux install; cd .. - wget -O - https://www.lua.org/ftp/lua-5.3.5.tar.gz | tar zfx -; cd lua-5.3.5; sudo make linux install; cd ..
script: script:
......
...@@ -60,7 +60,7 @@ public: ...@@ -60,7 +60,7 @@ public:
*pstr = 0; *pstr = 0;
return l; return l;
} }
// UCS-2 to UTF-8 // UTF-16/UTF-32 to UTF-8
static int EncodeUTF8(const wchar_t * wsrc, char * str) { static int EncodeUTF8(const wchar_t * wsrc, char * str) {
char* pstr = str; char* pstr = str;
while(*wsrc != 0) { while(*wsrc != 0) {
...@@ -71,18 +71,35 @@ public: ...@@ -71,18 +71,35 @@ public:
str[0] = ((*wsrc >> 6) & 0x1f) | 0xc0; str[0] = ((*wsrc >> 6) & 0x1f) | 0xc0;
str[1] = ((*wsrc) & 0x3f) | 0x80; str[1] = ((*wsrc) & 0x3f) | 0x80;
str += 2; str += 2;
} else { } else if(*wsrc < 0x10000 && (*wsrc < 0xd800 || *wsrc > 0xdfff)) {
str[0] = ((*wsrc >> 12) & 0xf) | 0xe0; str[0] = ((*wsrc >> 12) & 0xf) | 0xe0;
str[1] = ((*wsrc >> 6) & 0x3f) | 0x80; str[1] = ((*wsrc >> 6) & 0x3f) | 0x80;
str[2] = ((*wsrc) & 0x3f) | 0x80; str[2] = ((*wsrc) & 0x3f) | 0x80;
str += 3; str += 3;
} else {
#ifdef _WIN32
unsigned unicode = 0;
unicode |= (*wsrc++ & 0x3ff) << 10;
unicode |= *wsrc & 0x3ff;
unicode += 0x10000;
str[0] = ((unicode >> 18) & 0x7) | 0xf0;
str[1] = ((unicode >> 12) & 0x3f) | 0x80;
str[2] = ((unicode >> 6) & 0x3f) | 0x80;
str[3] = ((unicode) & 0x3f) | 0x80;
#else
str[0] = ((*wsrc >> 18) & 0x7) | 0xf0;
str[1] = ((*wsrc >> 12) & 0x3f) | 0x80;
str[2] = ((*wsrc >> 6) & 0x3f) | 0x80;
str[3] = ((*wsrc) & 0x3f) | 0x80;
#endif // _WIN32
str += 4;
} }
wsrc++; wsrc++;
} }
*str = 0; *str = 0;
return str - pstr; return str - pstr;
} }
// UTF-8 to UCS-2 // UTF-8 to UTF-16/UTF-32
static int DecodeUTF8(const char * src, wchar_t * wstr) { static int DecodeUTF8(const char * src, wchar_t * wstr) {
const char* p = src; const char* p = src;
wchar_t* wp = wstr; wchar_t* wp = wstr;
...@@ -97,7 +114,14 @@ public: ...@@ -97,7 +114,14 @@ public:
*wp = (((unsigned)p[0] & 0xf) << 12) | (((unsigned)p[1] & 0x3f) << 6) | ((unsigned)p[2] & 0x3f); *wp = (((unsigned)p[0] & 0xf) << 12) | (((unsigned)p[1] & 0x3f) << 6) | ((unsigned)p[2] & 0x3f);
p += 3; p += 3;
} else if((*p & 0xf8) == 0xf0) { } else if((*p & 0xf8) == 0xf0) {
#ifdef _WIN32
unsigned unicode = (((unsigned)p[0] & 0x7) << 18) | (((unsigned)p[1] & 0x3f) << 12) | (((unsigned)p[2] & 0x3f) << 6) | ((unsigned)p[3] & 0x3f);
unicode -= 0x10000;
*wp++ = (unicode >> 10) | 0xd800;
*wp = (unicode & 0x3ff) | 0xdc00;
#else
*wp = (((unsigned)p[0] & 0x7) << 18) | (((unsigned)p[1] & 0x3f) << 12) | (((unsigned)p[2] & 0x3f) << 6) | ((unsigned)p[3] & 0x3f); *wp = (((unsigned)p[0] & 0x7) << 18) | (((unsigned)p[1] & 0x3f) << 12) | (((unsigned)p[2] & 0x3f) << 6) | ((unsigned)p[3] & 0x3f);
#endif // _WIN32
p += 4; p += 4;
} else } else
p++; p++;
......
...@@ -12,11 +12,9 @@ ...@@ -12,11 +12,9 @@
#include <ws2tcpip.h> #include <ws2tcpip.h>
#ifdef _MSC_VER #ifdef _MSC_VER
#define myswprintf _swprintf
#define mywcsncasecmp _wcsnicmp #define mywcsncasecmp _wcsnicmp
#define mystrncasecmp _strnicmp #define mystrncasecmp _strnicmp
#else #else
#define myswprintf swprintf
#define mywcsncasecmp wcsncasecmp #define mywcsncasecmp wcsncasecmp
#define mystrncasecmp strncasecmp #define mystrncasecmp strncasecmp
#endif #endif
...@@ -44,7 +42,6 @@ ...@@ -44,7 +42,6 @@
#define SOCKET_ERRNO() (errno) #define SOCKET_ERRNO() (errno)
#include <wchar.h> #include <wchar.h>
#define myswprintf(buf, fmt, ...) swprintf(buf, 4096, fmt, ##__VA_ARGS__)
#define mywcsncasecmp wcsncasecmp #define mywcsncasecmp wcsncasecmp
#define mystrncasecmp strncasecmp #define mystrncasecmp strncasecmp
inline int _wtoi(const wchar_t * s) { inline int _wtoi(const wchar_t * s) {
...@@ -53,6 +50,11 @@ inline int _wtoi(const wchar_t * s) { ...@@ -53,6 +50,11 @@ inline int _wtoi(const wchar_t * s) {
} }
#endif #endif
template<size_t N, typename... TR>
inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
return swprintf(buf, N, fmt, args...);
}
#ifndef YGOPRO_SERVER_MODE #ifndef YGOPRO_SERVER_MODE
#include <irrlicht.h> #include <irrlicht.h>
#ifdef __APPLE__ #ifdef __APPLE__
......
...@@ -195,7 +195,13 @@ void Game::DrawBackGround() { ...@@ -195,7 +195,13 @@ void Game::DrawBackGround() {
DrawLinkedZones(pcard); DrawLinkedZones(pcard);
} }
} else if (dField.hovered_location == LOCATION_SZONE) } else if (dField.hovered_location == LOCATION_SZONE)
{
vertex = matManager.vFieldSzone[dField.hovered_controler][dField.hovered_sequence][rule]; vertex = matManager.vFieldSzone[dField.hovered_controler][dField.hovered_sequence][rule];
ClientCard* pcard = dField.szone[dField.hovered_controler][dField.hovered_sequence];
if(pcard && pcard->link_marker) {
DrawSpellLinkedZones(pcard);
}
}
else if (dField.hovered_location == LOCATION_GRAVE) else if (dField.hovered_location == LOCATION_GRAVE)
vertex = matManager.vFieldGrave[dField.hovered_controler][rule]; vertex = matManager.vFieldGrave[dField.hovered_controler][rule];
else if (dField.hovered_location == LOCATION_REMOVED) else if (dField.hovered_location == LOCATION_REMOVED)
...@@ -291,6 +297,23 @@ void Game::DrawLinkedZones(ClientCard* pcard) { ...@@ -291,6 +297,23 @@ void Game::DrawLinkedZones(ClientCard* pcard) {
} }
} }
} }
void Game::DrawSpellLinkedZones(ClientCard* pcard) {
int mark = pcard->link_marker;
if (dField.hovered_sequence < 5) {
if ((mark & LINK_MARKER_TOP_LEFT) && dField.hovered_sequence > 0) {
CheckMutual(0, 0);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence - 1], 4, matManager.iRectangle, 2);
}
if (mark & LINK_MARKER_TOP) {
CheckMutual(0, 0);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence], 4, matManager.iRectangle, 2);
}
if ((mark & LINK_MARKER_TOP_RIGHT) && dField.hovered_sequence < 4) {
CheckMutual(0, 0);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence + 1], 4, matManager.iRectangle, 2);
}
}
}
void Game::CheckMutual(ClientCard* pcard, int mark) { void Game::CheckMutual(ClientCard* pcard, int mark) {
matManager.mSelField.AmbientColor = 0xff0261a2; matManager.mSelField.AmbientColor = 0xff0261a2;
driver->setMaterial(matManager.mSelField); driver->setMaterial(matManager.mSelField);
......
...@@ -146,6 +146,7 @@ public: ...@@ -146,6 +146,7 @@ public:
void DrawSelectionLine(irr::gui::IGUIElement* element, int width, irr::video::SColor color); void DrawSelectionLine(irr::gui::IGUIElement* element, int width, irr::video::SColor color);
void DrawBackGround(); void DrawBackGround();
void DrawLinkedZones(ClientCard* pcard); void DrawLinkedZones(ClientCard* pcard);
void DrawSpellLinkedZones(ClientCard* pcard);
void CheckMutual(ClientCard* pcard, int mark); void CheckMutual(ClientCard* pcard, int mark);
void DrawCards(); void DrawCards();
void DrawCard(ClientCard* pcard); void DrawCard(ClientCard* pcard);
......
...@@ -22,7 +22,7 @@ project "ygopro" ...@@ -22,7 +22,7 @@ project "ygopro"
links { "ws2_32" } links { "ws2_32" }
configuration "not vs*" configuration "not vs*"
buildoptions { "-std=gnu++0x", "-fno-rtti" } buildoptions { "-std=c++1y", "-fno-rtti" }
configuration "not windows" configuration "not windows"
includedirs { "/usr/include/lua", "/usr/include/lua5.3", "/usr/include/lua/5.3" } includedirs { "/usr/include/lua", "/usr/include/lua5.3", "/usr/include/lua/5.3" }
links { "event_pthreads", "dl", "pthread" } links { "event_pthreads", "dl", "pthread" }
...@@ -213,7 +213,10 @@ bool Replay::OpenReplay(const wchar_t* name) { ...@@ -213,7 +213,10 @@ bool Replay::OpenReplay(const wchar_t* name) {
} }
if(!fp) if(!fp)
return false; return false;
fread(&pheader, sizeof(pheader), 1, fp); if(fread(&pheader, sizeof(pheader), 1, fp) < 1) {
fclose(fp);
return false;
}
if(pheader.flag & REPLAY_COMPRESSED) { if(pheader.flag & REPLAY_COMPRESSED) {
comp_size = fread(comp_data, 1, 0x1000, fp); comp_size = fread(comp_data, 1, 0x1000, fp);
fclose(fp); fclose(fp);
...@@ -242,9 +245,9 @@ bool Replay::CheckReplay(const wchar_t* name) { ...@@ -242,9 +245,9 @@ bool Replay::CheckReplay(const wchar_t* name) {
if(!rfp) if(!rfp)
return false; return false;
ReplayHeader rheader; ReplayHeader rheader;
fread(&rheader, sizeof(ReplayHeader), 1, rfp); size_t count = fread(&rheader, sizeof(ReplayHeader), 1, rfp);
fclose(rfp); fclose(rfp);
return rheader.id == 0x31707279 && rheader.version >= 0x12d0; return count == 1 && rheader.id == 0x31707279 && rheader.version >= 0x12d0;
} }
bool Replay::DeleteReplay(const wchar_t* name) { bool Replay::DeleteReplay(const wchar_t* name) {
wchar_t fname[256]; wchar_t fname[256];
......
...@@ -156,6 +156,7 @@ bool ReplayMode::StartDuel() { ...@@ -156,6 +156,7 @@ bool ReplayMode::StartDuel() {
cur_replay.ReadName(mainGame->dInfo.clientname); cur_replay.ReadName(mainGame->dInfo.clientname);
} }
pduel = create_duel(rnd.rand()); pduel = create_duel(rnd.rand());
preload_script(pduel, "./script/special.lua", 0);
int start_lp = cur_replay.ReadInt32(); int start_lp = cur_replay.ReadInt32();
int start_hand = cur_replay.ReadInt32(); int start_hand = cur_replay.ReadInt32();
int draw_count = cur_replay.ReadInt32(); int draw_count = cur_replay.ReadInt32();
...@@ -220,7 +221,7 @@ bool ReplayMode::StartDuel() { ...@@ -220,7 +221,7 @@ bool ReplayMode::StartDuel() {
size_t slen = cur_replay.ReadInt16(); size_t slen = cur_replay.ReadInt16();
cur_replay.ReadData(filename, slen); cur_replay.ReadData(filename, slen);
filename[slen] = 0; filename[slen] = 0;
if(!preload_script(pduel, filename, slen)) { if(!preload_script(pduel, filename, 0)) {
return false; return false;
} }
} }
......
...@@ -550,6 +550,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -550,6 +550,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
set_message_handler((message_handler)SingleDuel::MessageHandler); set_message_handler((message_handler)SingleDuel::MessageHandler);
rnd.reset(seed); rnd.reset(seed);
pduel = create_duel(rnd.rand()); pduel = create_duel(rnd.rand());
preload_script(pduel, "./script/special.lua", 0);
set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count, !pick_deck_saved[0]); set_player_info(pduel, 0, host_info.start_lp, host_info.start_hand, host_info.draw_count, !pick_deck_saved[0]);
set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count, !pick_deck_saved[1]); set_player_info(pduel, 1, host_info.start_lp, host_info.start_hand, host_info.draw_count, !pick_deck_saved[1]);
pick_deck_saved[0] = false; pick_deck_saved[0] = false;
...@@ -1870,7 +1871,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) { ...@@ -1870,7 +1871,7 @@ void SingleDuel::RequestField(DuelPlayer* dp) {
BufferIO::WriteInt16(pbuf_p, phase); BufferIO::WriteInt16(pbuf_p, phase);
NetServer::SendBufferToPlayer(dp, STOC_GAME_MSG, phasebuf, 3); NetServer::SendBufferToPlayer(dp, STOC_GAME_MSG, phasebuf, 3);
char query_buffer[256]; char query_buffer[1024];
int length = query_field_info(pduel, (unsigned char*)query_buffer); int length = query_field_info(pduel, (unsigned char*)query_buffer);
NetServer::SendBufferToPlayer(dp, STOC_GAME_MSG, query_buffer, length); NetServer::SendBufferToPlayer(dp, STOC_GAME_MSG, query_buffer, length);
RefreshMzone(1 - player, 0xffdfff, 0, dp); RefreshMzone(1 - player, 0xffdfff, 0, dp);
...@@ -1916,7 +1917,11 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache, DuelPlayer* d ...@@ -1916,7 +1917,11 @@ void SingleDuel::RefreshMzone(int player, int flag, int use_cache, DuelPlayer* d
void SingleDuel::RefreshMzone(int player, int flag, int use_cache) void SingleDuel::RefreshMzone(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
#ifdef YGOPRO_SERVER_MODE
char query_buffer[0x20000];
#else
char query_buffer[0x2000]; char query_buffer[0x2000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -1960,7 +1965,11 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache, DuelPlayer* d ...@@ -1960,7 +1965,11 @@ void SingleDuel::RefreshSzone(int player, int flag, int use_cache, DuelPlayer* d
void SingleDuel::RefreshSzone(int player, int flag, int use_cache) void SingleDuel::RefreshSzone(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
#ifdef YGOPRO_SERVER_MODE
char query_buffer[0x20000];
#else
char query_buffer[0x2000]; char query_buffer[0x2000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2004,7 +2013,11 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache, DuelPlayer* dp ...@@ -2004,7 +2013,11 @@ void SingleDuel::RefreshHand(int player, int flag, int use_cache, DuelPlayer* dp
void SingleDuel::RefreshHand(int player, int flag, int use_cache) void SingleDuel::RefreshHand(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
#ifdef YGOPRO_SERVER_MODE
char query_buffer[0x20000];
#else
char query_buffer[0x2000]; char query_buffer[0x2000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2052,7 +2065,11 @@ void SingleDuel::RefreshGrave(int player, int flag, int use_cache, DuelPlayer* d ...@@ -2052,7 +2065,11 @@ void SingleDuel::RefreshGrave(int player, int flag, int use_cache, DuelPlayer* d
void SingleDuel::RefreshGrave(int player, int flag, int use_cache) void SingleDuel::RefreshGrave(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
#ifdef YGOPRO_SERVER_MODE
char query_buffer[0x20000];
#else
char query_buffer[0x2000]; char query_buffer[0x2000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2082,7 +2099,11 @@ void SingleDuel::RefreshExtra(int player, int flag, int use_cache, DuelPlayer* d ...@@ -2082,7 +2099,11 @@ void SingleDuel::RefreshExtra(int player, int flag, int use_cache, DuelPlayer* d
void SingleDuel::RefreshExtra(int player, int flag, int use_cache) void SingleDuel::RefreshExtra(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
#ifdef YGOPRO_SERVER_MODE
char query_buffer[0x20000];
#else
char query_buffer[0x2000]; char query_buffer[0x2000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2116,7 +2137,7 @@ if(!dp || dp == players[player]) ...@@ -2116,7 +2137,7 @@ if(!dp || dp == players[player])
} }
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
void SingleDuel::RefreshRemoved(int player, int flag, int use_cache, DuelPlayer* dp) { void SingleDuel::RefreshRemoved(int player, int flag, int use_cache, DuelPlayer* dp) {
char query_buffer[0x2000]; char query_buffer[0x20000];
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
......
...@@ -39,14 +39,14 @@ public: ...@@ -39,14 +39,14 @@ public:
void WaitforResponse(int playerid); void WaitforResponse(int playerid);
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshSzone(int player, int flag = 0x681fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshSzone(int player, int flag = 0xe81fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshHand(int player, int flag = 0x781fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshHand(int player, int flag = 0x781fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshRemoved(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshRemoved(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0);
#else #else
void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1); void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1);
void RefreshSzone(int player, int flag = 0x681fff, int use_cache = 1); void RefreshSzone(int player, int flag = 0xe81fff, int use_cache = 1);
void RefreshHand(int player, int flag = 0x781fff, int use_cache = 1); void RefreshHand(int player, int flag = 0x781fff, int use_cache = 1);
void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1); void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1);
void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1); void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1);
......
...@@ -42,6 +42,7 @@ int SingleMode::SinglePlayThread(void* param) { ...@@ -42,6 +42,7 @@ int SingleMode::SinglePlayThread(void* param) {
set_card_reader((card_reader)DataManager::CardReader); set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)MessageHandler); set_message_handler((message_handler)MessageHandler);
pduel = create_duel(rnd.rand()); pduel = create_duel(rnd.rand());
preload_script(pduel, "./script/special.lua", 0);
set_player_info(pduel, 0, start_lp, start_hand, draw_count); set_player_info(pduel, 0, start_lp, start_hand, draw_count);
set_player_info(pduel, 1, start_lp, start_hand, draw_count); set_player_info(pduel, 1, start_lp, start_hand, draw_count);
mainGame->dInfo.lp[0] = start_lp; mainGame->dInfo.lp[0] = start_lp;
...@@ -52,6 +53,7 @@ int SingleMode::SinglePlayThread(void* param) { ...@@ -52,6 +53,7 @@ int SingleMode::SinglePlayThread(void* param) {
myswprintf(mainGame->dInfo.strLP[1], L"%d", mainGame->dInfo.lp[1]); myswprintf(mainGame->dInfo.strLP[1], L"%d", mainGame->dInfo.lp[1]);
BufferIO::CopyWStr(mainGame->ebNickName->getText(), mainGame->dInfo.hostname, 20); BufferIO::CopyWStr(mainGame->ebNickName->getText(), mainGame->dInfo.hostname, 20);
mainGame->dInfo.clientname[0] = 0; mainGame->dInfo.clientname[0] = 0;
mainGame->dInfo.player_type = 0;
mainGame->dInfo.turn = 0; mainGame->dInfo.turn = 0;
mainGame->dInfo.announce_cache.clear(); mainGame->dInfo.announce_cache.clear();
char filename[256]; char filename[256];
...@@ -59,11 +61,11 @@ int SingleMode::SinglePlayThread(void* param) { ...@@ -59,11 +61,11 @@ int SingleMode::SinglePlayThread(void* param) {
if(open_file) { if(open_file) {
open_file = false; open_file = false;
slen = BufferIO::EncodeUTF8(open_file_name, filename); slen = BufferIO::EncodeUTF8(open_file_name, filename);
if(!preload_script(pduel, filename, slen)) { if(!preload_script(pduel, filename, 0)) {
wchar_t fname[256]; wchar_t fname[256];
myswprintf(fname, L"./single/%ls", open_file_name); myswprintf(fname, L"./single/%ls", open_file_name);
slen = BufferIO::EncodeUTF8(fname, filename); slen = BufferIO::EncodeUTF8(fname, filename);
if(!preload_script(pduel, filename, slen)) if(!preload_script(pduel, filename, 0))
slen = 0; slen = 0;
} }
} else { } else {
...@@ -71,7 +73,7 @@ int SingleMode::SinglePlayThread(void* param) { ...@@ -71,7 +73,7 @@ int SingleMode::SinglePlayThread(void* param) {
wchar_t fname[256]; wchar_t fname[256];
myswprintf(fname, L"./single/%ls", name); myswprintf(fname, L"./single/%ls", name);
slen = BufferIO::EncodeUTF8(fname, filename); slen = BufferIO::EncodeUTF8(fname, filename);
if(!preload_script(pduel, filename, slen)) if(!preload_script(pduel, filename, 0))
slen = 0; slen = 0;
} }
if(slen == 0) { if(slen == 0) {
......
...@@ -511,6 +511,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -511,6 +511,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
set_message_handler((message_handler)TagDuel::MessageHandler); set_message_handler((message_handler)TagDuel::MessageHandler);
rnd.reset(seed); rnd.reset(seed);
pduel = create_duel(rnd.rand()); pduel = create_duel(rnd.rand());
preload_script(pduel, "./script/special.lua", 0);
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; int opt = (int)host_info.duel_rule << 16;
...@@ -1908,7 +1909,7 @@ void TagDuel::RequestField(DuelPlayer* dp) { ...@@ -1908,7 +1909,7 @@ void TagDuel::RequestField(DuelPlayer* dp) {
BufferIO::WriteInt16(pbuf_p, phase); BufferIO::WriteInt16(pbuf_p, phase);
NetServer::SendBufferToPlayer(dp, STOC_GAME_MSG, phasebuf, 3); NetServer::SendBufferToPlayer(dp, STOC_GAME_MSG, phasebuf, 3);
char query_buffer[256]; char query_buffer[1024];
int length = query_field_info(pduel, (unsigned char*)query_buffer); int length = query_field_info(pduel, (unsigned char*)query_buffer);
NetServer::SendBufferToPlayer(dp, STOC_GAME_MSG, query_buffer, length); NetServer::SendBufferToPlayer(dp, STOC_GAME_MSG, query_buffer, length);
RefreshMzone(1 - player, 0xffdfff, 0, dp); RefreshMzone(1 - player, 0xffdfff, 0, dp);
...@@ -1954,7 +1955,11 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache, DuelPlayer* dp) ...@@ -1954,7 +1955,11 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache, DuelPlayer* dp)
void TagDuel::RefreshMzone(int player, int flag, int use_cache) void TagDuel::RefreshMzone(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
char query_buffer[0x2000]; #ifdef YGOPRO_SERVER_MODE
char query_buffer[0x40000];
#else
char query_buffer[0x4000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2008,7 +2013,11 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache, DuelPlayer* dp) ...@@ -2008,7 +2013,11 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache, DuelPlayer* dp)
void TagDuel::RefreshSzone(int player, int flag, int use_cache) void TagDuel::RefreshSzone(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
char query_buffer[0x2000]; #ifdef YGOPRO_SERVER_MODE
char query_buffer[0x40000];
#else
char query_buffer[0x4000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2062,7 +2071,11 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache, DuelPlayer* dp) ...@@ -2062,7 +2071,11 @@ void TagDuel::RefreshHand(int player, int flag, int use_cache, DuelPlayer* dp)
void TagDuel::RefreshHand(int player, int flag, int use_cache) void TagDuel::RefreshHand(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
char query_buffer[0x2000]; #ifdef YGOPRO_SERVER_MODE
char query_buffer[0x40000];
#else
char query_buffer[0x4000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2112,7 +2125,11 @@ void TagDuel::RefreshGrave(int player, int flag, int use_cache, DuelPlayer* dp) ...@@ -2112,7 +2125,11 @@ void TagDuel::RefreshGrave(int player, int flag, int use_cache, DuelPlayer* dp)
void TagDuel::RefreshGrave(int player, int flag, int use_cache) void TagDuel::RefreshGrave(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
char query_buffer[0x2000]; #ifdef YGOPRO_SERVER_MODE
char query_buffer[0x40000];
#else
char query_buffer[0x4000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2142,7 +2159,11 @@ void TagDuel::RefreshExtra(int player, int flag, int use_cache, DuelPlayer* dp) ...@@ -2142,7 +2159,11 @@ void TagDuel::RefreshExtra(int player, int flag, int use_cache, DuelPlayer* dp)
void TagDuel::RefreshExtra(int player, int flag, int use_cache) void TagDuel::RefreshExtra(int player, int flag, int use_cache)
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
{ {
char query_buffer[0x2000]; #ifdef YGOPRO_SERVER_MODE
char query_buffer[0x40000];
#else
char query_buffer[0x4000];
#endif
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2178,7 +2199,7 @@ if(!dp || dp == cur_player[player]) ...@@ -2178,7 +2199,7 @@ if(!dp || dp == cur_player[player])
} }
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
void TagDuel::RefreshRemoved(int player, int flag, int use_cache, DuelPlayer* dp) { void TagDuel::RefreshRemoved(int player, int flag, int use_cache, DuelPlayer* dp) {
char query_buffer[0x2000]; char query_buffer[0x40000];
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA); BufferIO::WriteInt8(qbuf, MSG_UPDATE_DATA);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
...@@ -2214,7 +2235,7 @@ void TagDuel::RefreshRemoved(int player, int flag, int use_cache, DuelPlayer* dp ...@@ -2214,7 +2235,7 @@ void TagDuel::RefreshRemoved(int player, int flag, int use_cache, DuelPlayer* dp
} }
#endif #endif
void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) { void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
char query_buffer[0x2000]; char query_buffer[0x4000];
char* qbuf = query_buffer; char* qbuf = query_buffer;
BufferIO::WriteInt8(qbuf, MSG_UPDATE_CARD); BufferIO::WriteInt8(qbuf, MSG_UPDATE_CARD);
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
......
...@@ -36,14 +36,14 @@ public: ...@@ -36,14 +36,14 @@ public:
void WaitforResponse(int playerid); void WaitforResponse(int playerid);
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshSzone(int player, int flag = 0x681fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshSzone(int player, int flag = 0xe81fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshHand(int player, int flag = 0x781fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshHand(int player, int flag = 0x781fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0);
void RefreshRemoved(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0); void RefreshRemoved(int player, int flag = 0x81fff, int use_cache = 1, DuelPlayer* dp = 0);
#else #else
void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1); void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1);
void RefreshSzone(int player, int flag = 0x681fff, int use_cache = 1); void RefreshSzone(int player, int flag = 0xe81fff, int use_cache = 1);
void RefreshHand(int player, int flag = 0x781fff, int use_cache = 1); void RefreshHand(int player, int flag = 0x781fff, int use_cache = 1);
void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1); void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1);
void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1); void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1);
......
This diff is collapsed.
...@@ -25,7 +25,7 @@ solution "ygo" ...@@ -25,7 +25,7 @@ solution "ygo"
configuration "vs*" configuration "vs*"
flags "EnableSSE2" flags "EnableSSE2"
buildoptions { "-wd4996" } buildoptions { "-wd4996", "/utf-8" }
defines { "_CRT_SECURE_NO_WARNINGS" } defines { "_CRT_SECURE_NO_WARNINGS" }
configuration "not vs*" configuration "not vs*"
......
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