public static void DoAssignDrugPolicyButtons(Rect rect, ColonistGroup group) { int num = Mathf.FloorToInt((rect.width - 4f) * 0.714285731f); int num2 = Mathf.FloorToInt((rect.width - 4f) * 0.2857143f); float x = rect.x; Rect rect2 = new Rect(x, rect.y + 2f, num, rect.height - 4f); string text = group.pawns.First().drugs.CurrentPolicy.label; Widgets.Dropdown(rect2, group, (ColonistGroup g) => g.pawns.First().drugs.CurrentPolicy, Button_GenerateMenu, text.Truncate(rect2.width), null, group.pawns.First().drugs.CurrentPolicy.label, null, delegate { PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.DrugPolicies, KnowledgeAmount.Total); }, paintable: true); x += (float)num; x += 4f; Rect rect3 = new Rect(x, rect.y + 2f, num2, rect.height - 4f); if (Widgets.ButtonText(rect3, "AssignTabEdit".Translate())) { var window = new Dialog_ManageDrugPolicies(group.pawns.First().drugs.CurrentPolicy); Find.WindowStack.Add(window); } UIHighlighter.HighlightOpportunity(rect2, "ButtonAssignDrugs"); UIHighlighter.HighlightOpportunity(rect3, "ButtonAssignDrugs"); x += (float)num2; }
static void Postfix(Dialog_ManageDrugPolicies __instance, Rect inRect) { float x = 500; if (Widgets.ButtonText(new Rect(x, 0, 150f, 35f), "SaveStorageSettings.LoadAsNew".Translate(), true, false, true)) { DrugPolicy policy = Current.Game.drugPolicyDatabase.MakeNewDrugPolicy(); SetDrugPolicy(__instance, policy); Find.WindowStack.Add(new LoadPolicyDialog("DrugPolicy", policy)); } x += 160; DrugPolicy selectedPolicy = GetDrugPolicy(__instance); if (selectedPolicy != null) { Text.Font = GameFont.Small; if (Widgets.ButtonText(new Rect(x, 0f, 75, 35f), "LoadGameButton".Translate(), true, false, true)) { string label = selectedPolicy.label; Find.WindowStack.Add(new LoadPolicyDialog("DrugPolicy", selectedPolicy)); selectedPolicy.label = label; } x += 80; if (Widgets.ButtonText(new Rect(x, 0f, 75, 35f), "SaveGameButton".Translate(), true, false, true)) { Find.WindowStack.Add(new SavePolicyDialog("DrugPolicy", selectedPolicy)); } } }
static void DialogManageDrugPolicies(Dialog_ManageDrugPolicies __instance) { DrugPolicy policy = __instance.SelectedPolicy; for (int i = 0; i < policy.Count; i++) { SyncDrugPolicyEntry.Watch(policy, i); SyncDrugPolicyEntryBuffered.Watch(policy, i); } }
public void DoDrugPolicyHeader(Rect rect) { MouseoverSounds.DoRegion(rect); Rect rect2 = new Rect(rect.x, rect.y + (rect.height - 65f), Mathf.Min(rect.width, 360f), 32f); if (Widgets.ButtonText(rect2, "ManageDrugPolicies".Translate())) { var window = new Dialog_ManageDrugPolicies(null); Find.WindowStack.Add(window); } UIHighlighter.HighlightOpportunity(rect2, "ManageDrugPolicies"); UIHighlighter.HighlightOpportunity(rect2, "ButtonAssignDrugs"); }
private static void SetDrugPolicy(Dialog_ManageDrugPolicies dialog, DrugPolicy selectedPolicy) { typeof(Dialog_ManageDrugPolicies).GetProperty("SelectedPolicy", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty).SetValue(dialog, selectedPolicy, null); }
private static DrugPolicy GetDrugPolicy(Dialog_ManageDrugPolicies dialog) { return((DrugPolicy)typeof(Dialog_ManageDrugPolicies).GetProperty("SelectedPolicy", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty).GetValue(dialog, null)); }