Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }