private static void importCollection(CreatureCollection creatureCollection, List <Creature> newCreatures, string serverName) { if (creatureCollection.changeCreatureStatusOnSavegameImport) { // mark creatures that are no longer present as unavailable var removedCreatures = creatureCollection.creatures.Where(c => c.status == CreatureStatus.Available && c.server == serverName).Except(newCreatures); foreach (var c in removedCreatures) { c.status = CreatureStatus.Unavailable; } // mark creatures that re-appear as available (due to server transfer / obelisk / etc) var readdedCreatures = creatureCollection.creatures.Where(c => c.status == CreatureStatus.Unavailable || c.status == CreatureStatus.Obelisk).Intersect(newCreatures); foreach (var c in readdedCreatures) { c.status = CreatureStatus.Available; } } newCreatures.ForEach(creature => { creature.server = serverName; }); creatureCollection.MergeCreatureList(newCreatures, true); }
private static void ImportCollection(CreatureCollection creatureCollection, List <Creature> newCreatures, string serverName) { if (creatureCollection.changeCreatureStatusOnSavegameImport) { // mark creatures that are no longer present as unavailable var removedCreatures = creatureCollection.creatures.Where(c => c.status == CreatureStatus.Available && c.server == serverName).Except(newCreatures); foreach (var c in removedCreatures) { c.status = CreatureStatus.Unavailable; } } newCreatures.ForEach(creature => { creature.server = serverName; }); creatureCollection.MergeCreatureList(newCreatures, addPreviouslylDeletedCreatures: true); }
private static void ImportCollection(CreatureCollection creatureCollection, List <Creature> newCreatures, string serverName) { if (creatureCollection.changeCreatureStatusOnSavegameImport) { // mark creatures that are no longer present as unavailable var removedCreatures = creatureCollection.creatures.Where(c => c.status == CreatureStatus.Available && c.server == serverName).Except(newCreatures); foreach (var c in removedCreatures) { c.status = CreatureStatus.Unavailable; } // mark creatures that re-appear as available (due to server transfer / obelisk / etc) var readdedCreatures = creatureCollection.creatures.Where(c => c.status == CreatureStatus.Unavailable || c.status == CreatureStatus.Obelisk).Intersect(newCreatures); foreach (var c in readdedCreatures) { c.status = CreatureStatus.Available; } } // update creature status that can be determined from the import var creaturesNowInPods = creatureCollection.creatures.Intersect(newCreatures.Where(c => c.status == CreatureStatus.Cryopod)); foreach (var c in creaturesNowInPods) { c.status = CreatureStatus.Cryopod; } var creaturesNowOutOfPods = creatureCollection.creatures.Where(c => c.status == CreatureStatus.Cryopod).Intersect(newCreatures.Where(c => c.status != CreatureStatus.Cryopod)); foreach (var c in creaturesNowInPods) { c.status = CreatureStatus.Available; } newCreatures.ForEach(creature => { creature.server = serverName; }); creatureCollection.MergeCreatureList(newCreatures, true, false, true); }