using System.Collections.Generic; namespace Cyber.Items { /// /// A drive containing items, and has a limited capacity that cannot be changed. /// public class Drive { private List Items = new List(); /// /// The capacity of the drive, meaning how much stuff can this drive contain. /// public readonly float Capacity; /// /// The interface-class of this Drive. /// public DriveInterface Interface; /// /// Creates a drive with given capacity. Capacity cannot be changed after this. /// /// Capacity of the drive public Drive(float capacity) { Capacity = capacity; Interface = new DriveInterface(this); } /// /// Current total weight of all the items combined. /// /// The totam weight public float TotalWeight() { float sum = 0; foreach (Item item in Items) { sum += item.Weight; } return sum; } /// /// Current free space in the drive. Literally is Capacity - TotalWeight() /// /// Current Free space. public float FreeSpace() { return Capacity - TotalWeight(); } /// /// Clears the drive, completely wiping it empty. Mainly used for /// /// public void Clear() { Items.Clear(); } /// /// Adds the item in the drive. If the addition was not successful, returns false, true otherwise. /// /// Weather the drive had enough space. public bool AddItem(Item item) { if (item.Weight > FreeSpace()) { return false; } Interface.AddNewItem(Items.Count); Items.Add(item); return true; } /// /// Gets the item at the given index, or null if there is nothing. /// /// The index of the desired item /// The item or null if nothing was found. public Item GetItem(int idx) { if (idx < 0 || idx > Items.Count) { return null; } return Items[idx]; } /// /// Returns the list of all items currently in the drive. /// /// public List GetItems() { return Items; } } }