Commit eb9bebcc authored by nanahira's avatar nanahira

Merge branch 'server' into 2pick

parents a60e0a94 e97885f0
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
/Magic* /Magic*
/pics /pics
/Printer /Printer
/script
/ygopro-* /ygopro-*
/*-Cards /*-Cards
......
...@@ -11,15 +11,8 @@ addons: ...@@ -11,15 +11,8 @@ addons:
- libsqlite3-dev - libsqlite3-dev
before_install: before_install:
- git submodule update --init --recursive - git submodule update --init --recursive
- wget 'http://www.lua.org/ftp/lua-5.3.4.tar.gz'
- tar zxf lua-5.3.4.tar.gz
- cd lua-5.3.4
- make linux test
- sudo make install
- cd ..
- 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.4.tar.gz | tar zfx -; cd lua-5.3.4; sudo make linux install; cd ..
script: script:
- ./premake5 gmake - ./premake5 gmake
- cd build - cd build
......
version: '{build}' version: '{build}'
skip_tags: true
install: install:
- git submodule update --init --recursive - git submodule update --init --recursive
...@@ -25,9 +27,6 @@ install: ...@@ -25,9 +27,6 @@ install:
# let premake happy # let premake happy
- xcopy /E premake\* . - xcopy /E premake\* .
# patch lua
# - patch -p0 < lua\lua.patch
# premake # premake
- premake5 vs2015 - premake5 vs2015
...@@ -40,72 +39,23 @@ build: ...@@ -40,72 +39,23 @@ build:
after_build: after_build:
- ps: move bin\release\ygopro.exe . - ps: move bin\release\ygopro.exe .
- git clone https://github.com/Smile-DK/ygopro-svrelease
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/purerosefallen/ygopro-server/archive/master.zip ; exit 0"
- 7z x ygopro-server-master.zip
- mv -f ygopro-server-master ygopro-server
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://nodejs.org/dist/v9.1.0/node-v9.1.0-win-x64.zip ; exit 0"
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.zip ; exit 0"
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/purerosefallen/windbot/archive/master.zip ; exit 0"
- 7z x windbot-master.zip
- cd windbot-master
- msbuild /property:Configuration=Release /property:OutDir=../ygopro-server/windbot
- cd ../ygopro-server
- mkdir ygopro
- cd ygopro
- mkdir replay
- mv -f ../../gframe .
- mv -f ../../ocgcore .
- mv -f ../../premake .
- mv -f ../../event .
- mv -f ../../lua .
- mv -f ../../sqlite3 .
- mv -f ../../script .
- mv -f ../../cards.cdb .
- mv -f ../../textures .
- mv -f ../../premake4.lua .
- mv -f ../../premake5.lua .
- mv -f ../../lflist.conf .
- mv -f ../../strings.conf .
- mv -f ../../system.conf .
- cp -rf ../../ygopro.exe .
- mv -f ../../premake5.exe .
- cd ..
- mkdir redis
- cd redis
- cp -rf ../../Redis-x64-3.2.100.zip .
- 7z x Redis-x64-3.2.100.zip
- rm -rf Redis-x64-3.2.100.zip
- cd ..
- cp -rf ygopro/cards.cdb windbot
- cp -rf config_build config
- cp -rf ../node-v9.1.0-win-x64.zip .
- 7z x node-v9.1.0-win-x64.zip
- rm -rf node-v9.1.0-win-x64.zip
- cp -rf node-v9.1.0-win-x64/* .
- rm -rf node-v9.1.0-win-x64
- npm install
- npm install pm2@latest -g
- npm install ws
- npm install redis
- 7z a -mx9 -xr!.git* ../ygopro-server.7z ./*
- cd ..
test: off test: off
artifacts: artifacts:
- path: ygopro.exe - path: ygopro.exe
name: ygopro name: ygopro server mode
- path: ygopro-server.7z
name: ygopro-server deploy:
release: win
description: 'Automatic build commit $(APPVEYOR_REPO_COMMIT) $(APPVEYOR_REPO_COMMIT_TIMESTAMP)'
provider: GitHub
force_update: true
auth_token:
secure: EQ9miMjfX/QAoBvgc6D+JLmHatLyxOEKZ/uo68QijxWW5Gp4MzB/pOH9+u2GlDVO
on:
branch: server
cache: cache:
- premake-5.0.0-alpha12-windows.zip - premake-5.0.0-alpha12-windows.zip
...@@ -114,5 +64,3 @@ cache: ...@@ -114,5 +64,3 @@ cache:
- irrlicht-1.8.4.zip - irrlicht-1.8.4.zip
- lua-5.3.4.tar.gz - lua-5.3.4.tar.gz
- sqlite-amalgamation-3210000.zip - sqlite-amalgamation-3210000.zip
- Redis-x64-3.2.100.zip
No preview for this file type
...@@ -177,6 +177,46 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -177,6 +177,46 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
} }
break; break;
} }
case BUTTON_RENAME_DECK: {
int sel = mainGame->cbDBDecks->getSelected();
if(sel == -1)
break;
mainGame->gMutex.Lock();
mainGame->wRenameDeck->setText(dataManager.GetSysString(1367));
mainGame->ebREName->setText(mainGame->cbDBDecks->getItem(sel));
mainGame->PopupElement(mainGame->wRenameDeck);
mainGame->gMutex.Unlock();
prev_operation = id;
prev_sel = sel;
break;
}
case BUTTON_RENAME_DECK_SAVE: {
mainGame->HideElement(mainGame->wRenameDeck);
if(prev_operation == BUTTON_RENAME_DECK) {
wchar_t newname[256];
BufferIO::CopyWStr(mainGame->ebREName->getText(), newname, 256);
if(mywcsncasecmp(newname + wcslen(newname) - 4, L"", 4)) {
myswprintf(newname, L"%ls", mainGame->ebREName->getText());
}
if(DeckManager::RenameDeck(mainGame->cbDBDecks->getItem(prev_sel), newname)) {
mainGame->RefreshDeck(mainGame->cbDBDecks);
mainGame->cbDBDecks->setSelected(prev_sel);
mainGame->stACMessage->setText(dataManager.GetSysString(1366));
mainGame->PopupElement(mainGame->wACMessage, 20);
} else {
mainGame->env->addMessageBox(L"", dataManager.GetSysString(1365));
}
}
prev_operation = 0;
prev_sel = -1;
break;
}
case BUTTON_RENAME_DECK_CANCEL: {
mainGame->HideElement(mainGame->wRenameDeck);
prev_operation = 0;
prev_sel = -1;
break;
}
case BUTTON_DELETE_DECK: { case BUTTON_DELETE_DECK: {
int sel = mainGame->cbDBDecks->getSelected(); int sel = mainGame->cbDBDecks->getSelected();
if(sel == -1) if(sel == -1)
...@@ -777,7 +817,7 @@ void DeckBuilder::FilterCards() { ...@@ -777,7 +817,7 @@ void DeckBuilder::FilterCards() {
results.clear(); results.clear();
const wchar_t* pstr = mainGame->ebCardName->getText(); const wchar_t* pstr = mainGame->ebCardName->getText();
int trycode = BufferIO::GetVal(pstr); int trycode = BufferIO::GetVal(pstr);
if (dataManager.GetData(trycode, 0)) { if(dataManager.GetData(trycode, 0)) {
auto ptr = dataManager.GetCodePointer(trycode); // verified by GetData() auto ptr = dataManager.GetCodePointer(trycode); // verified by GetData()
results.push_back(ptr); results.push_back(ptr);
mainGame->scrFilter->setVisible(false); mainGame->scrFilter->setVisible(false);
...@@ -791,16 +831,14 @@ void DeckBuilder::FilterCards() { ...@@ -791,16 +831,14 @@ void DeckBuilder::FilterCards() {
size_t element_start = 0; size_t element_start = 0;
while (1) { while (1) {
size_t element_end = str.find_first_of(L' ', element_start); size_t element_end = str.find_first_of(L' ', element_start);
if (element_end == std::wstring::npos) { if (element_end == std::wstring::npos)
break; break;
}
size_t length = element_end - element_start; size_t length = element_end - element_start;
if(length > 0) { if(length > 0) {
query_elements.push_back(str.substr(element_start, length)); query_elements.push_back(str.substr(element_start, length));
element_start = element_end + 1; element_start = element_end + 1;
} else { } else
element_start++; element_start++;
}
} }
query_elements.push_back(str.substr(element_start)); query_elements.push_back(str.substr(element_start));
std::unordered_map<std::wstring, unsigned int> set_code_map; std::unordered_map<std::wstring, unsigned int> set_code_map;
...@@ -817,73 +855,72 @@ void DeckBuilder::FilterCards() { ...@@ -817,73 +855,72 @@ void DeckBuilder::FilterCards() {
query_elements.erase(*elements_track_iterator); query_elements.erase(*elements_track_iterator);
} }
auto strpointer = dataManager._strings.begin(); auto strpointer = dataManager._strings.begin();
for (code_pointer ptr = dataManager._datas.begin(); ptr != dataManager._datas.end(); ++ptr, ++strpointer) { for(code_pointer ptr = dataManager._datas.begin(); ptr != dataManager._datas.end(); ++ptr, ++strpointer) {
const CardDataC& data = ptr->second; const CardDataC& data = ptr->second;
const CardString& text = strpointer->second; const CardString& text = strpointer->second;
if (data.type & TYPE_TOKEN) if(data.type & TYPE_TOKEN)
continue; continue;
switch (filter_type) { switch(filter_type) {
case 1: { case 1: {
if (!(data.type & TYPE_MONSTER) || (data.type & filter_type2) != filter_type2) if(!(data.type & TYPE_MONSTER) || (data.type & filter_type2) != filter_type2)
continue; continue;
if (filter_race && data.race != filter_race) if(filter_race && data.race != filter_race)
continue; continue;
if (filter_attrib && data.attribute != filter_attrib) if(filter_attrib && data.attribute != filter_attrib)
continue; continue;
if (filter_atktype) { if(filter_atktype) {
if ((filter_atktype == 1 && data.attack != filter_atk) || (filter_atktype == 2 && data.attack < filter_atk) if((filter_atktype == 1 && data.attack != filter_atk) || (filter_atktype == 2 && data.attack < filter_atk)
|| (filter_atktype == 3 && data.attack <= filter_atk) || (filter_atktype == 4 && (data.attack > filter_atk || data.attack < 0)) || (filter_atktype == 3 && data.attack <= filter_atk) || (filter_atktype == 4 && (data.attack > filter_atk || data.attack < 0))
|| (filter_atktype == 5 && (data.attack >= filter_atk || data.attack < 0)) || (filter_atktype == 6 && data.attack != -2)) || (filter_atktype == 5 && (data.attack >= filter_atk || data.attack < 0)) || (filter_atktype == 6 && data.attack != -2))
continue; continue;
} }
if(filter_deftype) { if(filter_deftype) {
if((filter_deftype == 1 && data.defense != filter_def) || (filter_deftype == 2 && data.defense < filter_def) if((filter_deftype == 1 && data.defense != filter_def) || (filter_deftype == 2 && data.defense < filter_def)
|| (filter_deftype == 3 && data.defense <= filter_def) || (filter_deftype == 4 && (data.defense > filter_def || data.defense < 0)) || (filter_deftype == 3 && data.defense <= filter_def) || (filter_deftype == 4 && (data.defense > filter_def || data.defense < 0))
|| (filter_deftype == 5 && (data.defense >= filter_def || data.defense < 0)) || (filter_deftype == 6 && data.defense != -2) || (filter_deftype == 5 && (data.defense >= filter_def || data.defense < 0)) || (filter_deftype == 6 && data.defense != -2)
|| (data.type & TYPE_LINK)) || (data.type & TYPE_LINK))
continue; continue;
} }
if (filter_lvtype) { if(filter_lvtype) {
if ((filter_lvtype == 1 && data.level != filter_lv) || (filter_lvtype == 2 && data.level < filter_lv) if((filter_lvtype == 1 && data.level != filter_lv) || (filter_lvtype == 2 && data.level < filter_lv)
|| (filter_lvtype == 3 && data.level <= filter_lv) || (filter_lvtype == 4 && data.level > filter_lv) || (filter_lvtype == 3 && data.level <= filter_lv) || (filter_lvtype == 4 && data.level > filter_lv)
|| (filter_lvtype == 5 && data.level >= filter_lv) || filter_lvtype == 6) || (filter_lvtype == 5 && data.level >= filter_lv) || filter_lvtype == 6)
continue; continue;
} }
if(filter_scltype) { if(filter_scltype) {
if((filter_scltype == 1 && data.lscale != filter_scl) || (filter_scltype == 2 && data.lscale < filter_scl) if((filter_scltype == 1 && data.lscale != filter_scl) || (filter_scltype == 2 && data.lscale < filter_scl)
|| (filter_scltype == 3 && data.lscale <= filter_scl) || (filter_scltype == 4 && (data.lscale > filter_scl || data.lscale == 0)) || (filter_scltype == 3 && data.lscale <= filter_scl) || (filter_scltype == 4 && (data.lscale > filter_scl || data.lscale == 0))
|| (filter_scltype == 5 && (data.lscale >= filter_scl || data.lscale == 0)) || filter_scltype == 6 || (filter_scltype == 5 && (data.lscale >= filter_scl || data.lscale == 0)) || filter_scltype == 6
|| !(data.type & TYPE_PENDULUM)) || !(data.type & TYPE_PENDULUM))
continue; continue;
} }
break; break;
} }
case 2: { case 2: {
if (!(data.type & TYPE_SPELL)) if(!(data.type & TYPE_SPELL))
continue; continue;
if (filter_type2 && data.type != filter_type2) if(filter_type2 && data.type != filter_type2)
continue; continue;
break; break;
} }
case 3: { case 3: {
if (!(data.type & TYPE_TRAP)) if(!(data.type & TYPE_TRAP))
continue; continue;
if (filter_type2 && data.type != filter_type2) if(filter_type2 && data.type != filter_type2)
continue; continue;
break; break;
} }
} }
if (filter_effect && !(data.category & filter_effect)) if(filter_effect && !(data.category & filter_effect))
continue; continue;
if(filter_marks && (data.link_marker & filter_marks)!= filter_marks) if(filter_marks && (data.link_marker & filter_marks)!= filter_marks)
continue; continue;
if(filter_lm) { if(filter_lm) {
if(filter_lm <= 3 && (!filterList->count(ptr->first) || (*filterList)[ptr->first] != filter_lm - 1)) if(filter_lm <= 3 && (!filterList->count(ptr->first) || (*filterList)[ptr->first] != filter_lm - 1))
continue; continue;
if (filter_lm == 4 && data.ot != 1) if(filter_lm == 4 && data.ot != 1)
continue; continue;
if (filter_lm == 5 && data.ot != 2) if(filter_lm == 5 && data.ot != 2)
continue; continue;
if(filter_lm == 6 && data.ot != 3) if(filter_lm == 6 && data.ot != 3)
continue; continue;
...@@ -912,19 +949,17 @@ void DeckBuilder::FilterCards() { ...@@ -912,19 +949,17 @@ void DeckBuilder::FilterCards() {
} }
} }
} }
if (is_target) { if (is_target)
results.push_back(ptr); results.push_back(ptr);
} else { else
continue; continue;
}
} }
myswprintf(result_string, L"%d", results.size()); myswprintf(result_string, L"%d", results.size());
if (results.size() > 7) { if(results.size() > 7) {
mainGame->scrFilter->setVisible(true); mainGame->scrFilter->setVisible(true);
mainGame->scrFilter->setMax(results.size() - 7); mainGame->scrFilter->setMax(results.size() - 7);
mainGame->scrFilter->setPos(0); mainGame->scrFilter->setPos(0);
} } else {
else {
mainGame->scrFilter->setVisible(false); mainGame->scrFilter->setVisible(false);
mainGame->scrFilter->setPos(0); mainGame->scrFilter->setPos(0);
} }
......
...@@ -90,6 +90,23 @@ void DeckManager::LoadLFList() { ...@@ -90,6 +90,23 @@ void DeckManager::LoadLFList() {
nolimit.content = new std::unordered_map<int, int>; nolimit.content = new std::unordered_map<int, int>;
_lfList.push_back(nolimit); _lfList.push_back(nolimit);
} }
bool DeckManager::RenameDeck(const wchar_t* oldname, const wchar_t* newname) {
wchar_t oldfname[256];
wchar_t newfname[256];
myswprintf(oldfname, L"./deck/%ls.ydk", oldname);
myswprintf(newfname, L"./deck/%ls.ydk", newname);
#ifdef WIN32
BOOL result = MoveFileW(oldfname, newfname);
return !!result;
#else
char oldfilefn[256];
char newfilefn[256];
BufferIO::EncodeUTF8(oldfname, oldfilefn);
BufferIO::EncodeUTF8(newfname, newfilefn);
int result = rename(oldfilefn, newfilefn);
return result == 0;
#endif
}
wchar_t* DeckManager::GetLFListName(int lfhash) { wchar_t* DeckManager::GetLFListName(int lfhash) {
for(size_t i = 0; i < _lfList.size(); ++i) { for(size_t i = 0; i < _lfList.size(); ++i) {
if(_lfList[i].hash == (unsigned int)lfhash) { if(_lfList[i].hash == (unsigned int)lfhash) {
...@@ -298,4 +315,28 @@ bool DeckManager::DeleteDeck(Deck& deck, const wchar_t* name) { ...@@ -298,4 +315,28 @@ bool DeckManager::DeleteDeck(Deck& deck, const wchar_t* name) {
return result == 0; return result == 0;
#endif #endif
} }
const wchar_t* DeckManager::GetMainFormatString() {
myswprintf(DeckFormatBuffer, L"%d ( %d / %d / %d )", deckManager.current_deck.main.size(), GetTypeCount(deckManager.current_deck.main, TYPE_MONSTER), GetTypeCount(deckManager.current_deck.main, TYPE_SPELL), GetTypeCount(deckManager.current_deck.main, TYPE_TRAP));
wchar_t* result = DeckFormatBuffer;
return result;
}
const wchar_t* DeckManager::GetExtraFormatString() {
myswprintf(DeckFormatBuffer, L"%d ( %d / %d / %d / %d )", deckManager.current_deck.extra.size(), GetTypeCount(deckManager.current_deck.extra, TYPE_FUSION), GetTypeCount(deckManager.current_deck.extra, TYPE_SYNCHRO), GetTypeCount(deckManager.current_deck.extra, TYPE_XYZ), GetTypeCount(deckManager.current_deck.extra, TYPE_LINK));
wchar_t* result = DeckFormatBuffer;
return result;
}
const wchar_t* DeckManager::GetSideFormatString() {
myswprintf(DeckFormatBuffer, L"%d ( %d / %d / %d / %d )", deckManager.current_deck.side.size(), GetTypeCount(deckManager.current_deck.side, TYPE_MONSTER), GetTypeCount(deckManager.current_deck.side, TYPE_SPELL), GetTypeCount(deckManager.current_deck.side, TYPE_TRAP), GetTypeCount(deckManager.current_deck.side, TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK));
wchar_t* result = DeckFormatBuffer;
return result;
}
int DeckManager::GetTypeCount(std::vector<code_pointer> list, unsigned int ctype) {
int res = 0;
for(size_t i = 0; i < list.size(); ++i) {
code_pointer cur = list[i];
if(cur->second.type & ctype)
res++;
}
return res;
}
} }
...@@ -44,6 +44,12 @@ public: ...@@ -44,6 +44,12 @@ public:
bool LoadDeck(const wchar_t* file); bool LoadDeck(const wchar_t* file);
bool SaveDeck(Deck& deck, const wchar_t* name); bool SaveDeck(Deck& deck, const wchar_t* name);
bool DeleteDeck(Deck& deck, const wchar_t* name); bool DeleteDeck(Deck& deck, const wchar_t* name);
static bool RenameDeck(const wchar_t* oldname, const wchar_t* newname);
wchar_t DeckFormatBuffer[128];
const wchar_t* GetMainFormatString();
const wchar_t* GetSideFormatString();
const wchar_t* GetExtraFormatString();
int GetTypeCount(std::vector<code_pointer> list, unsigned int ctype);
}; };
extern DeckManager deckManager; extern DeckManager deckManager;
......
...@@ -1111,10 +1111,10 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i ...@@ -1111,10 +1111,10 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
void Game::DrawDeckBd() { void Game::DrawDeckBd() {
wchar_t textBuffer[64]; wchar_t textBuffer[64];
//main deck //main deck
driver->draw2DRectangle(Resize(310, 137, 410, 157), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000); driver->draw2DRectangle(Resize(310, 137, 510, 157), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000);
driver->draw2DRectangleOutline(Resize(309, 136, 410, 157)); driver->draw2DRectangleOutline(Resize(309, 136, 510, 157));
DrawShadowText(textFont, dataManager.GetSysString(1330), Resize(315, 137, 410, 157), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true); DrawShadowText(textFont, dataManager.GetSysString(1330), Resize(315, 137, 510, 157), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true);
DrawShadowText(numFont, dataManager.numStrings[deckManager.current_deck.main.size()], Resize(380, 138, 440, 158), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true); DrawShadowText(numFont, deckManager.GetMainFormatString(), Resize(380, 138, 540, 158), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true);
driver->draw2DRectangle(Resize(310, 160, 797, 436), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000); driver->draw2DRectangle(Resize(310, 160, 797, 436), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000);
driver->draw2DRectangleOutline(Resize(309, 159, 797, 436)); driver->draw2DRectangleOutline(Resize(309, 159, 797, 436));
int lx; int lx;
...@@ -1132,10 +1132,10 @@ void Game::DrawDeckBd() { ...@@ -1132,10 +1132,10 @@ void Game::DrawDeckBd() {
driver->draw2DRectangleOutline(Resize(313 + (i % lx) * dx, 163 + (i / lx) * 68, 359 + (i % lx) * dx, 228 + (i / lx) * 68)); driver->draw2DRectangleOutline(Resize(313 + (i % lx) * dx, 163 + (i / lx) * 68, 359 + (i % lx) * dx, 228 + (i / lx) * 68));
} }
//extra deck //extra deck
driver->draw2DRectangle(Resize(310, 440, 410, 460), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000); driver->draw2DRectangle(Resize(310, 440, 510, 460), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000);
driver->draw2DRectangleOutline(Resize(309, 439, 410, 460)); driver->draw2DRectangleOutline(Resize(309, 439, 510, 460));
DrawShadowText(textFont, dataManager.GetSysString(1331), Resize(315, 440, 410, 460), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true); DrawShadowText(textFont, dataManager.GetSysString(1331), Resize(315, 440, 510, 460), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true);
DrawShadowText(numFont, dataManager.numStrings[deckManager.current_deck.extra.size()], Resize(380, 441, 440, 461), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true); DrawShadowText(numFont, deckManager.GetExtraFormatString(), Resize(380, 441, 540, 461), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true);
driver->draw2DRectangle(Resize(310, 463, 797, 533), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000); driver->draw2DRectangle(Resize(310, 463, 797, 533), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000);
driver->draw2DRectangleOutline(Resize(309, 462, 797, 533)); driver->draw2DRectangleOutline(Resize(309, 462, 797, 533));
if(deckManager.current_deck.extra.size() <= 10) if(deckManager.current_deck.extra.size() <= 10)
...@@ -1147,10 +1147,10 @@ void Game::DrawDeckBd() { ...@@ -1147,10 +1147,10 @@ void Game::DrawDeckBd() {
driver->draw2DRectangleOutline(Resize(313 + i * dx, 465, 359 + i * dx, 531)); driver->draw2DRectangleOutline(Resize(313 + i * dx, 465, 359 + i * dx, 531));
} }
//side deck //side deck
driver->draw2DRectangle(Resize(310, 537, 410, 557), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000); driver->draw2DRectangle(Resize(310, 537, 510, 557), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000);
driver->draw2DRectangleOutline(Resize(309, 536, 410, 557)); driver->draw2DRectangleOutline(Resize(309, 536, 510, 557));
DrawShadowText(textFont, dataManager.GetSysString(1332), Resize(315, 537, 410, 557), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true); DrawShadowText(textFont, dataManager.GetSysString(1332), Resize(315, 537, 510, 557), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true);
DrawShadowText(numFont, dataManager.numStrings[deckManager.current_deck.side.size()], Resize(380, 538, 440, 558), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true); DrawShadowText(numFont, deckManager.GetSideFormatString(), Resize(380, 538, 540, 558), Resize(1, 1, 1, 1), 0xffffffff, 0xff000000, false, true);
driver->draw2DRectangle(Resize(310, 560, 797, 630), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000); driver->draw2DRectangle(Resize(310, 560, 797, 630), 0x400000ff, 0x400000ff, 0x40000000, 0x40000000);
driver->draw2DRectangleOutline(Resize(309, 559, 797, 630)); driver->draw2DRectangleOutline(Resize(309, 559, 797, 630));
if(deckManager.current_deck.side.size() <= 10) if(deckManager.current_deck.side.size() <= 10)
......
This diff is collapsed.
...@@ -1680,6 +1680,17 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1680,6 +1680,17 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
break; break;
} }
case irr::KEY_KEY_Z: {
if(!mainGame->dInfo.isReplay && !mainGame->HasFocus(EGUIET_EDIT_BOX)) {
mainGame->dInfo.isReplaySkiping = event.KeyInput.PressedDown;
if(mainGame->dInfo.isStarted && !mainGame->dInfo.isReplaySkiping) {
mainGame->gMutex.Lock();
mainGame->dField.RefreshAllCards();
mainGame->gMutex.Unlock();
}
}
break;
}
case irr::KEY_F1: case irr::KEY_F1:
case irr::KEY_F2: case irr::KEY_F2:
case irr::KEY_F3: case irr::KEY_F3:
......
...@@ -540,11 +540,21 @@ bool Game::Initialize() { ...@@ -540,11 +540,21 @@ bool Game::Initialize() {
btnSideSort->setVisible(false); btnSideSort->setVisible(false);
btnSideReload = env->addButton(rect<s32>(440, 100, 500, 130), 0, BUTTON_SIDE_RELOAD, dataManager.GetSysString(1309)); btnSideReload = env->addButton(rect<s32>(440, 100, 500, 130), 0, BUTTON_SIDE_RELOAD, dataManager.GetSysString(1309));
btnSideReload->setVisible(false); btnSideReload->setVisible(false);
btnRenameDeck = env->addButton(rect<s32>(170, 99, 220, 120), wDeckEdit, BUTTON_RENAME_DECK, dataManager.GetSysString(1362));
// //
scrFilter = env->addScrollBar(false, recti(999, 161, 1019, 629), 0, SCROLL_FILTER); scrFilter = env->addScrollBar(false, recti(999, 161, 1019, 629), 0, SCROLL_FILTER);
scrFilter->setLargeStep(10); scrFilter->setLargeStep(10);
scrFilter->setSmallStep(1); scrFilter->setSmallStep(1);
scrFilter->setVisible(false); scrFilter->setVisible(false);
//rename deck
wRenameDeck = env->addWindow(rect<s32>(510, 200, 820, 320), false, dataManager.GetSysString(1367));
wRenameDeck->getCloseButton()->setVisible(false);
wRenameDeck->setVisible(false);
env->addStaticText(dataManager.GetSysString(1368), rect<s32>(20, 25, 290, 45), false, false, wRenameDeck);
ebREName = env->addEditBox(L"", rect<s32>(20, 50, 290, 70), true, wRenameDeck, -1);
ebREName->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
btnREYes = env->addButton(rect<s32>(70, 80, 140, 105), wRenameDeck, BUTTON_RENAME_DECK_SAVE, dataManager.GetSysString(1341));
btnRENo = env->addButton(rect<s32>(170, 80, 240, 105), wRenameDeck, BUTTON_RENAME_DECK_CANCEL, dataManager.GetSysString(1212));
//sort type //sort type
wSort = env->addStaticText(L"", rect<s32>(930, 132, 1020, 156), true, false, 0, -1, true); wSort = env->addStaticText(L"", rect<s32>(930, 132, 1020, 156), true, false, 0, -1, true);
cbSortType = env->addComboBox(rect<s32>(10, 2, 85, 22), wSort, COMBOBOX_SORTTYPE); cbSortType = env->addComboBox(rect<s32>(10, 2, 85, 22), wSort, COMBOBOX_SORTTYPE);
...@@ -1728,6 +1738,7 @@ void Game::OnResize() { ...@@ -1728,6 +1738,7 @@ void Game::OnResize() {
btnSideSort->setRelativePosition(Resize(375, 100, 435, 130)); btnSideSort->setRelativePosition(Resize(375, 100, 435, 130));
btnSideReload->setRelativePosition(Resize(440, 100, 500, 130)); btnSideReload->setRelativePosition(Resize(440, 100, 500, 130));
btnDeleteDeck->setRelativePosition(Resize(225, 95, 290, 120)); btnDeleteDeck->setRelativePosition(Resize(225, 95, 290, 120));
btnRenameDeck->setRelativePosition(Resize(170, 99, 220, 120));
wLanWindow->setRelativePosition(ResizeWin(220, 100, 800, 520)); wLanWindow->setRelativePosition(ResizeWin(220, 100, 800, 520));
wCreateHost->setRelativePosition(ResizeWin(320, 100, 700, 520)); wCreateHost->setRelativePosition(ResizeWin(320, 100, 700, 520));
...@@ -1749,7 +1760,7 @@ void Game::OnResize() { ...@@ -1749,7 +1760,7 @@ void Game::OnResize() {
wANRace->setRelativePosition(ResizeWin(480, 200, 850, 410)); wANRace->setRelativePosition(ResizeWin(480, 200, 850, 410));
wReplaySave->setRelativePosition(ResizeWin(510, 200, 820, 320)); wReplaySave->setRelativePosition(ResizeWin(510, 200, 820, 320));
stHintMsg->setRelativePosition(ResizeWin(500, 60, 820, 90)); stHintMsg->setRelativePosition(ResizeWin(500, 60, 820, 90));
//sound / music volume bar //sound / music volume bar
scrSoundVolume->setRelativePosition(recti(20 + 126, 200 + 4, 20 + (300 * xScale) - 40, 200 + 21)); scrSoundVolume->setRelativePosition(recti(20 + 126, 200 + 4, 20 + (300 * xScale) - 40, 200 + 21));
scrMusicVolume->setRelativePosition(recti(20 + 126, 230 + 4, 20 + (300 * xScale) - 40, 230 + 21)); scrMusicVolume->setRelativePosition(recti(20 + 126, 230 + 4, 20 + (300 * xScale) - 40, 230 + 21));
......
...@@ -464,6 +464,12 @@ public: ...@@ -464,6 +464,12 @@ public:
irr::gui::IGUIStaticText* stStar; irr::gui::IGUIStaticText* stStar;
irr::gui::IGUIStaticText* stSearch; irr::gui::IGUIStaticText* stSearch;
irr::gui::IGUIStaticText* stScale; irr::gui::IGUIStaticText* stScale;
irr::gui::IGUIButton* btnRenameDeck;
//deck rename
irr::gui::IGUIWindow* wRenameDeck;
irr::gui::IGUIEditBox* ebREName;
irr::gui::IGUIButton* btnREYes;
irr::gui::IGUIButton* btnRENo;
//filter //filter
irr::gui::IGUIStaticText* wFilter; irr::gui::IGUIStaticText* wFilter;
irr::gui::IGUIScrollBar* scrFilter; irr::gui::IGUIScrollBar* scrFilter;
...@@ -675,6 +681,10 @@ extern HostInfo game_info; ...@@ -675,6 +681,10 @@ extern HostInfo game_info;
#define BUTTON_MARKS_FILTER 380 #define BUTTON_MARKS_FILTER 380
#define BUTTON_MARKERS_OK 381 #define BUTTON_MARKERS_OK 381
#define BUTTON_RENAME_DECK 386
#define BUTTON_RENAME_DECK_SAVE 387
#define BUTTON_RENAME_DECK_CANCEL 388
#define TEXTURE_DUEL 0 #define TEXTURE_DUEL 0
#define TEXTURE_DECK 1 #define TEXTURE_DECK 1
#define TEXTURE_MENU 2 #define TEXTURE_MENU 2
......
...@@ -60,7 +60,7 @@ bool ImageManager::Initial() { ...@@ -60,7 +60,7 @@ bool ImageManager::Initial() {
if(!tBackGround_deck) if(!tBackGround_deck)
tBackGround_deck = GetRandomImage(TEXTURE_DUEL); tBackGround_deck = GetRandomImage(TEXTURE_DUEL);
if(!tBackGround_deck) if(!tBackGround_deck)
tBackGround_deck = tBackGround; tBackGround_deck = tBackGround;
tField[0] = driver->getTexture("textures/field2.png"); tField[0] = driver->getTexture("textures/field2.png");
tFieldTransparent[0] = driver->getTexture("textures/field-transparent2.png"); tFieldTransparent[0] = driver->getTexture("textures/field-transparent2.png");
tField[1] = driver->getTexture("textures/field3.png"); tField[1] = driver->getTexture("textures/field3.png");
......
...@@ -378,6 +378,9 @@ ...@@ -378,6 +378,9 @@
!system 1363 是否删除这个录像? !system 1363 是否删除这个录像?
!system 1364 重命名录像 !system 1364 重命名录像
!system 1365 重命名失败,可能存在同名文件 !system 1365 重命名失败,可能存在同名文件
!system 1366 重命名成功
!system 1367 重命名卡组
!system 1368 卡组文件:
!system 1370 星数↑ !system 1370 星数↑
!system 1371 攻击↑ !system 1371 攻击↑
!system 1372 守备↑ !system 1372 守备↑
......
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