Commit d9e83ce6 authored by wind2009's avatar wind2009

Merge branch 'server' of https://github.com/purerosefallen/ygopro into 2pick

parents bb4b36d6 1cb6dff0
name: Automated Test Build name: Automated Test Build
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on: on:
push: push:
branches: [ "master" ] branches: [ "master" ]
...@@ -120,7 +124,7 @@ jobs: ...@@ -120,7 +124,7 @@ jobs:
- name: Download miniaudio - name: Download miniaudio
if: matrix.audiolib == 'miniaudio' if: matrix.audiolib == 'miniaudio'
run: | run: |
git clone --depth=1 https://github.com/mercury233/miniaudio git clone --depth=1 -b 0.11.23 https://github.com/mackron/miniaudio
cd miniaudio cd miniaudio
xcopy /Y extras\miniaudio_split\miniaudio.* . xcopy /Y extras\miniaudio_split\miniaudio.* .
cd .. cd ..
...@@ -367,7 +371,7 @@ jobs: ...@@ -367,7 +371,7 @@ jobs:
- name: Download miniaudio - name: Download miniaudio
run: | run: |
git clone --depth=1 https://github.com/mercury233/miniaudio git clone --depth=1 -b 0.11.23 https://github.com/mackron/miniaudio
cd miniaudio cd miniaudio
cp extras/miniaudio_split/miniaudio.* . cp extras/miniaudio_split/miniaudio.* .
cd .. cd ..
...@@ -590,7 +594,7 @@ jobs: ...@@ -590,7 +594,7 @@ jobs:
- name: Download miniaudio - name: Download miniaudio
run: | run: |
git clone --depth=1 https://github.com/mercury233/miniaudio git clone --depth=1 -b 0.11.23 https://github.com/mackron/miniaudio
cd miniaudio cd miniaudio
cp extras/miniaudio_split/miniaudio.* . cp extras/miniaudio_split/miniaudio.* .
cd .. cd ..
......
...@@ -278,7 +278,7 @@ jobs: ...@@ -278,7 +278,7 @@ jobs:
merge-multiple: true merge-multiple: true
- name: GitHub Release - name: GitHub Release
uses: salix5/action-automatic-releases@node20 uses: salix5/action-automatic-releases@e0545bc14e9677f38aa573f1a52563022f987356
with: with:
repo_token: "${{ secrets.GITHUB_TOKEN }}" repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "server-latest" automatic_release_tag: "server-latest"
......
No preview for this file type
...@@ -8,6 +8,13 @@ namespace ygo { ...@@ -8,6 +8,13 @@ namespace ygo {
unsigned char DataManager::scriptBuffer[0x100000] = {}; unsigned char DataManager::scriptBuffer[0x100000] = {};
DataManager dataManager; DataManager dataManager;
#ifdef YGOPRO_SERVER_MODE
static const char SELECT_STMT[] = "SELECT datas.id, datas.ot, datas.alias, datas.setcode, datas.type, datas.atk, datas.def, datas.level, datas.race, datas.attribute, datas.category FROM datas";
#else
static const char SELECT_STMT[] = "SELECT datas.id, datas.ot, datas.alias, datas.setcode, datas.type, datas.atk, datas.def, datas.level, datas.race, datas.attribute, datas.category,"
" texts.name, texts.desc, texts.str1, texts.str2, texts.str3, texts.str4, texts.str5, texts.str6, texts.str7, texts.str8,"
" texts.str9, texts.str10, texts.str11, texts.str12, texts.str13, texts.str14, texts.str15, texts.str16 FROM datas INNER JOIN texts ON datas.id = texts.id";
#endif
DataManager::DataManager() : _datas(32768), _strings(32768) { DataManager::DataManager() : _datas(32768), _strings(32768) {
extra_setcode = { extra_setcode = {
...@@ -17,12 +24,7 @@ DataManager::DataManager() : _datas(32768), _strings(32768) { ...@@ -17,12 +24,7 @@ DataManager::DataManager() : _datas(32768), _strings(32768) {
} }
bool DataManager::ReadDB(sqlite3* pDB) { bool DataManager::ReadDB(sqlite3* pDB) {
sqlite3_stmt* pStmt = nullptr; sqlite3_stmt* pStmt = nullptr;
#ifdef YGOPRO_SERVER_MODE if (sqlite3_prepare_v2(pDB, SELECT_STMT, -1, &pStmt, nullptr) != SQLITE_OK)
const char* sql = "select * from datas";
#else
const char* sql = "select * from datas,texts where datas.id=texts.id";
#endif
if (sqlite3_prepare_v2(pDB, sql, -1, &pStmt, nullptr) != SQLITE_OK)
return Error(pDB, pStmt); return Error(pDB, pStmt);
#ifndef YGOPRO_SERVER_MODE #ifndef YGOPRO_SERVER_MODE
wchar_t strBuffer[4096]; wchar_t strBuffer[4096];
...@@ -55,17 +57,16 @@ bool DataManager::ReadDB(sqlite3* pDB) { ...@@ -55,17 +57,16 @@ bool DataManager::ReadDB(sqlite3* pDB) {
cd.category = static_cast<decltype(cd.category)>(sqlite3_column_int64(pStmt, 10)); cd.category = static_cast<decltype(cd.category)>(sqlite3_column_int64(pStmt, 10));
#ifndef YGOPRO_SERVER_MODE #ifndef YGOPRO_SERVER_MODE
auto& cs = _strings[code]; auto& cs = _strings[code];
if (const char* text = (const char*)sqlite3_column_text(pStmt, 12)) { if (const char* text = (const char*)sqlite3_column_text(pStmt, 11)) {
BufferIO::DecodeUTF8(text, strBuffer); BufferIO::DecodeUTF8(text, strBuffer);
cs.name = strBuffer; cs.name = strBuffer;
} }
if (const char* text = (const char*)sqlite3_column_text(pStmt, 13)) { if (const char* text = (const char*)sqlite3_column_text(pStmt, 12)) {
BufferIO::DecodeUTF8(text, strBuffer); BufferIO::DecodeUTF8(text, strBuffer);
cs.text = strBuffer; cs.text = strBuffer;
} }
constexpr int desc_count = sizeof cs.desc / sizeof cs.desc[0]; for (int i = 0; i < DESC_COUNT; ++i) {
for (int i = 0; i < desc_count; ++i) { if (const char* text = (const char*)sqlite3_column_text(pStmt, 13 + i)) {
if (const char* text = (const char*)sqlite3_column_text(pStmt, i + 14)) {
BufferIO::DecodeUTF8(text, strBuffer); BufferIO::DecodeUTF8(text, strBuffer);
cs.desc[i] = strBuffer; cs.desc[i] = strBuffer;
} }
......
...@@ -19,7 +19,7 @@ namespace ygo { ...@@ -19,7 +19,7 @@ namespace ygo {
constexpr int MAX_STRING_ID = 0x7ff; constexpr int MAX_STRING_ID = 0x7ff;
constexpr uint32_t MIN_CARD_ID = (uint32_t)(MAX_STRING_ID + 1) >> 4; constexpr uint32_t MIN_CARD_ID = (uint32_t)(MAX_STRING_ID + 1) >> 4;
constexpr uint32_t MAX_CARD_ID = 0x0fffffffU; constexpr uint32_t MAX_CARD_ID = 0x0fffffffU;
using CardData = card_data; using CardData = card_data;
struct CardDataC { struct CardDataC {
uint32_t code{}; uint32_t code{};
...@@ -49,10 +49,11 @@ struct CardDataC { ...@@ -49,10 +49,11 @@ struct CardDataC {
return false; return false;
} }
}; };
constexpr int DESC_COUNT = 16;
struct CardString { struct CardString {
std::wstring name; std::wstring name;
std::wstring text; std::wstring text;
std::wstring desc[16]; std::wstring desc[DESC_COUNT];
}; };
using code_pointer = std::unordered_map<uint32_t, CardDataC>::const_iterator; using code_pointer = std::unordered_map<uint32_t, CardDataC>::const_iterator;
using string_pointer = std::unordered_map<uint32_t, CardString>::const_iterator; using string_pointer = std::unordered_map<uint32_t, CardString>::const_iterator;
......
...@@ -1984,6 +1984,8 @@ void SingleDuel::EndDuel() { ...@@ -1984,6 +1984,8 @@ void SingleDuel::EndDuel() {
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit); NetServer::ReSendToPlayer(*oit);
NetServer::ReSendToPlayers(cache_recorder, replay_recorder); NetServer::ReSendToPlayers(cache_recorder, replay_recorder);
} else {
NetServer::ReSendToPlayer(replay_recorder);
} }
#else #else
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
......
...@@ -2017,6 +2017,8 @@ void TagDuel::EndDuel() { ...@@ -2017,6 +2017,8 @@ void TagDuel::EndDuel() {
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit); NetServer::ReSendToPlayer(*oit);
NetServer::ReSendToPlayers(cache_recorder, replay_recorder); NetServer::ReSendToPlayers(cache_recorder, replay_recorder);
} else {
NetServer::ReSendToPlayer(replay_recorder);
} }
#else #else
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
......
Subproject commit d94916492a75253cbe92fdeaaad0309c25c936c0 Subproject commit 05d14ca67e5d610f9b6806991f01ba59473c9f28
Subproject commit 864b7ef22fdcf68570a488d1834cae9086a63b5e Subproject commit ca9b8af4c90cf1422b903594b086ce5e2dfd0e93
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