private static void InjectControl(Control control, IViewModelWithRecipe viewModel)
        {
            var windowWrapper = VisualTreeHelperExtension.FindParentOfType(control, typeof(BaseUserControlWithWindow));
            var window        = ((BaseUserControlWithWindow)windowWrapper).Window;

            var controlRecipeBreakdown = new ControlRecipeBreakdown();

            controlRecipeBreakdown.InheritedViewModel = viewModel;

            InjectedControls.Add(control, controlRecipeBreakdown);
            window.AddExtensionControl(controlRecipeBreakdown);
        }
Exemplo n.º 2
0
        private static void ShowContextDetails()
        {
            var hitTestResult = Api.Client.UI.GetVisualInPointedPosition();

            if (hitTestResult == null)
            {
                return;
            }

            if (VisualTreeHelperExtension.FindParentOfType(
                    hitTestResult, typeof(ItemSlotControl)) is ItemSlotControl itemSlotControl)
            {
                if (itemSlotControl.Item != null)
                {
                    WindowCNEIdetails.Open(
                        EntityViewModelsManager.GetEntityViewModel(itemSlotControl.Item.ProtoItem));
                }

                return;
            }

            if (VisualTreeHelperExtension.FindParentOfType(
                    hitTestResult, typeof(RequiredItemControl)) is RequiredItemControl requiredItemControl)
            {
                if (requiredItemControl.ProtoItemWithCount != null)
                {
                    WindowCNEIdetails.Open(
                        EntityViewModelsManager.GetEntityViewModel(requiredItemControl.ProtoItemWithCount.ProtoItem));
                }

                return;
            }

            if (VisualTreeHelperExtension.FindParentOfType(
                    hitTestResult, typeof(EntitySlotControl)) is EntitySlotControl entitySlotControl)
            {
                if (entitySlotControl.DataContext is ProtoEntityViewModel entityViewModel)
                {
                    WindowCNEIdetails.Open(entityViewModel);
                }
                else
                {
                    Api.Logger.Error("CNEI: Wrong view model for details window " + entitySlotControl.DataContext);
                }
            }
        }
        public static void Init()
        {
            if (isInitialized)
            {
                return;
            }

            isInitialized = true;

            // ReSharper disable once CanExtractXamlLocalizableStringCSharp
            ClientInputContext.Start("Container sort helper")
            .HandleButtonDown(
                GameButton.ContainerSort,
                () =>
            {
                var hitTestResult = Api.Client.UI.GetVisualInPointedPosition();
                if (hitTestResult == null)
                {
                    return;
                }

                var itemSlotControl = VisualTreeHelperExtension.FindParentOfType(
                    hitTestResult,
                    typeof(ItemSlotControl)) as
                                      ItemSlotControl;

                if (itemSlotControl != null)
                {
                    SortItems((IClientItemsContainer)itemSlotControl.Container);
                    return;
                }

                var itemsContainerControl = VisualTreeHelperExtension.FindParentOfType(
                    hitTestResult,
                    typeof(ItemsContainerControl)) as
                                            ItemsContainerControl;

                if (itemsContainerControl != null)
                {
                    SortItems(itemsContainerControl.Container);
                }
            });
        }