//아이템 교환 (아이템 <-> 아이템) //#### 이거 잘 되는지 봐야됨 어렵다 public void Switch(SlotItem selectedItem, SlotItem targetItem) { // 스위칭할때 변경사항 // 1. 내용물(아이템정보) 변경 // 2. 인덱스 위치 변경 // 3. Tab 위치 변경 int originIndex = selectedItem.Index; int targetIndex = targetItem.Index; // 1. 아이템 정보 스위치 ( Itemtable 변경 ) // 인덱서 사용 public SlotItem this[int itemIndex] selectedItem.Tab[originIndex] = targetItem; targetItem.Tab[targetIndex] = selectedItem; // 2. 인덱스 위치 스위치 selectedItem.Index = targetIndex; targetItem.Index = originIndex; // 3. Tab 위치 변경 InventoryTab originTab = selectedItem.Tab; InventoryTab targetTab = targetItem.Tab; targetItem.Tab = originTab; selectedItem.Tab = targetTab; OnItemSwitched?.Invoke(selectedItem, targetItem); }
private void UserControl_MouseUp(object sender, MouseButtonEventArgs e) { if (Keyboard.Modifiers.HasFlag(ModifierKeys.Control) && this.DataContext is InventoryItem ii) { InventoryTab.RunItemsRoll20Integration(ii); e.Handled = true; } }
// Loads a Inventory Tab public static void LoadInventoryTab(GameSession session, InventoryTab tab) { Inventory inventory = session.Player.Inventory; session.Send(ItemInventoryPacket.ResetTab(tab)); session.Send(ItemInventoryPacket.LoadTab(tab, inventory.ExtraSize[tab])); session.Send(ItemInventoryPacket.LoadItem(inventory.Items.Values.Where(x => x.InventoryTab == tab).ToList())); }
public short Search(InventoryTab tab, int ItemID) { switch (tab) { case InventoryTab.EQUIP: foreach (short key in EquipInventory.Keys) { if (EquipInventory[key].Id == ItemID) { return(EquipInventory[key].Slot); } } return(-1); case InventoryTab.USE: foreach (short key in UseInventory.Keys) { if (UseInventory[key].Id == ItemID) { return(UseInventory[key].Slot); } } return(-1); case InventoryTab.ETC: foreach (short key in EtcInventory.Keys) { if (EtcInventory[key].Id == ItemID) { return(EtcInventory[key].Slot); } } return(-1); case InventoryTab.SETUP: foreach (short key in SetupInventory.Keys) { if (SetupInventory[key].Id == ItemID) { return(SetupInventory[key].Slot); } } return(-1); case InventoryTab.CASH: foreach (short key in CashInventory.Keys) { if (CashInventory[key].Id == ItemID) { return(CashInventory[key].Slot); } } return(-1); default: return(-1); } }
public static PacketWriter ResetTab(InventoryTab tab) { PacketWriter pWriter = PacketWriter.Of(SendOp.ItemInventory); pWriter.Write(InventoryMode.ResetTab); pWriter.WriteInt((int)tab); // index return(pWriter); }
public void hasClickedTab(InventoryTab tab) { for (int i = 0; i < tabs.Length; i++) { tabs[i].GetComponent <Image>().color = Tools.hexColor(0x6CB95D); } tabs[tab.gameObject.transform.GetSiblingIndex()].GetComponent <Image>().color = Tools.hexColor(0x53A543); Inventory.activeCanvas = tab.gameObject.transform.GetSiblingIndex(); }
public static Packet ResetTab(InventoryTab tab) { PacketWriter pWriter = PacketWriter.Of(SendOp.ITEM_INVENTORY); pWriter.WriteByte(0x0D); pWriter.WriteInt((int)tab); // index return(pWriter); }
public void hasClickedTab(InventoryTab tab) { for (int i = 0; i < tabs.Count; i++) { tabs[i].GetComponent <Image>().color = Tools.hexColor(0x6CB95D); Inventory.activeCanvas = i; } tabs[tabs.IndexOf(tab)].GetComponent <Image>().color = Tools.hexColor(0x53A543); }
private void SetupTab(InventoryTab tab, string tabName) { UXCheckbox element = base.GetElement <UXCheckbox>(tabName); if (element != null) { this.SetupTab(tab, element); } }
public static Packet LoadTab(InventoryTab tab) { PacketWriter pWriter = PacketWriter.Of(SendOp.ITEM_INVENTORY); pWriter.WriteByte(0x0E); pWriter.WriteByte((byte)tab); pWriter.WriteInt(); return(pWriter); }
public static PacketWriter LoadTab(InventoryTab tab, short extraSlots) { PacketWriter pWriter = PacketWriter.Of(SendOp.ItemInventory); pWriter.Write(InventoryMode.LoadTab); pWriter.WriteByte((byte)tab); pWriter.WriteInt(extraSlots); return(pWriter); }
public static Packet LoadTab(InventoryTab tab, short extraSlots) { PacketWriter pWriter = PacketWriter.Of(SendOp.ITEM_INVENTORY); pWriter.WriteEnum(InventoryMode.LoadTab); pWriter.WriteByte((byte)tab); pWriter.WriteInt(extraSlots); return(pWriter); }
private bool RemoveInternal(InventoryTab tab, short slot, out Item item) { if (!GetSlots(tab).TryGetValue(slot, out long uid)) { item = null; return(false); } return(RemoveInternal(uid, out item)); }
public void OpenIfNot(InventoryTab tab) { Tab foundtab = StupidTabLookup(tab); if (foundtab != activeTab) { //activeTab.HideContent(); //activeTab.toggle.isOn = false; foundtab.toggle.isOn = true; } }
//충동시 아이템 획득 private void OnTriggerEnter(Collider other) { InventoryTab inventoryTab = null; switch (majorType) { case MajorTypeEnum.CommonItem: { // 깊은 복사 & 수정 SlotItem item = ItemData.CommonItemClone(index); int dropCount = UnityEngine.Random.Range((int)dropAmountRange.x, (int)dropAmountRange.y + 1); item.Count = dropCount; //아이템이 먹어지는 탭 지정 inventoryTab = TabManager.GetTab(0); inventoryTab.Add(item, true); break; } case MajorTypeEnum.ConsumItem: { SlotItem item = ItemData.ConsumItemClone(index); int dropCount = UnityEngine.Random.Range((int)dropAmountRange.x, (int)dropAmountRange.y + 1); item.Count = dropCount; inventoryTab = TabManager.GetTab(0); inventoryTab.Add(item, true); break; } case MajorTypeEnum.EquipmentItem: { SlotItem item = ItemData.EquipmentItemClone(index); inventoryTab = TabManager.GetTab(0); inventoryTab.Add(item, true); break; } case MajorTypeEnum.ImmediateItem: { int dropAmount = UnityEngine.Random.Range((int)dropAmountRange.x, (int)dropAmountRange.y + 1); ImmediateItem item = ItemData.ImmediateClone(index); item.UseEvent.Invoke(dropAmount); break; } } SlotManager.RefreshAll(); //#### 아이템 먹을때는 인벤토리 켜져있을때만 새로고침하면됨 Destroy(this.gameObject); }
public void AutoAdd(GameSession session, InventoryTab inventoryTab, int rarityType) { Dictionary <long, Item> items = session.Player.Inventory.Items; foreach (KeyValuePair <long, Item> item in items) { if (item.Value.InventoryTab != inventoryTab || item.Value.Rarity > rarityType || !item.Value.EnableBreak) { continue; } DismantleAdd(session, -1, item.Value.Uid, item.Value.Amount); } }
public static byte[] DropItem(InventoryTab tab, byte slot, short amount) { var pw = new PacketWriter(SendOps.DROP_ITEM); pw.Timestamp(); pw.WriteByte((byte)tab); pw.WriteByte(slot); //pw.WriteInt(1); pw.WriteZero(3); pw.WriteShort(amount); return(pw.ToArray()); }
public static void ExpandInventory(GameSession session, InventoryTab tab) { Inventory inventory = session.Player.Inventory; long meretPrice = 390; short expansionAmount = 6; if (session.Player.Account.RemoveMerets(meretPrice)) { inventory.ExtraSize[tab] += expansionAmount; session.Send(ItemInventoryPacket.LoadTab(tab, inventory.ExtraSize[tab])); session.Send(ItemInventoryPacket.Expand()); } }
public void AutoAdd(GameSession session, InventoryTab inventoryTab, int rarityType) { Dictionary <long, Item> items = session.Player.Inventory.Items; foreach ((long uid, Item item) in items) { if (item.InventoryTab != inventoryTab || item.Rarity > rarityType || !item.EnableBreak || Slots.Any(x => x != null && x.Item1 == uid)) { continue; } DismantleAdd(session, -1, item.Uid, item.Amount); } }
public Dictionary <ItemSlot, Item> GetEquippedInventory(InventoryTab tab) { switch (tab) { case InventoryTab.Gear: return(Equips); case InventoryTab.Outfit: return(Cosmetics); default: break; } return(null); }
public void Sort(InventoryTab tab) { // Get all items in tab and sort by Id Dictionary <short, long> slots = GetSlots(tab); List <Item> tabItems = slots.Select(kvp => Items[kvp.Value]).ToList(); tabItems.Sort((x, y) => x.Id.CompareTo(y.Id)); // Update the slot mapping slots.Clear(); for (short i = 0; i < tabItems.Count; i++) { tabItems[i].Slot = i; slots[i] = tabItems[i].Uid; } }
private void RunItemR20(object sender, RoutedEventArgs e) { InventoryItem ii = sender as InventoryItem; if (sender is Button && this.Inventory.SelectedItems != null && this.Inventory.SelectedItems.Count > 0) { ii = (InventoryItem)this.Inventory.SelectedItems[0]; } if (ii == null || !R20WSServer.Connected) { return; } InventoryTab.RunItemsRoll20Integration(ii); }
private static void HandleAutoAdd(GameSession session, PacketReader packet) { InventoryTab inventoryTab = (InventoryTab)packet.ReadByte(); byte rarityType = packet.ReadByte(); Player player = session.Player; Dictionary <long, Item> items = player.Inventory.Items; foreach (KeyValuePair <long, Item> item in items) { if (item.Value.InventoryTab != inventoryTab || item.Value.Rarity > rarityType || !item.Value.EnableBreak) { continue; } DismantleAdd(session, -1, item.Value.Uid, item.Value.Amount); } }
private void Inventory_PreviewMouseMove(object sender, MouseEventArgs e) { Point mousePos = Mouse.GetPosition(Application.Current.MainWindow); Vector diff = this.startPoint - mousePos; if (e.LeftButton == MouseButtonState.Pressed && ((Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance) || Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)) { ListView listView = sender as ListView; ListViewItem listViewItem = InventoryTab.FindAnchestor <ListViewItem>((DependencyObject)e.OriginalSource); if (listViewItem != null && listViewItem.IsSelected) { object contact = listView.ItemContainerGenerator.ItemFromContainer(listViewItem); DataObject dragData = new DataObject("InventoryItem", new Tuple <object, object, ICollectionView>(contact, this.OwnerItem, this.LocalSource.View)); DragDrop.DoDragDrop(listViewItem, dragData, DragDropEffects.Move); } } }
protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { ConfigTab?.Dispose(); GemsTab?.Dispose(); PortalsTab?.Dispose(); AdvertisementsTab?.Dispose(); InventoryTab?.Dispose(); EquipmentTab?.Dispose(); View?.Dispose(); } disposedValue = true; } }
public static PacketWriter LoadItemsToTab(InventoryTab tab, IReadOnlyCollection <Item> items) { PacketWriter pWriter = PacketWriter.Of(SendOp.ItemInventory); pWriter.Write(InventoryMode.LoadItemsToTab); pWriter.WriteInt((int)tab); pWriter.WriteShort((short)items.Count); foreach (Item item in items) { pWriter.WriteInt(item.Id); pWriter.WriteLong(item.Uid); pWriter.WriteShort(item.Slot); pWriter.WriteInt(item.Rarity); pWriter.WriteItem(item); } return(pWriter); }
private bool CanHold(int itemId, int amount, InventoryTab tab) { if (GetFreeSlots(tab) > 0) { return(true); } foreach (Item i in Items.Values.Where(x => x.InventoryTab == tab && x.Id == itemId && x.StackLimit > 0)) { int available = i.StackLimit - i.Amount; amount -= available; if (amount <= 0) { return(true); } } return(false); }
public static Packet LoadItemsToTab(InventoryTab tab, ICollection <Item> items) { PacketWriter pWriter = PacketWriter.Of(SendOp.ITEM_INVENTORY); pWriter.WriteByte(0x0A); pWriter.WriteInt((int)tab); pWriter.WriteShort((short)items.Count); foreach (Item item in items) { pWriter.WriteInt(item.Id); pWriter.WriteLong(item.Uid); pWriter.WriteShort(item.Slot); pWriter.WriteInt(item.Rarity); pWriter.WriteItem(item); } return(pWriter); }
public void SetTab(InventoryTab tab) { this.curTab = tab; if (!base.IsLoaded()) { return; } int i = 0; int count = this.tabs.Count; while (i < count) { UXCheckbox uXCheckbox = this.tabs[i]; uXCheckbox.Selected = (this.curTab == (InventoryTab)uXCheckbox.Tag); i++; } this.SetupCurTabElements(); }
private void OnTabCheckboxSelected(UXCheckbox checkbox, bool selected) { InventoryTab inventoryTab = (InventoryTab)checkbox.Tag; if (!selected) { return; } if (inventoryTab != this.curTab) { if (this.curTab == InventoryTab.Crate) { this.prefs.SetPref("crtInvLastViewed", ServerTime.Time.ToString()); this.crateTabLastViewedTime = ServerTime.Time; } this.SetTab(inventoryTab); } }