Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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);
        }