Skip to content

Commit a975739

Browse files
committed
Update AkinatorHelper
1 parent 2737c48 commit a975739

File tree

6 files changed

+133
-13
lines changed

6 files changed

+133
-13
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
applicationId "me.kyuubiran.akinatorhelper"
1111
minSdk 21
1212
targetSdk 32
13-
versionCode 4
14-
versionName "1.4"
13+
versionCode 5
14+
versionName "1.5"
1515
}
1616

1717
buildTypes {

app/src/main/java/me/kyuubiran/akinatorhelper/util/AkinatorHelper.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,26 @@ object AkinatorHelper {
5050
mSetGameUnlocked.invoke(akGameFactoryInstance)
5151
}
5252

53+
private val mAddOneWonGame by lazy {
54+
findMethod(C_AK_GAME_FACTORY) {
55+
name == "addOneWonGame"
56+
}
57+
}
58+
59+
fun addOneWonGame() {
60+
mAddOneWonGame.invoke(akGameFactoryInstance)
61+
}
62+
63+
private val mAddOneLostGame by lazy {
64+
findMethod(C_AK_GAME_FACTORY) {
65+
name == "addOneLostGame"
66+
}
67+
}
68+
69+
fun addOneLostGame() {
70+
mAddOneLostGame.invoke(akGameFactoryInstance)
71+
}
72+
5373
}
5474

5575
var isGameUnlocked: Boolean

app/src/main/java/me/kyuubiran/akinatorhelper/view/SettingDialog.kt

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import android.app.AlertDialog
77
import android.os.Bundle
88
import android.preference.Preference
99
import android.preference.PreferenceFragment
10+
import android.text.InputType
11+
import android.widget.EditText
1012
import com.github.kyuubiran.ezxhelper.init.EzXHelperInit
1113
import com.github.kyuubiran.ezxhelper.utils.Log
1214
import me.kyuubiran.akinatorhelper.BuildConfig
@@ -28,11 +30,38 @@ class SettingDialog(activity: Activity) : AlertDialog.Builder(activity) {
2830

2931
setView(prefsFragment.view)
3032
setTitle(activity.getString(R.string.app_name))
33+
34+
setPositiveButton(R.string.close, null)
35+
setCancelable(false)
3136
}
3237

3338
class PrefsFragment : PreferenceFragment(), Preference.OnPreferenceChangeListener,
3439
Preference.OnPreferenceClickListener {
3540

41+
private fun showEditDialog(
42+
title: String,
43+
hint: String = "",
44+
cancelable: Boolean = true,
45+
defText: String = "",
46+
inputType: Int = InputType.TYPE_CLASS_TEXT,
47+
onConfirm: ((String) -> Unit)? = null,
48+
onCancel: ((String) -> Unit)? = null
49+
) {
50+
val et = EditText(this.activity).also {
51+
it.hint = hint
52+
it.inputType = inputType
53+
it.setText(defText)
54+
}
55+
AlertDialog.Builder(this.activity).run {
56+
setTitle(title)
57+
setView(et)
58+
setCancelable(cancelable)
59+
setPositiveButton(R.string.confirm) { _, _ -> onConfirm?.invoke(et.text.toString()) }
60+
setNegativeButton(R.string.cancel) { _, _ -> onCancel?.invoke(et.text.toString()) }
61+
show()
62+
}
63+
}
64+
3665
override fun onCreate(savedInstanceState: Bundle?) {
3766
super.onCreate(savedInstanceState)
3867
addPreferencesFromResource(R.xml.setting_dialog_prefs)
@@ -43,6 +72,8 @@ class SettingDialog(activity: Activity) : AlertDialog.Builder(activity) {
4372

4473
findPreference("unlock_game").onPreferenceClickListener = this
4574
findPreference("relock_game").onPreferenceClickListener = this
75+
findPreference("add_win_times").onPreferenceClickListener = this
76+
findPreference("add_lose_times").onPreferenceClickListener = this
4677
findPreference("goto_github").onPreferenceClickListener = this
4778

4879
findPreference("module_version").summary =
@@ -80,6 +111,46 @@ class SettingDialog(activity: Activity) : AlertDialog.Builder(activity) {
80111
AkinatorHelper.isGameUnlocked = false
81112
Log.toast(getString(R.string.relock_game_success))
82113
}
114+
"add_win_times" -> {
115+
showEditDialog(
116+
getString(R.string.increase_win_times_title),
117+
getString(R.string.times_to_add),
118+
defText = "1",
119+
inputType = InputType.TYPE_CLASS_NUMBER,
120+
onConfirm = {
121+
(it.toIntOrNull() ?: 0).let { num ->
122+
if (num < 1) {
123+
Log.toast(getString(R.string.num_must_be_greater_than_zero))
124+
return@showEditDialog
125+
}
126+
repeat(num) {
127+
AkinatorHelper.Methods.addOneWonGame()
128+
}
129+
Log.toast(getString(R.string.success_increate_win_times, num))
130+
}
131+
}
132+
)
133+
}
134+
"add_lose_times" -> {
135+
showEditDialog(
136+
getString(R.string.increase_lose_times_title),
137+
getString(R.string.times_to_add),
138+
defText = "1",
139+
inputType = InputType.TYPE_CLASS_NUMBER,
140+
onConfirm = {
141+
(it.toIntOrNull() ?: 0).let { num ->
142+
if (num < 1) {
143+
Log.toast(getString(R.string.num_must_be_greater_than_zero))
144+
return@showEditDialog
145+
}
146+
repeat(num) {
147+
AkinatorHelper.Methods.addOneWonGame()
148+
}
149+
Log.toast(getString(R.string.success_increate_lose_times, num))
150+
}
151+
}
152+
)
153+
}
83154
"goto_github" -> {
84155
openUrl("https://github.com/KyuubiRan/AkinatorHelper")
85156
}

app/src/main/res/values-zh-rCN/strings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,15 @@
1616
<string name="module_version_title">模块版本</string>
1717
<string name="author_title">模块作者</string>
1818
<string name="all_item_bought_title">解锁商店所有物品</string>
19+
<string name="confirm">确认</string>
20+
<string name="cancel">取消</string>
21+
<string name="increase_win_times_title">增加胜利次数</string>
22+
<string name="increase_lose_times_title">增加失败次数</string>
23+
<string name="times_to_add">增加的次数</string>
24+
<string name="local_hack_title">本地修改</string>
25+
<string name="success_increate_win_times">已增加%d次胜利次数</string>
26+
<string name="success_increate_lose_times">已增加%d次失败次数</string>
27+
<string name="num_must_be_greater_than_zero">数字必须大于0!</string>
28+
<string name="save">保存</string>
29+
<string name="close">关闭</string>
1930
</resources>

app/src/main/res/values/strings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,15 @@
1717
<string name="author_title">Module author</string>
1818
<string name="author_summary" translatable="false">KyuubiRan</string>
1919
<string name="all_item_bought_title">Unlock all items in the shop</string>
20+
<string name="confirm">Confirm</string>
21+
<string name="cancel">Cancel</string>
22+
<string name="increase_win_times_title">Increase win times</string>
23+
<string name="increase_lose_times_title">Increase lose times</string>
24+
<string name="times_to_add">Times to add</string>
25+
<string name="local_hack_title">Local hack</string>
26+
<string name="success_increate_win_times">Increase %d win times</string>
27+
<string name="success_increate_lose_times">Increase %d lose times</string>
28+
<string name="num_must_be_greater_than_zero">The number must be greater than zero!</string>
29+
<string name="save">Save</string>
30+
<string name="close">Close</string>
2031
</resources>

app/src/main/res/xml/setting_dialog_prefs.xml

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,14 @@
1717
android:title="@string/all_item_bought_title" />
1818
</PreferenceCategory>
1919

20-
<PreferenceCategory android:title="@string/unlock_relock_game_title">
20+
<PreferenceCategory android:title="@string/local_hack_title">
21+
<Preference
22+
android:key="add_win_times"
23+
android:title="@string/increase_win_times_title" />
24+
<Preference
25+
android:key="add_lose_times"
26+
android:title="@string/increase_lose_times_title" />
27+
2128
<Preference
2229
android:key="unlock_game"
2330
android:title="@string/unlock_game_title" />
@@ -27,20 +34,20 @@
2734
android:title="@string/relock_game_title" />
2835
</PreferenceCategory>
2936

30-
<PreferenceCategory android:title="@string/other_title">
31-
<Preference
32-
android:key="author"
33-
android:title="@string/author_title"
34-
android:summary="@string/author_summary"/>
37+
<PreferenceCategory android:title="@string/other_title">
38+
<Preference
39+
android:key="author"
40+
android:summary="@string/author_summary"
41+
android:title="@string/author_title" />
3542

36-
<Preference
37-
android:key="module_version"
38-
android:title="@string/module_version_title" />
43+
<Preference
44+
android:key="module_version"
45+
android:title="@string/module_version_title" />
3946

4047
<Preference
4148
android:key="goto_github"
42-
android:title="@string/goto_github_title"
43-
android:summary="@string/goto_github_summary"/>
49+
android:summary="@string/goto_github_summary"
50+
android:title="@string/goto_github_title" />
4451
</PreferenceCategory>
4552

4653
</PreferenceScreen>

0 commit comments

Comments
 (0)