public ShipInformation SwapModule(string fromslot, string fromslotfd, string fromitem, string fromitemfd, string fromiteml, string toslot, string toslotfd, string toitem, string toitemfd, string toiteml) { ShipInformation sm = this.ShallowClone(); if (Modules.ContainsKey(fromslot)) { if (Modules.ContainsKey(toslot)) { sm.Modules[fromslot] = new JournalLoadout.ShipModule(fromslot, fromslotfd, toitem, toitemfd, toiteml); } else { sm.Modules.Remove(fromslot); } sm.Modules[toslot] = new JournalLoadout.ShipModule(toslot, toslotfd, fromitem, fromitemfd, fromiteml); if (fromitem != toitem && ((fromitem.Contains("Fuel Tank") && fromitem.IndexOf("Class ") != -1) || (fromitem.Contains("Fuel Tank") && fromitem.IndexOf("Class ") != -1))) { sm.FuelCapacity = sm.GetFuelCapacity(); if (sm.FuelLevel > sm.FuelCapacity) { sm.FuelLevel = sm.FuelCapacity; } } } return(sm); }
public ShipInformation RemoveModules(ModuleItem[] items) { ShipInformation sm = null; foreach (ModuleItem it in items) { if (Modules.ContainsKey(it.Slot)) // if has it.. { if (sm == null) { sm = this.ShallowClone(); } sm.Modules.Remove(it.Slot); if (it.Name.Contains("Fuel Tank") && it.Name.IndexOf("Class ") != -1) { sm.FuelCapacity = sm.GetFuelCapacity(); if (sm.FuelLevel > sm.FuelCapacity) { sm.FuelLevel = sm.FuelCapacity; } } } } return(sm ?? this); }
public ShipInformation RemoveModule(string slot, string item) { if (Modules.ContainsKey(slot)) // if has it.. { ShipInformation sm = this.ShallowClone(); sm.Modules.Remove(slot); if (item.Contains("Fuel Tank") && item.IndexOf("Class ") != -1) { sm.FuelCapacity = sm.GetFuelCapacity(); if (sm.FuelLevel > sm.FuelCapacity) { sm.FuelLevel = sm.FuelCapacity; } } return(sm); } return(this); }
public ShipInformation AddModule(string slot, string slotfd, string item, string itemfd, string itemlocalised) { if (!Modules.ContainsKey(slot) || !Modules[slot].Same(item)) // if does not have it, or item is not the same.. { ShipInformation sm = this.ShallowClone(); sm.Modules[slot] = new JournalLoadout.ShipModule(slot, slotfd, item, itemfd, itemlocalised); if (item.Contains("Fuel Tank") && item.IndexOf("Class ") != -1) { sm.FuelCapacity = sm.GetFuelCapacity(); if (sm.FuelLevel > sm.FuelCapacity) { sm.FuelLevel = sm.FuelCapacity; } } return(sm); } return(this); }