コード例 #1
0
		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);
			}
		}
コード例 #2
0
		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;
		}
コード例 #3
0
		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);
			}
		}
コード例 #4
0
		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);
			}
		}
コード例 #5
0
		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);
				}
			}
		}
コード例 #6
0
		private void OnRemoveListViewItem(DecorationPocketEventArgs e) {
			if (RemoveListViewItem != null) {
				RemoveListViewItem(this, e);
			}
		}
コード例 #7
0
		private void OnUpdateListViewItem(DecorationPocketEventArgs e) {
			if (UpdateListViewItem != null) {
				UpdateListViewItem(this, e);
			}
		}
コード例 #8
0
		private void OnAddListViewItem(DecorationPocketEventArgs e) {
			if (AddListViewItem != null) {
				AddListViewItem(this, e);
			}
		}
コード例 #9
0
 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);
     }
 }
コード例 #10
0
 private void OnRemoveListViewItem(DecorationPocketEventArgs e)
 {
     if (RemoveListViewItem != null) {
         RemoveListViewItem(this, e);
     }
 }
コード例 #11
0
 private void OnUpdateListViewItem(DecorationPocketEventArgs e)
 {
     if (UpdateListViewItem != null) {
         UpdateListViewItem(this, e);
     }
 }
コード例 #12
0
 private void OnAddListViewItem(DecorationPocketEventArgs e)
 {
     if (AddListViewItem != null) {
         AddListViewItem(this, e);
     }
 }
コード例 #13
0
 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);
     }
 }
コード例 #14
0
 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);
         }
     }
 }
コード例 #15
0
 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);
     }
 }
コード例 #16
0
 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;
 }