private void RemoveDecorationAt(int index) { byte id = decorations[index].ID; DecorationUsages usage = inventory.GetDecorationUsage(index, pocketType); int usageCount = inventory.GetNumDecorationsWithIDInUse(id); uint idCount = GetCountOfID(id); if (usageCount > 0) { int indexInUse = inventory.GetIndexOfDecorationInUse(index, pocketType); decorations.RemoveAt(index); DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = index; args.PocketType = pocketType; OnRemoveListViewItem(args); if (usage == DecorationUsages.SecretBase && idCount == usageCount) inventory.PutAwayDecorationInSecretBaseAt(indexInUse); else if (usage == DecorationUsages.Bedroom && idCount == usageCount) inventory.PutAwayDecorationInBedroomAt(indexInUse); else if (usageCount > 0) UpdateListViewItems(); } else { decorations.RemoveAt(index); DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = index; args.PocketType = pocketType; OnRemoveListViewItem(args); } }
public bool AddDecoration(byte id, uint count) { if (HasRoomForDecoration(id, count)) { int countLeft = (int)count; for (int i = 0; i < decorations.Count && countLeft > 0; i++) { if (decorations[i].ID == id) { if (decorations[i].Count < maxStackSize) { int itemCount = (int)decorations[i].Count; if (countLeft - Math.Min(countLeft, (int)maxStackSize - itemCount) <= 0) { inventory.GameSave.IsChanged = true; decorations[i].Count += (uint)Math.Min(countLeft, (int)maxStackSize - itemCount); countLeft -= Math.Min(countLeft, (int)maxStackSize - itemCount); DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = i; args.Decoration = decorations[i]; args.PocketType = pocketType; OnUpdateListViewItem(args); } } else if (maxStackSize == 0) { inventory.GameSave.IsChanged = true; decorations[i].Count += (uint)countLeft; countLeft = 0; DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = i; args.Decoration = decorations[i]; args.PocketType = pocketType; OnUpdateListViewItem(args); } } } for (int i = 0; (i < (int)pocketSize || pocketSize == 0) && countLeft > 0; i++) { if (i >= decorations.Count || decorations[i].ID > id) { if (maxStackSize == 0) { inventory.GameSave.IsChanged = true; decorations.Insert(i, new Decoration(id, (uint)countLeft, this)); DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = i; args.Decoration = decorations[i]; args.PocketType = pocketType; OnAddListViewItem(args); countLeft = 0; } else { inventory.GameSave.IsChanged = true; decorations.Insert(i, new Decoration(id, (uint)Math.Min(countLeft, maxStackSize), this)); DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = i; args.Decoration = decorations[i]; args.PocketType = pocketType; OnAddListViewItem(args); countLeft -= Math.Min(countLeft, (int)maxStackSize); } } } return true; } return false; }
public void UpdateListViewItems() { for (int i = 0; i < decorations.Count; i++) { DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = i; args.Decoration = decorations[i]; args.PocketType = pocketType; OnUpdateListViewItem(args); } }
public void RepopulateListView() { listViewItems.Clear(); for (int i = 0; i < decorations.Count; i++) { DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = i; args.Decoration = decorations[i]; args.PocketType = pocketType; OnAddListViewItem(args); } }
public void TossDecorationAt(int index, uint count) { if (count > 0) { inventory.GameSave.IsChanged = true; if (count < decorations[index].Count) { decorations[index].Count -= count; DecorationPocketEventArgs args = new DecorationPocketEventArgs(); args.Index = index; args.Decoration = decorations[index]; args.PocketType = pocketType; OnUpdateListViewItem(args); } else { RemoveDecorationAt(index); } } }
private void OnRemoveListViewItem(DecorationPocketEventArgs e) { if (RemoveListViewItem != null) { RemoveListViewItem(this, e); } }
private void OnUpdateListViewItem(DecorationPocketEventArgs e) { if (UpdateListViewItem != null) { UpdateListViewItem(this, e); } }
private void OnAddListViewItem(DecorationPocketEventArgs e) { if (AddListViewItem != null) { AddListViewItem(this, e); } }