204 lines
7.6 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|