Commit fc43ebb3 authored by woodee's avatar woodee

Merge pull request #1514 from DailyShana/setname

display and search setname
parents 84597221 aa825400
......@@ -102,6 +102,12 @@ bool DataManager::LoadStrings(const char* file) {
wchar_t* pbuf = new wchar_t[len + 1];
wcscpy(pbuf, strBuffer);
_counterStrings[value] = pbuf;
} else if(!strcmp(strbuf, "setname")) {
sscanf(&linebuf[8], "%x %240[^\t^\n]", &value, strbuf);//using tab for comment
int len = BufferIO::DecodeUTF8(strbuf, strBuffer);
wchar_t* pbuf = new wchar_t[len + 1];
wcscpy(pbuf, strBuffer);
_setnameStrings[value] = pbuf;
}
}
fclose(fp);
......@@ -182,6 +188,18 @@ const wchar_t* DataManager::GetCounterName(int code) {
return unknown_string;
return csit->second;
}
const wchar_t* DataManager::GetSetName(int code) {
auto csit = _setnameStrings.find(code);
if(csit == _setnameStrings.end())
return L"";
return csit->second;
}
unsigned int DataManager::GetSetCode(const wchar_t* setname) {
for(auto csit = _setnameStrings.begin(); csit != _setnameStrings.end(); csit++)
if(wcscmp(csit->second, setname) == 0)
return csit->first;
return 0;
}
const wchar_t* DataManager::GetNumString(int num, bool bracket) {
if(!bracket)
return numStrings[num];
......@@ -259,6 +277,22 @@ const wchar_t* DataManager::FormatType(int type) {
return unknown_string;
return tpBuffer;
}
const wchar_t* DataManager::FormatSetName(unsigned long long setcode) {
wchar_t* p = scBuffer;
for(int i = 0; i < 4; ++i) {
const wchar_t* setname = GetSetName((setcode >> i * 16) & 0xffff);
if(setname != L"") {
BufferIO::CopyWStrRef(setname, p, 16);
*p = L'|';
*++p = 0;
}
}
if(p != scBuffer)
*(p - 1) = 0;
else
return unknown_string;
return scBuffer;
}
int DataManager::CardReader(int code, void* pData) {
if(!dataManager.GetData(code, (CardData*)pData))
memset(pData, 0, sizeof(CardData));
......
......@@ -23,16 +23,20 @@ public:
const wchar_t* GetSysString(int code);
const wchar_t* GetVictoryString(int code);
const wchar_t* GetCounterName(int code);
const wchar_t* GetSetName(int code);
unsigned int GetSetCode(const wchar_t* setname);
const wchar_t* GetNumString(int num, bool bracket = false);
const wchar_t* FormatLocation(int location, int sequence);
const wchar_t* FormatAttribute(int attribute);
const wchar_t* FormatRace(int race);
const wchar_t* FormatType(int type);
const wchar_t* FormatSetName(unsigned long long setcode);
std::unordered_map<unsigned int, CardDataC> _datas;
std::unordered_map<unsigned int, CardString> _strings;
std::unordered_map<unsigned int, wchar_t*> _counterStrings;
std::unordered_map<unsigned int, wchar_t*> _victoryStrings;
std::unordered_map<unsigned int, wchar_t*> _setnameStrings;
wchar_t* _sysStrings[2048];
wchar_t numStrings[256][4];
......@@ -40,6 +44,7 @@ public:
wchar_t attBuffer[128];
wchar_t racBuffer[128];
wchar_t tpBuffer[128];
wchar_t scBuffer[128];
static wchar_t strBuffer[2048];
static const wchar_t* unknown_string;
......
......@@ -657,7 +657,10 @@ void DeckBuilder::FilterCards() {
myswprintf(result_string, L"%d", results.size());
return;
}
if(pstr[0] == 0 || (pstr[0] == L'$' && pstr[1] == 0))
unsigned int set_code = 0;
if(pstr[0] == L'#')
set_code = dataManager.GetSetCode(&pstr[1]);
if(pstr[0] == 0 || (pstr[0] == L'$' && pstr[1] == 0) || (pstr[0] == L'#' && pstr[1] == 0))
pstr = 0;
auto strpointer = dataManager._strings.begin();
for(code_pointer ptr = dataManager._datas.begin(); ptr != dataManager._datas.end(); ++ptr, ++strpointer) {
......@@ -723,8 +726,23 @@ void DeckBuilder::FilterCards() {
if(pstr[0] == L'$') {
if(wcsstr(text.name, &pstr[1]) == 0)
continue;
}
else {
} else if(pstr[0] == L'#' && set_code) {
unsigned long long sc = data.setcode;
if(data.alias) {
auto aptr = dataManager._datas.find(data.alias);
if(aptr != dataManager._datas.end())
sc = aptr->second.setcode;
}
bool res = false;
int settype = set_code & 0xfff;
int setsubtype = set_code & 0xf000;
while(sc) {
if ((sc & 0xfff) == settype && (sc & 0xf000 & setsubtype) == setsubtype)
res = true;
sc = sc >> 16;
}
if(!res) continue;
} else {
if(wcsstr(text.name, pstr) == 0 && wcsstr(text.text, pstr) == 0)
continue;
}
......
......@@ -917,6 +917,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->stName->setText(L"");
mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false);
}
......@@ -931,6 +932,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->stName->setText(L"");
mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false);
}
......@@ -1603,6 +1605,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->stName->setText(L"");
mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false);
}
......
......@@ -244,8 +244,10 @@ bool Game::Initialize() {
stInfo->setOverrideColor(SColor(255, 0, 0, 255));
stDataInfo = env->addStaticText(L"", rect<s32>(15, 60, 296, 83), false, true, tabInfo, -1, false);
stDataInfo->setOverrideColor(SColor(255, 0, 0, 255));
stText = env->addStaticText(L"", rect<s32>(15, 83, 287, 324), false, true, tabInfo, -1, false);
scrCardText = env->addScrollBar(false, rect<s32>(267, 83, 287, 324), tabInfo, SCROLL_CARDTEXT);
stSetName = env->addStaticText(L"", rect<s32>(15, 83, 296, 106), false, true, tabInfo, -1, false);
stSetName->setOverrideColor(SColor(255, 0, 0, 255));
stText = env->addStaticText(L"", rect<s32>(15, 106, 287, 324), false, true, tabInfo, -1, false);
scrCardText = env->addScrollBar(false, rect<s32>(267, 106, 287, 324), tabInfo, SCROLL_CARDTEXT);
scrCardText->setLargeStep(1);
scrCardText->setSmallStep(1);
scrCardText->setVisible(false);
......@@ -885,6 +887,19 @@ void Game::ShowCardInfo(int code) {
myswprintf(formatBuffer, L"%ls[%08d]", dataManager.GetName(cd.alias), cd.alias);
else myswprintf(formatBuffer, L"%ls[%08d]", dataManager.GetName(code), code);
stName->setText(formatBuffer);
int offset = 0;
unsigned long long sc = cd.setcode;
if(cd.alias) {
auto aptr = dataManager._datas.find(cd.alias);
if(aptr != dataManager._datas.end())
sc = aptr->second.setcode;
}
if(sc) {
offset = 23;
myswprintf(formatBuffer, L"%ls%ls", dataManager.GetSysString(1329), dataManager.FormatSetName(sc));
stSetName->setText(formatBuffer);
} else
stSetName->setText(L"");
if(cd.type & TYPE_MONSTER) {
myswprintf(formatBuffer, L"[%ls] %ls/%ls", dataManager.FormatType(cd.type), dataManager.FormatRace(cd.race), dataManager.FormatAttribute(cd.attribute));
stInfo->setText(formatBuffer);
......@@ -907,14 +922,16 @@ void Game::ShowCardInfo(int code) {
wcscat(formatBuffer, scaleBuffer);
}
stDataInfo->setText(formatBuffer);
stText->setRelativePosition(rect<s32>(15, 83, 287, 324));
scrCardText->setRelativePosition(rect<s32>(267, 83, 287, 324));
stSetName->setRelativePosition(rect<s32>(15, 83, 296, 106));
stText->setRelativePosition(rect<s32>(15, 83 + offset, 287, 324));
scrCardText->setRelativePosition(rect<s32>(267, 83 + offset, 287, 324));
} else {
myswprintf(formatBuffer, L"[%ls]", dataManager.FormatType(cd.type));
stInfo->setText(formatBuffer);
stDataInfo->setText(L"");
stText->setRelativePosition(rect<s32>(15, 60, 287, 324));
scrCardText->setRelativePosition(rect<s32>(267, 60, 287, 324));
stSetName->setRelativePosition(rect<s32>(15, 60, 296, 83));
stText->setRelativePosition(rect<s32>(15, 60 + offset, 287, 324));
scrCardText->setRelativePosition(rect<s32>(267, 60 + offset, 287, 324));
}
showingtext = dataManager.GetText(code);
const auto& tsize = stText->getRelativePosition();
......
......@@ -172,6 +172,7 @@ public:
irr::gui::IGUIStaticText* stName;
irr::gui::IGUIStaticText* stInfo;
irr::gui::IGUIStaticText* stDataInfo;
irr::gui::IGUIStaticText* stSetName;
irr::gui::IGUIStaticText* stText;
irr::gui::IGUIScrollBar* scrCardText;
irr::gui::IGUICheckBox* chkAutoPos;
......
......@@ -171,6 +171,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->stName->setText(L"");
mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false);
mainGame->wReplayControl->setVisible(true);
......
......@@ -62,6 +62,7 @@ int SingleMode::SinglePlayThread(void* param) {
mainGame->stName->setText(L"");
mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false);
mainGame->wPhase->setVisible(true);
......
......@@ -304,6 +304,7 @@
!system 1326 效果
!system 1327 重新搜索
!system 1328 结果中搜索
!system 1329 系列:
!system 1330 主卡组:
!system 1331 额外卡组:
!system 1332 副卡组:
......@@ -445,3 +446,281 @@
!counter 0x35 音响指示物
!counter 0x3036 娱乐法师指示物
!counter 0x37 大怪兽指示物
#setnames, using tab for comment
!setname 0x1 正义盟军 AOJ
!setname 0x2 次世代 ジェネクス
!setname 0x1002 真次世代 レアル·ジェネクス
!setname 0x2002 盟军·次世代 A·ジェネクス
!setname 0x3 N/A
!setname 0x4 亚马逊 アマゾネス
!setname 0x5 秘仪之力 アルカナフォース
!setname 0x6 暗黑界
!setname 0x7 古代的机械 アンティーク・ギア
!setname 0x8 英雄 HERO
!setname 0x3008 元素英雄 EHERO
!setname 0x6008 邪心英雄 E-HERO
!setname 0xc008 命运英雄 D-HERO
!setname 0x5008 幻影英雄 VHERO
!setname 0xa008 假面英雄 MHERO
!setname 0x9 新宇侠 ネオス
!setname 0xa 入魔 ヴェルズ
!setname 0x100a 侵入魔人 インヴェルズ
!setname 0xb 永火 インフェルニティ
!setname 0xc 外星人 エーリアン
!setname 0xd 剑士 セイバー
!setname 0x100d X-剑士 X-セイバー
!setname 0x300d XX-剑士 XX-セイバー
!setname 0xe 电气 エレキ
!setname 0xf 扰乱 オジャマ
!setname 0x10 薰风 ガスタ
!setname 0x11 机巧 カラクリ
!setname 0x12 青蛙 ガエル
!setname 0x13 机皇 機皇
!setname 0x3013 机皇帝 機皇帝
!setname 0x6013 机皇兵 機皇兵
!setname 0x14 N/A
!setname 0x15 巨大战舰 巨大戦艦
!setname 0x16 机人 ロイド
!setname 0x1016 交通机人 ビークロイド
!setname 0x2016 疾行机人 SR(スピードロイド)
!setname 0x17 同调士 シンクロン
!setname 0x18 云魔物 雲魔物
!setname 0x19 剑斗兽 剣闘獣
!setname 0x1a 黑蝎 黒蠍
!setname 0x1b 幻兽 幻獣
!setname 0x101b 幻兽机 幻獣機
!setname 0x1c N/A
!setname 0x1d 核成 コアキメイル
!setname 0x1e 茧状体 C(コクーン)
!setname 0x1f 新空间侠 N(ネオスペーシアン)
!setname 0x20 紫炎 紫炎(シエン)
!setname 0x21 地缚神 地縛神
!setname 0x22 朱罗纪 ジュラック
!setname 0x23Sin
!setname 0x24 废铁 スクラップ
!setname 0x25C(チェーン)
!setname 0x26 变形斗士 D(ディフォーマー)
!setname 0x27 科技属 TG(テックジーナス)
!setname 0x28 电池人 電池メン
!setname 0x29 龙骑兵团 ドラグニティ
!setname 0x2a 自然 ナチュル
!setname 0x2b 忍者
!setname 0x102b 机甲忍者 機甲忍者
!setname 0x2c 炎狱 フレムベル
!setname 0x2d N/A
!setname 0x2e 守墓 墓守
!setname 0x2f 冰结界 氷結界
!setname 0x30 大日 ヴァイロン
!setname 0x31 命运女郎 フォーチュンレディ
!setname 0x32 火山 ヴォルカニック
!setname 0x33 黑羽 BF(ブラックフェザー)
!setname 0x34 宝玉 宝玉
!setname 0x1034 宝玉兽 宝玉獣
!setname 0x35 魔轰神 魔轟神
!setname 0x1035 魔轰神兽 魔轟神獣
!setname 0x36 机甲 マシンナーズ
!setname 0x37 霞之谷 霞の谷
!setname 0x38 光道 ライトロード
!setname 0x39 熔岩 ラヴァル
!setname 0x3a 遗式 リチュア
!setname 0x3b 真红眼 レッドアイズ
!setname 0x3c 爬虫妖女 レプティレス
!setname 0x3d 六武众 六武衆
!setname 0x3e 异虫 ワーム
!setname 0x3f 救世 セイヴァ
!setname 0x40 被封印者 封印されし
!setname 0x41 LV LV
!setname 0x42 极星 極星
!setname 0x3042 极星天 極星天
!setname 0x6042 极星兽 極星獣
!setname 0xa042 极星灵 極星霊
!setname 0x5042 极星宝 極星宝
!setname 0x43 废品 ジャンク
!setname 0x44 代行者
!setname 0x45 恶魔 デーモン
!setname 0x1045 红莲魔 レッド・デーモン
!setname 0x46 融合 融合/フュージョン
!setname 0x47 宝石 ジェム
!setname 0x1047 宝石骑士 ジェムナイト
!setname 0x48 No. No.
!setname 0x1048 混沌No. CNo.
!setname 0x49 铳士
!setname 0x4a 时械神 時械神
!setname 0x4b 极神 極神
!setname 0x4c 落穴 落とし穴
!setname 0x4d N/A
!setname 0x4e 进化 エヴォル
!setname 0x304e 进化虫 エヴォルド
!setname 0x604e 进化龙 エヴォルダ
!setname 0x504e 进化帝 エヴォルカイザー
!setname 0x4f 爆裂 バスター
!setname 0x104f /爆裂体 /バスター
!setname 0x50 蛇毒 ヴェノム
!setname 0x51 齿轮 ガジェット
!setname 0x52 守护者 ガーディアン
!setname 0x53 星圣 セイクリッド
!setname 0x54 我我我 ガガガ
!setname 0x55 光子 フォトン
!setname 0x56 甲虫装机 甲虫装機
!setname 0x57 共鸣者 リゾネーター
!setname 0x58 发条 ゼンマイ
!setname 0x59 隆隆隆 ゴゴゴ
!setname 0x5a 企鹅 ペンギン
!setname 0x5b 番茄小子 トマボー
!setname 0x5c 斯芬克斯 スフィンクス
!setname 0x5d N/A
!setname 0x5e N/A
!setname 0x5f N/A
!setname 0x60 竹光
!setname 0x61 忍法
!setname 0x62 卡通 トゥーン
!setname 0x63 反应机 リアクター
!setname 0x64 鹰身 ハーピィ
!setname 0x65 侵略的 侵略の
!setname 0x66 战士 ウォリアー
!setname 0x1066 音响战士 音響戦士
!setname 0x67 钢铁 アイアン
!setname 0x68 铁皮 ブリキ
!setname 0x69 圣刻 聖刻
!setname 0x6a 幻蝶刺客 幻蝶の刺客
!setname 0x6b 保镖 バウンサー
!setname 0x6c 光芒使者 ライトレイ
!setname 0x6d 魔人 魔(ま)人(じん)
!setname 0x306d 龙魔人 竜魔人
!setname 0x606d 仪式魔人 儀式魔人
!setname 0x6e 魔导 魔導
!setname 0x106e 魔导书 魔導書
!setname 0x6f 英豪 ヒロイック
!setname 0x106f 英豪挑战者 HC
!setname 0x206f 英豪冠军 HC
!setname 0x70 先史遗产 先史遺産
!setname 0x71 魔偶甜点 マドルチェ
!setname 0x72 齿轮齿轮 ギアギア
!setname 0x1072 齿轮齿轮人 ギアギアーノ
!setname 0x73 超量 エクシーズ
!setname 0x1073 混沌超量 CX
!setname 0x74 水精鱗
!setname 0x75 深渊 アビス
!setname 0x76 纹章兽 紋章獣
!setname 0x77 海皇
!setname 0x78 迅捷 素早い
!setname 0x79 炎星
!setname 0x7a 圣 聖(せい)
!setname 0x107a 圣骑士 聖騎士(せいきし)
!setname 0x207a 圣剑 聖剣(せいけん)
!setname 0x7b 银河 ギャラクシー
!setname 0x107b 银河眼 ギャラクシーアイズ
!setname 0x307b 银河眼时空龙
!setname 0x7c 炎舞
!setname 0x7d 阳炎 ヘイズ
!setname 0x107d 阳炎兽 陽炎獣
!setname 0x7e 异热同心武器 ZW
!setname 0x7f 希望皇 霍普 希望皇ホープ
!setname 0x80 尘妖 ダストン
!setname 0x81 炎王
!setname 0x1081 炎王兽 炎王獣
!setname 0x82 怒怒怒 ドドド
!setname 0x83 机关傀儡 ギミック・パペット
!setname 0x84 燃烧拳击手 BK
!setname 0x85 超级防御机器人 SDロボ
!setname 0x86 光天使
!setname 0x87 阴影 アンブラル
!setname 0x88 武神
!setname 0x1088 武神器
!setname 0x89 洞 ホール
!setname 0x8a 虫惑 蟲惑
!setname 0x108a 虫惑魔 蟲惑魔
!setname 0x8b 恶餐 マリスボラス
!setname 0x8c 德鲁伊 ドルイド
!setname 0x8d 鬼计 ゴーストリック
!setname 0x8e 吸血鬼 ヴァンパイア
!setname 0x8f 刷啦啦 ズババ
!setname 0x90 森罗 森羅
!setname 0x91 王家长眠之谷 ネクロバレー
!setname 0x92 纹章 メダリオン
!setname 0x93 电子 サイバー
!setname 0x1093 电子龙 サイバー・ドラゴン
!setname 0x94 电子科技 サイバネティック
!setname 0x95 升阶魔法 RUM
!setname 0x96 电子鱼人 フィッシュボーグ
!setname 0x97 古遗物 アーティファクト
!setname 0x98 魔术师
!setname 0x99 异色眼 オッドアイズ
!setname 0x9a 超重武者
!setname 0x9b 幻奏
!setname 0x109b 幻奏的音姬 幻奏の音姫
!setname 0x9c 星守 テラナイト
!setname 0x109c 星辉士 ステラナイト
!setname 0x9d 影依 シャドール
!setname 0x9e 龙星 竜星
!setname 0x9f 娱乐伙伴 EM
!setname 0xa0 传说的骑士 伝説の騎士
!setname 0xa1 传说之龙 伝説の竜
!setname 0xa2 黑魔术 ブラック·マジシャン
!setname 0x10a2 黑魔术少女 ブラック·マジシャン·ガール
!setname 0xa3 星尘 スターダスト
!setname 0xa4 羽翼栗子球 ハネクリボー
!setname 0xa5 变化 チェンジ
!setname 0xa6 幼芽 スプラウト
!setname 0xa7 阿托利斯 アルトリウス
!setname 0xa8 兰斯洛特 ランスロット
!setname 0xa9 毛绒动物 ファーニマル
!setname 0xaa 机壳 クリフォート
!setname 0xab 文具电子人 ブンボーグ
!setname 0xac 哥布林 ゴブリン
!setname 0xad 魔玩具 デストーイ
!setname 0xae 契约书 契約書
!setname 0xaf DD
!setname 0x10af DDD
!setname 0xb0 加特姆士 ガトムズ
!setname 0xb1 彼岸 Burning Abyss
!setname 0xb2 超级运动员 U.A.
!setname 0xb3 妖仙兽 妖仙獣
!setname 0xb4 影灵衣 影霊衣
!setname 0xb5 灵兽 霊獣
!setname 0x10b5 灵兽使 霊獣使い
!setname 0x20b5 精灵兽 精霊獣
!setname 0x40b5 圣灵兽骑 聖霊獣騎
!setname 0xb6 外神
!setname 0xb7 旧神
!setname 0xb8 古神
!setname 0xb9 烈焰加农炮 ブレイズ·キャノン
!setname 0xba 急袭猛禽 RR
!setname 0xbb 狱火机 インフェルノイド
!setname 0xbc 人造人 人造人間
!setname 0xbd 暗黑骑士 盖亚 暗黒騎士ガイア
!setname 0xbe 帝王 帝王
!setname 0xbf 灵使 霊使い
!setname 0xc0 凭依装着 憑依装着
!setname 0xc1 PSY骨架 PSYフレーム
!setname 0xc2 动力工具 パワー·ツール
!setname 0xc3 锋利小鬼 エッジインプ
!setname 0xc4 神数 セフィラ
!setname 0xc5 炼狱 煉獄
!setname 0xc6 娱乐法师 Em
!setname 0xc7 龙剑士 竜剣士
!setname 0xc8 点火骑士 イグナイト
!setname 0xc9 芳香 アロマ
!setname 0xca 魔装战士 魔装戦士
!setname 0xcb 以太神兵龙 イーサルウェポン
!setname 0xcc 占术姬 占術姫
!setname 0xcd 水伶女 アクアアクトレス
!setname 0xce 水族馆 アクアリウム
!setname 0xcf 混沌战士 カオス・ソルジャー
!setname 0xd0 威风妖怪 マジェスペクター
!setname 0xd1 灰篮 グレイドル
!setname 0xd2 星兹 Kozmo
!setname 0xd3 大怪兽 Kaiju
!setname 0xd4 古生物 버제스토마
!setname 0xd5 但丁 ダンテ
!setname 0xd6 破坏剑 破壊剣
!setname 0xd7 巴斯达·布雷达 バスター・ブレイダー
!setname 0xd8 雾动机龙 ダイナミスト
!setname 0xd9 不知火
!setname 0xda 龙魔王 竜魔王
!setname 0xdb 幻影 ファントム
!setname 0x10db 幻影骑士团 幻影騎士団
!setname 0xdc 超级量子 超量
!setname 0x10dc 超级量子战士 超量士
!setname 0x20dc 超级量子机兽 超量機獣
!setname 0xdd 青眼 ブルーアイズ
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