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) {
return p1->first < p2->first;
}
bool ClientCard::deck_sort_name(code_pointer p1, code_pointer p2) {
const wchar_t* name1 = mainGame->dataManager->GetName(p1->first);
const wchar_t* name2 = mainGame->dataManager->GetName(p2->first);
const wchar_t* name1 = dataManager.GetName(p1->first);
const wchar_t* name2 = dataManager.GetName(p2->first);
int res = wcscmp(name1, name2);
if(res != 0)
return res < 0;
......
......@@ -447,7 +447,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
else if(conti_selecting)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code));
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]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true);
......@@ -457,13 +457,13 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
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)
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);
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);
mainGame->stCardPos[i]->setText(formatBuffer);
// color
......@@ -535,12 +535,12 @@ void ClientField::ShowChainCard() {
if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
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]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true);
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);
mainGame->stCardPos[i]->setText(formatBuffer);
if(selectable_cards[i]->location == LOCATION_OVERLAY) {
......@@ -592,17 +592,17 @@ void ClientField::ShowLocationCard() {
if(display_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardDisplay[i], display_cards[i]->code));
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]->setPressed(false);
mainGame->btnCardDisplay[i]->setVisible(true);
wchar_t formatBuffer[2048];
if(display_cards[i]->location == LOCATION_OVERLAY)
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);
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);
mainGame->stDisplayPos[i]->setText(formatBuffer);
if(display_cards[i]->location == LOCATION_OVERLAY) {
......@@ -651,13 +651,13 @@ void ClientField::ShowSelectOption(int select_hint) {
bool quickmode = true;
mainGame->gMutex.lock();
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;
break;
}
}
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);
}
if(quickmode) {
......@@ -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));
} else {
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->btnOptionp->setVisible(false);
mainGame->btnOptionn->setVisible(count > 1);
......@@ -693,9 +693,9 @@ void ClientField::ShowSelectOption(int select_hint) {
mainGame->wOptions->setRelativePosition(pos);
}
if(select_hint)
myswprintf(textBuffer, L"%ls", mainGame->dataManager->GetDesc(select_hint));
myswprintf(textBuffer, L"%ls", dataManager.GetDesc(select_hint));
else
myswprintf(textBuffer, mainGame->dataManager->GetSysString(555));
myswprintf(textBuffer, dataManager.GetSysString(555));
mainGame->stOptions->setText(textBuffer);
mainGame->PopupElement(mainGame->wOptions);
mainGame->gMutex.unlock();
......@@ -1139,9 +1139,9 @@ bool ClientField::ShowSelectSum(bool panelmode) {
select_ready = true;
mainGame->wCardSelect->setVisible(false);
wchar_t wbuf[256], *pwbuf = wbuf;
BufferIO::CopyWStrRef(mainGame->dataManager->GetSysString(209), pwbuf, 256);
BufferIO::CopyWStrRef(dataManager.GetSysString(209), pwbuf, 256);
*pwbuf++ = L'\n';
BufferIO::CopyWStrRef(mainGame->dataManager->GetSysString(210), pwbuf, 256);
BufferIO::CopyWStrRef(dataManager.GetSysString(210), pwbuf, 256);
mainGame->stQMessage->setText(wbuf);
mainGame->PopupElement(mainGame->wQuery);
}
......@@ -1160,9 +1160,9 @@ bool ClientField::ShowSelectSum(bool panelmode) {
} else {
select_ready = true;
wchar_t wbuf[256], *pwbuf = wbuf;
BufferIO::CopyWStrRef(mainGame->dataManager->GetSysString(209), pwbuf, 256);
BufferIO::CopyWStrRef(dataManager.GetSysString(209), pwbuf, 256);
*pwbuf++ = L'\n';
BufferIO::CopyWStrRef(mainGame->dataManager->GetSysString(210), pwbuf, 256);
BufferIO::CopyWStrRef(dataManager.GetSysString(210), pwbuf, 256);
mainGame->stQMessage->setText(wbuf);
mainGame->PopupElement(mainGame->wQuery);
}
......@@ -1539,7 +1539,7 @@ void ClientField::UpdateDeclarableList() {
int trycode = BufferIO::GetVal(pname);
CardString cstr;
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();
ancard.clear();
mainGame->lstANCard->addItem(cstr.name.c_str());
......@@ -1553,7 +1553,7 @@ void ClientField::UpdateDeclarableList() {
int selcode = (sel == -1) ? 0 : cache[sel];
mainGame->lstANCard->clear();
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);
mainGame->lstANCard->addItem(cstr.name.c_str());
if(trycode == selcode)
......@@ -1565,9 +1565,9 @@ void ClientField::UpdateDeclarableList() {
}
mainGame->lstANCard->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) {
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
if(is_declarable(cp->second, declare_opcodes)) {
if(pname == cit->second.name) { //exact match
......
......@@ -7,6 +7,7 @@ namespace ygo {
const wchar_t* DataManager::unknown_string = L"???";
byte DataManager::scriptBuffer[0x20000];
IFileSystem* DataManager::FileSystem;
DataManager dataManager;
bool DataManager::LoadDB(const wchar_t* wfile) {
char file[256];
......@@ -357,7 +358,7 @@ const wchar_t* DataManager::FormatLinkMarker(int link_marker) {
return lmBuffer;
}
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));
return 0;
}
......
......@@ -64,6 +64,8 @@ public:
static IFileSystem* FileSystem;
};
extern DataManager dataManager;
}
#endif // DATAMANAGER_H
This diff is collapsed.
......@@ -6,6 +6,8 @@
namespace ygo {
DeckManager deckManager;
void DeckManager::LoadLFListSingle(const char* path) {
LFList* cur = nullptr;
FILE* fp = fopen(path, "r");
......@@ -61,7 +63,7 @@ const wchar_t* DeckManager::GetLFListName(int lfhash) {
});
if(lit != _lfList.end())
return lit->listName.c_str();
return mainGame->dataManager->unknown_string;
return dataManager.unknown_string;
}
std::unordered_map<int, int>* DeckManager::GetLFListContent(int lfhash) {
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) {
CardData cd;
for(int i = 0; i < mainc; ++i) {
code = dbuf[i];
if(!mainGame->dataManager->GetData(code, &cd)) {
if(!dataManager.GetData(code, &cd)) {
errorcode = code;
continue;
}
......@@ -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)) {
if(deck.extra.size() >= 15)
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) {
deck.main.push_back(mainGame->dataManager->GetCodePointer(code));
deck.main.push_back(dataManager.GetCodePointer(code));
}
}
for(int i = 0; i < sidec; ++i) {
code = dbuf[mainc + i];
if(!mainGame->dataManager->GetData(code, &cd)) {
if(!dataManager.GetData(code, &cd)) {
errorcode = code;
continue;
}
if(cd.type & TYPE_TOKEN)
continue;
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;
}
......
......@@ -54,6 +54,9 @@ public:
bool DeleteCategory(const wchar_t* name);
int TypeCount(std::vector<code_pointer> list, unsigned int ctype);
};
extern DeckManager deckManager;
}
#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 @@
#include "deck_con.h"
#include "menu_handler.h"
#include "sound_manager.h"
#include "deck_manager.h"
#include "image_manager.h"
#include <unordered_map>
#include <vector>
#include <list>
......@@ -154,7 +152,7 @@ public:
void DrawBackGround();
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 CheckMutual(ClientCard* pcard, int mark){}
void CheckMutual(ClientCard* pcard, int mark);
void DrawCards();
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);
......@@ -208,9 +206,6 @@ public:
// don't merge
std::unique_ptr<SoundManager> soundManager;
std::unique_ptr<DeckManager> deckManager;
std::unique_ptr<ImageManager> imageManager;
std::unique_ptr<DataManager> dataManager;
std::mutex gMutex;
Signal frameSignal;
Signal actionSignal;
......
......@@ -41,18 +41,16 @@ int GetListBoxIndex(IGUIListBox* listbox, const wchar_t * target){
}
void android_main(ANDROID_APP app) {
app->inputPollSource.process = android::process_input;
app_dummy();
#else
int main(int argc, char* argv[]) {
#endif
evthread_use_pthreads();
auto game = new ygo::Game;
if(ygo::mainGame != nullptr){
delete ygo::mainGame;
}
ygo::mainGame = game;
ygo::Game _game;
ygo::mainGame = &_game;
#ifdef _IRR_ANDROID_PLATFORM_
android::InitOptions *options = android::getInitOptions(app);
if(!game->Initialize(app, options)){
if(!ygo::mainGame->Initialize(app, options)){
delete options;
return;
}
......@@ -80,29 +78,29 @@ int main(int argc, char* argv[]) {
wchar_t fname[1024];
char* tmp = sub_string(arg, 2);
BufferIO::DecodeUTF8(tmp, fname);
game->dataManager->LoadDB(fname);
ygo::dataManager.LoadDB(fname);
delete tmp;
} else if(!strcmp(arg, "-k")) { // Keep on return
exit_on_return = false;
keep_on_return = true;
} else if(!strcmp(arg, "-c")) { // Create host
exit_on_return = !keep_on_return;
game->HideElement(game->wMainMenu);
ClickButton(game->btnJoinHost);
ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
ClickButton(ygo::mainGame->btnJoinHost);
break;
} else if(!strcmp(arg, "-j")) { // Join host
exit_on_return = !keep_on_return;
game->HideElement(game->wMainMenu);
ClickButton(game->btnJoinHost);
ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
ClickButton(ygo::mainGame->btnJoinHost);
break;
} else if(!strcmp(arg, "-r")) { // Replay
exit_on_return = !keep_on_return;
//显示录像窗口
game->HideElement(game->wMainMenu);
game->ShowElement(game->wReplay);
game->ebRepStartTurn->setText(L"1");
game->stReplayInfo->setText(L"");
game->RefreshReplay();
ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
ygo::mainGame->ShowElement(ygo::mainGame->wReplay);
ygo::mainGame->ebRepStartTurn->setText(L"1");
ygo::mainGame->stReplayInfo->setText(L"");
ygo::mainGame->RefreshReplay();
int index = -1;
if((i+1) < argc){//下一个参数是录像名
#ifdef _IRR_ANDROID_PLATFORM_
......@@ -113,24 +111,24 @@ int main(int argc, char* argv[]) {
wchar_t fname[1024];
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);
}
game->HideElement(game->wMainMenu);
ClickButton(game->btnReplayMode);
ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
ClickButton(ygo::mainGame->btnReplayMode);
if (index >= 0) {
game->lstReplayList->setSelected(index);
ClickButton(game->btnLoadReplay);
ygo::mainGame->lstReplayList->setSelected(index);
ClickButton(ygo::mainGame->btnLoadReplay);
}
break;//只播放一个
} else if(!strcmp(arg, "-s")) { // Single
exit_on_return = !keep_on_return;
//显示残局窗口
game->HideElement(game->wMainMenu);
game->ShowElement(game->wSinglePlay);
game->RefreshSingleplay();
game->RefreshBot();
ygo::mainGame->HideElement(ygo::mainGame->wMainMenu);
ygo::mainGame->ShowElement(ygo::mainGame->wSinglePlay);
ygo::mainGame->RefreshSingleplay();
ygo::mainGame->RefreshBot();
int index = -1;
if((i+1) < argc){//下一个参数是文件名
#ifdef _IRR_ANDROID_PLATFORM_
......@@ -140,12 +138,12 @@ int main(int argc, char* argv[]) {
#endif
wchar_t fname[1024];
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);
}
if(index >= 0){
game->lstSinglePlayList->setSelected(index);
ClickButton(game->btnLoadSinglePlay);
ygo::mainGame->lstSinglePlayList->setSelected(index);
ClickButton(ygo::mainGame->btnLoadSinglePlay);
}
break;
}
......@@ -153,8 +151,8 @@ int main(int argc, char* argv[]) {
#ifdef _IRR_ANDROID_PLATFORM_
delete options;
#endif
game->externalSignal.Set();
game->externalSignal.SetNoWait(true);
game->MainLoop();
ygo::mainGame->externalSignal.Set();
ygo::mainGame->externalSignal.SetNoWait(true);
ygo::mainGame->MainLoop();
return;
}
......@@ -3,6 +3,8 @@
namespace ygo {
ImageManager imageManager;
bool ImageManager::Initial(const path dir) {
tCover[0] = driver->getTexture((dir + path("/textures/cover.jpg")).c_str());
tCover[1] = driver->getTexture((dir + path("/textures/cover2.jpg")).c_str());
......
......@@ -80,6 +80,8 @@ public:
std::list<std::string> support_types;
};
extern ImageManager imageManager;
}
#endif // IMAGEMANAGER_H
......@@ -23,14 +23,14 @@ void UpdateDeck() {
char deckbuf[1024];
char* pdeck = deckbuf;
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.main.size() + mainGame->deckManager->current_deck.extra.size());
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.side.size());
for(size_t i = 0; i < mainGame->deckManager->current_deck.main.size(); ++i)
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.main[i]->first);
for(size_t i = 0; i < mainGame->deckManager->current_deck.extra.size(); ++i)
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.extra[i]->first);
for(size_t i = 0; i < mainGame->deckManager->current_deck.side.size(); ++i)
BufferIO::WriteInt32(pdeck, mainGame->deckManager->current_deck.side[i]->first);
BufferIO::WriteInt32(pdeck, deckManager.current_deck.main.size() + deckManager.current_deck.extra.size());
BufferIO::WriteInt32(pdeck, deckManager.current_deck.side.size());
for(size_t i = 0; i < deckManager.current_deck.main.size(); ++i)
BufferIO::WriteInt32(pdeck, deckManager.current_deck.main[i]->first);
for(size_t i = 0; i < deckManager.current_deck.extra.size(); ++i)
BufferIO::WriteInt32(pdeck, deckManager.current_deck.extra[i]->first);
for(size_t i = 0; i < deckManager.current_deck.side.size(); ++i)
BufferIO::WriteInt32(pdeck, deckManager.current_deck.side[i]->first);
DuelClient::SendBufferToServer(CTOS_UPDATE_DECK, deckbuf, pdeck - deckbuf);
}
bool MenuHandler::OnEvent(const irr::SEvent& event) {
......@@ -99,7 +99,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if(status != 0) {
mainGame->gMutex.lock();
mainGame->soundManager->PlaySoundEffect(SoundManager::SFX::INFO);
mainGame->addMessageBox(L"", mainGame->dataManager->GetSysString(1412));
mainGame->addMessageBox(L"", dataManager.GetSysString(1412));
mainGame->gMutex.unlock();
break;
} else {
......@@ -181,7 +181,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
case BUTTON_HP_READY: {
if(mainGame->cbCategorySelect->getSelected() == -1 || mainGame->cbDeckSelect->getSelected() == -1 ||
!mainGame->deckManager->LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) {
!deckManager.LoadDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect)) {
break;
}
UpdateDeck();
......@@ -266,7 +266,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break;
mainGame->gMutex.lock();
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->PopupElement(mainGame->wQuery);
mainGame->gMutex.unlock();
......@@ -296,7 +296,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if(sel == -1)
break;
mainGame->gMutex.lock();
mainGame->wReplaySave->setText(mainGame->dataManager->GetSysString(1364));
mainGame->wReplaySave->setText(dataManager.GetSysString(1364));
mainGame->ebRSName->setText(mainGame->lstReplayList->getListItem(sel));
mainGame->PopupElement(mainGame->wReplaySave);
mainGame->gMutex.unlock();
......@@ -334,15 +334,15 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
int main = replay.ReadInt32();
Deck tmp_deck;
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();
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]);
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);
break;
}
......@@ -367,7 +367,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
wchar_t arg1[512];
if(mainGame->botInfo[sel].select_deckfile) {
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);
}
else
......@@ -385,7 +385,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
wchar_t warg1[512];
if(mainGame->botInfo[sel].select_deckfile) {
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);
}
else
......@@ -412,7 +412,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
wchar_t warg1[512];
if(mainGame->botInfo[sel].select_deckfile) {
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);
}
else
......@@ -456,7 +456,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
case BUTTON_DECK_EDIT: {
mainGame->RefreshCategoryDeck(mainGame->cbDBCategory, mainGame->cbDBDecks);
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->HideElement(mainGame->wMainMenu);
......@@ -492,7 +492,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
if(Replay::RenameReplay(mainGame->lstReplayList->getListItem(prev_sel), newname)) {
mainGame->lstReplayList->setItem(prev_sel, newname, -1);
} else {
mainGame->addMessageBox(L"", mainGame->dataManager->GetSysString(1365));
mainGame->addMessageBox(L"", dataManager.GetSysString(1365));
}
}
prev_operation = 0;
......@@ -635,7 +635,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->env->setFocus(mainGame->wHostPrepare);
if(static_cast<irr::gui::IGUICheckBox*>(caller)->isChecked()) {
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);
break;
}
......
#include "netserver.h"
#include "single_duel.h"
#include "tag_duel.h"
#include "game.h"
namespace ygo {
std::unordered_map<bufferevent*, DuelPlayer> NetServer::users;
......@@ -239,14 +238,14 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
if(pkt->info.mode > 2)
pkt->info.mode = 0;
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) {
hash = pkt->info.lflist;
break;
}
}
if(hash == 1)
pkt->info.lflist = mainGame->deckManager->_lfList[0].hash;
pkt->info.lflist = deckManager._lfList[0].hash;
#ifdef _IRR_ANDROID_PLATFORM_
HostInfo tmp;
memcpy(&tmp, &pkt->info, sizeof(struct HostInfo));
......
......@@ -244,7 +244,7 @@ void ReplayMode::EndDuel() {
if(!is_closing) {
mainGame->actionSignal.Reset();
mainGame->gMutex.lock();
mainGame->stMessage->setText(mainGame->dataManager->GetSysString(1501));
mainGame->stMessage->setText(dataManager.GetSysString(1501));
mainGame->HideElement(mainGame->wCardSelect);
mainGame->PopupElement(mainGame->wMessage);
mainGame->gMutex.unlock();
......
......@@ -251,7 +251,7 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if(deck_error[dp->type]) {
deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type];
} 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) {
......@@ -295,9 +295,9 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) {
return;
}
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 {
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;
NetServer::SendPacketToPlayer(dp, STOC_DUEL_START);
if(ready[0] && ready[1]) {
......
......@@ -75,7 +75,7 @@ int SingleMode::SinglePlayThread() {
mainGame->wInfos->setVisible(true);
mainGame->wPallet->setVisible(true);
mainGame->btnLeaveGame->setVisible(true);
mainGame->btnLeaveGame->setText(mainGame->dataManager->GetSysString(1210));
mainGame->btnLeaveGame->setText(dataManager.GetSysString(1210));
mainGame->wPhase->setVisible(true);
mainGame->dField.Clear();
mainGame->dInfo.isFirst = true;
......@@ -122,7 +122,7 @@ int SingleMode::SinglePlayThread() {
wcsftime(timetext, 40, L"%Y-%m-%d %H-%M-%S", localedtime);
mainGame->ebRSName->setText(timetext);
if(!mainGame->chkAutoSaveReplay->isChecked()) {
mainGame->wReplaySave->setText(mainGame->dataManager->GetSysString(1340));
mainGame->wReplaySave->setText(dataManager.GetSysString(1340));
mainGame->PopupElement(mainGame->wReplaySave);
mainGame->gMutex.unlock();
mainGame->replaySignal.Reset();
......@@ -130,7 +130,7 @@ int SingleMode::SinglePlayThread() {
} else {
mainGame->actionParam = 1;
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->PopupElement(mainGame->wACMessage, 20);
mainGame->gMutex.unlock();
......
......@@ -151,7 +151,7 @@ void SoundManager::StopBGM() {
}
bool SoundManager::PlayChant(unsigned int code) {
CardData cd;
if(mainGame->dataManager->GetData(code, &cd) && (cd.alias != 0))
if(dataManager.GetData(code, &cd) && (cd.alias != 0))
code = cd.alias;
if(ChantsList.count(code) && bgm_PlayingName != ChantsList[code]) {
......
......@@ -226,7 +226,7 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if(deck_error[dp->type]) {
deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type];
} 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) {
......@@ -269,7 +269,7 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) {
NetServer::SendPacketToPlayer(dp, STOC_ERROR_MSG, scem);
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) {
if(dp != host_player)
......
......@@ -121,8 +121,8 @@ namespace ygo {
}
}
void Utils::changeCursor(irr::IrrlichtDevice* device, irr::gui::ECURSOR_ICON icon) {
irr::gui::ICursorControl* cursor = device->getCursorControl();
void Utils::changeCursor(irr::gui::ECURSOR_ICON icon) {
irr::gui::ICursorControl* cursor = mainGame->device->getCursorControl();
if (cursor->getActiveIcon() != icon) {
cursor->setActiveIcon(icon);
}
......@@ -205,8 +205,8 @@ namespace ygo {
return res;
}
irr::io::IReadFile* Utils::FindandOpenFileFromArchives(std::vector<Utils::IrrArchiveHelper> archives, const path_string & path, const path_string & name) {
for(auto& archive : archives) {
irr::io::IReadFile* Utils::FindandOpenFileFromArchives(const path_string & path, const path_string & name) {
for(auto& archive : mainGame->archives) {
int res = -1;
Utils::FindfolderFiles(archive, path, [match = &name, &res](int index, path_string name, bool isdir, void* payload)->bool {
if(isdir)
......
......@@ -35,12 +35,13 @@ namespace ygo {
static bool Deletedirectory(const path_string& source);
static void CreateResourceFolders();
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 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 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 GetFileExtension(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