Commit 0afb2d5b authored by kenan's avatar kenan

opt code

parent 8664e10a
...@@ -28,16 +28,16 @@ namespace ygo { ...@@ -28,16 +28,16 @@ namespace ygo {
Game *mainGame; Game *mainGame;
void Game::process(irr::SEvent &event) { void Game::process(irr::SEvent &event) {
if (event.EventType == EET_MOUSE_INPUT_EVENT) { if (event.EventType == EET_MOUSE_INPUT_EVENT) {
s32 x = event.MouseInput.X; s32 x = event.MouseInput.X;
s32 y = event.MouseInput.Y; s32 y = event.MouseInput.Y;
event.MouseInput.X = optX(x); event.MouseInput.X = optX(x);
event.MouseInput.Y = optY(y); event.MouseInput.Y = optY(y);
// __android_log_print(ANDROID_LOG_DEBUG, "ygo", "Android comman process %d,%d -> %d,%d", x, y, // __android_log_print(ANDROID_LOG_DEBUG, "ygo", "Android comman process %d,%d -> %d,%d", x, y,
// event.MouseInput.X, event.MouseInput.Y); // event.MouseInput.X, event.MouseInput.Y);
}
} }
}
#ifdef _IRR_ANDROID_PLATFORM_ #ifdef _IRR_ANDROID_PLATFORM_
bool Game::Initialize(ANDROID_APP app) { bool Game::Initialize(ANDROID_APP app) {
...@@ -1468,39 +1468,34 @@ void Game::LoadConfig() { ...@@ -1468,39 +1468,34 @@ void Game::LoadConfig() {
} }
void Game::SaveConfig() { void Game::SaveConfig() {
JNIEnv* jni = 0;
appMain->activity->vm->AttachCurrentThread(&jni, NULL);
if (!jni)
return;
//helper //helper
gameConf.chkMAutoPos = chkMAutoPos->isChecked() ? 1 : 0; gameConf.chkMAutoPos = chkMAutoPos->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "chkMAutoPos", gameConf.chkMAutoPos); android::saveIntSetting(appMain, "chkMAutoPos", gameConf.chkMAutoPos);
gameConf.chkSTAutoPos = chkSTAutoPos->isChecked() ? 1 : 0; gameConf.chkSTAutoPos = chkSTAutoPos->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "chkSTAutoPos", gameConf.chkSTAutoPos); android::saveIntSetting(appMain, "chkSTAutoPos", gameConf.chkSTAutoPos);
gameConf.chkRandomPos = chkRandomPos->isChecked() ? 1 : 0; gameConf.chkRandomPos = chkRandomPos->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "chkRandomPos", gameConf.chkRandomPos); android::saveIntSetting(appMain, "chkRandomPos", gameConf.chkRandomPos);
gameConf.chkAutoChain = chkAutoChain->isChecked() ? 1 : 0; gameConf.chkAutoChain = chkAutoChain->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "chkAutoChain", gameConf.chkAutoChain); android::saveIntSetting(appMain, "chkAutoChain", gameConf.chkAutoChain);
gameConf.chkWaitChain = chkWaitChain->isChecked() ? 1 : 0; gameConf.chkWaitChain = chkWaitChain->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "chkWaitChain", gameConf.chkWaitChain); android::saveIntSetting(appMain, "chkWaitChain", gameConf.chkWaitChain);
//system //system
gameConf.chkIgnore1 = chkIgnore1->isChecked() ? 1 : 0; gameConf.chkIgnore1 = chkIgnore1->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "chkIgnore1", gameConf.chkIgnore1); android::saveIntSetting(appMain, "chkIgnore1", gameConf.chkIgnore1);
gameConf.chkIgnore2 = chkIgnore2->isChecked() ? 1 : 0; gameConf.chkIgnore2 = chkIgnore2->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "chkIgnore2", gameConf.chkIgnore2); android::saveIntSetting(appMain, "chkIgnore2", gameConf.chkIgnore2);
gameConf.chkIgnoreDeckChanges = chkIgnoreDeckChanges->isChecked() ? 1 : 0; gameConf.chkIgnoreDeckChanges = chkIgnoreDeckChanges->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "chkIgnoreDeckChanges", gameConf.chkIgnoreDeckChanges); android::saveIntSetting(appMain, "chkIgnoreDeckChanges", gameConf.chkIgnoreDeckChanges);
gameConf.auto_save_replay = chkAutoSaveReplay->isChecked() ? 1 : 0; gameConf.auto_save_replay = chkAutoSaveReplay->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "auto_save_replay", gameConf.auto_save_replay); android::saveIntSetting(appMain, "auto_save_replay", gameConf.auto_save_replay);
gameConf.draw_field_spell = chkDrawFieldSpell->isChecked() ? 1 : 0; gameConf.draw_field_spell = chkDrawFieldSpell->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "draw_field_spell", gameConf.draw_field_spell); android::saveIntSetting(appMain, "draw_field_spell", gameConf.draw_field_spell);
gameConf.quick_animation = chkQuickAnimation->isChecked() ? 1 : 0; gameConf.quick_animation = chkQuickAnimation->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "quick_animation", gameConf.quick_animation); android::saveIntSetting(appMain, "quick_animation", gameConf.quick_animation);
gameConf.prefer_expansion_script = chkPreferExpansionScript->isChecked() ? 1 : 0; gameConf.prefer_expansion_script = chkPreferExpansionScript->isChecked() ? 1 : 0;
android::saveIntSetting(appMain, jni, "prefer_expansion_script", gameConf.prefer_expansion_script); android::saveIntSetting(appMain, "prefer_expansion_script", gameConf.prefer_expansion_script);
appMain->activity->vm->DetachCurrentThread();
//gameConf.control_mode = control_mode->isChecked()?1:0; //gameConf.control_mode = control_mode->isChecked()?1:0;
// android::saveIntSetting(appMain, "control_mode", gameConf.control_mode); // android::saveIntSetting(appMain, "control_mode", gameConf.control_mode);
} }
......
...@@ -529,8 +529,6 @@ public: ...@@ -529,8 +529,6 @@ public:
irr::gui::IGUIButton* btnCancelOrFinish; irr::gui::IGUIButton* btnCancelOrFinish;
float xScale; float xScale;
float yScale; float yScale;
float xStart;
float yStart;
IYGOSoundEffectPlayer* soundEffectPlayer; IYGOSoundEffectPlayer* soundEffectPlayer;
#ifdef _IRR_ANDROID_PLATFORM_ #ifdef _IRR_ANDROID_PLATFORM_
ANDROID_APP appMain; ANDROID_APP appMain;
...@@ -546,29 +544,28 @@ public: ...@@ -546,29 +544,28 @@ public:
void setPositionFix(core::position2di fix){ void setPositionFix(core::position2di fix){
InputFix = fix; InputFix = fix;
} }
float optX(float x) { float optX(float x) {
float x2 = x - InputFix.X; float x2 = x - InputFix.X;
if (x2 < 0) { if (x2 < 0) {
return 0; return 0;
}
return x2;
} }
return x2;
}
float optY(float y) { float optY(float y) {
float y2 = y - InputFix.Y; float y2 = y - InputFix.Y;
if (y2 < 0) { if (y2 < 0) {
return 0; return 0;
}
return y2;
} }
void process(irr::SEvent &event); return y2;
private: }
core::position2di InputFix; void process(irr::SEvent &event);
private:
core::position2di InputFix;
}; };
extern Game *mainGame; extern Game *mainGame;
} }
#define CARD_IMG_WIDTH 177 #define CARD_IMG_WIDTH 177
......
...@@ -441,20 +441,13 @@ int getIntSetting(ANDROID_APP app, const char* key,int defvalue){ ...@@ -441,20 +441,13 @@ int getIntSetting(ANDROID_APP app, const char* key,int defvalue){
return (int)ret; return (int)ret;
} }
void saveIntSettingAuto(ANDROID_APP app, const char* key, int value){ void saveIntSetting(ANDROID_APP app, const char* key, int value) {
if (!app || !app->activity || !app->activity->vm) if (!app || !app->activity || !app->activity->vm)
return; return;
JNIEnv* jni = 0; JNIEnv* jni = 0;
app->activity->vm->AttachCurrentThread(&jni, NULL); app->activity->vm->AttachCurrentThread(&jni, NULL);
if (!jni) if (!jni)
return; return;
saveIntSetting(app, jni, key, value);
app->activity->vm->DetachCurrentThread();
}
void saveIntSetting(ANDROID_APP app, JNIEnv* jni, const char* key, int value) {
if (!app || !app->activity || !app->activity->vm)
return;
// Retrieves NativeActivity. // Retrieves NativeActivity.
jobject lNativeActivity = app->activity->clazz; jobject lNativeActivity = app->activity->clazz;
jclass ClassNativeActivity = jni->GetObjectClass(lNativeActivity); jclass ClassNativeActivity = jni->GetObjectClass(lNativeActivity);
...@@ -471,6 +464,7 @@ void saveIntSetting(ANDROID_APP app, JNIEnv* jni, const char* key, int value) { ...@@ -471,6 +464,7 @@ void saveIntSetting(ANDROID_APP app, JNIEnv* jni, const char* key, int value) {
} }
jni->DeleteLocalRef(classApp); jni->DeleteLocalRef(classApp);
jni->DeleteLocalRef(ClassNativeActivity); jni->DeleteLocalRef(ClassNativeActivity);
app->activity->vm->DetachCurrentThread();
} }
void saveSetting(ANDROID_APP app, const char* key, const char* value) { void saveSetting(ANDROID_APP app, const char* key, const char* value) {
......
...@@ -84,10 +84,6 @@ struct SDisplayMetrics { ...@@ -84,10 +84,6 @@ struct SDisplayMetrics {
irr::f32 xdpi; irr::f32 xdpi;
irr::f32 ydpi; irr::f32 ydpi;
}; };
typedef struct{
float posX;
float posY;
} AppPosition;
/* jni utils*/ /* jni utils*/
// Access SDisplayMetrics // Access SDisplayMetrics
extern float getScreenWidth(ANDROID_APP app); extern float getScreenWidth(ANDROID_APP app);
...@@ -164,9 +160,7 @@ extern void setLastDeck(ANDROID_APP app, const char* deckname); ...@@ -164,9 +160,7 @@ extern void setLastDeck(ANDROID_APP app, const char* deckname);
//save last category name. //save last category name.
extern void setLastCategory(ANDROID_APP app, const char* catename); extern void setLastCategory(ANDROID_APP app, const char* catename);
extern void saveIntSetting(ANDROID_APP app, JNIEnv* jni, const char* key, int value); extern void saveIntSetting(ANDROID_APP app, const char* key, int value);
extern void saveIntSettingAuto(ANDROID_APP app, const char* key, int value);
extern void saveSetting(ANDROID_APP app, const char* key, const char* value); extern void saveSetting(ANDROID_APP app, const char* key, const char* value);
......
...@@ -302,49 +302,6 @@ JNIEXPORT void JNICALL Java_cn_garymb_ygomobile_core_IrrlichtBridge_nativeSetInp ...@@ -302,49 +302,6 @@ JNIEXPORT void JNICALL Java_cn_garymb_ygomobile_core_IrrlichtBridge_nativeSetInp
} }
} }
//touch事件
JNIEXPORT void JNICALL Java_cn_garymb_ygomobile_core_IrrlichtBridge_nativeSendTouch(
JNIEnv* env, jclass clazz, jint handle, jint action, jint id, jfloat x, jfloat y) {
if(handle) {
irr::os::Printer::log("before send touch");
CIrrDeviceAndroid *device = (CIrrDeviceAndroid *) handle;
if (device->isWindowFocused()) {
SEvent event;
event.EventType = EET_TOUCH_INPUT_EVENT;
s32 eventAction = action;
s32 eventType = eventAction & AMOTION_EVENT_ACTION_MASK;
bool touchReceived = true;
switch (eventType) {
case AMOTION_EVENT_ACTION_DOWN:
case AMOTION_EVENT_ACTION_POINTER_DOWN:
event.TouchInput.Event = ETIE_PRESSED_DOWN;
break;
case AMOTION_EVENT_ACTION_MOVE:
event.TouchInput.Event = ETIE_MOVED;
break;
case AMOTION_EVENT_ACTION_UP:
case AMOTION_EVENT_ACTION_POINTER_UP:
case AMOTION_EVENT_ACTION_CANCEL:
event.TouchInput.Event = ETIE_LEFT_UP;
break;
default:
touchReceived = false;
break;
}
if (touchReceived) {
// Process all touches for move action.
event.TouchInput.ID = static_cast<size_t>(id);
event.TouchInput.X = static_cast<s32>(x);
event.TouchInput.Y = static_cast<s32>(y);
device->postEventFromUser(event);
}
}
}
}
static void* cancel_chain_thread(void* param) { static void* cancel_chain_thread(void* param) {
IrrlichtDevice* device = (IrrlichtDevice*) param; IrrlichtDevice* device = (IrrlichtDevice*) param;
irr::os::Printer::log("before send cancel chain"); irr::os::Printer::log("before send cancel chain");
......
...@@ -3,7 +3,6 @@ package cn.garymb.ygomobile; ...@@ -3,7 +3,6 @@ package cn.garymb.ygomobile;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.util.Log;
import cn.garymb.ygomobile.core.IrrlichtBridge; import cn.garymb.ygomobile.core.IrrlichtBridge;
...@@ -17,19 +16,19 @@ public class GameReceiver extends BroadcastReceiver { ...@@ -17,19 +16,19 @@ public class GameReceiver extends BroadcastReceiver {
if (ACTION_START.equals(action)) { if (ACTION_START.equals(action)) {
// //
IrrlichtBridge.gPid = intent.getIntExtra(IrrlichtBridge.EXTRA_PID, 0); IrrlichtBridge.gPid = intent.getIntExtra(IrrlichtBridge.EXTRA_PID, 0);
Log.w("ygo", "pid=" + IrrlichtBridge.gPid); // Log.w("ygo", "pid=" + IrrlichtBridge.gPid);
} else if (ACTION_STOP.equals(action)) { } else if (ACTION_STOP.equals(action)) {
int pid = intent.getIntExtra(IrrlichtBridge.EXTRA_PID, 0); int pid = intent.getIntExtra(IrrlichtBridge.EXTRA_PID, 0);
if (pid == 0 && IrrlichtBridge.gPid != 0) { if (pid == 0 && IrrlichtBridge.gPid != 0) {
pid = IrrlichtBridge.gPid; pid = IrrlichtBridge.gPid;
Log.w("ygo", "will kill last pid=" + pid); // Log.w("ygo", "will kill last pid=" + pid);
} }
if (pid == 0) { if (pid == 0) {
pid = android.os.Process.myPid(); pid = android.os.Process.myPid();
Log.w("ygo", "will kill now pid=" + pid); // Log.w("ygo", "will kill now pid=" + pid);
} }
try { try {
Log.e("ygo", "kill pid=" + pid); // Log.w("ygo", "kill pid=" + pid);
android.os.Process.killProcess(pid); android.os.Process.killProcess(pid);
} catch (Exception e) { } catch (Exception e) {
//ignore //ignore
......
...@@ -39,7 +39,7 @@ public final class IrrlichtBridge { ...@@ -39,7 +39,7 @@ public final class IrrlichtBridge {
} }
private static int sNativeHandle; public static int sNativeHandle;
//显示卡图 //显示卡图
public static native byte[] nativeBpgImage(byte[] data); public static native byte[] nativeBpgImage(byte[] data);
//插入文本(大概是发送消息) //插入文本(大概是发送消息)
...@@ -59,10 +59,6 @@ public final class IrrlichtBridge { ...@@ -59,10 +59,6 @@ public final class IrrlichtBridge {
private static native void nativeJoinGame(int handle, ByteBuffer buffer, int length); private static native void nativeJoinGame(int handle, ByteBuffer buffer, int length);
private static native void nativeSendKey(int handle, int keycode, boolean begin);
private static native void nativeSendTouch(int handle, int action, int id, float x, float y);
private static native void nativeSetInputFix(int handle, int x, int y); private static native void nativeSetInputFix(int handle, int x, int y);
private static final boolean DEBUG = false; private static final boolean DEBUG = false;
...@@ -123,60 +119,41 @@ public final class IrrlichtBridge { ...@@ -123,60 +119,41 @@ public final class IrrlichtBridge {
return null; return null;
} }
} }
public static void setHandle(int handle){
synchronized (IrrlichtBridge.class){
sNativeHandle = handle;
}
}
public static int getHandle() {
synchronized (IrrlichtBridge.class){
return sNativeHandle;
}
}
public static void setInputFix(int x, int y){ public static void setInputFix(int x, int y){
nativeSetInputFix(sNativeHandle, x, y); nativeSetInputFix(sNativeHandle, x, y);
} }
public static void cancelChain() { public static void cancelChain() {
nativeCancelChain(getHandle()); nativeCancelChain(sNativeHandle);
} }
public static void ignoreChain(boolean begin) { public static void ignoreChain(boolean begin) {
nativeIgnoreChain(getHandle(), begin); nativeIgnoreChain(sNativeHandle, begin);
} }
public static void reactChain(boolean begin) { public static void reactChain(boolean begin) {
nativeReactChain(getHandle(), begin); nativeReactChain(sNativeHandle, begin);
}
public static void sendKey(int keycode, boolean begin) {
nativeSendKey(getHandle(), keycode, begin);
}
public static void sendTouch(int action, float x, float y, int id) {
nativeSendTouch(getHandle(), action, id, x, y);
} }
public static void insertText(String text) { public static void insertText(String text) {
nativeInsertText(getHandle(), text); nativeInsertText(sNativeHandle, text);
} }
public static void setComboBoxSelection(int idx) { public static void setComboBoxSelection(int idx) {
nativeSetComboBoxSelection(getHandle(), idx); nativeSetComboBoxSelection(sNativeHandle, idx);
} }
public static void refreshTexture() { public static void refreshTexture() {
nativeRefreshTexture(getHandle()); nativeRefreshTexture(sNativeHandle);
} }
public static void setCheckBoxesSelection(int idx) { public static void setCheckBoxesSelection(int idx) {
nativeSetCheckBoxesSelection(getHandle(), idx); nativeSetCheckBoxesSelection(sNativeHandle, idx);
} }
public static void joinGame(ByteBuffer options, int length) { public static void joinGame(ByteBuffer options, int length) {
nativeJoinGame(getHandle(), options, length); nativeJoinGame(sNativeHandle, options, length);
} }
public interface IrrlichtApplication { public interface IrrlichtApplication {
......
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