Commit 5178a0a6 authored by nanahira's avatar nanahira

Merge branch 'develop' into server-develop

parents 95ed3727 b8bb7ea0
No preview for this file type
...@@ -228,12 +228,12 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -228,12 +228,12 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
grave[controler].push_back(pcard); grave[controler].push_back(pcard);
ResetSequence(grave[controler], false); pcard->sequence = (unsigned char)(grave[controler].size() - 1);
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
remove[controler].push_back(pcard); remove[controler].push_back(pcard);
ResetSequence(remove[controler], false); pcard->sequence = (unsigned char)(remove[controler].size() - 1);
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
...@@ -256,8 +256,13 @@ ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) { ...@@ -256,8 +256,13 @@ ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) {
switch (location) { switch (location) {
case LOCATION_DECK: { case LOCATION_DECK: {
pcard = deck[controler][sequence]; pcard = deck[controler][sequence];
deck[controler].erase(deck[controler].begin() + sequence); for (size_t i = sequence; i < deck[controler].size() - 1; ++i) {
ResetSequence(deck[controler], true); deck[controler][i] = deck[controler][i + 1];
deck[controler][i]->sequence--;
deck[controler][i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
deck[controler][i]->mTransform.setTranslation(deck[controler][i]->curPos);
}
deck[controler].erase(deck[controler].end() - 1);
break; break;
} }
case LOCATION_HAND: { case LOCATION_HAND: {
...@@ -278,20 +283,35 @@ ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) { ...@@ -278,20 +283,35 @@ ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) {
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
pcard = grave[controler][sequence]; pcard = grave[controler][sequence];
grave[controler].erase(grave[controler].begin() + sequence); for (size_t i = sequence; i < grave[controler].size() - 1; ++i) {
ResetSequence(grave[controler], true); grave[controler][i] = grave[controler][i + 1];
grave[controler][i]->sequence--;
grave[controler][i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
grave[controler][i]->mTransform.setTranslation(grave[controler][i]->curPos);
}
grave[controler].erase(grave[controler].end() - 1);
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
pcard = remove[controler][sequence]; pcard = remove[controler][sequence];
remove[controler].erase(remove[controler].begin() + sequence); for (size_t i = sequence; i < remove[controler].size() - 1; ++i) {
ResetSequence(remove[controler], true); remove[controler][i] = remove[controler][i + 1];
remove[controler][i]->sequence--;
remove[controler][i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
remove[controler][i]->mTransform.setTranslation(remove[controler][i]->curPos);
}
remove[controler].erase(remove[controler].end() - 1);
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
pcard = extra[controler][sequence]; pcard = extra[controler][sequence];
extra[controler].erase(extra[controler].begin() + sequence); for (size_t i = sequence; i < extra[controler].size() - 1; ++i) {
ResetSequence(extra[controler], true); extra[controler][i] = extra[controler][i + 1];
extra[controler][i]->sequence--;
extra[controler][i]->curPos -= irr::core::vector3df(0, 0, 0.01f);
extra[controler][i]->mTransform.setTranslation(extra[controler][i]->curPos);
}
extra[controler].erase(extra[controler].end() - 1);
if (pcard->position & POS_FACEUP) if (pcard->position & POS_FACEUP)
extra_p_count[controler]--; extra_p_count[controler]--;
break; break;
...@@ -1293,6 +1313,14 @@ bool ClientField::CheckSelectTribute() { ...@@ -1293,6 +1313,14 @@ bool ClientField::CheckSelectTribute() {
} }
return ret; return ret;
} }
void ClientField::get_sum_params(unsigned int opParam, int& op1, int& op2) {
op1 = opParam & 0xffff;
op2 = (opParam >> 16) & 0xffff;
if (op2 & 0x8000) {
op1 = opParam & 0x7fffffff;
op2 = 0;
}
}
bool ClientField::check_min(const std::set<ClientCard*>& left, std::set<ClientCard*>::const_iterator index, int min, int max) { bool ClientField::check_min(const std::set<ClientCard*>& left, std::set<ClientCard*>::const_iterator index, int min, int max) {
if (index == left.end()) if (index == left.end())
return false; return false;
......
...@@ -121,6 +121,7 @@ public: ...@@ -121,6 +121,7 @@ public:
bool ShowSelectSum(bool panelmode); bool ShowSelectSum(bool panelmode);
bool CheckSelectSum(); bool CheckSelectSum();
bool CheckSelectTribute(); bool CheckSelectTribute();
void get_sum_params(unsigned int opParam, int& op1, int& op2);
bool check_min(const std::set<ClientCard*>& left, std::set<ClientCard*>::const_iterator index, int min, int max); bool check_min(const std::set<ClientCard*>& left, std::set<ClientCard*>::const_iterator index, int min, int max);
bool check_sel_sum_s(const std::set<ClientCard*>& left, int index, int acc); bool check_sel_sum_s(const std::set<ClientCard*>& left, int index, int acc);
void check_sel_sum_t(const std::set<ClientCard*>& left, int acc); void check_sel_sum_t(const std::set<ClientCard*>& left, int acc);
......
...@@ -134,7 +134,7 @@ void DuelClient::ClientEvent(bufferevent* bev, short events, void* ctx) { ...@@ -134,7 +134,7 @@ void DuelClient::ClientEvent(bufferevent* bev, short events, void* ctx) {
uint16_t hostname_buf[LEN_HOSTNAME]; uint16_t hostname_buf[LEN_HOSTNAME];
auto hostname_len = BufferIO::CopyCharArray(mainGame->ebJoinHost->getText(), hostname_buf); auto hostname_len = BufferIO::CopyCharArray(mainGame->ebJoinHost->getText(), hostname_buf);
auto hostname_msglen = (hostname_len + 1) * sizeof(uint16_t); auto hostname_msglen = (hostname_len + 1) * sizeof(uint16_t);
char buf[LEN_HOSTNAME * sizeof(int16_t) + sizeof(uint32_t)]; char buf[LEN_HOSTNAME * sizeof(uint16_t) + sizeof(uint32_t)];
memset(buf, 0, sizeof(uint32_t)); // real_ip memset(buf, 0, sizeof(uint32_t)); // real_ip
memcpy(buf + sizeof(uint32_t), hostname_buf, hostname_msglen); memcpy(buf + sizeof(uint32_t), hostname_buf, hostname_msglen);
SendBufferToServer(CTOS_EXTERNAL_ADDRESS, buf, hostname_msglen + sizeof(uint32_t)); SendBufferToServer(CTOS_EXTERNAL_ADDRESS, buf, hostname_msglen + sizeof(uint32_t));
......
...@@ -29,7 +29,7 @@ namespace irr { ...@@ -29,7 +29,7 @@ namespace irr {
#include <thread> #include <thread>
#include "myfilesystem.h" #include "myfilesystem.h"
unsigned short PRO_VERSION = 0x1361; unsigned short PRO_VERSION = 0x1362;
namespace ygo { namespace ygo {
...@@ -274,7 +274,7 @@ bool Game::Initialize() { ...@@ -274,7 +274,7 @@ bool Game::Initialize() {
SetWindowsIcon(); SetWindowsIcon();
//main menu //main menu
wchar_t strbuf[256]; wchar_t strbuf[256];
myswprintf(strbuf, L"KoishiPro %X.0%X.%X Collapse", (PRO_VERSION & 0xf000U) >> 12, (PRO_VERSION & 0x0ff0U) >> 4, PRO_VERSION & 0x000fU); myswprintf(strbuf, L"KoishiPro %X.0%X.%X Manjushage", (PRO_VERSION & 0xf000U) >> 12, (PRO_VERSION & 0x0ff0U) >> 4, PRO_VERSION & 0x000fU);
wMainMenu = env->addWindow(irr::core::rect<irr::s32>(370, 200, 650, 415), false, strbuf); wMainMenu = env->addWindow(irr::core::rect<irr::s32>(370, 200, 650, 415), false, strbuf);
wMainMenu->getCloseButton()->setVisible(false); wMainMenu->getCloseButton()->setVisible(false);
btnLanMode = env->addButton(irr::core::rect<irr::s32>(10, 30, 270, 60), wMainMenu, BUTTON_LAN_MODE, dataManager.GetSysString(1200)); btnLanMode = env->addButton(irr::core::rect<irr::s32>(10, 30, 270, 60), wMainMenu, BUTTON_LAN_MODE, dataManager.GetSysString(1200));
......
...@@ -217,8 +217,12 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -217,8 +217,12 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
case BUTTON_LOAD_REPLAY: { case BUTTON_LOAD_REPLAY: {
int start_turn = 1; int start_turn = 1;
if(open_file) { if(open_file) {
ReplayMode::cur_replay.OpenReplay(open_file_name);
open_file = false; open_file = false;
if (!ReplayMode::cur_replay.OpenReplay(open_file_name)) {
if (exit_on_return)
mainGame->device->closeDevice();
break;
}
} else { } else {
auto selected = mainGame->lstReplayList->getSelected(); auto selected = mainGame->lstReplayList->getSelected();
if(selected == -1) if(selected == -1)
......
...@@ -45,7 +45,6 @@ end ...@@ -45,7 +45,6 @@ end
else else
project "ygopro" project "ygopro"
kind "WindowedApp" kind "WindowedApp"
cppdialect "C++14"
rtti "Off" rtti "Off"
openmp "On" openmp "On"
...@@ -141,6 +140,9 @@ if not SERVER_MODE then ...@@ -141,6 +140,9 @@ if not SERVER_MODE then
filter "not system:windows" filter "not system:windows"
links { "resolv" } links { "resolv" }
end end
filter "not action:vs*"
cppdialect "C++14"
filter "system:macosx" filter "system:macosx"
if not SERVER_MODE then if not SERVER_MODE then
openmp "Off" openmp "Off"
......
This diff is collapsed.
Subproject commit dc4501aee33d83cc4849f0e49f2efde02e7dff0e Subproject commit 326c22e9bd5af2e0f295eb263c095584342db952
project "event" project "event"
kind "StaticLib" kind "StaticLib"
local EVENT_VERSION = (io.readfile("configure") or ""):match("NUMERIC_VERSION%s+0x(%x+)") local EVENT_VERSION = (io.readfile("configure") or ""):match("NUMERIC_VERSION%s+(0x%x+)")
if not EVENT_VERSION then if not EVENT_VERSION then
print("Warning: Could not determine libevent version from the configure file, assuming 2.1.12.") print("Warning: Could not determine libevent version from the configure file, assuming 2.1.12.")
EVENT_VERSION = "02010c00" -- 2.1.12 EVENT_VERSION = "0x02010c00" -- 2.1.12
end end
EVENT_VERSION = tonumber(EVENT_VERSION, 16) EVENT_VERSION = tonumber(EVENT_VERSION)
if EVENT_VERSION>=0x02020000 then if EVENT_VERSION>=0x02020000 then
print("Warning: Using libevent version 2.2.x is not supported, please use 2.1.x, otherwise you may encounter issues.") print("Warning: Using libevent version 2.2.x is not supported, please use 2.1.x, otherwise you may encounter issues.")
end end
if EVENT_VERSION>=0x02010000 and WINXP_SUPPORT then if EVENT_VERSION>=0x02010000 and WINXP_SUPPORT then
print("Warning: libevent 2.1 uses some new APIs which require Windows Vista or later, so WinXP support will be not valid.") print("Warning: libevent 2.1 uses some new APIs which require Windows Vista or later, so WinXP support will be invalid.")
end end
includedirs { "include", "compat" } includedirs { "include", "compat" }
......
1 ICON "ygopro.ico" 1 ICON "ygopro.ico"
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1, 0, 36, 1 FILEVERSION 1, 0, 36, 2
PRODUCTVERSION 1, 0, 36, 1 PRODUCTVERSION 1, 0, 36, 2
FILEOS 0x4 FILEOS 0x4
FILETYPE 0x1 FILETYPE 0x1
......
Subproject commit e7feeaa304fcf9c7fc23dfcbc68276be09c5e2ef Subproject commit a6d1242563104c5bf7e0584c6e80dafd6b02966d
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