public static bool Prefix(ushort vehicleID, ref Vehicle data, TransferManager.TransferReason material, TransferManager.TransferOffer offer) { Debug.Log("Start Transfer Called"); Debug.Log("Start Transfer Called"); return(DistrictHelper.CanTransfer(data.m_sourceBuilding, material, offer)); }
private static void DistrictToggleCheck(UIComponent comp, bool value) { DebugHelper.Log($"Toggling {comp.name} to {value}"); DistrictOptions customOptions = AdvancedDistrictOptionsTool.instance.CustomDistrictOptions.TryGetValue( AdvancedDistrictOptionsTool.instance.SelectedDistrictID, out var props) ? props : new DistrictOptions(); if (value) { customOptions.AllowedDistricts.Add(DistrictHelper.RetrieveDistrictIDFromName(comp.name)); } else { customOptions.AllowedDistricts.Remove(DistrictHelper.RetrieveDistrictIDFromName(comp.name)); } if (AdvancedDistrictOptionsTool.instance.CustomDistrictOptions.TryGetValue( AdvancedDistrictOptionsTool.instance.SelectedDistrictID, out var _)) { AdvancedDistrictOptionsTool.instance.CustomDistrictOptions[ AdvancedDistrictOptionsTool.instance.SelectedDistrictID] = customOptions; } else { AdvancedDistrictOptionsTool.instance.CustomDistrictOptions.Add(AdvancedDistrictOptionsTool.instance.SelectedDistrictID, customOptions); } foreach (var id in AdvancedDistrictOptionsTool.instance.CustomDistrictOptions[AdvancedDistrictOptionsTool.instance.SelectedDistrictID].AllowedDistricts) { DebugHelper.Log($"{DistrictManager.instance.GetDistrictName(id)} exists in {DistrictManager.instance.GetDistrictName(AdvancedDistrictOptionsTool.instance.SelectedDistrictID)}'s Allowed List"); } }
public static UICheckBox CreateCheckbox(UIComponent parent, string name) { var checkBox = parent.AddUIComponent <UICheckBox>(); checkBox.name = name; checkBox.width = 20f; checkBox.height = 20f; checkBox.relativePosition = Vector3.zero; var sprite = checkBox.AddUIComponent <UISprite>(); sprite.spriteName = "ToggleBase"; sprite.size = new Vector2(16f, 16f); sprite.relativePosition = new Vector3(2f, 2f); checkBox.checkedBoxObject = sprite.AddUIComponent <UISprite>(); ((UISprite)checkBox.checkedBoxObject).spriteName = "ToggleBaseFocused"; checkBox.checkedBoxObject.size = new Vector2(16f, 16f); checkBox.checkedBoxObject.relativePosition = Vector3.zero; checkBox.isChecked = ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var options) && options.CoveredDistricts.Contains(DistrictHelper.RetrieveDistrictIDFromName(name)); checkBox.eventCheckChanged += OnCheckChanged; return(checkBox); }
private static void OnParkCheckChanged(UIComponent comp, bool value) { if (ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var options)) { if (value) { options.CoveredParks.Add(DistrictHelper.RetrieveParkIDFromName(comp.name)); } else { options.CoveredParks.Remove(DistrictHelper.RetrieveParkIDFromName(comp.name)); } } else { if (!value) { return; } ServiceBuildingOptions serviceBuildingOptions = new ServiceBuildingOptions(); serviceBuildingOptions.CoveredParks.Add(DistrictHelper.RetrieveParkIDFromName(comp.name)); ServiceRestrictTool.instance.CustomServiceBuildingOptions.Add( ServiceRestrictTool.instance.SelectedBuildingID, serviceBuildingOptions); } }
private void Setup() { name = "ServiceRestrictionRestrictIndustriesPanel"; isVisible = false; canFocus = true; isInteractive = true; relativePosition = new Vector3(0f, UiIndustriesTitleBar.Instance.height); width = parent.width; float widestWidth = 0f; Inputs = new List <UIComponent>(); _labels = new List <UILabel>(); foreach (var industry in DistrictHelper.RetrieveAllIndustryNames()) { var label = AddUIComponent <UILabel>(); label.name = industry + "Label"; label.text = industry; label.textScale = 0.9f; label.isInteractive = false; try { Inputs.Add(UIUtils.CreateParkCheckbox(this, industry)); _labels.Add(label); if (label.width + UIUtils.FieldWidth + UIUtils.FieldMargin * 6 > widestWidth) { widestWidth = label.width + UIUtils.FieldWidth + UIUtils.FieldMargin * 6; } } catch (Exception e) { Debug.Log($"Couldn't create Checkbox for {industry}. {e.Message} - {e.StackTrace}"); } } Inputs.Sort((x, y) => x.name.CompareTo(y.name)); _labels.Sort((x, y) => x.name.CompareTo(y.name)); width = IndustriesPanelWrapper.Instance.width = UiIndustriesTitleBar.Instance.width = UiIndustriesTitleBar.Instance.DragHandle.width = widestWidth; UiIndustriesTitleBar.Instance.RecenterElements(); Align(); height = Inputs.Count * (UIUtils.FieldHeight + UIUtils.FieldMargin) + UIUtils.FieldMargin * 3; IndustriesPanelWrapper.Instance.height = height + UiIndustriesTitleBar.Instance.height; IndustriesPanelWrapper.Instance.relativePosition = new Vector3( RestrictedDistrictPanelWrapper.Instance.relativePosition.x + IndustriesPanelWrapper.Instance.width + 20f, RestrictedDistrictPanelWrapper.Instance.relativePosition.y); isVisible = IndustriesPanelWrapper.Instance.isVisible = UiIndustriesTitleBar.Instance.isVisible = UiIndustriesTitleBar.Instance.DragHandle.isVisible = true; }
public static void StartTest() { List <District> districts = DistrictHelper.GetProvinces(); foreach (District district in districts) { System.Console.WriteLine(district.Name + district.Extra); List <District> districts2 = DistrictHelper.GetDistrictsByParentId(district.Id); foreach (District district1 in districts2) { System.Console.WriteLine(district.Name + district.Extra + " - " + district1.Name + district1.Extra); } } }
public static bool Prefix(ushort buildingID, ref Building data, TransferManager.TransferReason material, TransferManager.TransferOffer offer) { if (DistrictHelper.BuildingTransfer(buildingID, material, offer)) { DebugHelper.Log($"Transfer Request Accepted."); return(true); } BuildingHelper.MoveRequest(buildingID, ref data, material, offer); { DebugHelper.Log("Moving Transfer Request."); return(false); } }
public static bool Prefix(ushort buildingID, ref Building data, TransferManager.TransferReason reason, TransferManager.TransferOffer offer) { Debug.Log("Start Transfer Called"); if (DistrictHelper.CanTransfer(buildingID, reason, offer)) { Debug.Log("Transfer Request Accepted."); return(true); } BuildingHelper.MoveRequest(buildingID, ref data, reason, offer); { Debug.Log("Moving Transfer Request."); return(false); } }
public static bool Prefix(ushort buildingID, ref Building data, TransferManager.TransferReason material, TransferManager.TransferOffer offer) { Debug.Log("Start Transfer Called"); if (DistrictHelper.CanTransfer(buildingID, material, offer)) { Debug.Log( $"Transfer Request Accepted from {DistrictManager.instance.GetDistrictName(DistrictManager.instance.GetDistrict(data.m_position))}"); return(true); } BuildingHelper.MoveRequest(buildingID, ref data, material, offer); { Debug.Log( $"Moving Transfer Request from {DistrictManager.instance.GetDistrictName(DistrictManager.instance.GetDistrict(data.m_position))}"); return(false); } }
public override void Update() { base.Update(); Inputs.Find(x => x.name == "CampusesButton").isEnabled = DistrictHelper.RetrieveAllCampusNames().Count > 0; Inputs.Find(x => x.name == "IndustriesButton").isEnabled = DistrictHelper.RetrieveAllIndustryNames().Count > 0; Inputs.Find(x => x.name == "ParksButton").isEnabled = DistrictHelper.RetrieveAllParkNames().Count > 0; if (!ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var options)) { return; } ((UIButton)Inputs.Find(x => x.name == "Restrict EmptyingButton")).normalBgSprite = options.RestrictEmptying ? "ListItemHighlight" : "ButtonMenu"; }
public static void MoveRequest(ushort buildingID, ref Building data, TransferManager.TransferReason reason, TransferManager.TransferOffer offer) { var buildingType = data.Info.m_buildingAI.GetType().BaseType; FastList <ushort> buildings = BuildingManager.instance.GetServiceBuildings(data.Info.GetService()); if (buildings == null) { return; } bool moveRequest = reason == TransferManager.TransferReason.Fire || reason == TransferManager.TransferReason.Crime || reason == TransferManager.TransferReason.Dead || reason == TransferManager.TransferReason.Fire2 || reason == TransferManager.TransferReason.Garbage || reason == TransferManager.TransferReason.RoadMaintenance || reason == TransferManager.TransferReason.Snow || reason == TransferManager.TransferReason.Sick || reason == TransferManager.TransferReason.Sick2 || reason == TransferManager.TransferReason.Taxi || reason == TransferManager.TransferReason.OutgoingMail || reason == TransferManager.TransferReason.SortedMail || reason == TransferManager.TransferReason.Mail || reason == TransferManager.TransferReason.FloodWater; for (ushort x = 0; x < buildings.m_size; x++) { ushort delegateBuildingId = buildings.m_buffer[x]; if (delegateBuildingId == buildingID) { continue; } var delegateBuilding = BuildingManager.instance.m_buildings.m_buffer[delegateBuildingId]; if (!delegateBuilding.m_flags.IsFlagSet(Building.Flags.Created) || delegateBuilding.m_problems.IsFlagSet(Notification.Problem.Emptying) || delegateBuilding.m_problems.IsFlagSet(Notification.Problem.EmptyingFinished)) { continue; } if (!buildingType.IsInstanceOfType(delegateBuilding.Info.m_buildingAI)) { continue; } if (delegateBuilding.Info.m_buildingAI.IsFull(delegateBuildingId, ref delegateBuilding)) { continue; } if (moveRequest && !SpareVehicles(delegateBuildingId, ref delegateBuilding)) { continue; } if (moveRequest) { if (DistrictHelper.BuildingTransfer(delegateBuildingId, reason, offer)) { delegateBuilding.Info.m_buildingAI.StartTransfer(delegateBuildingId, ref delegateBuilding, reason, offer); } } else { offer.Building = delegateBuildingId; offer.Position = delegateBuilding.m_position; if (DistrictHelper.BuildingTransfer(buildingID, reason, offer)) { data.Info.m_buildingAI.StartTransfer(buildingID, ref data, reason, offer); } } } }
private void Setup() { name = "ServiceRestrictionRestrictDistrictsPanel"; isVisible = false; canFocus = true; isInteractive = true; relativePosition = new Vector3(0f, UiTitleBar.Instance.height); width = parent.width; float widestWidth = 0f; Inputs = new List <UIComponent>(); _labels = new List <UILabel>(); foreach (var district in DistrictHelper.RetrieveAllDistrictNames().Where(x => x != DistrictManager.instance.GetDistrictName(DistrictManager.instance.GetDistrict(BuildingManager .instance.m_buildings.m_buffer[ServiceRestrictTool.instance.SelectedBuildingID].m_position)))) { var label = AddUIComponent <UILabel>(); label.name = district + "Label"; label.text = district; label.textScale = 0.9f; label.isInteractive = false; try { Inputs.Add(UIUtils.CreateCheckbox(this, district)); _labels.Add(label); if (label.width + UIUtils.FieldWidth + UIUtils.FieldMargin * 6 > widestWidth) { widestWidth = label.width + UIUtils.FieldWidth + UIUtils.FieldMargin * 6; } } catch (Exception e) { Debug.Log($"Couldn't create Checkbox for {district}. {e.Message} - {e.StackTrace}"); } } Inputs.Add(UIUtils.CreateCheckbox(this, "aaThisDistrictOnly")); var thisDistrictLabel = AddUIComponent <UILabel>(); thisDistrictLabel.name = "aaThisDistrictOnlyLabel"; thisDistrictLabel.text = DistrictManager.instance.GetDistrictName( DistrictManager.instance.GetDistrict(BuildingManager.instance.m_buildings .m_buffer[ServiceRestrictTool.instance.SelectedBuildingID].m_position)); thisDistrictLabel.textScale = 0.9f; thisDistrictLabel.isInteractive = false; thisDistrictLabel.textColor = Color.green; _labels.Add(thisDistrictLabel); Inputs.Sort((x, y) => x.name.CompareTo(y.name)); _labels.Sort((x, y) => x.name.CompareTo(y.name)); SetupEmptyButton(); Inputs.Add(UIUtils.CreateCheckbox(this, "Invert", (component, value) => { if (ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var options)) { options.Inverted = !options.Inverted; } else { ServiceBuildingOptions newOptions = new ServiceBuildingOptions { Inverted = true }; ServiceRestrictTool.instance.CustomServiceBuildingOptions.Add( ServiceRestrictTool.instance.SelectedBuildingID, newOptions); } })); SetupButtons(); SetupCopyButtons(); width = RestrictedDistrictPanelWrapper.Instance.width = UiTitleBar.Instance.width = UiTitleBar.Instance.DragHandle.width = widestWidth; UiTitleBar.Instance.RecenterElements(); Align(); AlignButtons(); height = Inputs.Count * (UIUtils.FieldHeight + UIUtils.FieldMargin) + UIUtils.FieldMargin * 3; RestrictedDistrictPanelWrapper.Instance.height = height + UiTitleBar.Instance.height; RestrictedDistrictPanelWrapper.Instance.relativePosition = new Vector3(ServiceRestrictionsMod.Settings.PanelX, ServiceRestrictionsMod.Settings.PanelY); isVisible = RestrictedDistrictPanelWrapper.Instance.isVisible = UiTitleBar.Instance.isVisible = UiTitleBar.Instance.DragHandle.isVisible = true; }
private void SetupCopyButtons() { Inputs.Add(UIUtils.CreateButton(this, "Copy Options", (component, value) => { if (!ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var options)) { return; } Clipboard.CopyOptions(options, ServiceRestrictTool.instance.SelectedBuildingID); }, 0.6f)); var copyButton = Inputs.Find(x => x.name == "Copy OptionsButton"); if (!ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var _)) { copyButton.isEnabled = false; copyButton.tooltip = "No Options are present on this building."; } copyButton.tooltip = "Copies the existing options to the clipboard." + Environment.NewLine + "This will overwrite any previous copied settings on the clipboard."; Inputs.Add(UIUtils.CreateButton(this, "Paste Options", (component, param) => { if (Clipboard.CopiedOptions == null) { return; } if (!ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var _)) { ServiceBuildingOptions newOptions = Clipboard.PasteOptions(); ServiceRestrictTool.instance.CustomServiceBuildingOptions.Add( ServiceRestrictTool.instance.SelectedBuildingID, newOptions); } else { var tempOptions = Clipboard.PasteOptions(); ServiceRestrictTool.instance.CustomServiceBuildingOptions[ ServiceRestrictTool.instance.SelectedBuildingID] = tempOptions; } foreach (var input in Inputs) { if (input is UICheckBox checkbox) { switch (checkbox.name) { case "Areas without a district.": { checkbox.isChecked = ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var props) && props.CoveredDistricts.Contains(0); } break; case "aaThisDistrictOnly": { checkbox.isChecked = ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var props) && props.CoveredDistricts.Contains(DistrictHelper.RetrieveDistrictIDFromName( DistrictManager.instance.GetDistrictName( DistrictManager.instance.GetDistrict(BuildingManager.instance.m_buildings .m_buffer[ServiceRestrictTool.instance.SelectedBuildingID] .m_position)))); } break; default: { checkbox.isChecked = ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var props) && props.CoveredDistricts.Contains( DistrictHelper.RetrieveDistrictIDFromName(checkbox.name)); } break; } } } }, 0.6f)); var pasteButton = Inputs.Find(x => x.name == "Paste OptionsButton"); if (Clipboard.CopiedOptions == null) { pasteButton.isEnabled = false; pasteButton.tooltip = "No Options have been copied yet."; } pasteButton.tooltip = $"Pastes the copied settings from {CustomizeItExtendedCompatibility.RetrieveBuildingName(Clipboard.CopiedBuildingID)} onto this building." + Environment.NewLine + "This will overwrite this buildings current settings."; }
public static bool Prefix(ref Citizen data, TransferManager.TransferReason reason, TransferManager.TransferOffer offer) { return(DistrictHelper.CitizenTransfer(ref data, reason, offer)); }
public static bool Prefix(ushort vehicleID, ref Vehicle data, TransferManager.TransferReason material, TransferManager.TransferOffer offer) { return(DistrictHelper.VehicleTransfer(ref data, material, offer)); }