internal bool RemoveDuplicate()
{
var modified = false;
if (this.EnemyData.EnemyEncounterRank != null)
{
this.EnemyData.EnemyRank = this.EnemyData.EnemyRank
.Merge(this.EnemyData.EnemyEncounterRank.ToDictionary(x => x.Key, x => x.Value.Max()));
this.EnemyData.EnemyEncounterRank = null;
modified = true;
}
var keysList = this.EnemyData.MapEnemyData.Values.SelectMany(x => x.Values).ToArray();
var allKeys = keysList.Merge();
foreach (var keys in keysList)
{
keys.GroupBy(key => key, new EnemyDataComparer(this.EnemyData))
.SelectMany(x => x.Skip(1))
.ToList()
.ForEach(key => keys.Remove(key));
}
var restKeys = keysList.Merge();
allKeys.ExceptWith(restKeys);
foreach (var key in allKeys)
{
this._RemoveEnemy(key);
}
return modified || allKeys.Count > 0;
}