jimu-decompiled/sources/com/ubt/jimu/controller/manager/ControllerManager.java
2025-05-13 19:24:51 +02:00

204 lines
7.6 KiB
Java

package com.ubt.jimu.controller.manager;
import android.content.Context;
import android.text.TextUtils;
import android.util.Size;
import com.ubt.jimu.base.db.diy.DiyDBModel;
import com.ubt.jimu.base.db.diy.DiyHelper;
import com.ubt.jimu.base.db.robot.RobotDbHandler;
import com.ubt.jimu.base.entities.Robot;
import com.ubt.jimu.base.entities.RobotLite;
import com.ubt.jimu.base.util.FileUtil;
import com.ubt.jimu.base.util.PathHelper;
import com.ubt.jimu.controller.data.action.ActionSequence;
import com.ubt.jimu.controller.data.config.WidgetConfig;
import com.ubt.jimu.controller.data.widget.ActionWidgetData;
import com.ubt.jimu.controller.data.widget.ControllerData;
import com.ubt.jimu.controller.data.widget.MoveBaseData;
import com.ubt.jimu.controller.data.widget.MoveWidgetData;
import com.ubt.jimu.controller.util.ScreenUtil;
import com.ubt.jimu.controller.util.XmlUtils;
import com.ubt.jimu.transport3.UnityFileOperator;
import com.ubtech.utils.XLog;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
public class ControllerManager {
private static ControllerManager d;
private Context a;
private ControllerData b;
private RobotLite c;
private ControllerManager(Context context) {
this.a = context.getApplicationContext();
}
public static synchronized ControllerManager a(Context context) {
ControllerManager controllerManager;
synchronized (ControllerManager.class) {
if (d == null) {
d = new ControllerManager(context);
}
controllerManager = d;
}
return controllerManager;
}
private void b(ControllerData controllerData) {
a(controllerData.getJockstickData());
a(controllerData.getSliderData());
a(controllerData.getHsliderData());
a(controllerData.getAccumulatorData());
}
private void c(ControllerData controllerData) {
MoveWidgetData moveConfig = controllerData.getMoveConfig();
if (moveConfig == null) {
return;
}
List<WidgetConfig> configList = moveConfig.getConfigList();
if (configList != null && configList.size() > 0) {
Iterator<WidgetConfig> it = configList.iterator();
while (it.hasNext()) {
it.next().setConfigType(this.c.isOfficial() ? 1 : 2);
}
}
XLog.a("woo", "MoveWidgetData: %s", moveConfig.toString());
MoveConfigManager a = MoveConfigManager.a(this.a);
if (a.a(controllerData)) {
a(controllerData, true);
a.a(true);
}
}
public void a(RobotLite robotLite) {
this.c = robotLite;
ActionManager.a(this.a).a(robotLite);
MoveConfigManager.a(this.a).a(robotLite);
}
public ControllerData a() {
String controllerDir = PathHelper.getControllerDir(this.a, this.c, true);
String controllerPath = PathHelper.getControllerPath(controllerDir);
if (TextUtils.isEmpty(controllerPath) && this.c.isOfficial()) {
controllerPath = a(controllerDir, controllerPath);
}
if (TextUtils.isEmpty(controllerPath)) {
return null;
}
this.b = (ControllerData) XmlUtils.a(ControllerData.class, controllerPath);
ControllerData controllerData = this.b;
if (controllerData == null) {
return null;
}
b(controllerData);
boolean clearEmptyWidget = this.b.clearEmptyWidget();
boolean a = a(this.b);
if (clearEmptyWidget || a) {
a(this.b, false);
}
this.b.transform(ScreenUtil.c(this.a), new Size(this.b.getScreenWidth(), this.b.getScreenHeight()));
c(this.b);
return this.b;
}
private String a(String str, String str2) {
XLog.c("woo", "copy official controller file to user/default");
String controllerPath = PathHelper.getControllerPath(PathHelper.getControllerDir(this.a, this.c, false));
if (TextUtils.isEmpty(controllerPath)) {
return str2;
}
File file = new File(controllerPath);
if (!file.exists() || !file.isFile()) {
return str2;
}
File file2 = new File(str, file.getName());
File parentFile = file2.getParentFile();
if (!parentFile.exists()) {
parentFile.mkdirs();
}
FileUtil.copy(file, file2);
return file2.getPath();
}
private void a(List<? extends MoveBaseData> list) {
WidgetConfig a;
if (list == null || list.size() <= 0) {
return;
}
for (MoveBaseData moveBaseData : list) {
if (!TextUtils.isEmpty(moveBaseData.getConfigID()) && (a = MoveConfigManager.a(this.a).a(moveBaseData.getConfigID())) != null) {
moveBaseData.setConfig(a);
}
}
}
private boolean a(ControllerData controllerData) {
boolean z = false;
if (controllerData != null && controllerData.hasAction()) {
ArrayList<ActionWidgetData> arrayList = new ArrayList(controllerData.getActionData().size());
arrayList.addAll(controllerData.getActionData());
for (ActionWidgetData actionWidgetData : arrayList) {
String actionID = actionWidgetData.getActionID();
if (TextUtils.isEmpty(actionID)) {
controllerData.removeActionData(actionWidgetData);
} else {
ActionSequence a = ActionManager.a(this.a).a(actionID);
if (a == null) {
controllerData.removeActionData(actionWidgetData);
} else {
actionWidgetData.setActionSequence(a);
}
}
z = true;
}
}
return z;
}
public void a(ControllerData controllerData, boolean z) {
String str;
int i;
if (controllerData == null || this.c == null) {
return;
}
controllerData.transform(ScreenUtil.c(this.a), new Size(controllerData.getScreenWidth(), controllerData.getScreenHeight()));
String controllerDir = PathHelper.getControllerDir(this.a, this.c, true);
if (TextUtils.isEmpty(controllerDir)) {
return;
}
String controllerPath = PathHelper.getControllerPath(controllerDir);
if (TextUtils.isEmpty(controllerPath)) {
File file = new File(controllerDir);
if (!file.exists()) {
file.mkdirs();
}
str = controllerDir + PathHelper.newControllerFileName(this.c.getModelId());
i = 1;
} else {
str = controllerPath;
i = 2;
}
XLog.a("woo", "save : %s", controllerData.toString());
XmlUtils.a(controllerData, str);
if (z) {
if (!this.c.isOfficial()) {
DiyDBModel queryForUUid = DiyHelper.getInstance().queryForUUid(this.c.getModelId());
if (queryForUUid != null) {
new UnityFileOperator(queryForUUid.getModelId().intValue(), queryForUUid.getCustomModelId(), 1, str, i).operateFile();
return;
}
return;
}
Robot robotByModelName = RobotDbHandler.getRobotByModelName(this.c.getModelId());
if (robotByModelName == null || robotByModelName.getModelId() <= 0) {
return;
}
new UnityFileOperator((int) robotByModelName.getModelId(), this.c.getModelId(), 0, str, i).officialModelFileOperator();
}
}
}