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
}
case LOCATION_GRAVE: {
grave[controler].push_back(pcard);
ResetSequence(grave[controler], false);
pcard->sequence = (unsigned char)(grave[controler].size() - 1);
break;
}
case LOCATION_REMOVED: {
remove[controler].push_back(pcard);
ResetSequence(remove[controler], false);
pcard->sequence = (unsigned char)(remove[controler].size() - 1);
break;
}
case LOCATION_EXTRA: {
......@@ -256,8 +256,13 @@ ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) {
switch (location) {
case LOCATION_DECK: {
pcard = deck[controler][sequence];
deck[controler].erase(deck[controler].begin() + sequence);
ResetSequence(deck[controler], true);
for (size_t i = sequence; i < deck[controler].size() - 1; ++i) {
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;
}
case LOCATION_HAND: {
......@@ -278,20 +283,35 @@ ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) {
}
case LOCATION_GRAVE: {
pcard = grave[controler][sequence];
grave[controler].erase(grave[controler].begin() + sequence);
ResetSequence(grave[controler], true);
for (size_t i = sequence; i < grave[controler].size() - 1; ++i) {
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;
}
case LOCATION_REMOVED: {
pcard = remove[controler][sequence];
remove[controler].erase(remove[controler].begin() + sequence);
ResetSequence(remove[controler], true);
for (size_t i = sequence; i < remove[controler].size() - 1; ++i) {
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;
}
case LOCATION_EXTRA: {
pcard = extra[controler][sequence];
extra[controler].erase(extra[controler].begin() + sequence);
ResetSequence(extra[controler], true);
for (size_t i = sequence; i < extra[controler].size() - 1; ++i) {
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)
extra_p_count[controler]--;
break;
......@@ -1293,6 +1313,14 @@ bool ClientField::CheckSelectTribute() {
}
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) {
if (index == left.end())
return false;
......
......@@ -121,6 +121,7 @@ public:
bool ShowSelectSum(bool panelmode);
bool CheckSelectSum();
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_sel_sum_s(const std::set<ClientCard*>& left, int index, 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) {
uint16_t hostname_buf[LEN_HOSTNAME];
auto hostname_len = BufferIO::CopyCharArray(mainGame->ebJoinHost->getText(), hostname_buf);
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
memcpy(buf + sizeof(uint32_t), hostname_buf, hostname_msglen);
SendBufferToServer(CTOS_EXTERNAL_ADDRESS, buf, hostname_msglen + sizeof(uint32_t));
......
......@@ -29,7 +29,7 @@ namespace irr {
#include <thread>
#include "myfilesystem.h"
unsigned short PRO_VERSION = 0x1361;
unsigned short PRO_VERSION = 0x1362;
namespace ygo {
......@@ -274,7 +274,7 @@ bool Game::Initialize() {
SetWindowsIcon();
//main menu
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->getCloseButton()->setVisible(false);
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) {
case BUTTON_LOAD_REPLAY: {
int start_turn = 1;
if(open_file) {
ReplayMode::cur_replay.OpenReplay(open_file_name);
open_file = false;
if (!ReplayMode::cur_replay.OpenReplay(open_file_name)) {
if (exit_on_return)
mainGame->device->closeDevice();
break;
}
} else {
auto selected = mainGame->lstReplayList->getSelected();
if(selected == -1)
......
......@@ -45,7 +45,6 @@ end
else
project "ygopro"
kind "WindowedApp"
cppdialect "C++14"
rtti "Off"
openmp "On"
......@@ -141,6 +140,9 @@ if not SERVER_MODE then
filter "not system:windows"
links { "resolv" }
end
filter "not action:vs*"
cppdialect "C++14"
filter "system:macosx"
if not SERVER_MODE then
openmp "Off"
......
This diff is collapsed.
Subproject commit dc4501aee33d83cc4849f0e49f2efde02e7dff0e
Subproject commit 326c22e9bd5af2e0f295eb263c095584342db952
project "event"
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
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
EVENT_VERSION = tonumber(EVENT_VERSION, 16)
EVENT_VERSION = tonumber(EVENT_VERSION)
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.")
end
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
includedirs { "include", "compat" }
......
1 ICON "ygopro.ico"
1 VERSIONINFO
FILEVERSION 1, 0, 36, 1
PRODUCTVERSION 1, 0, 36, 1
FILEVERSION 1, 0, 36, 2
PRODUCTVERSION 1, 0, 36, 2
FILEOS 0x4
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