Commit e8ca4858 authored by 神楽坂玲奈's avatar 神楽坂玲奈
parents 579c823a 1f987b40
#include "client_field.h"
#include "client_card.h"
#include "duelclient.h"
#include "data_manager.h"
#include "image_manager.h"
#include "game.h"
......@@ -1099,6 +1100,47 @@ void ClientField::FadeCard(ClientCard * pcard, int alpha, int frame) {
pcard->is_fading = true;
pcard->aniFrame = frame;
}
bool ClientField::ShowSelectSum(bool panelmode) {
if(panelmode) {
if(CheckSelectSum()) {
if(selectsum_cards.size() == 0 || selectable_cards.size() == 0) {
SetResponseSelectedCards();
if(mainGame->wCardSelect->isVisible())
mainGame->HideElement(mainGame->wCardSelect, true);
else {
DuelClient::SendResponse();
return true;
}
} else {
select_ready = true;
mainGame->wCardSelect->setVisible(false);
mainGame->dField.ShowSelectCard(true);
}
} else {
select_ready = false;
mainGame->wCardSelect->setVisible(false);
mainGame->dField.ShowSelectCard();
}
} else {
if(CheckSelectSum()) {
if(selectsum_cards.size() == 0 || selectable_cards.size() == 0) {
SetResponseSelectedCards();
DuelClient::SendResponse();
return true;
} else {
select_ready = true;
wchar_t wbuf[256], *pwbuf = wbuf;
BufferIO::CopyWStrRef(dataManager.GetSysString(209), pwbuf, 256);
*pwbuf++ = L'\n';
BufferIO::CopyWStrRef(dataManager.GetSysString(210), pwbuf, 256);
mainGame->stQMessage->setText(wbuf);
mainGame->PopupElement(mainGame->wQuery);
}
} else
select_ready = false;
}
return false;
}
bool ClientField::CheckSelectSum() {
std::set<ClientCard*> selable;
std::set<ClientCard*>::iterator sit;
......@@ -1116,9 +1158,8 @@ bool ClientField::CheckSelectSum() {
selable.erase(selected_cards[i]);
}
selectsum_cards.clear();
bool ret;
if (select_mode == 0) {
ret = check_sel_sum_s(selable, 0, select_sumval);
bool ret = check_sel_sum_s(selable, 0, select_sumval);
selectable_cards.clear();
for(sit = selectsum_cards.begin(); sit != selectsum_cards.end(); ++sit) {
(*sit)->is_selectable = true;
......@@ -1127,7 +1168,7 @@ bool ClientField::CheckSelectSum() {
return ret;
} else {
int op1, op2, mm = -1, ms, m, max = 0, sumc = 0, sums;
ret = false;
bool ret = false;
for (size_t i = 0; i < selected_cards.size(); ++i) {
op1 = selected_cards[i]->opParam & 0xffff;
op2 = selected_cards[i]->opParam >> 16;
......@@ -1198,9 +1239,13 @@ bool ClientField::check_min(std::set<ClientCard*>& left, std::set<ClientCard*>::
|| check_min(left, index, min, max);
}
bool ClientField::check_sel_sum_s(const std::set<ClientCard*>& left, int index, int acc) {
if (acc < 0)
return false;
if (index == (int)selected_cards.size()) {
if (acc == 0)
return true;
if (acc == 0) {
int count = selected_cards.size() - must_select_count;
return count >= select_min && count <= select_max;
}
check_sel_sum_t(left, acc);
return false;
}
......
......@@ -97,6 +97,7 @@ public:
void GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, irr::core::vector3df* r, bool setTrans = false);
void MoveCard(ClientCard* pcard, int frame);
void FadeCard(ClientCard* pcard, int alpha, int frame);
bool ShowSelectSum(bool panelmode);
bool CheckSelectSum();
bool check_min(std::set<ClientCard*>& left, std::set<ClientCard*>::iterator index, int min, int max);
bool check_sel_sum_s(const std::set<ClientCard*>& left, int index, int acc);
......
......@@ -1220,7 +1220,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if(!forced && (mainGame->ignore_chain || ((count == 0 || specount == 0) && !mainGame->always_chain))) {
SetResponseI(-1);
mainGame->dField.ClearChainSelect();
if(mainGame->chkWaitChain->isChecked()) {
if(mainGame->chkWaitChain->isChecked() && !mainGame->ignore_chain) {
mainGame->WaitFrameSignal(rnd.real() * 20 + 20);
}
DuelClient::SendResponse();
......@@ -1460,19 +1460,17 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
panelmode = true;
}
std::sort(mainGame->dField.selectsum_all.begin(), mainGame->dField.selectsum_all.end(), ClientCard::client_card_sort);
mainGame->dField.CheckSelectSum();
if(select_hint)
myswprintf(textBuffer, L"%ls(%d)", dataManager.GetDesc(select_hint), mainGame->dField.select_sumval);
else myswprintf(textBuffer, L"%ls(%d)", dataManager.GetSysString(560), mainGame->dField.select_sumval);
select_hint = 0;
if (panelmode) {
mainGame->wCardSelect->setText(textBuffer);
mainGame->dField.ShowSelectCard();
} else {
mainGame->stHintMsg->setText(textBuffer);
mainGame->stHintMsg->setVisible(true);
}
return false;
return mainGame->dField.ShowSelectSum(panelmode);
}
case MSG_SORT_CARD:
case MSG_SORT_CHAIN: {
......
......@@ -576,20 +576,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case MSG_SELECT_SUM: {
command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10];
selected_cards.push_back(command_card);
if (CheckSelectSum()) {
if(selectsum_cards.size() == 0 || selectable_cards.size() == 0) {
SetResponseSelectedCards();
mainGame->HideElement(mainGame->wCardSelect, true);
} else {
select_ready = true;
mainGame->wCardSelect->setVisible(false);
mainGame->dField.ShowSelectCard(true);
}
} else {
select_ready = false;
mainGame->wCardSelect->setVisible(false);
mainGame->dField.ShowSelectCard();
}
ShowSelectSum(true);
break;
}
case MSG_SORT_CHAIN:
......@@ -1218,21 +1205,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
selected_cards.erase(it);
} else
selected_cards.push_back(clicked_card);
if (CheckSelectSum()) {
if(selectsum_cards.size() == 0 || selectable_cards.size() == 0) {
SetResponseSelectedCards();
DuelClient::SendResponse();
} else {
select_ready = true;
wchar_t wbuf[256], *pwbuf = wbuf;
BufferIO::CopyWStrRef(dataManager.GetSysString(209), pwbuf, 256);
*pwbuf++ = L'\n';
BufferIO::CopyWStrRef(dataManager.GetSysString(210), pwbuf, 256);
mainGame->stQMessage->setText(wbuf);
mainGame->PopupElement(mainGame->wQuery);
}
} else
select_ready = false;
ShowSelectSum(false);
break;
}
}
......
......@@ -4,10 +4,10 @@
#system
!system 1 通常召唤
!system 2 特殊召唤
!system 3 转召唤
!system 3 转召唤
!system 4 通常召唤成功
!system 5 特殊召唤成功
!system 6 转召唤成功
!system 6 转召唤成功
!system 7 发动
!system 10 移除指示物
!system 11 支付LP
......@@ -452,8 +452,8 @@
!setname 0x1 正义盟军 AOJ
!setname 0x2 次世代 ジェネクス
!setname 0x1002 真次世代 レアル·ジェネクス
!setname 0x2002 盟军·次世代 A·ジェネクス
!setname 0x3 N/A
!setname 0x2002 盟军·次世代 Aジェネクス
#setname 0x3 N/A
!setname 0x4 亚马逊 アマゾネス
!setname 0x5 秘仪之力 アルカナフォース
!setname 0x6 暗黑界 暗黒界
......@@ -464,38 +464,38 @@
#setname 0x6008 邪心英雄 E-HERO
!setname 0xa008 假面英雄 MHERO
!setname 0xc008 命运英雄 D-HERO
!setname 0x9 新宇 ネオス
!setname 0x9 新宇 ネオス
!setname 0xa 入魔 ヴェルズ
!setname 0x100a 侵入魔人 インヴェルズ
!setname 0xb 永火 インフェルニティ
!setname 0xc 外星 エーリアン
!setname 0xc 外星 エーリアン
!setname 0xd 剑士 セイバー
!setname 0x100d X-剑士 X-セイバー
#setname 0x300d XX-剑士 XX-セイバー
!setname 0xe 电气 エレキ
!setname 0xf 扰乱 ジャマ
!setname 0xf 扰乱 ジャマ
!setname 0x10 薰风 ガスタ
!setname 0x11 机巧 カラクリ
!setname 0x12 青蛙 ガエル
!setname 0x13 机皇 機皇
!setname 0x3013 机皇帝 機皇帝
!setname 0x6013 机皇兵 機皇兵
!setname 0x14 N/A
#setname 0x14 N/A
!setname 0x15 巨大战舰 巨大戦艦
!setname 0x16 机人 ロイド
!setname 0x1016 交通机人 ビークロイド
!setname 0x2016 疾行机人 SR(スピードロイド)
!setname 0x2016 疾行机人 スピードロイド
!setname 0x17 同调士 シンクロン
!setname 0x18 云魔物 雲魔物
!setname 0x19 剑斗兽 剣闘獣
!setname 0x1a 黑蝎 黒蠍
!setname 0x1b 幻兽 幻獣
!setname 0x101b 幻兽机 幻獣機
!setname 0x1c N/A
#setname 0x1c N/A
!setname 0x1d 核成 コアキメイル
!setname 0x1e 茧状体 C(コクーン)
!setname 0x1f 新空间侠 N(ネオスペーシアン)
!setname 0x20 紫炎 紫炎(シエン)
!setname 0x20 紫炎 紫炎
!setname 0x21 地缚神 地縛神
!setname 0x22 朱罗纪 ジュラック
!setname 0x23Sin
......@@ -508,7 +508,7 @@
!setname 0x2a 自然 ナチュル
!setname 0x2b 忍者
!setname 0x2c 炎狱 フレムベル
!setname 0x2d N/A
#setname 0x2d N/A
!setname 0x2e 守墓 墓守
!setname 0x2f 冰结界 氷結界
!setname 0x30 大日 ヴァイロン
......@@ -525,12 +525,12 @@
!setname 0x39 熔岩 ラヴァル
!setname 0x3a 遗式 リチュア
!setname 0x3b 真红眼 レッドアイズ
!setname 0x3c 爬虫妖 レプティレス
!setname 0x3c 爬虫妖 レプティレス
!setname 0x3d 六武众 六武衆
!setname 0x3e 异虫 ワーム
!setname 0x3f 救世 セイヴァ
!setname 0x3f 救世 セイヴァ
!setname 0x40 被封印者 封印されし
!setname 0x41 LV LV
!setname 0x41 LV LV(レベル)
!setname 0x42 极星 極星
!setname 0x3042 极星天 極星天
!setname 0x6042 极星兽 極星獣
......@@ -549,7 +549,7 @@
#setname 0x4a 时械神 時械神
!setname 0x4b 极神 極神
!setname 0x4c 落穴 落とし穴
!setname 0x4d N/A
#setname 0x4d N/A
#setname 0x4e 进化 エヴォル
!setname 0x304e 进化虫 エヴォルド
!setname 0x604e 进化龙 エヴォルダ
......@@ -569,9 +569,9 @@
!setname 0x5a 企鹅 ペンギン
!setname 0x5b 番茄小子 トマボー
!setname 0x5c 斯芬克斯 スフィンクス
!setname 0x5d N/A
!setname 0x5e N/A
!setname 0x5f N/A
#setname 0x5d N/A
#setname 0x5e N/A
#setname 0x5f N/A
!setname 0x60 竹光
!setname 0x61 忍法
!setname 0x62 卡通 トゥーン
......@@ -586,7 +586,7 @@
!setname 0x6a 幻蝶刺客 幻蝶の刺客
!setname 0x6b 保镖 バウンサー
#setname 0x6c 光芒使者 ライトレイ
!setname 0x6d 魔人 魔(ま)人(じん)
!setname 0x6d 魔人 魔人(まじん)
!setname 0x6e 魔导 魔導
!setname 0x106e 魔导书 魔導書
!setname 0x6f 英豪 ヒロイック
......@@ -597,23 +597,23 @@
!setname 0x72 齿轮齿轮 ギアギア
!setname 0x1072 齿轮齿轮人 ギアギアーノ
!setname 0x73 超量 エクシーズ
!setname 0x1073 混沌超量 CX
!setname 0x1073 混沌超量 CX(カオスエクシーズ)
!setname 0x74 水精鱗
!setname 0x75 深渊 アビス
!setname 0x76 纹章兽 紋章獣
!setname 0x77 海皇
!setname 0x78 迅捷 素早い
!setname 0x79 炎星
#setname 0x7a 圣 聖(せい)
!setname 0x107a 圣骑士 聖騎士(せいきし)
!setname 0x207a 圣剑 聖剣(せいけん)
#setname 0x7a 圣 聖
!setname 0x107a 圣骑士 聖騎士(せいきし)
!setname 0x207a 圣剑 聖剣(せいけん)
!setname 0x7b 银河 ギャラクシー
!setname 0x107b 银河眼 ギャラクシーアイズ
!setname 0x307b 银河眼时空龙
!setname 0x307b 银河眼时空龙 ギャラクシーアイズ・タキオン・ドラゴン
!setname 0x7c 炎舞
!setname 0x7d 阳炎 ヘイズ
!setname 0x107d 阳炎兽 陽炎獣
!setname 0x7e 异热同心武器 ZW
!setname 0x7e 异热同心武器 ZW(ゼアル・ウェポン)
!setname 0x7f 霍普 ホープ
!setname 0x107f 希望皇 霍普 希望皇ホープ
!setname 0x80 尘妖 ダストン
......@@ -621,7 +621,7 @@
!setname 0x1081 炎王兽 炎王獣
!setname 0x82 怒怒怒 ドドド
!setname 0x83 机关傀儡 ギミック・パペット
!setname 0x84 燃烧拳击手 BK
!setname 0x84 燃烧拳击手 BK(バーニングナックラー)
!setname 0x85 超级防御机器人 SDロボ
!setname 0x86 光天使
!setname 0x87 阴影 アンブラル
......@@ -643,7 +643,7 @@
!setname 0x95 升阶魔法 RUM
!setname 0x96 电子鱼人 フィッシュボーグ
!setname 0x97 古遗物 アーティファクト
!setname 0x98 魔术师
!setname 0x98 魔术师 魔術師
!setname 0x99 异色眼 オッドアイズ
!setname 0x9a 超重武者
!setname 0x9b 幻奏
......@@ -652,13 +652,13 @@
!setname 0x109c 星辉士 ステラナイト
!setname 0x9d 影依 シャドール
!setname 0x9e 龙星 竜星
!setname 0x9f 娱乐伙伴 EM
!setname 0x9f 娱乐伙伴 EM(エンタメイト)
!setname 0xa0 传说的骑士 伝説の騎士
!setname 0xa1 传说之龙 伝説の竜
#setname 0xa2 魔术 マジシャン
!setname 0x10a2 黑魔术 ブラック·マジシャン
!setname 0x20a2 魔术少女 マジシャン·ガール
!setname 0x30a2 黑魔术少女 ブラック·マジシャン·ガール
!setname 0x10a2 黑魔术 ブラックマジシャン
!setname 0x20a2 魔术少女 マジシャンガール
!setname 0x30a2 黑魔术少女 ブラック・マジシャン・ガール
!setname 0xa3 星尘 スターダスト
!setname 0xa4 羽翼栗子球 ハネクリボー
!setname 0xa5 变化 チェンジ
......@@ -674,7 +674,7 @@
!setname 0xaf DD
!setname 0x10af DDD
!setname 0xb0 加特姆士 ガトムズ
!setname 0xb1 彼岸 Burning Abyss
!setname 0xb1 彼岸
!setname 0xb2 超级运动员 U.A.
!setname 0xb3 妖仙兽 妖仙獣
!setname 0xb4 影灵衣 影霊衣
......@@ -685,8 +685,8 @@
!setname 0xb6 外神
!setname 0xb7 旧神
!setname 0xb8 古神
!setname 0xb9 烈焰加农炮 ブレイズ·キャノン
!setname 0xba 急袭猛禽 RR
!setname 0xb9 烈焰加农炮 ブレイズキャノン
!setname 0xba 急袭猛禽 RR(レイド・ラプターズ)
!setname 0xbb 狱火机 インフェルノイド
!setname 0xbc 人造人 人造人間
!setname 0xbd 暗黑骑士 盖亚 暗黒騎士ガイア
......@@ -694,11 +694,11 @@
!setname 0xbf 灵使 霊使い
!setname 0xc0 凭依装着 憑依装着
!setname 0xc1 PSY骨架 PSYフレーム
!setname 0xc2 动力工具 パワー·ツール
!setname 0xc2 动力工具 パワーツール
!setname 0xc3 锋利小鬼 エッジインプ
!setname 0xc4 神数 セフィラ
!setname 0xc5 炼狱 煉獄
!setname 0xc6 娱乐法师 Em
!setname 0xc6 娱乐法师 Em(エンタメイジ)
!setname 0xc7 龙剑士 竜剣士
!setname 0xc8 点火骑士 イグナイト
!setname 0xc9 芳香 アロマ
......
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