Esempio n. 1
0
        public DateTimeOffset AddItem(int X, int Y, Item item)
        {
            var valid = DateTimeOffset.Now.AddSeconds(120);

            ItemInMap it = new ItemInMap {
                Index     = (ushort)(Items.Count),
                Item      = item,
                State     = ItemState.Creating,
                Position  = new Point(X, Y),
                validTime = valid,
            };

            if (Items.Count > 0)
            {
                try
                {
                    var fit = Items.First(x => x.State == ItemState.Deleted);
                    it.Index = fit.Index;
                    Items.Remove(fit);
                }
                catch (Exception) { }
            }

            Items.Add(it);

            //var pitem = new SViewPortItemCreate(new Network.Data.VPICreateDto[] { new Network.Data.VPICreateDto {
            //    ItemInfo = item.GetBytes(),
            //    wzNumber = ((ushort)(it.index | 0x8000)).ShufleEnding(),
            //    X = (byte)X,
            //    Y = (byte)Y,
            //} });
            //await SendAll(pitem);

            return(valid);
        }
Esempio n. 2
0
        public DateTimeOffset AddItem(int X, int Y, Item item, Character character = null)
        {
            if (item == null)
            {
                return(DateTimeOffset.Now);
            }

            item.Character = null;
            item.Account   = null;
            item.SlotId    = 0;
            item.Storage   = 0;
            item.NeedSave  = false;

            var valid = DateTimeOffset.Now.AddSeconds(120);
            var own   = DateTimeOffset.Now.AddSeconds(60);

            ItemInMap it = new ItemInMap {
                Index     = CurIndex,
                Item      = item,
                State     = ItemState.Creating,
                Position  = new Point(X, Y),
                validTime = valid,
                Character = character,
                OwnedTime = own,
            };

            lock (Items)
            {
                if (Items.ContainsKey(CurIndex))
                {
                    Items[CurIndex] = it;
                }
                else
                {
                    Items.Add(CurIndex, it);
                }
                CurIndex++;
            }

            return(valid);
        }