예제 #1
0
        private void resyncText()
        {
            ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;
            Item item = vm.Item;

            MenuItem setBuyout   = new MenuItem();
            string   pricingInfo = string.Empty;

            if (Settings.Buyouts.ContainsKey(item.UniqueIDHash))
            {
                pricingInfo = Settings.Buyouts[item.UniqueIDHash].Buyout;

                if (pricingInfo == string.Empty)
                {
                    pricingInfo = Settings.Buyouts[item.UniqueIDHash].Price;
                }
            }

            if (textblock != null)
            {
                this.MainGrid.Children.Remove(textblock);
            }

            textblock      = new TextBlock();
            textblock.Text = pricingInfo;

            if (item is Currency)
            {
                textblock.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            }

            textblock.IsHitTestVisible = false;
            textblock.Margin           = new Thickness(1, 1, 0, 0);
            this.MainGrid.Children.Add(textblock);
        }
예제 #2
0
        private ContextMenu getContextMenu()
        {
            ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;

            Item item = vm.Item;

            ContextMenu menu = new ContextMenu();

            menu.Background = Brushes.Black;

            if (!(item is Currency))
            {
                MenuItem setBuyout = new MenuItem();

                var buyoutControl = new SetBuyoutView();

                if (Settings.Buyouts.ContainsKey(item.UniqueIDHash))
                {
                    var price = Settings.Buyouts[item.UniqueIDHash].Split(' ');
                    buyoutControl.SetValue(price[0], CurrencyAbbreviationMap.Instance.FromAbbreviation(price[1]));
                }

                setBuyout.Header = buyoutControl;

                buyoutControl.SaveClicked   += new SetBuyoutView.BuyoutHandler(buyoutView_SaveClicked);
                buyoutControl.RemoveClicked += new SetBuyoutView.BuyoutHandler(buyoutControl_RemoveClicked);

                menu.Items.Add(setBuyout);
            }

            return(menu);
        }
예제 #3
0
        private ContextMenu getContextMenu()
        {
            ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;
            Item item = vm.Item;

            ContextMenu menu = new ContextMenu();

            menu.Background = Brushes.Black;

            menu.Resources = expressionDarkGrid;

            MenuItem setBuyout = new MenuItem();

            setBuyout.StaysOpenOnClick = true;

            var buyoutControl = new SetBuyoutView();

            if (Settings.Buyouts.ContainsKey(item.UniqueIDHash))
            {
                buyoutControl.SetBuyoutInfo(Settings.Buyouts[item.UniqueIDHash]);
            }

            setBuyout.Header                = buyoutControl;
            buyoutControl.Update           += buyoutControl_Update;
            buyoutControl.SaveImageClicked += buyoutControl_SaveImageClicked;
            menu.Items.Add(setBuyout);

            return(menu);
        }
예제 #4
0
        void ItemDisplay_Loaded(object sender, RoutedEventArgs e)
        {
            ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;

            if (vm != null)
            {
                Image i = vm.getImage();
                itemImage = i;

                if (i != null)
                {
                    this.MainGrid.Children.Add(i);

                    if (vm.HasSocket)
                    {
                        BindSocketPopup(vm);
                    }

                    this.Height = i.Height;
                    this.Width  = i.Width;
                }
            }
            this.Loaded -= new RoutedEventHandler(ItemDisplay_Loaded);

            resyncText();
        }
예제 #5
0
        private void resyncText()
        {
            if (EnableBuyOuts == bool.TrueString)
            {
                ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;

                Item item = vm.Item;

                if (item is Currency)
                {
                    return;
                }

                MenuItem setBuyout = new MenuItem();

                string buyoutValue = string.Empty;

                if (Settings.Buyouts.ContainsKey(item.UniqueIDHash))
                {
                    buyoutValue = Settings.Buyouts[item.UniqueIDHash];
                }

                if (textblock != null)
                {
                    this.MainGrid.Children.Remove(textblock);
                }

                textblock      = new TextBlock();
                textblock.Text = buyoutValue;

                textblock.IsHitTestVisible = false;
                textblock.Margin           = new Thickness(1, 1, 0, 0);
                this.MainGrid.Children.Add(textblock);
            }
        }
예제 #6
0
        void ItemDisplay_Loaded(object sender, RoutedEventArgs e)
        {
            ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;
            Image i = vm.getImage();

            UIElement socket = vm.getSocket();

            this.MainGrid.Children.Add(i);

            if (socket != null)
            {
                doSocketOnHover(socket, i);
            }

            if (EnableBuyOuts == bool.TrueString)
            {
                i.ContextMenu = getContextMenu();
            }
            this.Height = i.Height;
            this.Width  = i.Width;

            this.Loaded -= new RoutedEventHandler(ItemDisplay_Loaded);
            if (EnableBuyOuts == bool.TrueString)
            {
                resyncText();
            }
        }
예제 #7
0
        private void BindSocketPopup(ItemDisplayViewModel vm)
        {
            UIElement socket       = null;
            bool      isKeyPressed = false;

            Action DisplaySocket = () =>
            {
                if (socket == null)
                {
                    socket = vm.GetSocket(this.IsQuadStash);
                }

                if (!MainGrid.Children.Contains(socket))
                {
                    MainGrid.Children.Add(socket);
                }
            };

            MainGrid.MouseEnter += (o, ev) =>
            {
                DisplaySocket();
            };

            MainGrid.MouseLeave += (o, ev) =>
            {
                if (!isKeyPressed)
                {
                    MainGrid.Children.Remove(socket);
                }
            };

            MainWindow mainWindow = Application.Current.Windows.OfType <MainWindow>().FirstOrDefault();

            mainWindow.KeyDown += (o, ev) =>
            {
                if ((ev.SystemKey == Key.LeftAlt) ||
                    (ev.SystemKey == Key.RightAlt))
                {
                    isKeyPressed = true;

                    DisplaySocket();
                }
            };

            mainWindow.KeyUp += (o, ev) =>
            {
                if (((Keyboard.GetKeyStates(Key.LeftAlt) == KeyStates.None) || (Keyboard.GetKeyStates(Key.LeftAlt) == KeyStates.Toggled)) &&
                    ((Keyboard.GetKeyStates(Key.RightAlt) == KeyStates.None) || (Keyboard.GetKeyStates(Key.RightAlt) == KeyStates.Toggled)))
                {
                    isKeyPressed = false;

                    if (!MainGrid.IsMouseOver)
                    {
                        MainGrid.Children.Remove(socket);
                    }
                }
            };
        }
예제 #8
0
 void buyoutControl_RemoveClicked(string amount, string orbType)
 {
     if (EnableBuyOuts == bool.TrueString)
     {
         ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;
         Item item = vm.Item;
         Settings.Buyouts.Remove(item.UniqueIDHash);
         Settings.Save();
         resyncText();
     }
 }
예제 #9
0
        void buyoutView_SaveClicked(string amount, string orbType)
        {
            var abbreviation = CurrencyAbbreviationMap.Instance.FromCurrency(orbType);

            ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;
            Item item = vm.Item;

            Settings.Buyouts[item.UniqueIDHash].Buyout = string.Format("{0} {1}", amount, abbreviation);
            Settings.SaveBuyouts();

            resyncText();
        }
예제 #10
0
        private void updateBuyout(ItemTradeInfo info)
        {
            ItemDisplayViewModel vm = this.DataContext as ItemDisplayViewModel;
            Item item = vm.Item;

            if (info.IsEmpty)
            {
                Settings.Buyouts.Remove(item.UniqueIDHash);
                return;
            }

            Settings.Buyouts[item.UniqueIDHash] = info;
        }
예제 #11
0
        private void BindSocketPopup(ItemDisplayViewModel vm)
        {
            UIElement socket = null;

            MainGrid.MouseEnter += (o, ev) =>
            {
                if (socket == null)
                {
                    socket = vm.GetSocket();
                }

                if (!MainGrid.Children.Contains(socket))
                {
                    MainGrid.Children.Add(socket);
                }
            };

            MainGrid.MouseLeave += (o, ev) => MainGrid.Children.Remove(socket);
        }
        private void Render()
        {
            int columns = NormalSpacing, rows = NormalSpacing;

            // Force divination card tabs to use quad tab spacing so there is enough room to show all the different
            // cards.  A normal tab only has 144 slots, but there are >200 divination cards.
            if (TabType == TabType.Quad || TabType == TabType.DivinationCard)
            {
                columns = QuadSpacing;
                rows    = QuadSpacing;

                gridOuter.Background = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/stash-quad-grid.png")));
            }

            grid.ColumnDefinitions.Clear();
            grid.RowDefinitions.Clear();
            grid.Children.Clear();

            for (var i = 0; i < columns; i++)
            {
                grid.ColumnDefinitions.Add(new ColumnDefinition());
                for (var j = 0; j < rows; j++)
                {
                    if (i == 0)
                    {
                        grid.RowDefinitions.Add(new RowDefinition());
                    }

                    var childGrid = new Grid();

                    var currentKey = new Tuple <int, int>(i, j);
                    // Divination cards always have Y == 0, and X has a unique value for each type of card.  Map the
                    // card's "real" location to a fake one on the grid, so it can be displayed.
                    var stashLocation = TabType == TabType.DivinationCard ? new Tuple <int, int>(j * columns + i, 0) : currentKey;

                    var keyItem = TabItemsToViewModels.Keys.FirstOrDefault(item => item.X == stashLocation.Item1 &&
                                                                           item.Y == stashLocation.Item2);
                    if (keyItem == null)
                    {
                        continue;
                    }

                    ItemDisplayViewModel itemViewModel = TabItemsToViewModels[keyItem];

                    var itemDisplay = new ItemDisplay
                    {
                        ViewModel   = itemViewModel,
                        IsQuadStash = TabType == TabType.Quad || TabType == TabType.DivinationCard
                    };

                    childGrid.Children.Add(itemDisplay);

                    SetBackground(childGrid, keyItem);

                    Grid.SetColumn(childGrid, i);
                    Grid.SetRow(childGrid, j);
                    if (itemViewModel.Item.H > 1)
                    {
                        Grid.SetRowSpan(childGrid, itemViewModel.Item.H);
                    }

                    if (itemViewModel.Item.W > 1)
                    {
                        Grid.SetColumnSpan(childGrid, itemViewModel.Item.W);
                    }

                    grid.Children.Add(childGrid);
                }
            }

            Ready = true;
        }