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); }