public void RemoveItem(S.RemoveItem p) { MirItemCell toCell; int index = -1; for (int i = 0; i < User.Equipment.Length; i++) { if (User.Equipment[i] == null || User.Equipment[i].UniqueID != p.UniqueID) { continue; } index = i; break; } MirItemCell fromCell = EquipmentCells[index]; switch (p.Grid) { case MirGridType.Inventory: toCell = p.To < User.BeltIdx ? BeltCells[p.To] : Inventory.Cells[p.To - User.BeltIdx]; break; /*case MirGridType.Storage: * toCell = StorageDialog.Grid[p.To]; * break;*/ default: return; } if (toCell == null || fromCell == null) { return; } toCell.Locked = false; fromCell.Locked = false; if (!p.Success) { return; } toCell.Item = fromCell.Item; fromCell.Item = null; User.RefreshStats(); }
public static void RemoveItem(S.RemoveItem p) { GameManager.GameScene.RemoveItem(p); }
public void RemoveItem(MirGridType grid, ulong id, int to) { S.RemoveItem p = new S.RemoveItem { Grid = grid, UniqueID = id, To = to, Success = false }; UserItem[] array; switch (grid) { case MirGridType.Inventory: array = Info.Inventory; break; case MirGridType.Storage: if (NPCPage == null || !String.Equals(NPCPage.Key, NPCObject.StorageKey, StringComparison.CurrentCultureIgnoreCase)) { Enqueue(p); return; } NPCObject ob = null; for (int i = 0; i < CurrentMap.NPCs.Count; i++) { if (CurrentMap.NPCs[i].ObjectID != NPCID) continue; ob = CurrentMap.NPCs[i]; break; } if (ob == null || !Functions.InRange(ob.CurrentLocation, CurrentLocation, Globals.DataRange)) { Enqueue(p); return; } array = Account.Storage; break; default: Enqueue(p); return; } if (to < 0 || to >= array.Length) return; UserItem temp = null; int index = -1; for (int i = 0; i < Info.Equipment.Length; i++) { temp = Info.Equipment[i]; if (temp == null || temp.UniqueID != id) continue; index = i; break; } if (temp == null || index == -1) { Enqueue(p); return; } if (temp.Cursed && !UnlockCurse) { Enqueue(p); return; } if (temp.WeddingRing != -1) { Enqueue(p); return; } if (!CanRemoveItem(grid, temp)) return; Info.Equipment[index] = null; if (temp.Cursed) UnlockCurse = false; if (array[to] == null) { array[to] = temp; p.Success = true; Enqueue(p); RefreshStats(); Broadcast(GetUpdateInfo()); Report.ItemMoved("RemoveItem", temp, MirGridType.Equipment, grid, index, to); return; } Enqueue(p); }