Initial commit
This commit is contained in:
203
sources/com/ubt/jimu/controller/manager/ControllerManager.java
Normal file
203
sources/com/ubt/jimu/controller/manager/ControllerManager.java
Normal file
@@ -0,0 +1,203 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user