public override void ProcessInput(Event ev) { // Show change color option List <FloatMenuOption> list = new List <FloatMenuOption> { new FloatMenuOption("MorePlanning.ChangeColor".Translate(), delegate { Find.WindowStack.Add(new ColorSelectorDialog(Color)); }) }; Find.WindowStack.Add(new FloatMenu(list)); // Select color MorePlanningMod.Instance.SelectedColor = Color; if (Find.DesignatorManager.SelectedDesignator == null) { var designatorPlanPaste = MenuUtility.GetPlanningDesignator <AddDesignator>(); Find.DesignatorManager.Select(designatorPlanPaste); } }
public override void DesignateMultiCell(IEnumerable <IntVec3> cells) { var planDesignations = cells.Select(cell => MapUtility.GetPlanDesignationAt(cell, Map)).Where(cell => cell != null).ToList(); cells = planDesignations.Select(plan => plan.target.Cell); if (planDesignations.Count == 0) { Messages.Message("MorePlanning.MissingPlanningDesignations".Translate(), MessageTypeDefOf.RejectInput); return; } int left = cells.Min(cell => cell.x); int top = cells.Max(cell => cell.z); int right = cells.Max(cell => cell.x); int bottom = cells.Min(cell => cell.z); IntVec2 mousePos = new IntVec2((int)Math.Floor(UI.MouseMapPosition().x), (int)Math.Floor(UI.MouseMapPosition().z)); // Adjust mouse position to nearest planning designation if (mousePos.x < left) { mousePos.x = left; } else if (mousePos.x > left) { mousePos.x = right; } if (mousePos.z > top) { mousePos.z = top; } else if (mousePos.z < bottom) { mousePos.z = bottom; } int sizeCompX = mousePos.x; int sizeCompZ = mousePos.z; List <PlanInfo> planDesignationInfo = new List <PlanInfo>(); // Copy all data from designations foreach (var planDesignation in planDesignations) { var planInfo = new PlanInfo { Color = planDesignation.Color, Pos = new IntVec3(planDesignation.target.Cell.x - sizeCompX, planDesignation.target.Cell.y, planDesignation.target.Cell.z - sizeCompZ) }; planDesignationInfo.Add(planInfo); } var planCopy = new PlanInfoSet(planDesignationInfo); PasteDesignator.CurrentPlanCopy = planCopy; Finalize(true); var designatorPlanPaste = MenuUtility.GetPlanningDesignator <PasteDesignator>(); Find.DesignatorManager.Select(designatorPlanPaste); }