Example #1
0
        public static void FillStorage(List <ClientUserItem> items, bool observer)
        {
            Storage      = new ClientUserItem[1000];
            PartsStorage = new ClientUserItem[1000];

            if (!observer)
            {
                MainStorage      = Storage;
                MainPartsStorage = PartsStorage;
            }


            foreach (ClientUserItem item in items)
            {
                if (item.Slot >= 2000)
                {
                    PartsStorage[item.Slot - Globals.PartsStorageOffset] = item;
                }
                else
                {
                    Storage[item.Slot] = item;
                }
            }
        }
Example #2
0
        public DXItemAmountWindow(string caption, ClientUserItem item)
        {
            HasFooter = true;

            TitleLabel.Text = caption;
            SetClientSize(new Size(200, DXItemCell.CellHeight + 10));

            Parent = ActiveScene;
            MessageBoxList.Add(this);
            Modal = true;

            Location = new Point((ActiveScene.DisplayArea.Width - DisplayArea.Width) / 2, (ActiveScene.DisplayArea.Height - DisplayArea.Height) / 2);

            ConfirmButton = new DXButton
            {
                Location = new Point(Size.Width / 2 + 10, Size.Height - 43),
                Size     = new Size(80, DefaultHeight),
                Parent   = this,
                Label    = { Text = "Confirm" }
            };
            ConfirmButton.MouseClick += (o, e) => Dispose();

            AmountBox = new DXNumberBox
            {
                Parent   = this,
                MaxValue = item.Count,
                Change   = Math.Max(1, item.Count / 5),
            };

            AmountBox.ValueTextBox.ValueChanged += (o, e) =>
            {
                Amount = AmountBox.Value;

                if (Amount <= 0)
                {
                    AmountBox.ValueTextBox.BorderColour = Color.Red;
                }
                else if (Amount == AmountBox.MaxValue)
                {
                    AmountBox.ValueTextBox.BorderColour = Color.Orange;
                }
                else
                {
                    AmountBox.ValueTextBox.BorderColour = Color.Green;
                }

                ConfirmButton.Enabled = Amount > 0;

                if (item.Info.Effect == ItemEffect.Gold)
                {
                    item.Count = Amount;
                    ItemCell.RefreshItem();
                }
            };

            ItemCell = new DXItemCell
            {
                Location    = new Point(ClientArea.Location.X + (ClientArea.Width - DXItemCell.CellWidth - AmountBox.Size.Width - 5) / 2, ClientArea.Location.Y + 5),
                Parent      = this,
                FixedBorder = true,
                Border      = true,
                ItemGrid    = new[] { item },
                Slot        = 0,
                GridType    = GridType.None,
                ReadOnly    = true,
            };

            AmountBox.Location = new Point(ItemCell.Location.X + ItemCell.Size.Width + 10, ItemCell.Location.Y + (ItemCell.Size.Height - AmountBox.Size.Height) / 2);

            AmountBox.Value = 1;
            AmountBox.ValueTextBox.KeepFocus = true;
            AmountBox.ValueTextBox.SetFocus();
            AmountBox.ValueTextBox.TextBox.KeyPress += AmountBox_KeyPress;
        }
Example #3
0
        public ItemObject(S.ObjectItem info)
        {
            ObjectID = info.ObjectID;

            Item = info.Item;

            ItemInfo itemInfo = info.Item.Info;

            if (info.Item.Info.Effect == ItemEffect.ItemPart)
            {
                itemInfo = Globals.ItemInfoList.Binding.First(x => x.Index == Item.AddedStats[Stat.ItemIndex]);

                Title = "[Part]";
            }

            Name = Item.Count > 1 ? $"{itemInfo.ItemName} ({Item.Count})" : itemInfo.ItemName;

            if ((Item.Flags & UserItemFlags.QuestItem) == UserItemFlags.QuestItem)
            {
                Title = "(Quest)";
            }



            switch (itemInfo.Rarity)
            {
            case Rarity.Common:
                if (Item.AddedStats.Values.Count > 0 && Item.Info.Effect != ItemEffect.ItemPart)
                {
                    NameColour = Color.LightSkyBlue;

                    Effects.Add(new MirEffect(110, 10, TimeSpan.FromMilliseconds(100), LibraryFile.ProgUse, 60, 60, Color.DeepSkyBlue)
                    {
                        Target    = this,
                        Loop      = true,
                        Blend     = true,
                        BlendRate = 0.5F,
                    });
                }
                else
                {
                    NameColour = Color.White;
                }
                break;

            case Rarity.Superior:
                NameColour = Color.PaleGreen;
                Effects.Add(new MirEffect(100, 10, TimeSpan.FromMilliseconds(100), LibraryFile.ProgUse, 60, 60, Color.PaleGreen)
                {
                    Target    = this,
                    Loop      = true,
                    Blend     = true,
                    BlendRate = 0.5F,
                });
                break;

            case Rarity.Elite:
                NameColour = Color.MediumPurple;
                Effects.Add(new MirEffect(120, 10, TimeSpan.FromMilliseconds(100), LibraryFile.ProgUse, 60, 60, Color.MediumPurple)
                {
                    Target    = this,
                    Loop      = true,
                    Blend     = true,
                    BlendRate = 0.5F,
                });
                break;
            }
            CurrentLocation = info.Location;


            UpdateLibraries();

            SetFrame(new ObjectAction(MirAction.Standing, Direction, CurrentLocation));

            GameScene.Game.MapControl.AddObject(this);
        }