public override int GetHashCode() { unchecked { int hashCode = base.GetHashCode(); hashCode = (hashCode * 397) ^ (VIN != null ? VIN.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (VehicleMake != null ? VehicleMake.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (VehicleModel != null ? VehicleModel.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TyreSize != null ? TyreSize.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (VehicleType != null ? VehicleType.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (WFactor != null ? WFactor.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (KFactor != null ? KFactor.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (LFactor != null ? LFactor.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (OdometerReading != null ? OdometerReading.GetHashCode() : 0); hashCode = (hashCode * 397) ^ Tampered.GetHashCode(); hashCode = (hashCode * 397) ^ (InvoiceNumber != null ? InvoiceNumber.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (InspectionInfo != null ? InspectionInfo.GetHashCode() : 0); hashCode = (hashCode * 397) ^ TachographHasAdapter.GetHashCode(); hashCode = (hashCode * 397) ^ (TachographAdapterSerialNumber != null ? TachographAdapterSerialNumber.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachographAdapterLocation != null ? TachographAdapterLocation.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachographCableColor != null ? TachographCableColor.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (MinorWorkDetails != null ? MinorWorkDetails.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachographType != null ? TachographType.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (CardSerialNumber != null ? CardSerialNumber.GetHashCode() : 0); hashCode = (hashCode * 397) ^ CalibrationTime.GetHashCode(); hashCode = (hashCode * 397) ^ IsDigital.GetHashCode(); hashCode = (hashCode * 397) ^ NewBattery.GetHashCode(); hashCode = (hashCode * 397) ^ (NewInspectionInfo != null ? NewInspectionInfo.GetHashCode() : 0); return(hashCode); } }
public override int GetHashCode() { unchecked { var hashCode = BenchTestCarriedOutAnalogue.GetHashCode(); hashCode = (hashCode * 397) ^ CalibrationCertificateCompleted.GetHashCode(); hashCode = (hashCode * 397) ^ ClockTestCompleted.GetHashCode(); hashCode = (hashCode * 397) ^ (Comments != null ? Comments.GetHashCode() : 0); hashCode = (hashCode * 397) ^ DateOfAudit.GetHashCode(); hashCode = (hashCode * 397) ^ DistanceCheckCarriedOut.GetHashCode(); hashCode = (hashCode * 397) ^ EventsFaultsReadCleared.GetHashCode(); hashCode = (hashCode * 397) ^ (FortyKmTest != null ? FortyKmTest.GetHashCode() : 0); hashCode = (hashCode * 397) ^ FunctionalBenchTestDigital.GetHashCode(); hashCode = (hashCode * 397) ^ KFactor.GetHashCode(); hashCode = (hashCode * 397) ^ LFactor.GetHashCode(); hashCode = (hashCode * 397) ^ Passed.GetHashCode(); hashCode = (hashCode * 397) ^ (QCManagerName != null ? QCManagerName.GetHashCode() : 0); hashCode = (hashCode * 397) ^ ReferenceCableCheckCompleted.GetHashCode(); hashCode = (hashCode * 397) ^ (SixtyKmTest != null ? SixtyKmTest.GetHashCode() : 0); hashCode = (hashCode * 397) ^ SpeedForSpeedCheckCompleted.GetHashCode(); hashCode = (hashCode * 397) ^ SystemSealedInAccordance.GetHashCode(); hashCode = (hashCode * 397) ^ (TachoCentreCity != null ? TachoCentreCity.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachoCentreLine1 != null ? TachoCentreLine1.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachoCentreLine2 != null ? TachoCentreLine2.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachoCentreLine3 != null ? TachoCentreLine3.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachoCentrePostCode != null ? TachoCentrePostCode.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachographMake != null ? TachographMake.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachographModel != null ? TachographModel.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachographSerialNumber != null ? TachographSerialNumber.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (TachoManagerName != null ? TachoManagerName.GetHashCode() : 0); hashCode = (hashCode * 397) ^ TechnicalDataPrintoutsCreated.GetHashCode(); hashCode = (hashCode * 397) ^ (TechnicianName != null ? TechnicianName.GetHashCode() : 0); hashCode = (hashCode * 397) ^ TestChartsCompleted.GetHashCode(); hashCode = (hashCode * 397) ^ ThreeBasicChecksCompleted.GetHashCode(); hashCode = (hashCode * 397) ^ (TypeOfTachographCheck != null ? TypeOfTachographCheck.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (VehicleIdentificationNumber != null ? VehicleIdentificationNumber.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (VehicleMake != null ? VehicleMake.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (VehicleRegistrationNumber != null ? VehicleRegistrationNumber.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (VehicleType != null ? VehicleType.GetHashCode() : 0); hashCode = (hashCode * 397) ^ WFactor.GetHashCode(); return(hashCode); } }
public static void CalculateAfterMatch(Model.MatchData pMatchData) { //get the users and their MMR List <User> radiantPlayers = pMatchData.teams[0].players.Where(m => m != null).Select(player => Mongo.Users.FindOneAs <User>(Query.EQ("steam.steamid", player.steam_id))).ToList(); List <User> direPlayers = pMatchData.teams[1].players.Where(m => m != null).Select(player => Mongo.Users.FindOneAs <User>(Query.EQ("steam.steamid", player.steam_id))).ToList(); var mod = Mods.Mods.ByName(pMatchData.mod); //avg the MMR double radiantAvg = radiantPlayers.Average(a => a.profile.mmr[mod.name]); double direAvg = direPlayers.Average(a => a.profile.mmr[mod.name]); //calculate probability to win double qa = Math.Pow(10, (radiantAvg / 400.0)); double qb = Math.Pow(10, (direAvg / 400.0)); double radiantWinProb = qa / (qa + qb); double direWinProb = qb / (qa + qb); //get factors for increment or decrement KFactor radiantFactor = KFactors.First(a => radiantAvg >= a.MinMmr && radiantAvg <= a.MaxMmr); KFactor direFactor = KFactors.First(a => direAvg >= a.MinMmr && direAvg <= a.MaxMmr); //calculate the increments and decrements based on win only int incRadiant = 0; int incDire = 0; if (pMatchData.good_guys_win) { incRadiant = (int)Math.Round(radiantFactor.Factor * (1.0 - radiantWinProb)); incDire = (int)Math.Round(direFactor.Factor * -direWinProb); } else { incRadiant = (int)Math.Round(radiantFactor.Factor * -radiantWinProb); incDire = (int)Math.Round(direFactor.Factor * (1.0 - direWinProb)); } foreach (var player in radiantPlayers) { if (player.profile.metrics == null) { player.profile.metrics = new Dictionary <string, ModMetric>(); } if (!player.profile.metrics.ContainsKey(mod.name)) { player.profile.metrics[mod.name] = new ModMetric(); } if (pMatchData.good_guys_win) { player.profile.metrics[mod.name].wins++; } else { player.profile.metrics[mod.name].losses++; } } foreach (var player in direPlayers) { if (player.profile.metrics == null) { player.profile.metrics = new Dictionary <string, ModMetric>(); } if (!player.profile.metrics.ContainsKey(mod.name)) { player.profile.metrics[mod.name] = new ModMetric(); } if (pMatchData.good_guys_win) { player.profile.metrics[mod.name].losses++; } else { player.profile.metrics[mod.name].wins++; } } //increment results radiantPlayers.ForEach(player => player.profile.mmr[mod.name] += incRadiant); direPlayers.ForEach(player => player.profile.mmr[mod.name] += incDire); //todo: add individual increment and/or decrement based on gameplay //check roof, floor and save foreach (var player in radiantPlayers.Union(direPlayers)) { if (player.profile.mmr[mod.name] > MmrRoof) { player.profile.mmr[mod.name] = MmrRoof; } if (player.profile.mmr[mod.name] < MmrFloor) { player.profile.mmr[mod.name] = MmrFloor; } foreach (var browser in Browsers.Find(m => m.user != null && m.user.Id == player.Id)) { browser.user = player; } Mongo.Users.Save(player); } }
private void SinglePanel(PanelType_e panelType, Materials_e OuterMaterial, Materials_e InnerMaterial, PanelProfile_e profile) { base.PartName = "02-" + (int)panelType + "-01-" + sizePanel.X + "-" + sizePanel.Y + "-" + OuterMaterial + "-" + InnerMaterial + "-" + (int)profile; if (CheckExistPart != null) { CheckExistPart(NewPartPath, RootFolder, out NewPartPath); } if (IsPartExist) { SolidWorksDocument.Extension.SelectByID2("02-01-001-1@02-01", "COMPONENT", 0, 0, 0, false, 0, null, 0); AssemblyDocument.ReplaceComponents(base.NewPartPath, "", false, true); } else { base.NewPartPath = Path.Combine(RootFolder, SubjectDestinationFolder, base.PartName); // outer panel if (SetBends != null) { SetBends.Invoke((decimal)outThickness, out KFactor, out BendRadius); } base.parameters.Add("D1@Эскиз1", sizePanel.Y); base.parameters.Add("D2@Эскиз1", sizePanel.X); base.parameters.Add("D1@Кривая2", rivetH); base.parameters.Add("D1@Кривая1", rivetW); base.parameters.Add("D7@Ребро-кромка1", lenght); base.parameters.Add("Толщина@Листовой металл", outThickness); base.parameters.Add("D1@Листовой металл", (double)BendRadius); base.parameters.Add("D2@Листовой металл", (double)KFactor * 1000); if (panelType == PanelType_e.RemovablePanel && !isOneHandle) { base.parameters.Add("D4@Эскиз30", widthHandle); } EditPartParameters("02-01-001", base.NewPartPath, 0); } base.PartName = "02-" + (int)panelType + "-02-" + sizePanel.X + "-" + sizePanel.Y + "-" + OuterMaterial + "-" + InnerMaterial + "-" + (int)profile; if (CheckExistPart != null) { CheckExistPart(NewPartPath, RootFolder, out NewPartPath); } if (IsPartExist) { SolidWorksDocument.Extension.SelectByID2("02-01-002-1@02-01", "COMPONENT", 0, 0, 0, false, 0, null, 0); AssemblyDocument.ReplaceComponents(base.NewPartPath, "", false, true); } else { base.NewPartPath = Path.Combine(RootFolder, SubjectDestinationFolder, base.PartName); System.Windows.Forms.MessageBox.Show("From SinglePanel : innerThickness " + innerThickness.ToString());///////////////////////////////////////////////////////////////////// if (SetBends != null) { SetBends((decimal)innerThickness, out KFactor, out BendRadius); } System.Windows.Forms.MessageBox.Show("innerThickness " + innerThickness.ToString() + "KFactor " + KFactor.ToString() + "BendRadius " + BendRadius.ToString()); base.parameters.Add("D1@Эскиз1", innerWeidht); base.parameters.Add("D2@Эскиз1", innerHeight); base.parameters.Add("D1@Кривая2", rivetW); base.parameters.Add("D1@Кривая1", rivetH); base.parameters.Add("Толщина@Листовой металл", innerThickness); base.parameters.Add("D1@Листовой металл", (double)BendRadius); base.parameters.Add("D2@Листовой металл", (double)KFactor * 1000); EditPartParameters("02-01-002", base.NewPartPath, 0); } }