Commit 81ead749 authored by fallenstardust's avatar fallenstardust
parents 00aae056 f1f672ce
......@@ -619,7 +619,7 @@ void ClientField::ShowSelectOption(int select_hint) {
for(int i = 0; i < 5; i++)
mainGame->btnOption[i]->setVisible(i < count);
recti pos = mainGame->wOptions->getRelativePosition();
int newheight = 30 + 40 * count;
int newheight = (30 + 60 * count) * mainGame->yScale;
int oldheight = pos.LowerRightCorner.Y - pos.UpperLeftCorner.Y;
pos.UpperLeftCorner.Y = pos.UpperLeftCorner.Y + (oldheight - newheight) / 2;
pos.LowerRightCorner.Y = pos.UpperLeftCorner.Y + newheight;
......@@ -634,7 +634,7 @@ void ClientField::ShowSelectOption(int select_hint) {
for(int i = 0; i < 5; i++)
mainGame->btnOption[i]->setVisible(false);
recti pos = mainGame->wOptions->getRelativePosition();
pos.LowerRightCorner.Y = pos.UpperLeftCorner.Y + 140;
pos.LowerRightCorner.Y = ((pos.UpperLeftCorner.Y / mainGame->yScale) + 140) * mainGame->yScale;
mainGame->wOptions->setRelativePosition(pos);
}
if(select_hint)
......@@ -1513,4 +1513,4 @@ void ClientField::RefreshCardCountDisplay() {
mainGame->dInfo.card_count_color[1] = 0xffffffff;
}
}
}
\ No newline at end of file
}
......@@ -610,7 +610,7 @@ bool Game::Initialize() {
btnOptionp = env->addButton(rect<s32>(20 * xScale, 115 * yScale, 100 * xScale, 165 * yScale), wOptions, BUTTON_OPTION_PREV, L"<<<");
btnOptionn = env->addButton(rect<s32>(290 * xScale, 115 * yScale, 370 * xScale, 165 * yScale), wOptions, BUTTON_OPTION_NEXT, L">>>");
for(int i = 0; i < 5; ++i) {
btnOption[i] = env->addButton(rect<s32>(10 * xScale, (30 + 40 * i) * yScale, 340 * xScale, (60 + 40 * i) * yScale), wOptions, BUTTON_OPTION_0 + i, L"");
btnOption[i] = env->addButton(rect<s32>(10 * xScale, (30 + 50 * i) * yScale, 360 * xScale, (80 + 50 * i) * yScale), wOptions, BUTTON_OPTION_0 + i, L"");
}
#endif
//pos select
......
......@@ -65,13 +65,13 @@ int ReplayMode::ReplayThread(void* param) {
mainGame->dInfo.tag_player[1] = false;
if(mainGame->dInfo.isSingleMode) {
#ifdef _IRR_ANDROID_PLATFORM_
set_script_reader(irr::android::android_script_reader);
set_script_reader((script_reader)SingleMode::ScriptReaderEx);
#endif
set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)MessageHandler);
} else {
#ifdef _IRR_ANDROID_PLATFORM_
set_script_reader(irr::android::android_script_reader);
set_script_reader((script_reader)ScriptReaderEx);
#endif
set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)MessageHandler);
......@@ -939,6 +939,15 @@ void ReplayMode::ReplayReload() {
/*len = */query_field_card(pduel, 1, LOCATION_REMOVED, flag, queryBuffer, 0);
mainGame->dField.UpdateFieldCard(mainGame->LocalPlayer(1), LOCATION_REMOVED, (char*)queryBuffer);
}
byte* ReplayMode::ScriptReaderEx(const char* script_name, int* slen) {
char sname[256] = "./expansions";
strcat(sname, script_name + 1);//default script name: ./script/c%d.lua
byte* buffer = irr::android::android_script_reader(sname, slen);
if(buffer)
return buffer;
else
return irr::android::android_script_reader(script_name, slen);
}
int ReplayMode::MessageHandler(long fduel, int type) {
if(!enable_log)
return 0;
......
......@@ -47,6 +47,7 @@ public:
static void ReplayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static void ReplayReload();
static byte* ScriptReaderEx(const char* script_name, int* slen);
static int MessageHandler(long fduel, int type);
};
......
......@@ -407,7 +407,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
time_limit[0] = host_info.time_limit;
time_limit[1] = host_info.time_limit;
#ifdef _IRR_ANDROID_PLATFORM_
set_script_reader(irr::android::android_script_reader);
set_script_reader((script_reader)ScriptReaderEx);
#endif
set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)SingleDuel::MessageHandler);
......@@ -1547,6 +1547,15 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
NetServer::ReSendToPlayer(*pit);
}
}
byte* SingleDuel::ScriptReaderEx(const char* script_name, int* slen) {
char sname[256] = "./expansions";
strcat(sname, script_name + 1);//default script name: ./script/c%d.lua
byte* buffer = irr::android::android_script_reader(sname, slen);
if(buffer)
return buffer;
else
return irr::android::android_script_reader(script_name, slen);
}
int SingleDuel::MessageHandler(long fduel, int type) {
if(!enable_log)
return 0;
......
......@@ -37,7 +37,8 @@ public:
void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1);
void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1);
void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static byte* ScriptReaderEx(const char* script_name, int* slen);
static int MessageHandler(long fduel, int type);
static void SingleTimer(evutil_socket_t fd, short events, void* arg);
......
......@@ -39,7 +39,7 @@ int SingleMode::SinglePlayThread(void* param) {
time_t seed = time(0);
rnd.reset(seed);
#ifdef _IRR_ANDROID_PLATFORM_
set_script_reader(irr::android::android_script_reader);
set_script_reader((script_reader)ScriptReaderEx);
#endif
set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)MessageHandler);
......@@ -845,6 +845,15 @@ void SingleMode::SinglePlayReload() {
/*len = */query_field_card(pduel, 1, LOCATION_REMOVED, flag, queryBuffer, 0);
mainGame->dField.UpdateFieldCard(mainGame->LocalPlayer(1), LOCATION_REMOVED, (char*)queryBuffer);
}
byte* SingleMode::ScriptReaderEx(const char* script_name, int* slen) {
char sname[256] = "./expansions";
strcat(sname, script_name + 1);//default script name: ./script/c%d.lua
byte* buffer = irr::android::android_script_reader(sname, slen);
if(buffer)
return buffer;
else
return irr::android::android_script_reader(script_name, slen);
}
byte* SingleMode::ScriptReader(const char* script_name, int* slen) {
FILE *fp;
#ifdef _WIN32
......
......@@ -26,6 +26,7 @@ public:
static void SinglePlayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static void SinglePlayReload();
static byte* ScriptReaderEx(const char* script_name, int* slen);
static byte* ScriptReader(const char* script_name, int* slen);
static int MessageHandler(long fduel, int type);
......
......@@ -382,7 +382,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
time_limit[0] = host_info.time_limit;
time_limit[1] = host_info.time_limit;
#ifdef _IRR_ANDROID_PLATFORM_
set_script_reader(irr::android::android_script_reader);
set_script_reader((script_reader)ScriptReaderEx);
#endif
set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)TagDuel::MessageHandler);
......@@ -1664,6 +1664,15 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
}
}
}
byte* TagDuel::ScriptReaderEx(const char* script_name, int* slen) {
char sname[256] = "./expansions";
strcat(sname, script_name + 1);//default script name: ./script/c%d.lua
byte* buffer = irr::android::android_script_reader(sname, slen);
if(buffer)
return buffer;
else
return irr::android::android_script_reader(script_name, slen);
}
int TagDuel::MessageHandler(long fduel, int type) {
if(!enable_log)
return 0;
......
......@@ -37,7 +37,8 @@ public:
void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1);
void RefreshExtra(int player, int flag = 0x81fff, int use_cache = 1);
void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static byte* ScriptReaderEx(const char* script_name, int* slen);
static int MessageHandler(long fduel, int type);
static void TagTimer(evutil_socket_t fd, short events, void* arg);
......
......@@ -672,6 +672,9 @@ int32 effect::check_value_condition(uint32 extraargs) {
return (int32)value;
}
}
void* effect::get_label_object() {
return pduel->lua->get_ref_object(label_object);
}
int32 effect::get_speed() {
if(!(type & EFFECT_TYPE_ACTIONS))
return 0;
......
......@@ -55,7 +55,7 @@ public:
card* active_handler;
uint16 status;
uint32 label;
void* label_object;
int32 label_object;
int32 condition;
int32 cost;
int32 target;
......@@ -90,6 +90,7 @@ public:
void get_value(card* pcard, uint32 extraargs, std::vector<int32>* result);
void get_value(effect* peffect, uint32 extraargs, std::vector<int32>* result);
int32 check_value_condition(uint32 extraargs = 0);
void* get_label_object();
int32 get_speed();
effect* clone();
card* get_owner() const;
......
......@@ -2031,7 +2031,7 @@ int32 field::adjust_grant_effect() {
}
for(auto cit = add_set.begin(); cit != add_set.end(); ++cit) {
card* pcard = *cit;
effect* geffect = (effect*)peffect->label_object;
effect* geffect = (effect*)peffect->get_label_object();
effect* ceffect = geffect->clone();
ceffect->owner = pcard;
pcard->add_effect(ceffect);
......
......@@ -744,14 +744,10 @@ int32 interpreter::load_card_script(uint32 code) {
lua_pushstring(current_state, "__index");
lua_pushvalue(current_state, -2);
lua_rawset(current_state, -3);
//load extra scripts
sprintf(script_name, "./expansions/script/c%d.lua", code);
if (!load_script(script_name)) {
sprintf(script_name, "./script/c%d.lua", code);
if (!load_script(script_name)) {
return OPERATION_FAIL;
}
}
sprintf(script_name, "./script/c%d.lua", code);
if(!load_script(script_name)) {
return OPERATION_FAIL;
}
}
return OPERATION_SUCCESS;
}
......@@ -1179,6 +1175,14 @@ int32 interpreter::clone_function_ref(int32 func_ref) {
int32 ref = luaL_ref(current_state, LUA_REGISTRYINDEX);
return ref;
}
void* interpreter::get_ref_object(int32 ref_handler) {
if(ref_handler == 0)
return nullptr;
lua_rawgeti(current_state, LUA_REGISTRYINDEX, ref_handler);
void* p = *(void**)lua_touserdata(current_state, -1);
lua_pop(current_state, 1);
return p;
}
//Convert a pointer to a lua value, +1 -0
void interpreter::card2value(lua_State* L, card* pcard) {
if (!pcard || pcard->ref_handle == 0)
......
......@@ -69,6 +69,7 @@ public:
int32 get_function_value(int32 f, uint32 param_count, std::vector<int32>* result);
int32 call_coroutine(int32 f, uint32 param_count, uint32* yield_value, uint16 step);
int32 clone_function_ref(int32 func_ref);
void* get_ref_object(int32 ref_handler);
static void card2value(lua_State* L, card* pcard);
static void group2value(lua_State* L, group* pgroup);
......
......@@ -10,6 +10,7 @@
#include "field.h"
#include "card.h"
#include "effect.h"
#include "group.h"
int32 scriptlib::effect_new(lua_State *L) {
check_param_count(L, 1);
......@@ -186,10 +187,17 @@ int32 scriptlib::effect_set_label_object(lua_State *L) {
peffect->label_object = 0;
return 0;
}
if(!lua_isuserdata(L, 2))
if(check_param(L, PARAM_TYPE_CARD, 2, TRUE)) {
card* p = *(card**)lua_touserdata(L, 2);
peffect->label_object = p->ref_handle;
} else if(check_param(L, PARAM_TYPE_EFFECT, 2, TRUE)) {
effect* p = *(effect**)lua_touserdata(L, 2);
peffect->label_object = p->ref_handle;
} else if(check_param(L, PARAM_TYPE_GROUP, 2, TRUE)) {
group* p = *(group**)lua_touserdata(L, 2);
peffect->label_object = p->ref_handle;
} else
luaL_error(L, "Parameter 2 should be \"Card\" or \"Effect\" or \"Group\".");
void* p = *(void**)lua_touserdata(L, 2);
peffect->label_object = p;
return 0;
}
int32 scriptlib::effect_set_category(lua_State *L) {
......@@ -342,15 +350,14 @@ int32 scriptlib::effect_get_label_object(lua_State *L) {
lua_pushnil(L);
return 1;
}
int32 type = *(int32*)peffect->label_object;
if(type == 1)
interpreter::card2value(L, (card*)peffect->label_object);
else if(type == 2)
interpreter::group2value(L, (group*)peffect->label_object);
else if(type == 3)
interpreter::effect2value(L, (effect*)peffect->label_object);
else lua_pushnil(L);
return 1;
lua_rawgeti(L, LUA_REGISTRYINDEX, peffect->label_object);
if(lua_isuserdata(L, -1))
return 1;
else {
lua_pop(L, 1);
lua_pushnil(L);
return 1;
}
}
int32 scriptlib::effect_get_category(lua_State *L) {
check_param_count(L, 1);
......
......@@ -22,11 +22,12 @@
<pre>
更新:
1.更新ygo内核;
4.新卡T1005;
4.新卡T1005+DBHS
优化:
1.卡密搜索可以搜到它规则上的同名卡和异画卡;
2.筛选效果怪兽分类不显示其他种类;
3.调整部分UI适应新机型屏幕;
4.移除失效服务器;
</pre>
</body>
</html>
\ No newline at end of file
......@@ -2,13 +2,6 @@
<servers>
<version>2</version>
<!--server>
<player-name>Knight of Hanoi</player-name>
<name>娱乐决斗与宇宙首发群452384460</name>
<ip>s1.ygo233.com</ip>
<port>233</port>
<keep>true</keep>
</server-->
<server>
<player-name>Knight of Hanoi</player-name>
<name>233正式服务器</name>
......@@ -17,19 +10,12 @@
<keep>true</keep>
</server>
<!--server>
<player-name>fresh chicken</player-name>
<name>233在线人机练习</name>
<player-name>Knight of Hanoi</player-name>
<name>233在线OT混先行卡AI练习</name>
<ip>s1.ygo233.com</ip>
<port>9999</port>
<keep>true</keep>
</server-->
<server>
<player-name>Knight of Hanoi</player-name>
<name>阔以Shi正式卡服</name>
<ip>koishi.ygopro.cn</ip>
<port>7210</port>
<keep>true</keep>
</server>
<server>
<player-name>Knight of Hanoi</player-name>
<name>C萌约战</name>
......
......@@ -896,4 +896,9 @@
!setname 0x11a Dinowrestler
!setname 0x11b Orphegel
!setname 0x11c Thunder Dragon
!setname 0x11d Forbidden
\ No newline at end of file
!setname 0x11d Forbidden
!setname 0x11e Danger!
!setname 0x11f Nephthys
!setname 0x120 Prankids
!setname 0x121 Mayakashi
!setname 0x228 Valkyrie
\ No newline at end of file
......@@ -904,4 +904,9 @@
!setname 0x11a 다이너슬레이어
!setname 0x11b 오르페골
!setname 0x11c 싼다드래곤
!setname 0x11d 금기된(?)
\ No newline at end of file
!setname 0x11d 금기된(?)
!setname 0x11e Danger!(단절!)
!setname 0x11f 네프티스
!setname 0x120 프랑키즈
!setname 0x121 마요카시
!setname 0x228 발키리
\ No newline at end of file
......@@ -18,7 +18,7 @@
</server>
<server>
<player-name>fresh_meat</player-name>
<name>YGOPRO WindBot Online</name>
<name>YGOPRO WindBot O/T Prerelease Online</name>
<ip>s1.ygo233.com</ip>
<port>9999</port>
<keep>true</keep>
......
......@@ -8,7 +8,7 @@ android {
applicationId "cn.garymb.ygomobile"
minSdkVersion 16
targetSdkVersion 22
versionCode 33030810
versionCode 33030812
versionName "3.3.4"
flavorDimensions "versionCode"
vectorDrawables.useSupportLibrary = true
......@@ -46,7 +46,6 @@ android {
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
cn {}
en {
assets.srcDirs = ['assets_en']
}
......
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