public void Initialize(TalentTier tier) { Tier = tier; Tier.Locked += OnTierLocked; Tier.Unlocked += OnTierUnlocked; this.label.text = StringUtils.ToRomanNumeral(tier.Index); this.talentViews = new List<TalentView>(); foreach (var talent in tier.Talents) { var talentView = Instantiate(this.talentPrefab, this.talentContainer); talentView.Initialize(talent); talentView.Clicked += OnTalentViewClicked; this.talentViews.Add(talentView); } if (tier.IsUnlocked) { Unlock(); } else { Lock(); } }
/// <summary> /// Returns a list of all the talents of a hero given a talent tier /// </summary> /// <param name="realHeroName">real hero name</param> /// <param name="talentTier">talent tier</param> /// <returns></returns> public List <string> GetTierTalentsForHero(string realHeroName, TalentTier talentTier) { if (HeroTalentsListByRealName.TryGetValue(realHeroName, out Dictionary <TalentTier, List <string> > talents)) { return(talents[talentTier]); } else { LogReferenceNameNotFound($"No hero real name found [{nameof(GetAllTalentsForHero)}]: {realHeroName}"); return(null); } }
private void OnTierUnlocked(TalentTier tier) { Unlock(); }
private void OnTierLocked(TalentTier tier) { Lock(); }
/// <summary> /// Gets the win or loss count of the talent for a given hero /// </summary> /// <param name="character">Hero name</param> /// <param name="season">Selected season</param> /// <param name="gameMode">Selected GameMode</param> /// <param name="mapName">Selected map</param> /// <param name="talentReferenceName">Selected talent reference name</param> /// <param name="tier">The tier that the talent is on</param> /// <param name="isWinner">Get wins if true otherwise losses</param> /// <returns></returns> public int ReadTalentsCountForHero(string character, Season season, GameMode gameMode, List <string> maps, string talentReferenceName, TalentTier tier, bool isWinner) { var replayBuild = HeroesHelpers.Builds.GetReplayBuildsFromSeason(season); using (var db = new ReplaysContext()) { db.Configuration.AutoDetectChangesEnabled = false; var gameModeFilter = PredicateBuilder.New <ReplayMatch>(); foreach (Enum value in Enum.GetValues(gameMode.GetType())) { if ((GameMode)value != GameMode.Unknown && gameMode.HasFlag(value)) { Enum temp = value; gameModeFilter = gameModeFilter.Or(x => x.GameMode == (GameMode)temp); } } var mapFilter = PredicateBuilder.New <ReplayMatch>(); foreach (var map in maps) { string temp = map; mapFilter = mapFilter.Or(x => x.MapName == temp); } IQueryable <ReplayMatch> query = null; switch (tier) { case TalentTier.Level1: query = from mpt in db.ReplayMatchPlayerTalents.AsNoTracking() join r in db.Replays.AsNoTracking() on mpt.ReplayId equals r.ReplayId join mp in db.ReplayMatchPlayers.AsNoTracking() on new { mpt.ReplayId, mpt.PlayerId } equals new { mp.ReplayId, mp.PlayerId } where mpt.PlayerId == UserSettings.UserPlayerId && mp.IsWinner == isWinner && mpt.Character == character && mpt.TalentName1 == talentReferenceName && r.ReplayBuild >= replayBuild.Item1 && r.ReplayBuild < replayBuild.Item2 select r; break; case TalentTier.Level4: query = from mpt in db.ReplayMatchPlayerTalents.AsNoTracking() join r in db.Replays.AsNoTracking() on mpt.ReplayId equals r.ReplayId join mp in db.ReplayMatchPlayers.AsNoTracking() on new { mpt.ReplayId, mpt.PlayerId } equals new { mp.ReplayId, mp.PlayerId } where mpt.PlayerId == UserSettings.UserPlayerId && mp.IsWinner == isWinner && mpt.Character == character && mpt.TalentName4 == talentReferenceName && r.ReplayBuild >= replayBuild.Item1 && r.ReplayBuild < replayBuild.Item2 select r; break; case TalentTier.Level7: query = from mpt in db.ReplayMatchPlayerTalents.AsNoTracking() join r in db.Replays.AsNoTracking() on mpt.ReplayId equals r.ReplayId join mp in db.ReplayMatchPlayers.AsNoTracking() on new { mpt.ReplayId, mpt.PlayerId } equals new { mp.ReplayId, mp.PlayerId } where mpt.PlayerId == UserSettings.UserPlayerId && mp.IsWinner == isWinner && mpt.Character == character && mpt.TalentName7 == talentReferenceName && r.ReplayBuild >= replayBuild.Item1 && r.ReplayBuild < replayBuild.Item2 select r; break; case TalentTier.Level10: query = from mpt in db.ReplayMatchPlayerTalents.AsNoTracking() join r in db.Replays.AsNoTracking() on mpt.ReplayId equals r.ReplayId join mp in db.ReplayMatchPlayers.AsNoTracking() on new { mpt.ReplayId, mpt.PlayerId } equals new { mp.ReplayId, mp.PlayerId } where mpt.PlayerId == UserSettings.UserPlayerId && mp.IsWinner == isWinner && mpt.Character == character && mpt.TalentName10 == talentReferenceName && r.ReplayBuild >= replayBuild.Item1 && r.ReplayBuild < replayBuild.Item2 select r; break; case TalentTier.Level13: query = from mpt in db.ReplayMatchPlayerTalents.AsNoTracking() join r in db.Replays.AsNoTracking() on mpt.ReplayId equals r.ReplayId join mp in db.ReplayMatchPlayers.AsNoTracking() on new { mpt.ReplayId, mpt.PlayerId } equals new { mp.ReplayId, mp.PlayerId } where mpt.PlayerId == UserSettings.UserPlayerId && mp.IsWinner == isWinner && mpt.Character == character && mpt.TalentName13 == talentReferenceName && r.ReplayBuild >= replayBuild.Item1 && r.ReplayBuild < replayBuild.Item2 select r; break; case TalentTier.Level16: query = from mpt in db.ReplayMatchPlayerTalents.AsNoTracking() join r in db.Replays.AsNoTracking() on mpt.ReplayId equals r.ReplayId join mp in db.ReplayMatchPlayers.AsNoTracking() on new { mpt.ReplayId, mpt.PlayerId } equals new { mp.ReplayId, mp.PlayerId } where mpt.PlayerId == UserSettings.UserPlayerId && mp.IsWinner == isWinner && mpt.Character == character && mpt.TalentName16 == talentReferenceName && r.ReplayBuild >= replayBuild.Item1 && r.ReplayBuild < replayBuild.Item2 select r; break; case TalentTier.Level20: query = from mpt in db.ReplayMatchPlayerTalents.AsNoTracking() join r in db.Replays.AsNoTracking() on mpt.ReplayId equals r.ReplayId join mp in db.ReplayMatchPlayers.AsNoTracking() on new { mpt.ReplayId, mpt.PlayerId } equals new { mp.ReplayId, mp.PlayerId } where mpt.PlayerId == UserSettings.UserPlayerId && mp.IsWinner == isWinner && mpt.Character == character && mpt.TalentName20 == talentReferenceName && r.ReplayBuild >= replayBuild.Item1 && r.ReplayBuild < replayBuild.Item2 select r; break; default: break; } query = query.AsExpandable() .Where(gameModeFilter) .Where(mapFilter); return(query.Count()); } }
/// <summary> /// Returns a collection of all the talents in the selected tier /// </summary> /// <param name="tier">The talent tier</param> /// <returns></returns> public ICollection <Talent> GetTierTalents(TalentTier tier) { return(Talents.Values.Where(x => x.Tier == tier).ToArray()); }