private bool IsValidMatch(tnEndMatchEventParams i_Params) { int teamAHumanPlayers = i_Params.teamAHumanPlayers; int teamBHumanPlayers = i_Params.teamBHumanPlayers; return(teamAHumanPlayers > 0 || teamBHumanPlayers > 0); }
private int GetMaxScoredGoals(tnEndMatchEventParams i_Params) { if (i_Params.scoreA == i_Params.scoreB) { return(i_Params.scoreA); } if (i_Params.scoreA > i_Params.scoreB) { if (i_Params.teamAHumanPlayers > 0 && i_Params.isTeamALocal) { return(i_Params.scoreA); } else { if (i_Params.teamBHumanPlayers > 0 && i_Params.isTeamBLocal) { return(i_Params.scoreB); } else { return(0); } } } else { // i_Params.scoreB > i_Params.scoreA if (i_Params.teamBHumanPlayers > 0 && i_Params.isTeamBLocal) { return(i_Params.scoreB); } else { if (i_Params.teamAHumanPlayers > 0 && i_Params.isTeamALocal) { return(i_Params.scoreA); } else { return(0); } } } }
private int GetMinSufferedGoals(tnEndMatchEventParams i_Params) { if (i_Params.scoreA == i_Params.scoreB) { return(i_Params.scoreA); } if (i_Params.scoreA < i_Params.scoreB) { if (i_Params.teamAHumanPlayers > 0 && i_Params.isTeamALocal) { return(i_Params.scoreA); } else { if (i_Params.teamBHumanPlayers > 0 && i_Params.isTeamBLocal) { return(i_Params.scoreB); } else { return(int.MaxValue); } } } else { // i_Params.scoreB < i_Params.scoreA if (i_Params.teamBHumanPlayers > 0 && i_Params.isTeamBLocal) { return(i_Params.scoreB); } else { if (i_Params.teamAHumanPlayers > 0 && i_Params.isTeamALocal) { return(i_Params.scoreA); } else { return(int.MaxValue); } } } }
private void OnMatchEnded(tnEndMatchEventParams i_Params) { if (!IsValidMatch(i_Params)) { return; } StatsModule statsModule = GameServices.GetModuleMain <StatsModule>(); if (statsModule == null) { return; } statsModule.UpdateIntStat(tnUserStatsId.s_MatchesPlayedStatId, 1, IntStatUpdateFunction.Add); if (i_Params.hasReferee) { statsModule.UpdateIntStat(tnUserStatsId.s_MatchesPlayedWithRefereeStatId, 1, IntStatUpdateFunction.Add); } int minSufferedGoals = GetMinSufferedGoals(i_Params); int maxScoredGoals = GetMaxScoredGoals(i_Params); statsModule.UpdateIntStat(tnUserStatsId.s_MinSuffuredGoalsStatId, minSufferedGoals, IntStatUpdateFunction.Min); statsModule.UpdateIntStat(tnUserStatsId.s_MaxScoredGoalsStatId, maxScoredGoals, IntStatUpdateFunction.Max); bool result71 = (i_Params.scoreA == 7 && i_Params.scoreB == 1 && i_Params.teamAHumanPlayers > 0 && i_Params.isTeamALocal) || (i_Params.scoreA == 1 && i_Params.scoreB == 7 && i_Params.teamBHumanPlayers > 0 && i_Params.isTeamBLocal); statsModule.UpdateBoolStat(tnUserStatsId.s_Result71StatId, result71, BoolStatUpdateFunction.Add); bool realPool = (i_Params.ballId == s_Ball8Id && i_Params.stadiumId == s_PoolPalaceHashedId); statsModule.UpdateBoolStat(tnUserStatsId.s_RealPoolStatId, realPool, BoolStatUpdateFunction.Add); bool itaBeatsFrance = (i_Params.teamAId == s_ItaHashedId && i_Params.teamBId == s_FraHashedId && i_Params.teamAHumanPlayers > 0 && i_Params.isTeamALocal && i_Params.scoreA > i_Params.scoreB) || (i_Params.teamAId == s_FraHashedId && i_Params.teamBId == s_ItaHashedId && i_Params.teamBHumanPlayers > 0 && i_Params.isTeamBLocal && i_Params.scoreB > i_Params.scoreA); statsModule.UpdateBoolStat(tnUserStatsId.s_ItaBeatsFranceStatId, itaBeatsFrance, BoolStatUpdateFunction.Add); statsModule.StoreStats(); }
protected override void OnEndMatch() { base.OnEndMatch(); bool online = !PhotonNetwork.offlineMode; tnEndMatchEventParams param = new tnEndMatchEventParams(online); param.SetGameModeId(gameModeId); param.SetBallId(ballId); param.SetStadiumId(stadiumId); param.SetHasReferee(hasReferee); param.SetGoldenGoalEnabled(goldenGoalEnabled); param.SetGoldenGoal(goldenGoal); // Compute human players. tnStandardMatchTeamResults teamAResults = (tnStandardMatchTeamResults)GetTeamResultsByIndex(0); if (teamAResults != null) { param.SetTeamAId(teamAResults.id); param.SetScoreA(teamAResults.score); param.SetTeamASize(teamAResults.charactersResultsCount); int humanPlayers = 0; if (!online) { for (int index = 0; index < teamAResults.charactersResultsCount; ++index) { tnCharacterResults characterResults = teamAResults.GetCharacterResults(index); if (characterResults != null) { if (characterResults.isHuman) { ++humanPlayers; } } } } else { humanPlayers = teamAResults.charactersResultsCount; } param.SetTeamAHumanPlayers(humanPlayers); } tnStandardMatchTeamResults teamBResults = (tnStandardMatchTeamResults)GetTeamResultsByIndex(1); if (teamBResults != null) { param.SetTeamBId(teamBResults.id); param.SetScoreB(teamBResults.score); param.SetTeamBSize(teamBResults.charactersResultsCount); int humanPlayers = 0; if (!online) { for (int index = 0; index < teamBResults.charactersResultsCount; ++index) { tnCharacterResults characterResults = teamBResults.GetCharacterResults(index); if (characterResults != null) { if (characterResults.isHuman) { ++humanPlayers; } } } } else { humanPlayers = teamBResults.charactersResultsCount; } param.SetTeamBHumanPlayers(humanPlayers); } // Compute local characters and teams. for (int index = 0; index < localCharactersCount; ++index) { GameObject character = GetLocalCharacterByIndex(index); if (character == null) { continue; } tnCharacterInfo characterInfo = character.GetComponent <tnCharacterInfo>(); if (characterInfo != null) { int characterId = characterInfo.characterId; int teamId = characterInfo.teamId; param.AddLocalCharacter(characterId); param.AddLocalTeam(teamId); } } // Raise event. Messenger.Broadcast <tnEndMatchEventParams>("MatchEnded", param); }