Initial commit
This commit is contained in:
66
mod/Utils.cs
Normal file
66
mod/Utils.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user