public static void ParseDamage(Round res, string text) { MatchCollection col = Regex.Matches(text, RegexConstants.Damage); res.Fighter1Round.DamageDealt = new RoundDamage(); RoundDamage rdF1 = new RoundDamage() { EnduranceDamage = col[0].GroupAsDouble("edmg"), StunDamage = col[0].GroupAsDouble("sdmg") }; res.Fighter1Round.DamageReceived = rdF1; res.Fighter2Round.DamageDealt = rdF1; RoundDamage rdF2 = new RoundDamage() { EnduranceDamage = col[1].GroupAsDouble("edmg"), StunDamage = col[1].GroupAsDouble("sdmg") }; res.Fighter2Round.DamageReceived = rdF2; res.Fighter1Round.DamageDealt = rdF2; res.Fighter1Round.FatigueEndRound = col[0].GroupAsDouble("fatigue"); res.Fighter2Round.FatigueEndRound = col[1].GroupAsDouble("fatigue"); }
private void CompareDamage() { Fight f = Shared.Locator().FightResults.Fight; Resources.FatigueBeforeCut = this.FatigueBeforeCut; if (f != null) { this.CompareResults = f.CompareToCalculated(); RoundDamage sum = RoundDamage.Sum(this.CompareResults.Select(c => c.Diff)); this.DiffDescription = String.Format("Total diff: E: {0:0.00}, S: {1:0.00}", sum.EnduranceDamage, sum.StunDamage); } }
public static bool IsDamageEqual(this Data.FighterRound dataFighterRound, RoundDamage damage, double threshold = 0) { double diff = Math.Abs(Math.Round(dataFighterRound.Stun_Damage, 1) - Math.Round(damage.StunDamage, 1)); if (diff > threshold) { return(false); } return(true); //diff = Math.Abs(Math.Round(dataFighterRound.Endurance_Damage, 1) - Math.Round(damage.EnduranceDamage, 1)); //if(diff > threshold) //{ // return false; //} //return true; }
public static RoundDamage CalculateDamageForDataRound(Data.Round round, FighterStats fStats, FighterStats oStats, List <CutBase> cuts, bool isFirst) { Data.FighterRound round1 = (isFirst) ? round.First : round.Second; Data.FighterRound round2 = (isFirst) ? round.Second : round.First; FighterStats adjusted1 = FighterStats.FatigueStats(fStats, round1.Endurance_Start); FighterStats adjusted2 = FighterStats.FatigueStats(oStats, round2.Endurance_Start); FighterRoundPlan fp1 = new FighterRoundPlan(round1.Tactic); FighterRoundPlan fp2 = new FighterRoundPlan(round2.Tactic); if (cuts != null) { adjusted1.AdjustCutStats(cuts); } RoundDamage ret = RoundDamage.CalculateRoundDamage(adjusted1, fp1, adjusted2, fp2, fp1.TargetArea); return(ret); }
public static bool RoundMatchesExpectations(Data.Round round, FighterStats f1Stats, FighterStats f2Stats, bool skipCuts, double threshold = 0) { List <CutBase> cuts1 = skipCuts ? new List <CutBase>() : round.First.GetCutsForDataRound(); List <CutBase> cuts2 = skipCuts ? new List <CutBase>() : round.Second.GetCutsForDataRound(); RoundDamage rd = CalculateDamageForDataRound(round, f1Stats, f2Stats, cuts1, true); if (!IsDamageEqual(round.First, rd, threshold)) { return(false); } RoundDamage rd2 = CalculateDamageForDataRound(round, f2Stats, f1Stats, cuts2, false); if (!IsDamageEqual(round.Second, rd2, threshold)) { return(false); } return(true); }