Commit cc492897 authored by fallenstardust's avatar fallenstardust

revert manager优化

parent f77175cc
...@@ -288,8 +288,8 @@ bool ClientCard::deck_sort_def(code_pointer p1, code_pointer p2) { ...@@ -288,8 +288,8 @@ bool ClientCard::deck_sort_def(code_pointer p1, code_pointer p2) {
return p1->first < p2->first; return p1->first < p2->first;
} }
bool ClientCard::deck_sort_name(code_pointer p1, code_pointer p2) { bool ClientCard::deck_sort_name(code_pointer p1, code_pointer p2) {
const wchar_t* name1 = mainGame->dataManager->GetName(p1->first); const wchar_t* name1 = dataManager.GetName(p1->first);
const wchar_t* name2 = mainGame->dataManager->GetName(p2->first); const wchar_t* name2 = dataManager.GetName(p2->first);
int res = wcscmp(name1, name2); int res = wcscmp(name1, name2);
if(res != 0) if(res != 0)
return res < 0; return res < 0;
......
...@@ -447,7 +447,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { ...@@ -447,7 +447,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
else if(conti_selecting) else if(conti_selecting)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code)); mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code));
else else
mainGame->btnCardSelect[i]->setImage(mainGame->imageManager->tCover[selectable_cards[i]->controler]); mainGame->btnCardSelect[i]->setImage(imageManager.tCover[selectable_cards[i]->controler]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>((startpos + i * 125) * mainGame->xScale, 65 * mainGame->yScale, (startpos + 120 + i * 125) * mainGame->xScale, 235 * mainGame->yScale)); mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>((startpos + i * 125) * mainGame->xScale, 65 * mainGame->yScale, (startpos + 120 + i * 125) * mainGame->xScale, 235 * mainGame->yScale));
mainGame->btnCardSelect[i]->setPressed(false); mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true); mainGame->btnCardSelect[i]->setVisible(true);
...@@ -457,13 +457,13 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { ...@@ -457,13 +457,13 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
if(conti_selecting) if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string); myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(cant_check_grave && selectable_cards[i]->location == LOCATION_GRAVE) else if(cant_check_grave && selectable_cards[i]->location == LOCATION_GRAVE)
myswprintf(formatBuffer, L"%ls", mainGame->dataManager->FormatLocation(selectable_cards[i]->location, 0)); myswprintf(formatBuffer, L"%ls", dataManager.FormatLocation(selectable_cards[i]->location, 0));
else if(selectable_cards[i]->location == LOCATION_OVERLAY) else if(selectable_cards[i]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)", myswprintf(formatBuffer, L"%ls[%d](%d)",
mainGame->dataManager->FormatLocation(selectable_cards[i]->overlayTarget->location, selectable_cards[i]->overlayTarget->sequence), dataManager.FormatLocation(selectable_cards[i]->overlayTarget->location, selectable_cards[i]->overlayTarget->sequence),
selectable_cards[i]->overlayTarget->sequence + 1, selectable_cards[i]->sequence + 1); selectable_cards[i]->overlayTarget->sequence + 1, selectable_cards[i]->sequence + 1);
else else
myswprintf(formatBuffer, L"%ls[%d]", mainGame->dataManager->FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence), myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence),
selectable_cards[i]->sequence + 1); selectable_cards[i]->sequence + 1);
mainGame->stCardPos[i]->setText(formatBuffer); mainGame->stCardPos[i]->setText(formatBuffer);
// color // color
...@@ -535,12 +535,12 @@ void ClientField::ShowChainCard() { ...@@ -535,12 +535,12 @@ void ClientField::ShowChainCard() {
if(selectable_cards[i]->code) if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code)); mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else else
mainGame->btnCardSelect[i]->setImage(mainGame->imageManager->tCover[selectable_cards[i]->controler]); mainGame->btnCardSelect[i]->setImage(imageManager.tCover[selectable_cards[i]->controler]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>((startpos + i * 125) * mainGame->xScale, 65 * mainGame->yScale, (startpos + 120 + i * 125) * mainGame->xScale, 235 * mainGame->yScale)); mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>((startpos + i * 125) * mainGame->xScale, 65 * mainGame->yScale, (startpos + 120 + i * 125) * mainGame->xScale, 235 * mainGame->yScale));
mainGame->btnCardSelect[i]->setPressed(false); mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true); mainGame->btnCardSelect[i]->setVisible(true);
wchar_t formatBuffer[2048]; wchar_t formatBuffer[2048];
myswprintf(formatBuffer, L"%ls[%d]", mainGame->dataManager->FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence), myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence),
selectable_cards[i]->sequence + 1); selectable_cards[i]->sequence + 1);
mainGame->stCardPos[i]->setText(formatBuffer); mainGame->stCardPos[i]->setText(formatBuffer);
if(selectable_cards[i]->location == LOCATION_OVERLAY) { if(selectable_cards[i]->location == LOCATION_OVERLAY) {
...@@ -592,17 +592,17 @@ void ClientField::ShowLocationCard() { ...@@ -592,17 +592,17 @@ void ClientField::ShowLocationCard() {
if(display_cards[i]->code) if(display_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardDisplay[i], display_cards[i]->code)); mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardDisplay[i], display_cards[i]->code));
else else
mainGame->btnCardDisplay[i]->setImage(mainGame->imageManager->tCover[display_cards[i]->controler]); mainGame->btnCardDisplay[i]->setImage(imageManager.tCover[display_cards[i]->controler]);
mainGame->btnCardDisplay[i]->setRelativePosition(rect<s32>((startpos + i * 125) * mainGame->xScale, 65 * mainGame->yScale, (startpos + 120 + i * 125) * mainGame->xScale, 235 * mainGame->yScale)); mainGame->btnCardDisplay[i]->setRelativePosition(rect<s32>((startpos + i * 125) * mainGame->xScale, 65 * mainGame->yScale, (startpos + 120 + i * 125) * mainGame->xScale, 235 * mainGame->yScale));
mainGame->btnCardDisplay[i]->setPressed(false); mainGame->btnCardDisplay[i]->setPressed(false);
mainGame->btnCardDisplay[i]->setVisible(true); mainGame->btnCardDisplay[i]->setVisible(true);
wchar_t formatBuffer[2048]; wchar_t formatBuffer[2048];
if(display_cards[i]->location == LOCATION_OVERLAY) if(display_cards[i]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)", myswprintf(formatBuffer, L"%ls[%d](%d)",
mainGame->dataManager->FormatLocation(display_cards[i]->overlayTarget->location, display_cards[i]->overlayTarget->sequence), dataManager.FormatLocation(display_cards[i]->overlayTarget->location, display_cards[i]->overlayTarget->sequence),
display_cards[i]->overlayTarget->sequence + 1, display_cards[i]->sequence + 1); display_cards[i]->overlayTarget->sequence + 1, display_cards[i]->sequence + 1);
else else
myswprintf(formatBuffer, L"%ls[%d]", mainGame->dataManager->FormatLocation(display_cards[i]->location, display_cards[i]->sequence), myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(display_cards[i]->location, display_cards[i]->sequence),
display_cards[i]->sequence + 1); display_cards[i]->sequence + 1);
mainGame->stDisplayPos[i]->setText(formatBuffer); mainGame->stDisplayPos[i]->setText(formatBuffer);
if(display_cards[i]->location == LOCATION_OVERLAY) { if(display_cards[i]->location == LOCATION_OVERLAY) {
...@@ -651,13 +651,13 @@ void ClientField::ShowSelectOption(int select_hint) { ...@@ -651,13 +651,13 @@ void ClientField::ShowSelectOption(int select_hint) {
bool quickmode = true; bool quickmode = true;
mainGame->gMutex.lock(); mainGame->gMutex.lock();
for(auto option : select_options) { for(auto option : select_options) {
if(mainGame->guiFont->getDimension(mainGame->dataManager->GetDesc(option)).Width > 370 * mainGame->xScale) { if(mainGame->guiFont->getDimension(dataManager.GetDesc(option)).Width > 370 * mainGame->xScale) {
quickmode = false; quickmode = false;
break; break;
} }
} }
for(int i = 0; (i < count) && (i < 5) && quickmode; i++) { for(int i = 0; (i < count) && (i < 5) && quickmode; i++) {
const wchar_t* option = mainGame->dataManager->GetDesc(select_options[i]); const wchar_t* option = dataManager.GetDesc(select_options[i]);
mainGame->btnOption[i]->setText(option); mainGame->btnOption[i]->setText(option);
} }
if(quickmode) { if(quickmode) {
...@@ -681,7 +681,7 @@ void ClientField::ShowSelectOption(int select_hint) { ...@@ -681,7 +681,7 @@ void ClientField::ShowSelectOption(int select_hint) {
mainGame->bgOptions->setRelativePosition(rect<s32>(0, 0, (scrollbar ? 405 : 390) * mainGame->xScale, pos.LowerRightCorner.Y - pos.UpperLeftCorner.Y)); mainGame->bgOptions->setRelativePosition(rect<s32>(0, 0, (scrollbar ? 405 : 390) * mainGame->xScale, pos.LowerRightCorner.Y - pos.UpperLeftCorner.Y));
} else { } else {
mainGame->SetStaticText(mainGame->stOptions, 350 * mainGame->xScale, mainGame->guiFont, mainGame->SetStaticText(mainGame->stOptions, 350 * mainGame->xScale, mainGame->guiFont,
(wchar_t*)mainGame->dataManager->GetDesc(select_options[0])); (wchar_t*)dataManager.GetDesc(select_options[0]));
mainGame->stOptions->setVisible(true); mainGame->stOptions->setVisible(true);
mainGame->btnOptionp->setVisible(false); mainGame->btnOptionp->setVisible(false);
mainGame->btnOptionn->setVisible(count > 1); mainGame->btnOptionn->setVisible(count > 1);
...@@ -693,9 +693,9 @@ void ClientField::ShowSelectOption(int select_hint) { ...@@ -693,9 +693,9 @@ void ClientField::ShowSelectOption(int select_hint) {
mainGame->wOptions->setRelativePosition(pos); mainGame->wOptions->setRelativePosition(pos);
} }
if(select_hint) if(select_hint)
myswprintf(textBuffer, L"%ls", mainGame->dataManager->GetDesc(select_hint)); myswprintf(textBuffer, L"%ls", dataManager.GetDesc(select_hint));
else else
myswprintf(textBuffer, mainGame->dataManager->GetSysString(555)); myswprintf(textBuffer, dataManager.GetSysString(555));
mainGame->stOptions->setText(textBuffer); mainGame->stOptions->setText(textBuffer);
mainGame->PopupElement(mainGame->wOptions); mainGame->PopupElement(mainGame->wOptions);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
...@@ -1139,9 +1139,9 @@ bool ClientField::ShowSelectSum(bool panelmode) { ...@@ -1139,9 +1139,9 @@ bool ClientField::ShowSelectSum(bool panelmode) {
select_ready = true; select_ready = true;
mainGame->wCardSelect->setVisible(false); mainGame->wCardSelect->setVisible(false);
wchar_t wbuf[256], *pwbuf = wbuf; wchar_t wbuf[256], *pwbuf = wbuf;
BufferIO::CopyWStrRef(mainGame->dataManager->GetSysString(209), pwbuf, 256); BufferIO::CopyWStrRef(dataManager.GetSysString(209), pwbuf, 256);
*pwbuf++ = L'\n'; *pwbuf++ = L'\n';
BufferIO::CopyWStrRef(mainGame->dataManager->GetSysString(210), pwbuf, 256); BufferIO::CopyWStrRef(dataManager.GetSysString(210), pwbuf, 256);
mainGame->stQMessage->setText(wbuf); mainGame->stQMessage->setText(wbuf);
mainGame->PopupElement(mainGame->wQuery); mainGame->PopupElement(mainGame->wQuery);
} }
...@@ -1160,9 +1160,9 @@ bool ClientField::ShowSelectSum(bool panelmode) { ...@@ -1160,9 +1160,9 @@ bool ClientField::ShowSelectSum(bool panelmode) {
} else { } else {
select_ready = true; select_ready = true;
wchar_t wbuf[256], *pwbuf = wbuf; wchar_t wbuf[256], *pwbuf = wbuf;
BufferIO::CopyWStrRef(mainGame->dataManager->GetSysString(209), pwbuf, 256); BufferIO::CopyWStrRef(dataManager.GetSysString(209), pwbuf, 256);
*pwbuf++ = L'\n'; *pwbuf++ = L'\n';
BufferIO::CopyWStrRef(mainGame->dataManager->GetSysString(210), pwbuf, 256); BufferIO::CopyWStrRef(dataManager.GetSysString(210), pwbuf, 256);
mainGame->stQMessage->setText(wbuf); mainGame->stQMessage->setText(wbuf);
mainGame->PopupElement(mainGame->wQuery); mainGame->PopupElement(mainGame->wQuery);
} }
...@@ -1539,7 +1539,7 @@ void ClientField::UpdateDeclarableList() { ...@@ -1539,7 +1539,7 @@ void ClientField::UpdateDeclarableList() {
int trycode = BufferIO::GetVal(pname); int trycode = BufferIO::GetVal(pname);
CardString cstr; CardString cstr;
CardData cd; CardData cd;
if(mainGame->dataManager->GetString(trycode, &cstr) && mainGame->dataManager->GetData(trycode, &cd) && is_declarable(cd, declare_opcodes)) { if(dataManager.GetString(trycode, &cstr) && dataManager.GetData(trycode, &cd) && is_declarable(cd, declare_opcodes)) {
mainGame->lstANCard->clear(); mainGame->lstANCard->clear();
ancard.clear(); ancard.clear();
mainGame->lstANCard->addItem(cstr.name.c_str()); mainGame->lstANCard->addItem(cstr.name.c_str());
...@@ -1553,7 +1553,7 @@ void ClientField::UpdateDeclarableList() { ...@@ -1553,7 +1553,7 @@ void ClientField::UpdateDeclarableList() {
int selcode = (sel == -1) ? 0 : cache[sel]; int selcode = (sel == -1) ? 0 : cache[sel];
mainGame->lstANCard->clear(); mainGame->lstANCard->clear();
for(const auto& trycode : cache) { for(const auto& trycode : cache) {
if(mainGame->dataManager->GetString(trycode, &cstr) && mainGame->dataManager->GetData(trycode, &cd) && is_declarable(cd, declare_opcodes)) { if(dataManager.GetString(trycode, &cstr) && dataManager.GetData(trycode, &cd) && is_declarable(cd, declare_opcodes)) {
ancard.push_back(trycode); ancard.push_back(trycode);
mainGame->lstANCard->addItem(cstr.name.c_str()); mainGame->lstANCard->addItem(cstr.name.c_str());
if(trycode == selcode) if(trycode == selcode)
...@@ -1565,9 +1565,9 @@ void ClientField::UpdateDeclarableList() { ...@@ -1565,9 +1565,9 @@ void ClientField::UpdateDeclarableList() {
} }
mainGame->lstANCard->clear(); mainGame->lstANCard->clear();
ancard.clear(); ancard.clear();
for(auto cit = mainGame->dataManager->_strings.begin(); cit != mainGame->dataManager->_strings.end(); ++cit) { for(auto cit = dataManager._strings.begin(); cit != dataManager._strings.end(); ++cit) {
if(cit->second.name.find(pname) != std::wstring::npos) { if(cit->second.name.find(pname) != std::wstring::npos) {
auto cp = mainGame->dataManager->GetCodePointer(cit->first); //verified by _strings auto cp = dataManager.GetCodePointer(cit->first); //verified by _strings
//datas.alias can be double card names or alias //datas.alias can be double card names or alias
if(is_declarable(cp->second, declare_opcodes)) { if(is_declarable(cp->second, declare_opcodes)) {
if(pname == cit->second.name) { //exact match if(pname == cit->second.name) { //exact match
......
...@@ -7,6 +7,7 @@ namespace ygo { ...@@ -7,6 +7,7 @@ namespace ygo {
const wchar_t* DataManager::unknown_string = L"???"; const wchar_t* DataManager::unknown_string = L"???";
byte DataManager::scriptBuffer[0x20000]; byte DataManager::scriptBuffer[0x20000];
IFileSystem* DataManager::FileSystem; IFileSystem* DataManager::FileSystem;
DataManager dataManager;
bool DataManager::LoadDB(const wchar_t* wfile) { bool DataManager::LoadDB(const wchar_t* wfile) {
char file[256]; char file[256];
...@@ -357,7 +358,7 @@ const wchar_t* DataManager::FormatLinkMarker(int link_marker) { ...@@ -357,7 +358,7 @@ const wchar_t* DataManager::FormatLinkMarker(int link_marker) {
return lmBuffer; return lmBuffer;
} }
int DataManager::CardReader(int code, void* pData) { int DataManager::CardReader(int code, void* pData) {
if(!mainGame->dataManager->GetData(code, (CardData*)pData)) if(!dataManager.GetData(code, (CardData*)pData))
memset(pData, 0, sizeof(CardData)); memset(pData, 0, sizeof(CardData));
return 0; return 0;
} }
......
...@@ -64,6 +64,8 @@ public: ...@@ -64,6 +64,8 @@ public:
static IFileSystem* FileSystem; static IFileSystem* FileSystem;
}; };
extern DataManager dataManager;
} }
#endif // DATAMANAGER_H #endif // DATAMANAGER_H
This diff is collapsed.
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
namespace ygo { namespace ygo {
DeckManager deckManager;
void DeckManager::LoadLFListSingle(const char* path) { void DeckManager::LoadLFListSingle(const char* path) {
LFList* cur = nullptr; LFList* cur = nullptr;
FILE* fp = fopen(path, "r"); FILE* fp = fopen(path, "r");
...@@ -61,7 +63,7 @@ const wchar_t* DeckManager::GetLFListName(int lfhash) { ...@@ -61,7 +63,7 @@ const wchar_t* DeckManager::GetLFListName(int lfhash) {
}); });
if(lit != _lfList.end()) if(lit != _lfList.end())
return lit->listName.c_str(); return lit->listName.c_str();
return mainGame->dataManager->unknown_string; return dataManager.unknown_string;
} }
std::unordered_map<int, int>* DeckManager::GetLFListContent(int lfhash) { std::unordered_map<int, int>* DeckManager::GetLFListContent(int lfhash) {
auto lit = std::find_if(_lfList.begin(), _lfList.end(), [lfhash](const ygo::LFList& list) { auto lit = std::find_if(_lfList.begin(), _lfList.end(), [lfhash](const ygo::LFList& list) {
...@@ -147,7 +149,7 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec) { ...@@ -147,7 +149,7 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec) {
CardData cd; CardData cd;
for(int i = 0; i < mainc; ++i) { for(int i = 0; i < mainc; ++i) {
code = dbuf[i]; code = dbuf[i];
if(!mainGame->dataManager->GetData(code, &cd)) { if(!dataManager.GetData(code, &cd)) {
errorcode = code; errorcode = code;
continue; continue;
} }
...@@ -156,21 +158,21 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec) { ...@@ -156,21 +158,21 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec) {
else if(cd.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK)) { else if(cd.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK)) {
if(deck.extra.size() >= 15) if(deck.extra.size() >= 15)
continue; continue;
deck.extra.push_back(mainGame->dataManager->GetCodePointer(code)); //verified by GetData() deck.extra.push_back(dataManager.GetCodePointer(code)); //verified by GetData()
} else if(deck.main.size() < 60) { } else if(deck.main.size() < 60) {
deck.main.push_back(mainGame->dataManager->GetCodePointer(code)); deck.main.push_back(dataManager.GetCodePointer(code));
} }
} }
for(int i = 0; i < sidec; ++i) { for(int i = 0; i < sidec; ++i) {
code = dbuf[mainc + i]; code = dbuf[mainc + i];
if(!mainGame->dataManager->GetData(code, &cd)) { if(!dataManager.GetData(code, &cd)) {
errorcode = code; errorcode = code;
continue; continue;
} }
if(cd.type & TYPE_TOKEN) if(cd.type & TYPE_TOKEN)
continue; continue;
if(deck.side.size() < 15) if(deck.side.size() < 15)
deck.side.push_back(mainGame->dataManager->GetCodePointer(code)); //verified by GetData() deck.side.push_back(dataManager.GetCodePointer(code)); //verified by GetData()
} }
return errorcode; return errorcode;
} }
......
...@@ -54,6 +54,9 @@ public: ...@@ -54,6 +54,9 @@ public:
bool DeleteCategory(const wchar_t* name); bool DeleteCategory(const wchar_t* name);
int TypeCount(std::vector<code_pointer> list, unsigned int ctype); int TypeCount(std::vector<code_pointer> list, unsigned int ctype);
}; };
extern DeckManager deckManager;
} }
#endif //DECKMANAGER_H #endif //DECKMANAGER_H
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -6,8 +6,6 @@ ...@@ -6,8 +6,6 @@
#include "deck_con.h" #include "deck_con.h"
#include "menu_handler.h" #include "menu_handler.h"
#include "sound_manager.h" #include "sound_manager.h"
#include "deck_manager.h"
#include "image_manager.h"
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
#include <list> #include <list>
...@@ -154,7 +152,7 @@ public: ...@@ -154,7 +152,7 @@ public:
void DrawBackGround(); void DrawBackGround();
void DrawSelField(int player, int loc, size_t seq, irr::video::ITexture* texture, bool reverse = false, bool spin = false); void DrawSelField(int player, int loc, size_t seq, irr::video::ITexture* texture, bool reverse = false, bool spin = false);
void DrawLinkedZones(ClientCard* pcard, ClientCard* fcard = 0); void DrawLinkedZones(ClientCard* pcard, ClientCard* fcard = 0);
void CheckMutual(ClientCard* pcard, int mark){} void CheckMutual(ClientCard* pcard, int mark);
void DrawCards(); void DrawCards();
void DrawCard(ClientCard* pcard); void DrawCard(ClientCard* pcard);
void DrawShadowText(irr::gui::CGUITTFont* font, const core::stringw& text, const core::rect<s32>& position, const core::rect<s32>& padding, video::SColor color = 0xffffffff, video::SColor shadowcolor = 0xff000000, bool hcenter = false, bool vcenter = false, const core::rect<s32>* clip = 0); void DrawShadowText(irr::gui::CGUITTFont* font, const core::stringw& text, const core::rect<s32>& position, const core::rect<s32>& padding, video::SColor color = 0xffffffff, video::SColor shadowcolor = 0xff000000, bool hcenter = false, bool vcenter = false, const core::rect<s32>* clip = 0);
...@@ -208,9 +206,6 @@ public: ...@@ -208,9 +206,6 @@ public:
// don't merge // don't merge
std::unique_ptr<SoundManager> soundManager; std::unique_ptr<SoundManager> soundManager;
std::unique_ptr<DeckManager> deckManager;
std::unique_ptr<ImageManager> imageManager;
std::unique_ptr<DataManager> dataManager;
std::mutex gMutex; std::mutex gMutex;
Signal frameSignal; Signal frameSignal;
Signal actionSignal; Signal actionSignal;
......
...@@ -41,18 +41,16 @@ int GetListBoxIndex(IGUIListBox* listbox, const wchar_t * target){ ...@@ -41,18 +41,16 @@ int GetListBoxIndex(IGUIListBox* listbox, const wchar_t * target){
} }
void android_main(ANDROID_APP app) { void android_main(ANDROID_APP app) {
app->inputPollSource.process = android::process_input; app->inputPollSource.process = android::process_input;
app_dummy();
#else #else
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
#endif #endif
evthread_use_pthreads(); evthread_use_pthreads();
auto game = new ygo::Game; ygo::Game _game;
if(ygo::mainGame != nullptr){ ygo::mainGame = &_game;
delete ygo::mainGame;
}
ygo::mainGame = game;
#ifdef _IRR_ANDROID_PLATFORM_ #ifdef _IRR_ANDROID_PLATFORM_
android::InitOptions *options = android::getInitOptions(app); android::InitOptions *options = android::getInitOptions(app);
if(!game->Initialize(app, options)){ if(!ygo::mainGame->Initialize(app, options)){
delete options; delete options;
return; return;
} }
...@@ -80,29 +78,29 @@ int main(int argc, char* argv[]) { ...@@ -80,29 +78,29 @@ int main(int argc, char* argv[]) {
wchar_t fname[1024]; wchar_t fname[1024];
char* tmp = sub_string(arg, 2); char* tmp = sub_string(arg, 2);
BufferIO::DecodeUTF8(tmp, fname); BufferIO::DecodeUTF8(tmp, fname);
game->dataManager->LoadDB(fname); ygo::dataManager.LoadDB(fname);
delete tmp; delete tmp;
} else if(!strcmp(arg, "-k")) { // Keep on return } else if(!strcmp(arg, "-k")) { // Keep on return
exit_on_return = false; exit_on_return = false;
keep_on_return = true; keep_on_return = true;
} else if(!strcmp(arg, "-c")) { // Create host } else if(!strcmp(arg, "-c")) { // Create host
exit_on_return = !keep_on_return; exit_on_return = !keep_on_return;
game->HideElement(game->wMainMenu); ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
ClickButton(game->btnJoinHost); ClickButton(ygo::mainGame->btnJoinHost);
break; break;
} else if(!strcmp(arg, "-j")) { // Join host } else if(!strcmp(arg, "-j")) { // Join host
exit_on_return = !keep_on_return; exit_on_return = !keep_on_return;
game->HideElement(game->wMainMenu); ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
ClickButton(game->btnJoinHost); ClickButton(ygo::mainGame->btnJoinHost);
break; break;
} else if(!strcmp(arg, "-r")) { // Replay } else if(!strcmp(arg, "-r")) { // Replay
exit_on_return = !keep_on_return; exit_on_return = !keep_on_return;
//显示录像窗口 //显示录像窗口
game->HideElement(game->wMainMenu); ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
game->ShowElement(game->wReplay); ygo::mainGame->ShowElement(ygo::mainGame->wReplay);
game->ebRepStartTurn->setText(L"1"); ygo::mainGame->ebRepStartTurn->setText(L"1");
game->stReplayInfo->setText(L""); ygo::mainGame->stReplayInfo->setText(L"");
game->RefreshReplay(); ygo::mainGame->RefreshReplay();
int index = -1; int index = -1;
if((i+1) < argc){//下一个参数是录像名 if((i+1) < argc){//下一个参数是录像名
#ifdef _IRR_ANDROID_PLATFORM_ #ifdef _IRR_ANDROID_PLATFORM_
...@@ -113,24 +111,24 @@ int main(int argc, char* argv[]) { ...@@ -113,24 +111,24 @@ int main(int argc, char* argv[]) {
wchar_t fname[1024]; wchar_t fname[1024];
BufferIO::DecodeUTF8(name, fname); BufferIO::DecodeUTF8(name, fname);
index = GetListBoxIndex(game->lstReplayList, fname); index = GetListBoxIndex(ygo::mainGame->lstReplayList, fname);
ALOGD("open replay file:index=%d, name=%s", index, name); ALOGD("open replay file:index=%d, name=%s", index, name);
} }
game->HideElement(game->wMainMenu); ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
ClickButton(game->btnReplayMode); ClickButton(ygo::mainGame->btnReplayMode);
if (index >= 0) { if (index >= 0) {
game->lstReplayList->setSelected(index); ygo::mainGame->lstReplayList->setSelected(index);
ClickButton(game->btnLoadReplay); ClickButton(ygo::mainGame->btnLoadReplay);
} }
break;//只播放一个 break;//只播放一个
} else if(!strcmp(arg, "-s")) { // Single } else if(!strcmp(arg, "-s")) { // Single
exit_on_return = !keep_on_return; exit_on_return = !keep_on_return;
//显示残局窗口 //显示残局窗口
game->HideElement(game->wMainMenu); ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
game->ShowElement(game->wSinglePlay); ygo::mainGame->ShowElement(ygo::mainGame->wSinglePlay);
game->RefreshSingleplay(); ygo::mainGame->RefreshSingleplay();
game->RefreshBot(); ygo::mainGame->RefreshBot();
int index = -1; int index = -1;
if((i+1) < argc){//下一个参数是文件名 if((i+1) < argc){//下一个参数是文件名
#ifdef _IRR_ANDROID_PLATFORM_ #ifdef _IRR_ANDROID_PLATFORM_
...@@ -140,12 +138,12 @@ int main(int argc, char* argv[]) { ...@@ -140,12 +138,12 @@ int main(int argc, char* argv[]) {
#endif #endif
wchar_t fname[1024]; wchar_t fname[1024];
BufferIO::DecodeUTF8(name, fname); BufferIO::DecodeUTF8(name, fname);
index = GetListBoxIndex(game->lstSinglePlayList, fname); index = GetListBoxIndex(ygo::mainGame->lstSinglePlayList, fname);
ALOGD("open single file:index=%d, name=%s", index, name); ALOGD("open single file:index=%d, name=%s", index, name);
} }
if(index >= 0){ if(index >= 0){
game->lstSinglePlayList->setSelected(index); ygo::mainGame->lstSinglePlayList->setSelected(index);
ClickButton(game->btnLoadSinglePlay); ClickButton(ygo::mainGame->btnLoadSinglePlay);
} }
break; break;
} }
...@@ -153,8 +151,8 @@ int main(int argc, char* argv[]) { ...@@ -153,8 +151,8 @@ int main(int argc, char* argv[]) {
#ifdef _IRR_ANDROID_PLATFORM_ #ifdef _IRR_ANDROID_PLATFORM_
delete options; delete options;
#endif #endif
game->externalSignal.Set(); ygo::mainGame->externalSignal.Set();
game->externalSignal.SetNoWait(true); ygo::mainGame->externalSignal.SetNoWait(true);
game->MainLoop(); ygo::mainGame->MainLoop();
return; return;
} }
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
namespace ygo { namespace ygo {
ImageManager imageManager;
bool ImageManager::Initial(const path dir) { bool ImageManager::Initial(const path dir) {
tCover[0] = driver->getTexture((dir + path("/textures/cover.jpg")).c_str()); tCover[0] = driver->getTexture((dir + path("/textures/cover.jpg")).c_str());
tCover[1] = driver->getTexture((dir + path("/textures/cover2.jpg")).c_str()); tCover[1] = driver->getTexture((dir + path("/textures/cover2.jpg")).c_str());
......
...@@ -80,6 +80,8 @@ public: ...@@ -80,6 +80,8 @@ public:
std::list<std::string> support_types; std::list<std::string> support_types;
}; };
extern ImageManager imageManager;
} }
#endif // IMAGEMANAGER_H #endif // IMAGEMANAGER_H
...@@ -23,14 +23,14 @@ void UpdateDeck() { ...@@ -23,14 +23,14 @@ void UpdateDeck() {
char deckbuf[1024]; char deckbuf[1024];
char* pdeck = deckbuf; char* pdeck = deckbuf;
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.main.size() + mainGame->deckManager->current_deck.extra.size()); BufferIO::WriteInt32(pdeck, deckManager.current_deck.main.size() + deckManager.current_deck.extra.size());
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.side.size()); BufferIO::WriteInt32(pdeck, deckManager.current_deck.side.size());
for(size_t i = 0; i < mainGame->deckManager->current_deck.main.size(); ++i) for(size_t i = 0; i < deckManager.current_deck.main.size(); ++i)
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.main[i]->first); BufferIO::WriteInt32(pdeck, deckManager.current_deck.main[i]->first);
for(size_t i = 0; i < mainGame->deckManager->current_deck.extra.size(); ++i) for(size_t i = 0; i < deckManager.current_deck.extra.size(); ++i)
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.extra[i]->first); BufferIO::WriteInt32(pdeck, deckManager.current_deck.extra[i]->first);
for(size_t i = 0; i < mainGame->deckManager->current_deck.side.size(); ++i) for(size_t i = 0; i < deckManager.current_deck.side.size(); ++i)
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.side[i]->first); BufferIO::WriteInt32(pdeck, deckManager.current_deck.side[i]->first);
DuelClient::SendBufferToServer(CTOS_UPDATE_DECK, deckbuf, pdeck - deckbuf); DuelClient::SendBufferToServer(CTOS_UPDATE_DECK, deckbuf, pdeck - deckbuf);
} }
bool MenuHandler::OnEvent(const irr::SEvent& event) { bool MenuHandler::OnEvent(const irr::SEvent& event) {
...@@ -99,7 +99,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -99,7 +99,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if(status != 0) { if(status != 0) {
mainGame->gMutex.lock(); mainGame->gMutex.lock();
mainGame->soundManager->PlaySoundEffect(SoundManager::SFX::INFO); mainGame->soundManager->PlaySoundEffect(SoundManager::SFX::INFO);
mainGame->addMessageBox(L"", mainGame->dataManager->GetSysString(1412)); mainGame->addMessageBox(L"", dataManager.GetSysString(1412));
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
break; break;
} else { } else {
...@@ -181,7 +181,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -181,7 +181,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
} }
case BUTTON_HP_READY: { case BUTTON_HP_READY: {
if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 || if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 ||
!mainGame->deckManager->LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) { !deckManager.LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) {
break; break;
} }
UpdateDeck(); UpdateDeck();
...@@ -266,7 +266,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -266,7 +266,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break; break;
mainGame->gMutex.lock(); mainGame->gMutex.lock();
wchar_t textBuffer[256]; wchar_t textBuffer[256];
myswprintf(textBuffer, L"%ls\n%ls", mainGame->lstReplayList->getListItem(sel), mainGame->dataManager->GetSysString(1363)); myswprintf(textBuffer, L"%ls\n%ls", mainGame->lstReplayList->getListItem(sel), dataManager.GetSysString(1363));
mainGame->SetStaticText(mainGame->stQMessage, 370 * mainGame->xScale, mainGame->textFont, textBuffer); mainGame->SetStaticText(mainGame->stQMessage, 370 * mainGame->xScale, mainGame->textFont, textBuffer);
mainGame->PopupElement(mainGame->wQuery); mainGame->PopupElement(mainGame->wQuery);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
...@@ -296,7 +296,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -296,7 +296,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if(sel == -1) if(sel == -1)
break; break;
mainGame->gMutex.lock(); mainGame->gMutex.lock();
mainGame->wReplaySave->setText(mainGame->dataManager->GetSysString(1364)); mainGame->wReplaySave->setText(dataManager.GetSysString(1364));
mainGame->ebRSName->setText(mainGame->lstReplayList->getListItem(sel)); mainGame->ebRSName->setText(mainGame->lstReplayList->getListItem(sel));
mainGame->PopupElement(mainGame->wReplaySave); mainGame->PopupElement(mainGame->wReplaySave);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
...@@ -334,15 +334,15 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -334,15 +334,15 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
int main = replay.ReadInt32(); int main = replay.ReadInt32();
Deck tmp_deck; Deck tmp_deck;
for(int j = 0; j < main; ++j) for(int j = 0; j < main; ++j)
tmp_deck.main.push_back(mainGame->dataManager->GetCodePointer(replay.ReadInt32())); tmp_deck.main.push_back(dataManager.GetCodePointer(replay.ReadInt32()));
int extra = replay.ReadInt32(); int extra = replay.ReadInt32();
for(int j = 0; j < extra; ++j) for(int j = 0; j < extra; ++j)
tmp_deck.extra.push_back(mainGame->dataManager->GetCodePointer(replay.ReadInt32())); tmp_deck.extra.push_back(dataManager.GetCodePointer(replay.ReadInt32()));
FileSystem::SafeFileName(namebuf[i]); FileSystem::SafeFileName(namebuf[i]);
myswprintf(filename, L"deck/%ls-%d %ls.ydk", ex_filename, i + 1, namebuf[i]); myswprintf(filename, L"deck/%ls-%d %ls.ydk", ex_filename, i + 1, namebuf[i]);
mainGame->deckManager->SaveDeck(tmp_deck, filename); deckManager.SaveDeck(tmp_deck, filename);
} }
mainGame->stACMessage->setText(mainGame->dataManager->GetSysString(1335)); mainGame->stACMessage->setText(dataManager.GetSysString(1335));
mainGame->PopupElement(mainGame->wACMessage, 20); mainGame->PopupElement(mainGame->wACMessage, 20);
break; break;
} }
...@@ -367,7 +367,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -367,7 +367,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
wchar_t arg1[512]; wchar_t arg1[512];
if(mainGame->botInfo[sel].select_deckfile) { if(mainGame->botInfo[sel].select_deckfile) {
wchar_t botdeck[256]; wchar_t botdeck[256];
mainGame->deckManager->GetDeckFile(botdeck, mainGame->cbBotDeckCategory, mainGame->cbBotDeck); deckManager.GetDeckFile(botdeck, mainGame->cbBotDeckCategory, mainGame->cbBotDeck);
myswprintf(arg1, L"%ls DeckFile='%ls'", mainGame->botInfo[sel].command, botdeck); myswprintf(arg1, L"%ls DeckFile='%ls'", mainGame->botInfo[sel].command, botdeck);
} }
else else
...@@ -385,7 +385,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -385,7 +385,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
wchar_t warg1[512]; wchar_t warg1[512];
if(mainGame->botInfo[sel].select_deckfile) { if(mainGame->botInfo[sel].select_deckfile) {
wchar_t botdeck[256]; wchar_t botdeck[256];
mainGame->deckManager->GetDeckFile(botdeck, mainGame->cbBotDeckCategory, mainGame->cbBotDeck); deckManager.GetDeckFile(botdeck, mainGame->cbBotDeckCategory, mainGame->cbBotDeck);
myswprintf(warg1, L"%ls DeckFile='%ls'", mainGame->botInfo[sel].command, botdeck); myswprintf(warg1, L"%ls DeckFile='%ls'", mainGame->botInfo[sel].command, botdeck);
} }
else else
...@@ -412,7 +412,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -412,7 +412,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
wchar_t warg1[512]; wchar_t warg1[512];
if(mainGame->botInfo[sel].select_deckfile) { if(mainGame->botInfo[sel].select_deckfile) {
wchar_t botdeck[256]; wchar_t botdeck[256];
mainGame->deckManager->GetDeckFile(botdeck, mainGame->cbBotDeckCategory, mainGame->cbBotDeck); deckManager.GetDeckFile(botdeck, mainGame->cbBotDeckCategory, mainGame->cbBotDeck);
myswprintf(warg1, L"%ls DeckFile='%ls'", mainGame->botInfo[sel].command, botdeck); myswprintf(warg1, L"%ls DeckFile='%ls'", mainGame->botInfo[sel].command, botdeck);
} }
else else
...@@ -456,7 +456,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -456,7 +456,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
case BUTTON_DECK_EDIT: { case BUTTON_DECK_EDIT: {
mainGame->RefreshCategoryDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); mainGame->RefreshCategoryDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
if(mainGame->cbDBCategory->getSelected() != -1 && mainGame->cbDBDecks->getSelected() != -1) { if(mainGame->cbDBCategory->getSelected() != -1 && mainGame->cbDBDecks->getSelected() != -1) {
mainGame->deckManager->LoadDeck(mainGame->cbDBCategory, mainGame->cbDBDecks); deckManager.LoadDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
mainGame->ebDeckname->setText(L""); mainGame->ebDeckname->setText(L"");
} }
mainGame->HideElement(mainGame->wMainMenu); mainGame->HideElement(mainGame->wMainMenu);
...@@ -492,7 +492,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -492,7 +492,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if(Replay::RenameReplay(mainGame->lstReplayList->getListItem(prev_sel), newname)) { if(Replay::RenameReplay(mainGame->lstReplayList->getListItem(prev_sel), newname)) {
mainGame->lstReplayList->setItem(prev_sel, newname, -1); mainGame->lstReplayList->setItem(prev_sel, newname, -1);
} else { } else {
mainGame->addMessageBox(L"", mainGame->dataManager->GetSysString(1365)); mainGame->addMessageBox(L"", dataManager.GetSysString(1365));
} }
} }
prev_operation = 0; prev_operation = 0;
...@@ -635,7 +635,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -635,7 +635,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->env->setFocus(mainGame->wHostPrepare); mainGame->env->setFocus(mainGame->wHostPrepare);
if(static_cast<irr::gui::IGUICheckBox*>(caller)->isChecked()) { if(static_cast<irr::gui::IGUICheckBox*>(caller)->isChecked()) {
if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 || if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 ||
!mainGame->deckManager->LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) { !deckManager.LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) {
static_cast<irr::gui::IGUICheckBox*>(caller)->setChecked(false); static_cast<irr::gui::IGUICheckBox*>(caller)->setChecked(false);
break; break;
} }
......
#include "netserver.h" #include "netserver.h"
#include "single_duel.h" #include "single_duel.h"
#include "tag_duel.h" #include "tag_duel.h"
#include "game.h"
namespace ygo { namespace ygo {
std::unordered_map<bufferevent*, DuelPlayer> NetServer::users; std::unordered_map<bufferevent*, DuelPlayer> NetServer::users;
...@@ -239,14 +238,14 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) { ...@@ -239,14 +238,14 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
if(pkt->info.mode > 2) if(pkt->info.mode > 2)
pkt->info.mode = 0; pkt->info.mode = 0;
unsigned int hash = 1; unsigned int hash = 1;
for(auto lfit = mainGame->deckManager->_lfList.begin(); lfit != mainGame->deckManager->_lfList.end(); ++lfit) { for(auto lfit = deckManager._lfList.begin(); lfit != deckManager._lfList.end(); ++lfit) {
if(pkt->info.lflist == lfit->hash) { if(pkt->info.lflist == lfit->hash) {
hash = pkt->info.lflist; hash = pkt->info.lflist;
break; break;
} }
} }
if(hash == 1) if(hash == 1)
pkt->info.lflist = mainGame->deckManager->_lfList[0].hash; pkt->info.lflist = deckManager._lfList[0].hash;
#ifdef _IRR_ANDROID_PLATFORM_ #ifdef _IRR_ANDROID_PLATFORM_
HostInfo tmp; HostInfo tmp;
memcpy(&tmp, &pkt->info, sizeof(struct HostInfo)); memcpy(&tmp, &pkt->info, sizeof(struct HostInfo));
......
...@@ -244,7 +244,7 @@ void ReplayMode::EndDuel() { ...@@ -244,7 +244,7 @@ void ReplayMode::EndDuel() {
if(!is_closing) { if(!is_closing) {
mainGame->actionSignal.Reset(); mainGame->actionSignal.Reset();
mainGame->gMutex.lock(); mainGame->gMutex.lock();
mainGame->stMessage->setText(mainGame->dataManager->GetSysString(1501)); mainGame->stMessage->setText(dataManager.GetSysString(1501));
mainGame->HideElement(mainGame->wCardSelect); mainGame->HideElement(mainGame->wCardSelect);
mainGame->PopupElement(mainGame->wMessage); mainGame->PopupElement(mainGame->wMessage);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
......
...@@ -251,7 +251,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) { ...@@ -251,7 +251,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if(deck_error[dp->type]) { if(deck_error[dp->type]) {
deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type]; deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type];
} else { } else {
deckerror = mainGame->deckManager->CheckDeck(pdeck[dp->type], host_info.lflist, host_info.rule); deckerror = deckManager.CheckDeck(pdeck[dp->type], host_info.lflist, host_info.rule);
} }
} }
if(deckerror) { if(deckerror) {
...@@ -295,9 +295,9 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) { ...@@ -295,9 +295,9 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) {
return; return;
} }
if(duel_count == 0) { if(duel_count == 0) {
deck_error[dp->type] = mainGame->deckManager->LoadDeck(pdeck[dp->type], (int*)deckbuf, mainc, sidec); deck_error[dp->type] = deckManager.LoadDeck(pdeck[dp->type], (int*)deckbuf, mainc, sidec);
} else { } else {
if(mainGame->deckManager->LoadSide(pdeck[dp->type], (int*)deckbuf, mainc, sidec)) { if(deckManager.LoadSide(pdeck[dp->type], (int*)deckbuf, mainc, sidec)) {
ready[dp->type] = true; ready[dp->type] = true;
NetServer::SendPacketToPlayer(dp, STOC_DUEL_START); NetServer::SendPacketToPlayer(dp, STOC_DUEL_START);
if(ready[0] && ready[1]) { if(ready[0] && ready[1]) {
......
...@@ -75,7 +75,7 @@ int SingleMode::SinglePlayThread() { ...@@ -75,7 +75,7 @@ int SingleMode::SinglePlayThread() {
mainGame->wInfos->setVisible(true); mainGame->wInfos->setVisible(true);
mainGame->wPallet->setVisible(true); mainGame->wPallet->setVisible(true);
mainGame->btnLeaveGame->setVisible(true); mainGame->btnLeaveGame->setVisible(true);
mainGame->btnLeaveGame->setText(mainGame->dataManager->GetSysString(1210)); mainGame->btnLeaveGame->setText(dataManager.GetSysString(1210));
mainGame->wPhase->setVisible(true); mainGame->wPhase->setVisible(true);
mainGame->dField.Clear(); mainGame->dField.Clear();
mainGame->dInfo.isFirst = true; mainGame->dInfo.isFirst = true;
...@@ -122,7 +122,7 @@ int SingleMode::SinglePlayThread() { ...@@ -122,7 +122,7 @@ int SingleMode::SinglePlayThread() {
wcsftime(timetext, 40, L"%Y-%m-%d %H-%M-%S", localedtime); wcsftime(timetext, 40, L"%Y-%m-%d %H-%M-%S", localedtime);
mainGame->ebRSName->setText(timetext); mainGame->ebRSName->setText(timetext);
if(!mainGame->chkAutoSaveReplay->isChecked()) { if(!mainGame->chkAutoSaveReplay->isChecked()) {
mainGame->wReplaySave->setText(mainGame->dataManager->GetSysString(1340)); mainGame->wReplaySave->setText(dataManager.GetSysString(1340));
mainGame->PopupElement(mainGame->wReplaySave); mainGame->PopupElement(mainGame->wReplaySave);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
mainGame->replaySignal.Reset(); mainGame->replaySignal.Reset();
...@@ -130,7 +130,7 @@ int SingleMode::SinglePlayThread() { ...@@ -130,7 +130,7 @@ int SingleMode::SinglePlayThread() {
} else { } else {
mainGame->actionParam = 1; mainGame->actionParam = 1;
wchar_t msgbuf[256]; wchar_t msgbuf[256];
myswprintf(msgbuf, mainGame->dataManager->GetSysString(1367), timetext); myswprintf(msgbuf, dataManager.GetSysString(1367), timetext);
mainGame->SetStaticText(mainGame->stACMessage, 310, mainGame->guiFont, msgbuf); mainGame->SetStaticText(mainGame->stACMessage, 310, mainGame->guiFont, msgbuf);
mainGame->PopupElement(mainGame->wACMessage, 20); mainGame->PopupElement(mainGame->wACMessage, 20);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
......
...@@ -151,7 +151,7 @@ void SoundManager::StopBGM() { ...@@ -151,7 +151,7 @@ void SoundManager::StopBGM() {
} }
bool SoundManager::PlayChant(unsigned int code) { bool SoundManager::PlayChant(unsigned int code) {
CardData cd; CardData cd;
if(mainGame->dataManager->GetData(code, &cd) && (cd.alias != 0)) if(dataManager.GetData(code, &cd) && (cd.alias != 0))
code = cd.alias; code = cd.alias;
if(ChantsList.count(code) && bgm_PlayingName != ChantsList[code]) { if(ChantsList.count(code) && bgm_PlayingName != ChantsList[code]) {
......
...@@ -226,7 +226,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) { ...@@ -226,7 +226,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if(deck_error[dp->type]) { if(deck_error[dp->type]) {
deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type]; deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type];
} else { } else {
deckerror = mainGame->deckManager->CheckDeck(pdeck[dp->type], host_info.lflist, host_info.rule); deckerror = deckManager.CheckDeck(pdeck[dp->type], host_info.lflist, host_info.rule);
} }
} }
if(deckerror) { if(deckerror) {
...@@ -269,7 +269,7 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) { ...@@ -269,7 +269,7 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) {
NetServer::SendPacketToPlayer(dp, STOC_ERROR_MSG, scem); NetServer::SendPacketToPlayer(dp, STOC_ERROR_MSG, scem);
return; return;
} }
deck_error[dp->type] = mainGame->deckManager->LoadDeck(pdeck[dp->type], (int*)deckbuf, mainc, sidec); deck_error[dp->type] = deckManager.LoadDeck(pdeck[dp->type], (int*)deckbuf, mainc, sidec);
} }
void TagDuel::StartDuel(DuelPlayer* dp) { void TagDuel::StartDuel(DuelPlayer* dp) {
if(dp != host_player) if(dp != host_player)
......
...@@ -121,8 +121,8 @@ namespace ygo { ...@@ -121,8 +121,8 @@ namespace ygo {
} }
} }
void Utils::changeCursor(irr::IrrlichtDevice* device, irr::gui::ECURSOR_ICON icon) { void Utils::changeCursor(irr::gui::ECURSOR_ICON icon) {
irr::gui::ICursorControl* cursor = device->getCursorControl(); irr::gui::ICursorControl* cursor = mainGame->device->getCursorControl();
if (cursor->getActiveIcon() != icon) { if (cursor->getActiveIcon() != icon) {
cursor->setActiveIcon(icon); cursor->setActiveIcon(icon);
} }
...@@ -205,8 +205,8 @@ namespace ygo { ...@@ -205,8 +205,8 @@ namespace ygo {
return res; return res;
} }
irr::io::IReadFile* Utils::FindandOpenFileFromArchives(std::vector<Utils::IrrArchiveHelper> archives, const path_string & path, const path_string & name) { irr::io::IReadFile* Utils::FindandOpenFileFromArchives(const path_string & path, const path_string & name) {
for(auto& archive : archives) { for(auto& archive : mainGame->archives) {
int res = -1; int res = -1;
Utils::FindfolderFiles(archive, path, [match = &name, &res](int index, path_string name, bool isdir, void* payload)->bool { Utils::FindfolderFiles(archive, path, [match = &name, &res](int index, path_string name, bool isdir, void* payload)->bool {
if(isdir) if(isdir)
......
...@@ -35,12 +35,13 @@ namespace ygo { ...@@ -35,12 +35,13 @@ namespace ygo {
static bool Deletedirectory(const path_string& source); static bool Deletedirectory(const path_string& source);
static void CreateResourceFolders(); static void CreateResourceFolders();
static void takeScreenshot(irr::IrrlichtDevice* device); static void takeScreenshot(irr::IrrlichtDevice* device);
static void changeCursor(irr::IrrlichtDevice* device, irr::gui::ECURSOR_ICON icon); static void ToggleFullscreen();
static void changeCursor(irr::gui::ECURSOR_ICON icon);
static void FindfolderFiles(const path_string& path, const std::function<void(path_string, bool, void*)>& cb, void* payload = nullptr); static void FindfolderFiles(const path_string& path, const std::function<void(path_string, bool, void*)>& cb, void* payload = nullptr);
static std::vector<path_string> FindfolderFiles(const path_string& path, std::vector<path_string> extensions, int subdirectorylayers = 0); static std::vector<path_string> FindfolderFiles(const path_string& path, std::vector<path_string> extensions, int subdirectorylayers = 0);
static void FindfolderFiles(IrrArchiveHelper& archive, const path_string& path, const std::function<bool(int, path_string, bool, void*)>& cb, void* payload = nullptr); static void FindfolderFiles(IrrArchiveHelper& archive, const path_string& path, const std::function<bool(int, path_string, bool, void*)>& cb, void* payload = nullptr);
static std::vector<int> FindfolderFiles(IrrArchiveHelper& archive, const path_string& path, std::vector<path_string> extensions, int subdirectorylayers = 0); static std::vector<int> FindfolderFiles(IrrArchiveHelper& archive, const path_string& path, std::vector<path_string> extensions, int subdirectorylayers = 0);
static irr::io::IReadFile* FindandOpenFileFromArchives(std::vector<Utils::IrrArchiveHelper> archives, const path_string& path, const path_string& name); static irr::io::IReadFile* FindandOpenFileFromArchives(const path_string& path, const path_string& name);
static std::wstring NormalizePath(std::wstring path, bool trailing_slash = true); static std::wstring NormalizePath(std::wstring path, bool trailing_slash = true);
static std::wstring GetFileExtension(std::wstring file); static std::wstring GetFileExtension(std::wstring file);
static std::wstring GetFilePath(std::wstring file); static std::wstring GetFilePath(std::wstring file);
......
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