Commit 33bde3fc authored by fallenstardust's avatar fallenstardust
parents 3c94fdd8 8242a7c5
#include "data_manager.h"
#include "game.h"
#include <stdio.h>
namespace ygo {
......@@ -321,13 +322,21 @@ int DataManager::CardReader(int code, void* pData) {
return 0;
}
byte* DataManager::ScriptReaderEx(const char* script_name, int* slen) {
char exname[256] = "./expansions";
strcat(exname, script_name + 1);//default script name: ./script/c%d.lua
byte* buffer = irr::android::android_script_reader(exname, slen);
if(buffer)
return buffer;
// default script name: ./script/c%d.lua
char first[256];
char second[256];
if(mainGame->gameConf.prefer_expansion_script) {
sprintf(first, "expansions/%s", script_name + 2);
sprintf(second, "%s", script_name + 2);
} else {
sprintf(first, "%s", script_name + 2);
sprintf(second, "expansions/%s", script_name + 2);
}
// byte* buffer = irr::android::android_script_reader(first, slen);
if(ScriptReader(first, slen))
return irr::android::android_script_reader(first, slen);
else
return irr::android::android_script_reader(script_name, slen);
return irr::android::android_script_reader(second, slen);
}
byte* DataManager::ScriptReader(const char* script_name, int* slen) {
......
......@@ -1828,6 +1828,11 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
return true;
break;
}
case CHECKBOX_PREFER_EXPANSION: {
mainGame->gameConf.prefer_expansion_script = mainGame->chkPreferExpansionScript->isChecked() ? 1 : 0;
return true;
break;
}
case CHECKBOX_DRAW_FIELD_SPELL: {
mainGame->gameConf.draw_field_spell = mainGame->chkDrawFieldSpell->isChecked() ? 1 : 0;
return true;
......@@ -2219,7 +2224,7 @@ void ClientField::UpdateChainButtons() {
}
}
void ClientField::ShowCancelOrFinishButton(int buttonOp) {
if (!mainGame->dInfo.isReplay) {
if (!mainGame->gameConf.hide_hint_button && !mainGame->dInfo.isReplay) {
switch (buttonOp) {
case 1:
mainGame->btnCancelOrFinish->setText(dataManager.GetSysString(1295));
......
......@@ -460,9 +460,6 @@ bool Game::Initialize() {
chkIgnore2 = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 30 * yScale), tabSystem, -1, dataManager.GetSysString(1291));
chkIgnore2->setChecked(gameConf.chkIgnore2 != 0);
posY += 60;
chkHideSetname = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 30 * yScale), tabSystem, -1, dataManager.GetSysString(1354));
chkHideSetname->setChecked(gameConf.chkHideSetname != 0);
posY += 60;
chkIgnoreDeckChanges = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260 * xScale, posY + 30 * yScale), tabSystem, -1, dataManager.GetSysString(1357));
chkIgnoreDeckChanges->setChecked(gameConf.chkIgnoreDeckChanges != 0);
posY += 60;
......@@ -474,6 +471,9 @@ bool Game::Initialize() {
posY += 60;
chkQuickAnimation = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260 * xScale, posY + 30 * yScale), tabSystem, CHECKBOX_QUICK_ANIMATION, dataManager.GetSysString(1299));
chkQuickAnimation->setChecked(gameConf.quick_animation != 0);
posY += 60;
chkPreferExpansionScript = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260 * xScale, posY + 30 * yScale), tabSystem, CHECKBOX_PREFER_EXPANSION, dataManager.GetSysString(1379));
chkPreferExpansionScript->setChecked(gameConf.prefer_expansion_script != 0);
//
wHand = env->addWindow(rect<s32>(500 * xScale, 450 * yScale, 825 * xScale, 605 * yScale), false, L"");
wHand->getCloseButton()->setVisible(false);
......@@ -850,12 +850,12 @@ bool Game::Initialize() {
}
//SINGLE MODE
irr::gui::IGUITab* tabSingle = wSingle->addTab(dataManager.GetSysString(1381));
env->addStaticText(dataManager.GetSysString(1352), rect<s32>(360 * xScale, 30 * yScale, 570 * xScale, 50 * yScale), false, true, tabSingle);
stSinglePlayInfo = env->addStaticText(L"", rect<s32>(360 * xScale, 60 * yScale, 570 * xScale, 295 * yScale), false, true, tabSingle);
lstSinglePlayList = CAndroidGUIListBox::addAndroidGUIListBox(env, rect<s32>(10 * xScale, 10 * yScale, 350 * xScale, 350 * yScale), tabSingle, LISTBOX_SINGLEPLAY_LIST, true, 40 * xScale);
lstSinglePlayList->setItemHeight(25 * yScale);
btnLoadSinglePlay = env->addButton(rect<s32>(460 * xScale, 260 * yScale, 570 * xScale, 300 * yScale), tabSingle, BUTTON_LOAD_SINGLEPLAY, dataManager.GetSysString(1211));
btnSinglePlayCancel = env->addButton(rect<s32>(460 * xScale, 310 * yScale, 570 * xScale, 350 * yScale),tabSingle, BUTTON_CANCEL_SINGLEPLAY, dataManager.GetSysString(1210));
env->addStaticText(dataManager.GetSysString(1352), rect<s32>(360 * xScale, 30 * yScale, 570 * xScale, 50 * yScale), false, true, tabSingle);
stSinglePlayInfo = env->addStaticText(L"", rect<s32>(360 * xScale, 60 * yScale, 570 * xScale, 295 * yScale), false, true, tabSingle);
//replay save
wReplaySave = env->addWindow(rect<s32>(490 * xScale, 180 * yScale, 840 * xScale, 340 * yScale), false, dataManager.GetSysString(1340));
wReplaySave->getCloseButton()->setVisible(false);
......@@ -1384,13 +1384,14 @@ void Game::LoadConfig() {
//system
gameConf.chkIgnore1 = android::getIntSetting(appMain, "chkIgnore1", 0);
gameConf.chkIgnore2 = android::getIntSetting(appMain, "chkIgnore2", 0);
gameConf.chkHideSetname = android::getIntSetting(appMain, "chkHideSetname", 0);
gameConf.control_mode = android::getIntSetting(appMain, "control_mode", 0);
gameConf.draw_field_spell = android::getIntSetting(appMain, "draw_field_spell", 1);
gameConf.chkIgnoreDeckChanges = android::getIntSetting(appMain, "chkIgnoreDeckChanges", 0);
gameConf.auto_save_replay = android::getIntSetting(appMain, "auto_save_replay", 0);
gameConf.quick_animation = android::getIntSetting(appMain, "quick_animation", 0);
//defult Setting without checked
gameConf.hide_setname = 0;
gameConf.hide_hint_button = 0;
gameConf.separate_clear_button = 1;
gameConf.search_multiple_keywords = 1;
gameConf.defaultOT = 1;
......@@ -1417,8 +1418,6 @@ void Game::SaveConfig() {
android::saveIntSetting(appMain, "chkIgnore1", gameConf.chkIgnore1);
gameConf.chkIgnore2 = chkIgnore2->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, "chkIgnore2", gameConf.chkIgnore2);
gameConf.chkHideSetname = chkHideSetname->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, "chkHideSetname", gameConf.chkHideSetname);
gameConf.chkIgnoreDeckChanges = chkIgnoreDeckChanges->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, "chkIgnoreDeckChanges", gameConf.chkIgnoreDeckChanges);
gameConf.auto_save_replay = chkAutoSaveReplay->isChecked() ? 1 : 0;
......@@ -1444,7 +1443,7 @@ void Game::ShowCardInfo(int code) {
else myswprintf(formatBuffer, L"%ls[%08d]", dataManager.GetName(code), code);
stName->setText(formatBuffer);
int offset = 0;
if(!chkHideSetname->isChecked()) {
if(!gameConf.hide_setname) {
unsigned long long sc = cd.setcode;
if(cd.alias) {
auto aptr = dataManager._datas.find(cd.alias);
......
......@@ -35,8 +35,8 @@ struct Config {
int chkWaitChain;
int chkIgnore1;
int chkIgnore2;
int chkHideSetname;
int chkHideHintButton;
int hide_setname;
int hide_hint_button;
int control_mode;
int draw_field_spell;
int separate_clear_button;
......@@ -47,7 +47,7 @@ struct Config {
int enable_bot_mode;
int quick_animation;
int auto_save_replay;
int chkAutoSaveReplay;
int prefer_expansion_script;
};
struct DuelInfo {
......@@ -248,11 +248,10 @@ public:
irr::gui::IGUICheckBox* chkDrawFieldSpell;
irr::gui::IGUICheckBox* chkQuickAnimation;
irr::gui::IGUICheckBox* chkAutoSaveReplay;
irr::gui::IGUICheckBox* chkHideSetname;
irr::gui::IGUICheckBox* chkHideHintButton;
irr::gui::IGUICheckBox* chkIgnoreDeckChanges;
irr::gui::IGUICheckBox* chkAutoSearch;
irr::gui::IGUICheckBox* chkMultiKeywords;
irr::gui::IGUICheckBox* chkPreferExpansionScript;
//main menu
irr::gui::IGUIWindow* wMainMenu;
irr::gui::IGUIButton* btnLanMode;
......@@ -648,6 +647,7 @@ extern Game* mainGame;
#define BUTTON_CANCEL_SINGLEPLAY 352
#define CHECKBOX_AUTO_SEARCH 360
#define CHECKBOX_MULTI_KEYWORDS 372
#define CHECKBOX_PREFER_EXPANSION 373
#define CHECKBOX_DISABLE_CHAT 364
#define CHECKBOX_DRAW_FIELD_SPELL 368
#define CHECKBOX_QUICK_ANIMATION 369
......
......@@ -479,6 +479,55 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->SetStaticText(mainGame->stReplayInfo, 180 * mainGame->xScale, mainGame->guiFont, (wchar_t*)repinfo.c_str());
break;
}
case LISTBOX_SINGLEPLAY_LIST: {
int sel = mainGame->lstSinglePlayList->getSelected();
if(sel == -1)
break;
const wchar_t* name = mainGame->lstSinglePlayList->getListItem(sel);
wchar_t fname[256];
myswprintf(fname, L"./single/%ls", name);
FILE *fp;
#ifdef _WIN32
fp = _wfopen(fname, L"rb");
#else
char filename[256];
BufferIO::EncodeUTF8(fname, filename);
fp = fopen(filename, "rb");
#endif
if(!fp) {
mainGame->stSinglePlayInfo->setText(L"");
break;
}
char linebuf[1024];
wchar_t wlinebuf[1024];
std::wstring message = L"";
bool in_message = false;
while(fgets(linebuf, 1024, fp)) {
if(!strncmp(linebuf, "--[[message", 11)) {
size_t len = strlen(linebuf);
char* msgend = strrchr(linebuf, ']');
if(len <= 13) {
in_message = true;
continue;
} else if(len > 15 && msgend) {
*(msgend - 1) = '\0';
BufferIO::DecodeUTF8(linebuf + 12, wlinebuf);
message.append(wlinebuf);
break;
}
}
if(!strncmp(linebuf, "]]", 2)) {
in_message = false;
break;
}
if(in_message) {
BufferIO::DecodeUTF8(linebuf, wlinebuf);
message.append(wlinebuf);
}
}
mainGame->SetStaticText(mainGame->stSinglePlayInfo, 200 * mainGame->xScale, mainGame->guiFont, message.c_str());
break;
}
case LISTBOX_BOT_LIST: {
int sel = mainGame->lstBotList->getSelected();
if(sel == -1)
......
......@@ -380,8 +380,6 @@
!system 1351 投降
!system 1352 主要信息:
!system 1353 播放起始于回合:
!system 1354 不显示卡片系列
!system 1355 不显示提示按钮
!system 1356 是否要放弃对卡组的修改?
!system 1357 不提示保留对卡组的修改
!system 1358 键入关键字后自动进行搜索
......@@ -399,6 +397,7 @@
!system 1373 名称↓
!system 1374 连接标记
!system 1378 使用多个关键词搜索卡片
!system 1379 优先使用额外卡库数据
!system 1380 人机模式
!system 1381 残局模式
!system 1382 人机信息:
......
......@@ -380,8 +380,6 @@
!system 1351 Surrender
!system 1352 Main message
!system 1353 Start at turn
!system 1354 Hide set names
!system 1355 Hide chain buttons
!system 1356 Do you want to quit without saving?
!system 1357 Ignore deck changes while quiting
!system 1358 Search cards automatically
......@@ -399,6 +397,7 @@
!system 1373 Name
!system 1374 Link Arrows
!system 1378 Multiple Keyword Search
!system 1379 First Using Expansion Data
!system 1380 Single Mode
!system 1381 Puzzle Mode
!system 1382 Single Options:
......
......@@ -380,8 +380,6 @@
!system 1351 항복
!system 1352 정보:
!system 1353 이 턴부터 시작:
!system 1354 카드군 숨기기 
!system 1355 체인 버튼 숨기기
!system 1356 덱 변경 사항을 포기하겠습니까?
!system 1357 덱 변경 사항에 대해 요구하지 않음
!system 1358 자동으로 키워드를 검색
......@@ -399,6 +397,7 @@
!system 1372 수비력↑
!system 1373 이름↓
!system 1374 링크 마커
!system 1379 확장팩 사용 스크립트
!system 1380 AI 모드
!system 1381 퍼즐 모드
!system 1382 AI 정보:
......
......@@ -131,7 +131,7 @@ public interface Constants {
String ALIPAY_URL = "HTTPS://QR.ALIPAY.COM/FKX06491UAXJMGIDTYVC0C";
String URL_HELP = "http://www.jianshu.com/p/a43f5d951a25";
String URL_MASTERRULE_CN = "https://ocg-rule.readthedocs.io/zh_CN/master/";
String WIKI_SEARCH_URL = "http://www.ourocg.cn/S.aspx?key=";
String WIKI_SEARCH_URL = "https://www.ourocg.cn/S.aspx?key=";
String SERVER_FILE = "server_list.xml";
String SHARE_FILE = ".share_deck.png";
......
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