增加 fps 设置
This commit is contained in:
parent
63d2c26e69
commit
fb65a34684
@ -25,6 +25,10 @@
|
|||||||
android:name="xposedsharedprefs"
|
android:name="xposedsharedprefs"
|
||||||
android:value="true" />
|
android:value="true" />
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="xposedscope"
|
||||||
|
android:value="com.bandainamcoent.idolmaster_gakuen" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
|
@ -130,6 +130,11 @@ namespace GakumasLocal::HookMain {
|
|||||||
return Unity_set_rotation_Injected_Orig(_this, value);
|
return Unity_set_rotation_Injected_Orig(_this, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_HOOK(void, Unity_set_targetFrameRate, (int value)) {
|
||||||
|
const auto configFps = Config::targetFrameRate;
|
||||||
|
return Unity_set_targetFrameRate_Orig(configFps == 0 ? value: configFps);
|
||||||
|
}
|
||||||
|
|
||||||
std::unordered_map<void*, std::string> loadHistory{};
|
std::unordered_map<void*, std::string> loadHistory{};
|
||||||
|
|
||||||
DEFINE_HOOK(void*, AssetBundle_LoadAssetAsync, (void* _this, Il2cppString* name, void* type)) {
|
DEFINE_HOOK(void*, AssetBundle_LoadAssetAsync, (void* _this, Il2cppString* name, void* type)) {
|
||||||
@ -365,6 +370,8 @@ namespace GakumasLocal::HookMain {
|
|||||||
"UnityEngine.Transform::set_position_Injected(UnityEngine.Vector3&)"));
|
"UnityEngine.Transform::set_position_Injected(UnityEngine.Vector3&)"));
|
||||||
ADD_HOOK(Unity_set_rotation_Injected, Il2cppUtils::il2cpp_resolve_icall(
|
ADD_HOOK(Unity_set_rotation_Injected, Il2cppUtils::il2cpp_resolve_icall(
|
||||||
"UnityEngine.Transform::set_rotation_Injected(UnityEngine.Quaternion&)"));
|
"UnityEngine.Transform::set_rotation_Injected(UnityEngine.Quaternion&)"));
|
||||||
|
ADD_HOOK(Unity_set_targetFrameRate, Il2cppUtils::il2cpp_resolve_icall(
|
||||||
|
"UnityEngine.Application::set_targetFrameRate(System.Int32)"));
|
||||||
}
|
}
|
||||||
// 77 2640 5000
|
// 77 2640 5000
|
||||||
|
|
||||||
|
@ -7,12 +7,14 @@ namespace GakumasLocal::Config {
|
|||||||
|
|
||||||
bool enabled = true;
|
bool enabled = true;
|
||||||
bool enableFreeCamera = false;
|
bool enableFreeCamera = false;
|
||||||
|
int targetFrameRate = 0;
|
||||||
|
|
||||||
void LoadConfig(const std::string& configStr) {
|
void LoadConfig(const std::string& configStr) {
|
||||||
try {
|
try {
|
||||||
const auto config = nlohmann::json::parse(configStr);
|
const auto config = nlohmann::json::parse(configStr);
|
||||||
|
|
||||||
enabled = config["enabled"];
|
enabled = config["enabled"];
|
||||||
|
targetFrameRate = config["targetFrameRate"];
|
||||||
enableFreeCamera = config["enableFreeCamera"];
|
enableFreeCamera = config["enableFreeCamera"];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ namespace GakumasLocal::Config {
|
|||||||
|
|
||||||
extern bool enabled;
|
extern bool enabled;
|
||||||
extern bool enableFreeCamera;
|
extern bool enableFreeCamera;
|
||||||
|
extern int targetFrameRate;
|
||||||
|
|
||||||
void LoadConfig(const std::string& configStr);
|
void LoadConfig(const std::string& configStr);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ package io.github.chinosk.gakumas.localify
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
@ -17,6 +18,7 @@ interface ConfigListener {
|
|||||||
fun onClickStartGame()
|
fun onClickStartGame()
|
||||||
fun onEnabledChanged(value: Boolean)
|
fun onEnabledChanged(value: Boolean)
|
||||||
fun onEnableFreeCameraChanged(value: Boolean)
|
fun onEnableFreeCameraChanged(value: Boolean)
|
||||||
|
fun onTargetFpsChanged(s: CharSequence, start: Int, before: Int, count: Int)
|
||||||
}
|
}
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity(), ConfigListener {
|
class MainActivity : AppCompatActivity(), ConfigListener {
|
||||||
@ -83,6 +85,23 @@ class MainActivity : AppCompatActivity(), ConfigListener {
|
|||||||
saveConfig()
|
saveConfig()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onTargetFpsChanged(s: CharSequence, start: Int, before: Int, count: Int) {
|
||||||
|
try {
|
||||||
|
val valueStr = s.toString()
|
||||||
|
|
||||||
|
val value = if (valueStr == "") {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
|
valueStr.toInt()
|
||||||
|
}
|
||||||
|
config.targetFrameRate = value
|
||||||
|
saveConfig()
|
||||||
|
}
|
||||||
|
catch (e: Exception) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onClickStartGame() {
|
override fun onClickStartGame() {
|
||||||
val intent = Intent().apply {
|
val intent = Intent().apply {
|
||||||
setClassName("com.bandainamcoent.idolmaster_gakuen", "com.google.firebase.MessagingUnityPlayerActivity")
|
setClassName("com.bandainamcoent.idolmaster_gakuen", "com.google.firebase.MessagingUnityPlayerActivity")
|
||||||
|
@ -2,6 +2,7 @@ package io.github.chinosk.gakumas.localify.models
|
|||||||
|
|
||||||
data class GakumasConfig(
|
data class GakumasConfig(
|
||||||
var enabled: Boolean = true,
|
var enabled: Boolean = true,
|
||||||
var enableFreeCamera: Boolean = false
|
var enableFreeCamera: Boolean = false,
|
||||||
|
var targetFrameRate: Int = 0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
<layout xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<data>
|
<data>
|
||||||
<variable name="config" type="io.github.chinosk.gakumas.localify.models.GakumasConfig" />
|
<variable name="config" type="io.github.chinosk.gakumas.localify.models.GakumasConfig" />
|
||||||
<variable
|
<variable
|
||||||
@ -9,8 +11,6 @@
|
|||||||
</data>
|
</data>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:padding="6sp"
|
android:padding="6sp"
|
||||||
@ -56,6 +56,33 @@
|
|||||||
android:text="@string/enable_plugin" />
|
android:text="@string/enable_plugin" />
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
|
<TableRow
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
app:boxBackgroundColor="@android:color/transparent"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:hint="@string/setFpsTitle" >
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/editTextTargetFps"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:ems="10"
|
||||||
|
android:inputType="numberSigned"
|
||||||
|
android:paddingStart="0dp"
|
||||||
|
android:paddingEnd="0dp"
|
||||||
|
android:paddingBottom="0dp"
|
||||||
|
android:text="@={`` + config.targetFrameRate}"
|
||||||
|
android:onTextChanged="@{(s, st, b, a) -> listener.onTargetFpsChanged(s, st, b, a)}"/>
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
@ -68,6 +95,7 @@
|
|||||||
android:onCheckedChanged="@{(view, value) -> listener.onEnableFreeCameraChanged(value)}"
|
android:onCheckedChanged="@{(view, value) -> listener.onEnableFreeCameraChanged(value)}"
|
||||||
android:text="@string/enable_free_camera" />
|
android:text="@string/enable_free_camera" />
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
@ -4,4 +4,5 @@
|
|||||||
<string name="enable_plugin">启用插件 (不可热重载)</string>
|
<string name="enable_plugin">启用插件 (不可热重载)</string>
|
||||||
<string name="enable_free_camera">启用自由视角(可热重载; 需使用实体键盘)</string>
|
<string name="enable_free_camera">启用自由视角(可热重载; 需使用实体键盘)</string>
|
||||||
<string name="start_game">以上述配置启动游戏/重载配置</string>
|
<string name="start_game">以上述配置启动游戏/重载配置</string>
|
||||||
|
<string name="setFpsTitle">最大 FPS (0 为保持游戏原设置)</string>
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user