internal void RaiseRoundEnd(RoundEndedEventArgs re) { if (RoundEnd != null) { RoundEnd(this, re); } }
protected override void HandleRoundEnd(object sender, RoundEndedEventArgs e) { _matchStartedCount = 0; if (!IsMatchStarted) return; CurrentRound.EndReason = e.Reason; CurrentRound.EndTimeSeconds = Parser.CurrentTime; UpdateTeamScore(e); Application.Current.Dispatcher.Invoke(delegate { CurrentRound.WinnerSide = e.Winner; if (CurrentRound.OpenKillEvent != null) { if (CurrentRound.OpenKillEvent.KillerSide == Team.Terrorist && e.Winner == Team.Terrorist || CurrentRound.OpenKillEvent.KillerSide == Team.CounterTerrorist && e.Winner == Team.CounterTerrorist) { if (CurrentRound.OpenKillEvent != null) CurrentRound.OpenKillEvent.HasWin = true; if (CurrentRound.EntryKillEvent != null) CurrentRound.EntryKillEvent.HasWin = true; } var playerWithEntryKill = Demo.Players.FirstOrDefault(p => p.HasEntryKill); playerWithEntryKill?.EntryKills.Add(CurrentRound.EntryKillEvent); var playerWithOpeningKill = Demo.Players.FirstOrDefault(p => p.HasOpeningKill); playerWithOpeningKill?.OpeningKills.Add(CurrentRound.OpenKillEvent); } }); // On ESEA demos round_announce_last_round_half isn't raised if (CurrentRound.Number == 15) { IsSwapTeamRequired = true; } }
internal void RaiseRoundEnd(RoundEndedEventArgs re) { if (RoundEnd != null) RoundEnd(this, re); }
protected abstract void HandleRoundEnd(object sender, RoundEndedEventArgs e);
protected override void HandleRoundEnd(object sender, RoundEndedEventArgs e) { if (!IsMatchStarted) return; UpdateTeamScore(e); Application.Current.Dispatcher.Invoke(delegate { CurrentRound.Winner = e.Winner; if (CurrentRound.OpenKillEvent != null) { if (CurrentRound.OpenKillEvent.KillerTeam == Team.Terrorist && e.Winner == Team.Terrorist || CurrentRound.OpenKillEvent.KillerTeam == Team.CounterTerrorist && e.Winner == Team.CounterTerrorist) { if (CurrentRound.OpenKillEvent.KillerTeam == Team.Terrorist && e.Winner == Team.Terrorist || CurrentRound.OpenKillEvent.KillerTeam == Team.CounterTerrorist && e.Winner == Team.CounterTerrorist) { if (CurrentRound.OpenKillEvent != null) CurrentRound.OpenKillEvent.HasWin = true; if (CurrentRound.EntryKillEvent != null) CurrentRound.EntryKillEvent.HasWin = true; } } } }); // On faceit round_officialy_ended is raised between half side, not on eBot public demos if (IsLastRoundHalf) { Application.Current.Dispatcher.Invoke(delegate { Demo.Rounds.Add(CurrentRound); }); if (!IsOvertime) return; } Application.Current.Dispatcher.Invoke(delegate { var playerWithEntryKill = Demo.Players.FirstOrDefault(p => p.HasEntryKill); playerWithEntryKill?.EntryKills.Add(CurrentRound.EntryKillEvent); var playerWithOpeningKill = Demo.Players.FirstOrDefault(p => p.HasOpeningKill); playerWithOpeningKill?.OpeningKills.Add(CurrentRound.OpenKillEvent); // Last round of the match or of an overtime, the final overtime is added on cs_win_panel_match if (IsOvertime && _isLastRoundFinal) { Demo.Overtimes.Add(CurrentOvertime); _isLastRoundFinal = false; CurrentOvertime = new Overtime { Number = ++OvertimeCount }; } }); }
/// <summary> /// Update the teams score and current round name /// </summary> /// <param name="roundEndedEventArgs"></param> protected void UpdateTeamScore(RoundEndedEventArgs roundEndedEventArgs) { if (IsOvertime) { if (IsHalfMatch) { if (roundEndedEventArgs.Winner == Team.Terrorist) { CurrentOvertime.ScoreTeam2++; Demo.ScoreTeam2++; CurrentRound.WinnerClanName = !string.IsNullOrWhiteSpace(Demo.ClanTagNameTeam2) ? Demo.ClanTagNameTeam2 : TEAM2_NAME; } else { CurrentOvertime.ScoreTeam1++; Demo.ScoreTeam1++; CurrentRound.WinnerClanName = !string.IsNullOrWhiteSpace(Demo.ClanTagNameTeam1) ? Demo.ClanTagNameTeam1 : TEAM1_NAME; } } else { if (roundEndedEventArgs.Winner == Team.CounterTerrorist) { CurrentOvertime.ScoreTeam2++; Demo.ScoreTeam2++; CurrentRound.WinnerClanName = !string.IsNullOrWhiteSpace(Demo.ClanTagNameTeam2) ? Demo.ClanTagNameTeam2 : TEAM2_NAME; } else { CurrentOvertime.ScoreTeam1++; Demo.ScoreTeam1++; CurrentRound.WinnerClanName = !string.IsNullOrWhiteSpace(Demo.ClanTagNameTeam1) ? Demo.ClanTagNameTeam1 : TEAM1_NAME; } } } else { if (IsHalfMatch) { if (roundEndedEventArgs.Winner == Team.Terrorist) { Demo.ScoreSecondHalfTeam1++; Demo.ScoreTeam1++; CurrentRound.WinnerClanName = !string.IsNullOrWhiteSpace(Demo.ClanTagNameTeam1) ? Demo.ClanTagNameTeam1 : TEAM1_NAME; } else { Demo.ScoreSecondHalfTeam2++; Demo.ScoreTeam2++; CurrentRound.WinnerClanName = !string.IsNullOrWhiteSpace(Demo.ClanTagNameTeam2) ? Demo.ClanTagNameTeam2 : TEAM2_NAME; } } else { if (roundEndedEventArgs.Winner == Team.CounterTerrorist) { Demo.ScoreFirstHalfTeam1++; Demo.ScoreTeam1++; CurrentRound.WinnerClanName = !string.IsNullOrWhiteSpace(Demo.ClanTagNameTeam1) ? Demo.ClanTagNameTeam1 : TEAM1_NAME; } else { Demo.ScoreFirstHalfTeam2++; Demo.ScoreTeam2++; CurrentRound.WinnerClanName = !string.IsNullOrWhiteSpace(Demo.ClanTagNameTeam2) ? Demo.ClanTagNameTeam2 : TEAM2_NAME; } } } }
/// <summary> /// Update the teams score and current round name /// </summary> /// <param name="roundEndedEventArgs"></param> protected void UpdateTeamScore(RoundEndedEventArgs roundEndedEventArgs) { if (IsOvertime) { if (IsHalfMatch) { if (roundEndedEventArgs.Winner == Team.Terrorist) { CurrentOvertime.ScoreTeam2++; Demo.ScoreTeam2++; CurrentRound.WinnerName = Demo.TeamT.Name; } else { CurrentOvertime.ScoreTeam1++; Demo.ScoreTeam1++; CurrentRound.WinnerName = Demo.TeamCT.Name; } } else { if (roundEndedEventArgs.Winner == Team.CounterTerrorist) { CurrentOvertime.ScoreTeam2++; Demo.ScoreTeam2++; CurrentRound.WinnerName = Demo.TeamT.Name; } else { CurrentOvertime.ScoreTeam1++; Demo.ScoreTeam1++; CurrentRound.WinnerName = Demo.TeamCT.Name; } } } else { if (IsHalfMatch) { if (roundEndedEventArgs.Winner == Team.Terrorist) { Demo.ScoreSecondHalfTeam1++; Demo.ScoreTeam1++; CurrentRound.WinnerName = Demo.TeamCT.Name; } else { Demo.ScoreSecondHalfTeam2++; Demo.ScoreTeam2++; CurrentRound.WinnerName = Demo.TeamT.Name; } } else { if (roundEndedEventArgs.Winner == Team.CounterTerrorist) { Demo.ScoreFirstHalfTeam1++; Demo.ScoreTeam1++; CurrentRound.WinnerName = Demo.TeamCT.Name; } else { Demo.ScoreFirstHalfTeam2++; Demo.ScoreTeam2++; CurrentRound.WinnerName = Demo.TeamT.Name; } } } }
protected override void HandleRoundEnd(object sender, RoundEndedEventArgs e) { if (!IsMatchStarted) return; UpdateTeamScore(e); Application.Current.Dispatcher.Invoke(delegate { CurrentRound.Winner = e.Winner; if (CurrentRound.OpenKillEvent != null) { if (CurrentRound.OpenKillEvent.KillerTeam == Team.Terrorist && e.Winner == Team.Terrorist || CurrentRound.OpenKillEvent.KillerTeam == Team.CounterTerrorist && e.Winner == Team.CounterTerrorist) { if (CurrentRound.OpenKillEvent != null) CurrentRound.OpenKillEvent.HasWin = true; if (CurrentRound.EntryKillEvent != null) CurrentRound.EntryKillEvent.HasWin = true; } var playerWithEntryKill = Demo.Players.FirstOrDefault(p => p.HasEntryKill); playerWithEntryKill?.EntryKills.Add(CurrentRound.EntryKillEvent); var playerWithOpeningKill = Demo.Players.FirstOrDefault(p => p.HasOpeningKill); playerWithOpeningKill?.OpeningKills.Add(CurrentRound.OpenKillEvent); } }); if (IsLastRoundHalf) { Application.Current.Dispatcher.Invoke(delegate { IsSwapTeamRequired = true; Demo.Rounds.Add(CurrentRound); }); } if (IsOvertime && IsLastRoundHalf) IsHalfMatch = false; }
protected override void HandleRoundEnd(object sender, RoundEndedEventArgs e) { if (!IsMatchStarted) return; CurrentRound.EndReason = e.Reason; CurrentRound.EndTimeSeconds = Parser.CurrentTime; UpdateTeamScore(e); // some demos return the wrong surrender RoundEndReason, I use the round's winner to detect which team has surrendered if (e.Reason == RoundEndReason.CTSurrender || e.Reason == RoundEndReason.TerroristsSurrender) { if (IsHalfMatch) { Demo.Surrender = e.Winner == Team.CounterTerrorist ? Demo.TeamCT : Demo.TeamT; } else { Demo.Surrender = e.Winner == Team.CounterTerrorist ? Demo.TeamT : Demo.TeamCT; } } Application.Current.Dispatcher.Invoke(delegate { CurrentRound.WinnerSide = e.Winner; if (CurrentRound.OpenKillEvent != null) { if (CurrentRound.OpenKillEvent.KillerSide == Team.Terrorist && e.Winner == Team.Terrorist || CurrentRound.OpenKillEvent.KillerSide == Team.CounterTerrorist && e.Winner == Team.CounterTerrorist) { if (CurrentRound.OpenKillEvent != null) CurrentRound.OpenKillEvent.HasWin = true; if (CurrentRound.EntryKillEvent != null) CurrentRound.EntryKillEvent.HasWin = true; } var playerWithEntryKill = Demo.Players.FirstOrDefault(p => p.HasEntryKill); playerWithEntryKill?.EntryKills.Add(CurrentRound.EntryKillEvent); var playerWithOpeningKill = Demo.Players.FirstOrDefault(p => p.HasOpeningKill); playerWithOpeningKill?.OpeningKills.Add(CurrentRound.OpenKillEvent); } }); if (IsLastRoundHalf) { Application.Current.Dispatcher.Invoke(delegate { IsSwapTeamRequired = true; Demo.Rounds.Add(CurrentRound); }); } if (IsOvertime && IsLastRoundHalf) IsHalfMatch = false; }
protected override void HandleRoundEnd(object sender, RoundEndedEventArgs e) { if (!IsMatchStarted) return; CurrentRound.EndReason = e.Reason; CurrentRound.EndTimeSeconds = Parser.CurrentTime; UpdateTeamScore(e); Application.Current.Dispatcher.Invoke(delegate { CurrentRound.WinnerSide = e.Winner; if (CurrentRound.OpenKillEvent != null) { if (CurrentRound.OpenKillEvent.KillerSide == Team.Terrorist && e.Winner == Team.Terrorist || CurrentRound.OpenKillEvent.KillerSide == Team.CounterTerrorist && e.Winner == Team.CounterTerrorist) { if (CurrentRound.OpenKillEvent.KillerSide == Team.Terrorist && e.Winner == Team.Terrorist || CurrentRound.OpenKillEvent.KillerSide == Team.CounterTerrorist && e.Winner == Team.CounterTerrorist) { if (CurrentRound.OpenKillEvent != null) CurrentRound.OpenKillEvent.HasWin = true; if (CurrentRound.EntryKillEvent != null) CurrentRound.EntryKillEvent.HasWin = true; } } } if (IsLastRoundHalf) Demo.Rounds.Add(CurrentRound); var playerWithEntryKill = Demo.Players.FirstOrDefault(p => p.HasEntryKill); playerWithEntryKill?.EntryKills.Add(CurrentRound.EntryKillEvent); var playerWithOpeningKill = Demo.Players.FirstOrDefault(p => p.HasOpeningKill); playerWithOpeningKill?.OpeningKills.Add(CurrentRound.OpenKillEvent); }); }