Commit 358fb1b8 authored by Chen Bill's avatar Chen Bill

fix export replay deck

parent 560c5b31
...@@ -299,43 +299,24 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -299,43 +299,24 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
auto selected = mainGame->lstReplayList->getSelected(); auto selected = mainGame->lstReplayList->getSelected();
if(selected == -1) if(selected == -1)
break; break;
Replay replay; Replay replay1;
wchar_t ex_filename[256]{}; wchar_t replay_name[256]{};
wchar_t namebuf[4][20]{}; wchar_t namebuf[4][20]{};
wchar_t filename[256]{}; wchar_t filename[256]{};
wchar_t replay_path[256]{}; wchar_t replay_path[256]{};
BufferIO::CopyWideString(mainGame->lstReplayList->getListItem(selected), ex_filename); BufferIO::CopyWideString(mainGame->lstReplayList->getListItem(selected), replay_name);
myswprintf(replay_path, L"./replay/%ls", ex_filename); myswprintf(replay_path, L"./replay/%ls", replay_name);
if (!replay.OpenReplay(replay_path)) if (!replay1.OpenReplay(replay_path))
break; break;
const ReplayHeader& rh = replay.pheader; if (replay1.pheader.flag & REPLAY_SINGLE_MODE)
if(rh.flag & REPLAY_SINGLE_MODE)
break; break;
int player_count = (rh.flag & REPLAY_TAG) ? 4 : 2; for (size_t i = 0; i < replay1.decks.size(); ++i) {
//player name BufferIO::CopyWideString(replay1.players[i].c_str(), namebuf[i]);
for(int i = 0; i < player_count; ++i)
replay.ReadName(namebuf[i]);
//skip pre infos
for(int i = 0; i < 4; ++i)
replay.ReadInt32();
//deck
std::vector<int> deckbuf;
for(int i = 0; i < player_count; ++i) {
deckbuf.clear();
int main = replay.ReadInt32();
deckbuf.push_back(main);
for (int j = 0; j < main; ++j) {
deckbuf.push_back(replay.ReadInt32());
}
int extra = replay.ReadInt32();
deckbuf.push_back(extra);
for (int j = 0; j < extra; ++j) {
deckbuf.push_back(replay.ReadInt32());
}
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]); }
deckManager.SaveDeckBuffer(deckbuf.data(), filename); for (size_t i = 0; i < replay1.decks.size(); ++i) {
myswprintf(filename, L"./deck/%ls-%d %ls.ydk", replay_name, i + 1, namebuf[i]);
DeckManager::SaveDeckBuffer(replay1.decks[i], filename);
} }
mainGame->stACMessage->setText(dataManager.GetSysString(1335)); mainGame->stACMessage->setText(dataManager.GetSysString(1335));
mainGame->PopupElement(mainGame->wACMessage, 20); mainGame->PopupElement(mainGame->wACMessage, 20);
......
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