67 lines
2.3 KiB
C#
67 lines
2.3 KiB
C#
using System.Reflection;
|
|
|
|
namespace PriorityUX {
|
|
static class Utils {
|
|
static readonly string PlayerPrefsKey = "LastUsedPriority";
|
|
static int? lastValue;
|
|
|
|
public static PrioritySetting getDefaultPriority() {
|
|
return new PrioritySetting(PriorityScreen.PriorityClass.basic, Options.Instance.resetPriorityLevel);
|
|
}
|
|
|
|
static int prioritySettingToInt(PrioritySetting setting) {
|
|
if (setting.priority_class == PriorityScreen.PriorityClass.topPriority)
|
|
return 0;
|
|
return setting.priority_value;
|
|
}
|
|
|
|
static PrioritySetting intToPrioritySetting(int v) {
|
|
if (v < 1 || v > 9)
|
|
return new PrioritySetting(PriorityScreen.PriorityClass.topPriority, 1);
|
|
return new PrioritySetting(PriorityScreen.PriorityClass.basic, v);
|
|
}
|
|
|
|
public static void setLastPriority(PrioritySetting setting) {
|
|
int value = prioritySettingToInt(setting);
|
|
if (lastValue.HasValue && lastValue.Value == value)
|
|
return;
|
|
|
|
Debug.Log("[PriorityUX] >> setLastPriority: " + value);
|
|
KPlayerPrefs.SetInt(PlayerPrefsKey, value);
|
|
lastValue = value;
|
|
}
|
|
|
|
public static PrioritySetting getLastPriority() {
|
|
int value = KPlayerPrefs.GetInt(PlayerPrefsKey, -1);
|
|
if (value < 0) {
|
|
Debug.Log("[PriorityUX] >> getLastPriority: <invalid>");
|
|
return getDefaultPriority();
|
|
} else {
|
|
// Debug.Log("[PriorityUX] >> getLastPriority: " + value);
|
|
return intToPrioritySetting(value);
|
|
}
|
|
}
|
|
|
|
public static void refreshPriorityScreen(PriorityScreen screen) {
|
|
screen.SetScreenPriority(Utils.getLastPriority());
|
|
}
|
|
|
|
public static void refreshToolMenuPriority() {
|
|
refreshPriorityScreen(ToolMenu.Instance.PriorityScreen);
|
|
}
|
|
|
|
// static readonly FieldInfo productInfoScreenField = typeof(BuildMenu).GetField("productInfoScreen", BindingFlags.NonPublic | BindingFlags.Instance);
|
|
// public static ProductInfoScreen? getPlanScreenProductInfoScreen() {
|
|
// if (BuildMenu.Instance) {
|
|
// ProductInfoScreen productInfoScreen = (ProductInfoScreen)productInfoScreenField.GetValue(BuildMenu.Instance);
|
|
// return productInfoScreen;
|
|
// }
|
|
// return null;
|
|
// }
|
|
|
|
public static PriorityScreen? getPlanPriorityScreen() {
|
|
return PlanScreen.Instance?.ProductInfoScreen?.materialSelectionPanel?.PriorityScreen;
|
|
}
|
|
}
|
|
}
|