Esempio n. 1
0
 public Encounter(TeamComp tc, CachedLog log, Raid r)
 {
     TC         = tc;
     Boss       = tc.Encounter;
     Players    = GetPlayersFromLog(log.PlayersNew, r, tc.Encounter);
     tc.Success = log.Succsess;
 }
        private static void AddBoss(Raid raid, Boss boss, CachedLog log)
        {
            var players = new List <Position>();
            var tc      = new TeamComp(-1, boss, log.IsCM, players, log.Succsess);

            raid.Bosses.Add(tc);
        }
Esempio n. 3
0
    public float GetTotalScore(TeamComp teamComp)
    {
        float score = 0;
        int   count = 0;

        score += GetHardCCScore(teamComp.Champs, out count);
        score += GetHardEngageScore(teamComp.Champs, out count);
        score += GetDisengageScore(teamComp.Champs, out count);
        score += GetPokeScore(teamComp.Champs, out count);
        score += GetWaveClearScore(teamComp.Champs, out count);
        score += GetTankScore(teamComp.Champs, out count);
        score += GetPhysicalScore(teamComp.Champs, out count);
        score += GetMagicalScore(teamComp.Champs, out count);
        score += GetUtilityScore(teamComp.Champs, out count);
        score += GetEarlyScore(teamComp.Champs, out count);
        score += GetMidScore(teamComp.Champs, out count);
        score += GetLateScore(teamComp.Champs, out count);
        score += GetPreferredLaneScore(teamComp.Players);

        return(score);
    }
    public void ChampionChanged(bool shouldUpdate = false)
    {
        if (!shouldUpdate)
        {
            return;
        }

        TeamComp teamComp = default;

        teamComp.Players = new List <PlayerData>();
        teamComp.Champs  = new List <ChampionData>();

        for (int i = 0; i < m_PositionControllers.Count; i++)
        {
            teamComp.Players.Add(m_PositionControllers[i].m_CurrentPlayer);
            teamComp.Champs.Add(m_PositionControllers[i].m_CurrentChampion);
        }

        Score.Instance.GetTotalScore(teamComp);
        m_CompMaker.FillScoreText(Score.Instance.GetTotalScore(teamComp));
        m_CompMaker.FillCompText(teamComp);
    }
Esempio n. 5
0
    public float GetTotalScore(TeamComp teamComp, out int[] champCounts)
    {
        float      score             = 0;
        List <int> returnChampCounts = new List <int>();
        int        count             = 0;

        score += GetHardCCScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetHardEngageScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetDisengageScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetPokeScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetWaveClearScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetTankScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetPhysicalScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetMagicalScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetUtilityScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetEarlyScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetMidScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetLateScore(teamComp.Champs, out count);
        returnChampCounts.Add(count);
        score += GetPreferredLaneScore(teamComp.Players);

        champCounts = returnChampCounts.ToArray();

        return(score);
    }
Esempio n. 6
0
    public void RollComp()
    {
        if (!m_CompsMade)
        {
            PopulateComps();
            m_CompsMade = true;
        }

        List <TeamComp> rolledComps = new List <TeamComp>();

        PositionController topPosition     = CompDataController.Instance.m_PositionControllers[0];
        PositionController junglePosition  = CompDataController.Instance.m_PositionControllers[1];
        PositionController middlePosition  = CompDataController.Instance.m_PositionControllers[2];
        PositionController bottomPosition  = CompDataController.Instance.m_PositionControllers[3];
        PositionController supportPosition = CompDataController.Instance.m_PositionControllers[4];

        List <ChampionData> bannedChampions = CompDataController.Instance.m_BannedChampions;

        foreach (TeamComp comp in m_TeamComps)
        {
            if (topPosition.m_IsPlayerLocked && !comp.Players[0].m_PlayerName.Equals(topPosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (junglePosition.m_IsPlayerLocked && !comp.Players[1].m_PlayerName.Equals(junglePosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (middlePosition.m_IsPlayerLocked && !comp.Players[2].m_PlayerName.Equals(middlePosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (bottomPosition.m_IsPlayerLocked && !comp.Players[3].m_PlayerName.Equals(bottomPosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (supportPosition.m_IsPlayerLocked && !comp.Players[4].m_PlayerName.Equals(supportPosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (topPosition.m_IsChampionLocked && !comp.Champs[0].m_ChampionName.Equals(topPosition.m_CurrentChampion.m_ChampionName))
            {
                continue;
            }

            if (junglePosition.m_IsChampionLocked && !comp.Champs[1].m_ChampionName.Equals(junglePosition.m_CurrentChampion.m_ChampionName))
            {
                continue;
            }

            if (middlePosition.m_IsChampionLocked && !comp.Champs[2].m_ChampionName.Equals(middlePosition.m_CurrentChampion.m_ChampionName))
            {
                continue;
            }

            if (bottomPosition.m_IsChampionLocked && !comp.Champs[3].m_ChampionName.Equals(bottomPosition.m_CurrentChampion.m_ChampionName))
            {
                continue;
            }

            if (supportPosition.m_IsChampionLocked && !comp.Champs[4].m_ChampionName.Equals(supportPosition.m_CurrentChampion.m_ChampionName))
            {
                continue;
            }

            bool containsBanned = false;

            for (int i = 0; i < comp.Champs.Count; i++)
            {
                if (bannedChampions.Contains(comp.Champs[i]))
                {
                    containsBanned = true;
                    break;
                }
            }

            if (containsBanned)
            {
                continue;
            }

            rolledComps.Add(comp);
        }

        rolledComps = rolledComps.OrderByDescending(x => x.CompScore).ToList <TeamComp>();

        float maxScore = rolledComps[0].CompScore;

        List <TeamComp> maxScoreComps = new List <TeamComp>();

        for (int i = 0; i < rolledComps.Count; i++)
        {
            if (rolledComps[i].CompScore >= maxScore)
            {
                maxScoreComps.Add(rolledComps[i]);
            }
            else
            {
                break;
            }
        }

        TeamComp bestComp = maxScoreComps[UnityEngine.Random.Range(0, maxScoreComps.Count)];

        if (!topPosition.m_IsPlayerLocked)
        {
            topPosition.AssignPlayer(bestComp.Players[0].m_PlayerName);
        }
        if (!topPosition.m_IsChampionLocked)
        {
            topPosition.AssignChampion(bestComp.Champs[0].m_ChampionName);
        }

        if (!junglePosition.m_IsPlayerLocked)
        {
            junglePosition.AssignPlayer(bestComp.Players[1].m_PlayerName);
        }
        if (!junglePosition.m_IsChampionLocked)
        {
            junglePosition.AssignChampion(bestComp.Champs[1].m_ChampionName);
        }

        if (!middlePosition.m_IsPlayerLocked)
        {
            middlePosition.AssignPlayer(bestComp.Players[2].m_PlayerName);
        }
        if (!middlePosition.m_IsChampionLocked)
        {
            middlePosition.AssignChampion(bestComp.Champs[2].m_ChampionName);
        }

        if (!bottomPosition.m_IsPlayerLocked)
        {
            bottomPosition.AssignPlayer(bestComp.Players[3].m_PlayerName);
        }
        if (!bottomPosition.m_IsChampionLocked)
        {
            bottomPosition.AssignChampion(bestComp.Champs[3].m_ChampionName);
        }

        if (!supportPosition.m_IsPlayerLocked)
        {
            supportPosition.AssignPlayer(bestComp.Players[4].m_PlayerName);
        }
        if (!supportPosition.m_IsChampionLocked)
        {
            supportPosition.AssignChampion(bestComp.Champs[4].m_ChampionName);
        }

        FillScoreText(bestComp.CompScore);
        FillCompText(bestComp);
    }
Esempio n. 7
0
    public void PopulateComps()
    {
        m_TeamComps.Clear();
        GC.Collect();

        List <List <PlayerData> > players = GetPlayers();

        PositionController topPosition     = CompDataController.Instance.m_PositionControllers[0];
        PositionController junglePosition  = CompDataController.Instance.m_PositionControllers[1];
        PositionController middlePosition  = CompDataController.Instance.m_PositionControllers[2];
        PositionController bottomPosition  = CompDataController.Instance.m_PositionControllers[3];
        PositionController supportPosition = CompDataController.Instance.m_PositionControllers[4];

        List <ChampionData> bannedChampions = CompDataController.Instance.m_BannedChampions;

        bool sizeExceeded = false;

        for (int playerIndex = 0; playerIndex < players.Count; playerIndex++)
        {
            if (topPosition.m_IsPlayerLocked && !players[playerIndex][0].m_PlayerName.Equals(topPosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (junglePosition.m_IsPlayerLocked && !players[playerIndex][1].m_PlayerName.Equals(junglePosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (middlePosition.m_IsPlayerLocked && !players[playerIndex][2].m_PlayerName.Equals(middlePosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (bottomPosition.m_IsPlayerLocked && !players[playerIndex][3].m_PlayerName.Equals(bottomPosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            if (supportPosition.m_IsPlayerLocked && !players[playerIndex][4].m_PlayerName.Equals(supportPosition.m_CurrentPlayer.m_PlayerName))
            {
                continue;
            }

            for (int top = 0; top < players[playerIndex][0].m_TopChampions.Count; top++)
            {
                if (topPosition.m_IsChampionLocked && !players[playerIndex][0].m_TopChampions[top].m_ChampionName.Equals(topPosition.m_CurrentChampion.m_ChampionName))
                {
                    continue;
                }

                for (int jungle = 0; jungle < players[playerIndex][1].m_JungleChampions.Count; jungle++)
                {
                    if (junglePosition.m_IsChampionLocked && !players[playerIndex][1].m_JungleChampions[jungle].m_ChampionName.Equals(junglePosition.m_CurrentChampion.m_ChampionName))
                    {
                        continue;
                    }
                    for (int middle = 0; middle < players[playerIndex][2].m_MiddleChampions.Count; middle++)
                    {
                        if (middlePosition.m_IsChampionLocked && !players[playerIndex][2].m_MiddleChampions[middle].m_ChampionName.Equals(middlePosition.m_CurrentChampion.m_ChampionName))
                        {
                            continue;
                        }

                        for (int bottom = 0; bottom < players[playerIndex][3].m_BottomChampions.Count; bottom++)
                        {
                            if (bottomPosition.m_IsChampionLocked && !players[playerIndex][3].m_BottomChampions[bottom].m_ChampionName.Equals(bottomPosition.m_CurrentChampion.m_ChampionName))
                            {
                                continue;
                            }

                            for (int support = 0; support < players[playerIndex][4].m_SupportChampions.Count; support++)
                            {
                                if (supportPosition.m_IsChampionLocked && !players[playerIndex][4].m_SupportChampions[support].m_ChampionName.Equals(supportPosition.m_CurrentChampion.m_ChampionName))
                                {
                                    continue;
                                }

                                List <ChampionData> loopChampComp = new List <ChampionData>();
                                loopChampComp.Add(players[playerIndex][0].m_TopChampions[top]);
                                loopChampComp.Add(players[playerIndex][1].m_JungleChampions[jungle]);
                                loopChampComp.Add(players[playerIndex][2].m_MiddleChampions[middle]);
                                loopChampComp.Add(players[playerIndex][3].m_BottomChampions[bottom]);
                                loopChampComp.Add(players[playerIndex][4].m_SupportChampions[support]);

                                TeamComp teamComp = new TeamComp();
                                teamComp.Champs    = loopChampComp;
                                teamComp.Players   = players[playerIndex];
                                teamComp.CompScore = Score.Instance.GetTotalScore(teamComp);

                                m_TeamComps.Add(teamComp);

                                if (m_TeamComps.Count > 2000000)
                                {
                                    sizeExceeded = true;
                                    break;
                                }
                            }

                            if (sizeExceeded)
                            {
                                break;
                            }
                        }

                        if (sizeExceeded)
                        {
                            break;
                        }
                    }

                    if (sizeExceeded)
                    {
                        break;
                    }
                }

                if (sizeExceeded)
                {
                    break;
                }
            }

            if (sizeExceeded)
            {
                break;
            }
        }

        m_TeamComps = m_TeamComps.OrderByDescending(x => x.CompScore).ToList <TeamComp>();

        float maxScore = m_TeamComps[0].CompScore;

        List <TeamComp> maxScoreComps = new List <TeamComp>();

        for (int i = 0; i < m_TeamComps.Count; i++)
        {
            if (m_TeamComps[i].CompScore >= maxScore)
            {
                maxScoreComps.Add(m_TeamComps[i]);
            }
            else
            {
                break;
            }
        }

        GC.Collect();
    }
Esempio n. 8
0
    public void FillCompText(TeamComp comp)
    {
        int[] compCounts = null;
        Score.Instance.GetTotalScore(comp, out compCounts);

        string compText = "";

        if (compCounts == null)
        {
            m_CompText.text = "Can't calculate score!";
            return;
        }

        if (compCounts[HARD_CC] < 3)
        {
            compText += 3 - compCounts[HARD_CC] + " Hard CC,";
        }

        if (compCounts[HARD_ENGAGE] < 2)
        {
            compText += 2 - compCounts[HARD_ENGAGE] + " Hard Engage,";
        }

        if (compCounts[DISENGAGE] < 1)
        {
            compText += 1 - compCounts[DISENGAGE] + " Disengage,";
        }

        if (compCounts[POKE] < 1)
        {
            compText += 1 - compCounts[POKE] + " Poke,";
        }

        if (compCounts[WAVECLEAR] < 1)
        {
            compText += 1 - compCounts[WAVECLEAR] + " Wave Clear,";
        }

        if (compCounts[TANK] < 2)
        {
            compText += 2 - compCounts[TANK] + " Tank,";
        }

        if (compCounts[PHYSICAL] < 1)
        {
            compText += 1 - compCounts[PHYSICAL] + " AD,";
        }

        if (compCounts[MAGICAL] < 1)
        {
            compText += 1 - compCounts[MAGICAL] + " AP,";
        }

        if (compCounts[UTILITY] < 1)
        {
            compText += 1 - compCounts[UTILITY] + " Utility,";
        }

        if (compCounts[EARLY_GAME] < 1)
        {
            compText += 1 - compCounts[EARLY_GAME] + " Early Game,";
        }

        if (compCounts[MID_GAME] < 1)
        {
            compText += 1 - compCounts[MID_GAME] + " Mid Game,";
        }

        if (compCounts[LATE_GAME] < 2)
        {
            compText += 2 - compCounts[LATE_GAME] + " Late Game,";
        }

        if (!string.IsNullOrEmpty(compText))
        {
            compText        = compText.Substring(0, compText.Length - 1);
            m_CompText.text = "Missing:\n" + compText;
        }
        else
        {
            m_CompText.text = "All bases covered!";
        }
    }