package net.zhuoweizhang.mcpelauncher;
import android.content.*;
import java.util.*;
import java.io.*;
import net.zhuoweizhang.mcpelauncher.ui.MainMenuOptionsActivity;
public class PatchManager {
public static PatchManager patchMgr;
private Context context;
private Set<String> enabledPatches;
public static final String[] blankArray = new String[0];
public static PatchManager getPatchManager(Context context) {
if (patchMgr == null) {
patchMgr = new PatchManager(context);
}
return patchMgr;
}
public PatchManager(Context context) {
this.context = context;
loadEnabledPatches();
}
public Set<String> getEnabledPatches() {
return enabledPatches;
}
private void setEnabled(String name, boolean state) {
if (state) {
enabledPatches.add(name);
} else {
enabledPatches.remove(name);
}
saveEnabledPatches();
}
public void setEnabled(File[] files, boolean state) {
for (File file: files) {
String name = file.getAbsolutePath();
if (name == null || name.length() <= 0) continue;
if (state) {
enabledPatches.add(name);
} else {
enabledPatches.remove(name);
}
}
saveEnabledPatches();
}
public void setEnabled(File file, boolean state) {
setEnabled(file.getAbsolutePath(), state);
}
private boolean isEnabled(String name) {
return enabledPatches.contains(name);
}
public boolean isEnabled(File file) {
return isEnabled(file.getAbsolutePath());
}
public void removeDeadEntries(Collection<String> allPossibleFiles) {
enabledPatches.retainAll(allPossibleFiles);
saveEnabledPatches();
}
protected void loadEnabledPatches() {
enabledPatches = Utils.getEnabledPatches();
}
protected void saveEnabledPatches() {
SharedPreferences sharedPrefs = Utils.getPrefs(1);
SharedPreferences.Editor edit = sharedPrefs.edit();
edit.putString("enabledPatches", join(enabledPatches.toArray(blankArray), ";"));
edit.putBoolean("force_prepatch", true);
edit.putInt("patchManagerVersion", 1);
edit.apply();
}
public static String join(String[] list, String token) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < list.length; i++) {
builder.append(list[i]);
if (i < list.length - 1) {
builder.append(token);
}
}
return builder.toString();
}
public void disableAllPatches() {
enabledPatches.clear();
saveEnabledPatches();
}
}