コード例 #1
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);
    }