private void HandleRemovedTanks(IXQueryable[] removedTanks) { foreach (var tank in removedTanks) { var item = new RemovedItem(PatchnoteGeneratorDocumenVM.GetTankName(tank), tank); item.ItemName.AddModifier(this.GetTankTypeModifier(tank)); _removedTanks.Add(item); ++_processedTankTaskCount; this.GenerationProgress = (double)_processedTankTaskCount / _tankTaskCount; } }
private IEnumerable <ItemName> AnalyseModuleCollectionCollisionChanges(IXQueryable oldTank, IXQueryable newTank, string xpath, string moduleName) { var oldModules = oldTank.QueryMany(xpath).Distinct(KeyEqualityComparer <IXQueryable> .Instance); var newModules = newTank.QueryMany(xpath).Distinct(KeyEqualityComparer <IXQueryable> .Instance); foreach (var sharedItem in oldModules.Diff(newModules, KeyEqualityComparer <IXQueryable> .Instance).Shared) { if (!this.ModelFileEquals(sharedItem.Source, sharedItem.Target, "hitTester/collisionModel")) { var name = new ItemName(PatchnoteGeneratorDocumenVM.GetTankName(sharedItem.Source)); name.AddModifier(new TypeModifier(moduleName)); yield return(name); } } }
private void AnalyseCollisionChanges(IXQueryable oldTank, IXQueryable newTank) { var changedParts = new List <ItemName>(); if (!this.ModelFileEquals(oldTank, newTank, "hull/hitTester/collisionModel")) { changedParts.Add(new ItemName("hull", false)); } changedParts.AddRange(this.AnalyseModuleCollectionCollisionChanges(oldTank, newTank, "chassis/chassis", "chassis")); changedParts.AddRange(this.AnalyseModuleCollectionCollisionChanges(oldTank, newTank, "turrets/turret", "turret")); changedParts.AddRange(this.AnalyseModuleCollectionCollisionChanges(oldTank, newTank, "turrets/turret/guns/gun", "gun")); if (changedParts.Count > 0) { _potentialCollisionChanges.Add(new PotentialModelChangedItem(PatchnoteGeneratorDocumenVM.GetTankName(oldTank), changedParts.ToArray())); } }
private void HandleSharedTanks(SharedPair <IXQueryable>[] sharedTanks) { foreach (var sharedTank in sharedTanks) { _statChanges.AddIfNotNull(TankDataItemHandler.Instance.CreateReportItem(PatchnoteGeneratorDocumenVM.GetTankName(sharedTank.Source), sharedTank.Source, sharedTank.Target, false, false, false)); if (_checkPotentialCollisionChanges) { this.AnalyseCollisionChanges(sharedTank.Source, sharedTank.Target); } ++_processedTankTaskCount; this.GenerationProgress = (double)_processedTankTaskCount / _tankTaskCount; } }