/// <summary> /// Drops an item to the current entity layer. /// </summary> /// <param name="entity">Entity</param> /// <param name="e">Drop item event</param> private void DropItem(IEntity entity, DropItemEventArgs e) { var worldServerConfiguration = DependencyContainer.Instance.Resolve <WorldConfiguration>(); var drop = entity.Object.CurrentLayer.CreateEntity <ItemEntity>(); drop.Drop.Item = new Item(e.Item.Id, e.Item.Quantity, -1, -1, -1, e.Item.Refine); if (e.Owner != null) { drop.Drop.Owner = e.Owner; drop.Drop.OwnershipTime = Time.TimeInSeconds() + worldServerConfiguration.Drops.OwnershipTime; drop.Drop.DespawnTime = Time.TimeInSeconds() + worldServerConfiguration.Drops.DespawnTime; } drop.Object = new ObjectComponent { MapId = entity.Object.MapId, LayerId = entity.Object.LayerId, ModelId = e.Item.Id, Name = drop.Drop.Item.Data.Name, Spawned = true, Position = Vector3.GetRandomPositionInCircle(entity.Object.Position, DropCircleRadius), Type = WorldObjectType.Item }; }
public void Broadcast(BroadcastEventType e, AddItemEventArgs aea = null, RemoveItemEventArgs rea = null, SwapItemsEventArgs sea = null, SwapItemsTrhuInvEventArgs siea = null, UseItemEventArgs uea = null, DropItemEventArgs dea = null, InitializeInventoryEventArgs iea = null) { //Debug.Log($"Broadcasting event {e}"); switch (e) { case BroadcastEventType.AddItem: OnAddItem?.Invoke(this, aea); OnChange?.Invoke(this, aea); break; case BroadcastEventType.RemoveItem: OnRemoveItem?.Invoke(this, rea); OnChange?.Invoke(this, rea); break; case BroadcastEventType.SwapItem: OnSwapItem?.Invoke(this, sea); OnChange?.Invoke(this, sea); break; case BroadcastEventType.SwapTrhuInventory: OnSwapTrhuInventory?.Invoke(this, siea); OnChange?.Invoke(this, siea); break; case BroadcastEventType.UseItem: OnUseItem?.Invoke(this, uea); OnChange?.Invoke(this, uea); break; case BroadcastEventType.DropItem: OnDropItem?.Invoke(this, dea); OnChange?.Invoke(this, dea); break; case BroadcastEventType.PickUpItem: OnPickUpItem?.Invoke(this, aea); OnChange?.Invoke(this, aea); break; case BroadcastEventType.InitializeInventory: OnInitializeInventory?.Invoke(this, iea); OnChange?.Invoke(this, iea); break; default: break; } if (autoSaveOnChange) { InventoryController.SaveInventoryData(); } }
private void DropItemFun(object sender, GameEventArgs e) { DropItemEventArgs args = (DropItemEventArgs)e; bool boo = args.ItemId == null || args.ItemId.Count == 0; if (sv != null) { sv.gameObject.SetActive(!boo); if (!boo) { Open(sender, args.ItemId); } } }
void DragItemOver(object sender, DropItemEventArgs e) { e.Allow = IsItemDraggable(e.DropItem); }