Commit e6eb0544 authored by woodee's avatar woodee

Merge pull request #1767 from mercury233/patch-2

add chain buttons
parents 16e65bbd 7fba40e7
...@@ -123,6 +123,7 @@ public: ...@@ -123,6 +123,7 @@ public:
virtual bool OnEvent(const irr::SEvent& event); virtual bool OnEvent(const irr::SEvent& event);
void GetHoverField(int x, int y); void GetHoverField(int x, int y);
void ShowMenu(int flag, int x, int y); void ShowMenu(int flag, int x, int y);
void UpdateChainButtons();
void SetResponseSelectedCards() const; void SetResponseSelectedCards() const;
}; };
......
...@@ -285,6 +285,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -285,6 +285,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->btnSideOK->setVisible(true); mainGame->btnSideOK->setVisible(true);
if(mainGame->dInfo.player_type < 7) if(mainGame->dInfo.player_type < 7)
mainGame->btnLeaveGame->setVisible(false); mainGame->btnLeaveGame->setVisible(false);
mainGame->btnChainIgnore->setVisible(false);
mainGame->btnChainAlways->setVisible(false);
mainGame->btnChainWhenAvail->setVisible(false);
mainGame->deckBuilder.result_string[0] = L'0'; mainGame->deckBuilder.result_string[0] = L'0';
mainGame->deckBuilder.result_string[1] = 0; mainGame->deckBuilder.result_string[1] = 0;
mainGame->deckBuilder.results.clear(); mainGame->deckBuilder.results.clear();
...@@ -503,6 +506,11 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -503,6 +506,11 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
} }
case STOC_DUEL_END: { case STOC_DUEL_END: {
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
if(mainGame->dInfo.player_type < 7)
mainGame->btnLeaveGame->setVisible(false);
mainGame->btnChainIgnore->setVisible(false);
mainGame->btnChainAlways->setVisible(false);
mainGame->btnChainWhenAvail->setVisible(false);
mainGame->stMessage->setText(dataManager.GetSysString(1500)); mainGame->stMessage->setText(dataManager.GetSysString(1500));
mainGame->PopupElement(mainGame->wMessage); mainGame->PopupElement(mainGame->wMessage);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
...@@ -529,6 +537,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -529,6 +537,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->wPhase->setVisible(false); mainGame->wPhase->setVisible(false);
if(mainGame->dInfo.player_type < 7) if(mainGame->dInfo.player_type < 7)
mainGame->btnLeaveGame->setVisible(false); mainGame->btnLeaveGame->setVisible(false);
mainGame->btnChainIgnore->setVisible(false);
mainGame->btnChainAlways->setVisible(false);
mainGame->btnChainWhenAvail->setVisible(false);
time_t nowtime = time(NULL); time_t nowtime = time(NULL);
struct tm *localedtime = localtime(&nowtime); struct tm *localedtime = localtime(&nowtime);
char timebuf[40]; char timebuf[40];
...@@ -1215,7 +1226,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1215,7 +1226,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
panelmode = true; panelmode = true;
} }
} }
if(!forced && (mainGame->ignore_chain || ((count == 0 || specount == 0) && !mainGame->always_chain))) { if(!forced && (mainGame->ignore_chain || ((count == 0 || specount == 0) && !mainGame->always_chain)) && (count == 0 || !mainGame->chain_when_avail)) {
SetResponseI(-1); SetResponseI(-1);
mainGame->dField.ClearChainSelect(); mainGame->dField.ClearChainSelect();
if(mainGame->chkWaitChain->isChecked() && !mainGame->ignore_chain) { if(mainGame->chkWaitChain->isChecked() && !mainGame->ignore_chain) {
...@@ -1224,7 +1235,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1224,7 +1235,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
DuelClient::SendResponse(); DuelClient::SendResponse();
return true; return true;
} }
if(mainGame->chkAutoChain->isChecked() && forced) { if(mainGame->chkAutoChain->isChecked() && forced && !(mainGame->always_chain || mainGame->chain_when_avail)) {
SetResponseI(0); SetResponseI(0);
mainGame->dField.ClearChainSelect(); mainGame->dField.ClearChainSelect();
DuelClient::SendResponse(); DuelClient::SendResponse();
...@@ -1837,6 +1848,19 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1837,6 +1848,19 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->btnLeaveGame->setText(dataManager.GetSysString(1351)); mainGame->btnLeaveGame->setText(dataManager.GetSysString(1351));
mainGame->btnLeaveGame->setVisible(true); mainGame->btnLeaveGame->setVisible(true);
} }
if(!mainGame->dInfo.isReplay && mainGame->dInfo.player_type < 7) {
if(!mainGame->chkHideChainButton->isChecked()) {
mainGame->btnChainIgnore->setVisible(true);
mainGame->btnChainAlways->setVisible(true);
mainGame->btnChainWhenAvail->setVisible(true);
mainGame->dField.UpdateChainButtons();
}
else {
mainGame->btnChainIgnore->setVisible(false);
mainGame->btnChainAlways->setVisible(false);
mainGame->btnChainWhenAvail->setVisible(false);
}
}
if(mainGame->dInfo.isTag && mainGame->dInfo.turn != 1) { if(mainGame->dInfo.isTag && mainGame->dInfo.turn != 1) {
if(player == 0) if(player == 0)
mainGame->dInfo.tag_player[0] = !mainGame->dInfo.tag_player[0]; mainGame->dInfo.tag_player[0] = !mainGame->dInfo.tag_player[0];
......
...@@ -127,6 +127,27 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -127,6 +127,27 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
break; break;
} }
case BUTTON_CHAIN_IGNORE: {
mainGame->ignore_chain = mainGame->btnChainIgnore->isPressed();
mainGame->always_chain = false;
mainGame->chain_when_avail = false;
UpdateChainButtons();
break;
}
case BUTTON_CHAIN_ALWAYS: {
mainGame->always_chain = mainGame->btnChainAlways->isPressed();
mainGame->ignore_chain = false;
mainGame->chain_when_avail = false;
UpdateChainButtons();
break;
}
case BUTTON_CHAIN_WHENAVAIL: {
mainGame->chain_when_avail = mainGame->btnChainWhenAvail->isPressed();
mainGame->always_chain = false;
mainGame->ignore_chain = false;
UpdateChainButtons();
break;
}
case BUTTON_MSG_OK: { case BUTTON_MSG_OK: {
mainGame->HideElement(mainGame->wMessage); mainGame->HideElement(mainGame->wMessage);
mainGame->actionSignal.Set(); mainGame->actionSignal.Set();
...@@ -884,8 +905,12 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -884,8 +905,12 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
irr::core::position2di pos(x, y); irr::core::position2di pos(x, y);
if(x < 300) if(x < 300)
break; break;
if(mainGame->gameConf.control_mode == 1) if(mainGame->gameConf.control_mode == 1) {
mainGame->always_chain = event.MouseInput.isLeftPressed(); mainGame->always_chain = event.MouseInput.isLeftPressed();
mainGame->ignore_chain = false;
mainGame->chain_when_avail = false;
UpdateChainButtons();
}
if(mainGame->wCmdMenu->isVisible() && !mainGame->wCmdMenu->getRelativePosition().isPointInside(pos)) if(mainGame->wCmdMenu->isVisible() && !mainGame->wCmdMenu->getRelativePosition().isPointInside(pos))
mainGame->wCmdMenu->setVisible(false); mainGame->wCmdMenu->setVisible(false);
if(panel && panel->isVisible()) if(panel && panel->isVisible())
...@@ -1219,8 +1244,12 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1219,8 +1244,12 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case irr::EMIE_RMOUSE_LEFT_UP: { case irr::EMIE_RMOUSE_LEFT_UP: {
if(mainGame->dInfo.isReplay) if(mainGame->dInfo.isReplay)
break; break;
if(mainGame->gameConf.control_mode == 1 && event.MouseInput.X > 300) if(mainGame->gameConf.control_mode == 1 && event.MouseInput.X > 300) {
mainGame->ignore_chain = event.MouseInput.isRightPressed(); mainGame->ignore_chain = event.MouseInput.isRightPressed();
mainGame->always_chain = false;
mainGame->chain_when_avail = false;
UpdateChainButtons();
}
mainGame->wCmdMenu->setVisible(false); mainGame->wCmdMenu->setVisible(false);
if(mainGame->fadingList.size()) if(mainGame->fadingList.size())
break; break;
...@@ -1518,15 +1547,23 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1518,15 +1547,23 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case irr::EMIE_LMOUSE_PRESSED_DOWN: { case irr::EMIE_LMOUSE_PRESSED_DOWN: {
if(!mainGame->dInfo.isStarted) if(!mainGame->dInfo.isStarted)
break; break;
if(mainGame->gameConf.control_mode == 1 && event.MouseInput.X > 300) if(mainGame->gameConf.control_mode == 1 && event.MouseInput.X > 300) {
mainGame->always_chain = event.MouseInput.isLeftPressed(); mainGame->always_chain = event.MouseInput.isLeftPressed();
mainGame->ignore_chain = false;
mainGame->chain_when_avail = false;
UpdateChainButtons();
}
break; break;
} }
case irr::EMIE_RMOUSE_PRESSED_DOWN: { case irr::EMIE_RMOUSE_PRESSED_DOWN: {
if(!mainGame->dInfo.isStarted) if(!mainGame->dInfo.isStarted)
break; break;
if(mainGame->gameConf.control_mode == 1 && event.MouseInput.X > 300) if(mainGame->gameConf.control_mode == 1 && event.MouseInput.X > 300) {
mainGame->ignore_chain = event.MouseInput.isRightPressed(); mainGame->ignore_chain = event.MouseInput.isRightPressed();
mainGame->always_chain = false;
mainGame->chain_when_avail = false;
UpdateChainButtons();
}
break; break;
} }
default: default:
...@@ -1537,13 +1574,30 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1537,13 +1574,30 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case irr::EET_KEY_INPUT_EVENT: { case irr::EET_KEY_INPUT_EVENT: {
switch(event.KeyInput.Key) { switch(event.KeyInput.Key) {
case irr::KEY_KEY_A: { case irr::KEY_KEY_A: {
if(mainGame->gameConf.control_mode == 0) if(mainGame->gameConf.control_mode == 0) {
mainGame->always_chain = event.KeyInput.PressedDown; mainGame->always_chain = event.KeyInput.PressedDown;
mainGame->ignore_chain = false;
mainGame->chain_when_avail = false;
UpdateChainButtons();
}
break; break;
} }
case irr::KEY_KEY_S: { case irr::KEY_KEY_S: {
if(mainGame->gameConf.control_mode == 0) if(mainGame->gameConf.control_mode == 0) {
mainGame->ignore_chain = event.KeyInput.PressedDown; mainGame->ignore_chain = event.KeyInput.PressedDown;
mainGame->always_chain = false;
mainGame->chain_when_avail = false;
UpdateChainButtons();
}
break;
}
case irr::KEY_KEY_D: {
if(mainGame->gameConf.control_mode == 0) {
mainGame->chain_when_avail = event.KeyInput.PressedDown;
mainGame->always_chain = false;
mainGame->ignore_chain = false;
UpdateChainButtons();
}
break; break;
} }
case irr::KEY_KEY_R: { case irr::KEY_KEY_R: {
...@@ -1852,7 +1906,13 @@ void ClientField::ShowMenu(int flag, int x, int y) { ...@@ -1852,7 +1906,13 @@ void ClientField::ShowMenu(int flag, int x, int y) {
mainGame->wCmdMenu->setVisible(true); mainGame->wCmdMenu->setVisible(true);
mainGame->wCmdMenu->setRelativePosition(irr::core::recti(x - 20 , y - 20 - height, x + 80, y - 20)); mainGame->wCmdMenu->setRelativePosition(irr::core::recti(x - 20 , y - 20 - height, x + 80, y - 20));
} }
void ClientField::UpdateChainButtons() {
if(mainGame->btnChainAlways->isVisible()) {
mainGame->btnChainIgnore->setPressed(mainGame->ignore_chain);
mainGame->btnChainAlways->setPressed(mainGame->always_chain);
mainGame->btnChainWhenAvail->setPressed(mainGame->chain_when_avail);
}
}
void ClientField::SetResponseSelectedCards() const { void ClientField::SetResponseSelectedCards() const {
unsigned char respbuf[64]; unsigned char respbuf[64];
respbuf[0] = selected_cards.size(); respbuf[0] = selected_cards.size();
......
...@@ -239,6 +239,8 @@ bool Game::Initialize() { ...@@ -239,6 +239,8 @@ bool Game::Initialize() {
chkIgnore2->setChecked(gameConf.chkIgnore2 != 0); chkIgnore2->setChecked(gameConf.chkIgnore2 != 0);
chkHideSetname = env->addCheckBox(false, rect<s32>(20, 260, 280, 285), tabSystem, -1, dataManager.GetSysString(1354)); chkHideSetname = env->addCheckBox(false, rect<s32>(20, 260, 280, 285), tabSystem, -1, dataManager.GetSysString(1354));
chkHideSetname->setChecked(gameConf.chkHideSetname != 0); chkHideSetname->setChecked(gameConf.chkHideSetname != 0);
chkHideChainButton = env->addCheckBox(false, rect<s32>(20, 290, 280, 315), tabSystem, -1, dataManager.GetSysString(1355));
chkHideChainButton->setChecked(gameConf.chkHideChainButton != 0);
// //
wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L""); wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L"");
wHand->getCloseButton()->setVisible(false); wHand->getCloseButton()->setVisible(false);
...@@ -522,7 +524,17 @@ bool Game::Initialize() { ...@@ -522,7 +524,17 @@ bool Game::Initialize() {
wChat->setDrawTitlebar(false); wChat->setDrawTitlebar(false);
wChat->setVisible(false); wChat->setVisible(false);
ebChatInput = env->addEditBox(L"", rect<s32>(3, 2, 710, 22), true, wChat, EDITBOX_CHAT); ebChatInput = env->addEditBox(L"", rect<s32>(3, 2, 710, 22), true, wChat, EDITBOX_CHAT);
// //chain buttons
btnChainIgnore = env->addButton(rect<s32>(205, 100, 295, 135), 0, BUTTON_CHAIN_IGNORE, dataManager.GetSysString(1292));
btnChainAlways = env->addButton(rect<s32>(205, 140, 295, 175), 0, BUTTON_CHAIN_ALWAYS, dataManager.GetSysString(1293));
btnChainWhenAvail = env->addButton(rect<s32>(205, 180, 295, 215), 0, BUTTON_CHAIN_WHENAVAIL, dataManager.GetSysString(1294));
btnChainIgnore->setIsPushButton(true);
btnChainAlways->setIsPushButton(true);
btnChainWhenAvail->setIsPushButton(true);
btnChainIgnore->setVisible(false);
btnChainAlways->setVisible(false);
btnChainWhenAvail->setVisible(false);
//leave/surrender/exit
btnLeaveGame = env->addButton(rect<s32>(205, 5, 295, 80), 0, BUTTON_LEAVE_GAME, L""); btnLeaveGame = env->addButton(rect<s32>(205, 5, 295, 80), 0, BUTTON_LEAVE_GAME, L"");
btnLeaveGame->setVisible(false); btnLeaveGame->setVisible(false);
device->setEventReceiver(&menuHandler); device->setEventReceiver(&menuHandler);
...@@ -600,8 +612,6 @@ void Game::MainLoop() { ...@@ -600,8 +612,6 @@ void Game::MainLoop() {
driver->endScene(); driver->endScene();
if(closeSignal.Wait(0)) if(closeSignal.Wait(0))
CloseDuelWindow(); CloseDuelWindow();
if(!device->isWindowActive())
ignore_chain = false;
fps++; fps++;
cur_time = timer->getTime(); cur_time = timer->getTime();
if(cur_time < fps * 17 - 20) if(cur_time < fps * 17 - 20)
...@@ -842,6 +852,7 @@ void Game::LoadConfig() { ...@@ -842,6 +852,7 @@ void Game::LoadConfig() {
gameConf.chkIgnore1 = 0; gameConf.chkIgnore1 = 0;
gameConf.chkIgnore2 = 0; gameConf.chkIgnore2 = 0;
gameConf.chkHideSetname = 0; gameConf.chkHideSetname = 0;
gameConf.chkHideChainButton = 0;
gameConf.control_mode = 0; gameConf.control_mode = 0;
gameConf.draw_field_spell = 1; gameConf.draw_field_spell = 1;
gameConf.separate_clear_button = 1; gameConf.separate_clear_button = 1;
...@@ -891,6 +902,8 @@ void Game::LoadConfig() { ...@@ -891,6 +902,8 @@ void Game::LoadConfig() {
gameConf.chkIgnore2 = atoi(valbuf); gameConf.chkIgnore2 = atoi(valbuf);
} else if(!strcmp(strbuf, "hide_setname")) { } else if(!strcmp(strbuf, "hide_setname")) {
gameConf.chkHideSetname = atoi(valbuf); gameConf.chkHideSetname = atoi(valbuf);
} else if(!strcmp(strbuf, "hide_chain_button")) {
gameConf.chkHideChainButton = atoi(valbuf);
} else if(!strcmp(strbuf, "control_mode")) { } else if(!strcmp(strbuf, "control_mode")) {
gameConf.control_mode = atoi(valbuf); gameConf.control_mode = atoi(valbuf);
} else if(!strcmp(strbuf, "draw_field_spell")) { } else if(!strcmp(strbuf, "draw_field_spell")) {
...@@ -945,7 +958,8 @@ void Game::SaveConfig() { ...@@ -945,7 +958,8 @@ void Game::SaveConfig() {
fprintf(fp, "mute_opponent = %d\n", ((mainGame->chkIgnore1->isChecked()) ? 1 : 0)); fprintf(fp, "mute_opponent = %d\n", ((mainGame->chkIgnore1->isChecked()) ? 1 : 0));
fprintf(fp, "mute_spectators = %d\n", ((mainGame->chkIgnore2->isChecked()) ? 1 : 0)); fprintf(fp, "mute_spectators = %d\n", ((mainGame->chkIgnore2->isChecked()) ? 1 : 0));
fprintf(fp, "hide_setname = %d\n", ((mainGame->chkHideSetname->isChecked()) ? 1 : 0)); fprintf(fp, "hide_setname = %d\n", ((mainGame->chkHideSetname->isChecked()) ? 1 : 0));
fprintf(fp, "#control_mode = 0: Key A/S/R. control_mode = 1: MouseLeft/MouseRight/F9\n"); fprintf(fp, "hide_chain_button = %d\n", ((mainGame->chkHideChainButton->isChecked()) ? 1 : 0));
fprintf(fp, "#control_mode = 0: Key A/S/D/R. control_mode = 1: MouseLeft/MouseRight/NULL/F9\n");
fprintf(fp, "control_mode = %d\n", gameConf.control_mode); fprintf(fp, "control_mode = %d\n", gameConf.control_mode);
fprintf(fp, "draw_field_spell = %d\n", gameConf.draw_field_spell); fprintf(fp, "draw_field_spell = %d\n", gameConf.draw_field_spell);
fprintf(fp, "separate_clear_button = %d\n", gameConf.separate_clear_button); fprintf(fp, "separate_clear_button = %d\n", gameConf.separate_clear_button);
...@@ -1096,6 +1110,9 @@ void Game::CloseDuelWindow() { ...@@ -1096,6 +1110,9 @@ void Game::CloseDuelWindow() {
stHintMsg->setVisible(false); stHintMsg->setVisible(false);
btnSideOK->setVisible(false); btnSideOK->setVisible(false);
btnLeaveGame->setVisible(false); btnLeaveGame->setVisible(false);
btnChainIgnore->setVisible(false);
btnChainAlways->setVisible(false);
btnChainWhenAvail->setVisible(false);
wChat->setVisible(false); wChat->setVisible(false);
lstLog->clear(); lstLog->clear();
logParam.clear(); logParam.clear();
......
...@@ -32,6 +32,7 @@ struct Config { ...@@ -32,6 +32,7 @@ struct Config {
int chkIgnore1; int chkIgnore1;
int chkIgnore2; int chkIgnore2;
int chkHideSetname; int chkHideSetname;
int chkHideChainButton;
int control_mode; int control_mode;
int draw_field_spell; int draw_field_spell;
int separate_clear_button; int separate_clear_button;
...@@ -153,6 +154,7 @@ public: ...@@ -153,6 +154,7 @@ public:
wchar_t* lpcstring; wchar_t* lpcstring;
bool always_chain; bool always_chain;
bool ignore_chain; bool ignore_chain;
bool chain_when_avail;
bool is_building; bool is_building;
bool is_siding; bool is_siding;
...@@ -191,6 +193,7 @@ public: ...@@ -191,6 +193,7 @@ public:
irr::gui::IGUICheckBox* chkAutoChain; irr::gui::IGUICheckBox* chkAutoChain;
irr::gui::IGUICheckBox* chkWaitChain; irr::gui::IGUICheckBox* chkWaitChain;
irr::gui::IGUICheckBox* chkHideSetname; irr::gui::IGUICheckBox* chkHideSetname;
irr::gui::IGUICheckBox* chkHideChainButton;
irr::gui::IGUIListBox* lstLog; irr::gui::IGUIListBox* lstLog;
irr::gui::IGUIButton* btnClearLog; irr::gui::IGUIButton* btnClearLog;
irr::gui::IGUIButton* btnSaveLog; irr::gui::IGUIButton* btnSaveLog;
...@@ -386,6 +389,10 @@ public: ...@@ -386,6 +389,10 @@ public:
irr::gui::IGUIButton* btnReplaySwap; irr::gui::IGUIButton* btnReplaySwap;
//surrender/leave //surrender/leave
irr::gui::IGUIButton* btnLeaveGame; irr::gui::IGUIButton* btnLeaveGame;
//chain control
irr::gui::IGUIButton* btnChainIgnore;
irr::gui::IGUIButton* btnChainAlways;
irr::gui::IGUIButton* btnChainWhenAvail;
}; };
...@@ -469,6 +476,9 @@ extern Game* mainGame; ...@@ -469,6 +476,9 @@ extern Game* mainGame;
#define BUTTON_M2 261 #define BUTTON_M2 261
#define BUTTON_EP 262 #define BUTTON_EP 262
#define BUTTON_LEAVE_GAME 263 #define BUTTON_LEAVE_GAME 263
#define BUTTON_CHAIN_IGNORE 264
#define BUTTON_CHAIN_ALWAYS 265
#define BUTTON_CHAIN_WHENAVAIL 266
#define BUTTON_CLEAR_LOG 270 #define BUTTON_CLEAR_LOG 270
#define LISTBOX_LOG 271 #define LISTBOX_LOG 271
#define SCROLL_CARDTEXT 280 #define SCROLL_CARDTEXT 280
......
...@@ -279,6 +279,9 @@ ...@@ -279,6 +279,9 @@
!system 1281 自定义 !system 1281 自定义
!system 1290 忽略对方发言 !system 1290 忽略对方发言
!system 1291 忽略观战者发言 !system 1291 忽略观战者发言
!system 1292 忽略时点
!system 1293 显示时点
!system 1294 可用时点
!system 1300 禁限卡表: !system 1300 禁限卡表:
!system 1301 卡组列表: !system 1301 卡组列表:
!system 1302 保存 !system 1302 保存
...@@ -330,6 +333,7 @@ ...@@ -330,6 +333,7 @@
!system 1352 主要信息: !system 1352 主要信息:
!system 1353 播放起始于回合: !system 1353 播放起始于回合:
!system 1354 不显示卡片系列 !system 1354 不显示卡片系列
!system 1355 不显示询问连锁按钮
!system 1360 上一步 !system 1360 上一步
!system 1370 星数↑ !system 1370 星数↑
!system 1371 攻击↑ !system 1371 攻击↑
......
...@@ -18,6 +18,7 @@ waitchain = 0 ...@@ -18,6 +18,7 @@ waitchain = 0
mute_opponent = 0 mute_opponent = 0
mute_spectators = 0 mute_spectators = 0
hide_setname = 0 hide_setname = 0
#control_mode = 0: Key A/S/R. control_mode = 1: MouseLeft/MouseRight/F9 hide_chain_button = 0
#control_mode = 0: Key A/S/D/R. control_mode = 1: MouseLeft/MouseRight/NULL/F9
control_mode = 0 control_mode = 0
draw_field_spell = 1 draw_field_spell = 1
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