public HeroesIcons(bool logger)
        {
            Logger = logger;

            try
            {
                HeroesXml           = HeroesXml.Initialize("Heroes.xml", "Heroes", Logger, null);
                HeroBuildsXmlLatest = HeroBuildsXmlHolder = HeroBuildsXml = HeroBuildsXml.Initialize("_AllHeroes.xml", "HeroBuilds", HeroesXml, Logger); // load in all three

                EarliestHeroesBuild = HeroBuildsXml.EarliestHeroesBuild;
                LatestHeroesBuild   = HeroBuildsXml.LatestHeroesBuild;
                ListHeroBuilds      = HeroBuildsXml.Builds;

                MatchAwardsXml    = MatchAwardsXml.Initialize("_AllMatchAwards.xml", "MatchAwards", LatestHeroesBuild, logger);
                MapBackgroundsXml = MapBackgroundsXml.Initialize("_AllMapBackgrounds.xml", "MapBackgrounds", LatestHeroesBuild, logger);
                HomeScreensXml    = HomeScreensXml.Initialize("HomeScreens.xml", "HomeScreens", LatestHeroesBuild, logger);
            }
            catch (Exception ex)
            {
                if (logger)
                {
                    LogErrors($"Error on HeroIcons initializing{Environment.NewLine}{ex}");
                }
                throw;
            }

            SetNonSupportHeroesWithSupportStat();
            SetPartyIcons();
            SetRoleIcons();
            SetFranchiseIcons();
            SetOtherIcons();
        }
        /// <summary>
        /// Load a specific build, other than the latest one. Use LoadLatestHeroesBuild to load latest build.
        /// </summary>
        /// <param name="replayBuild">The replay build to load</param>
        /// <returns></returns>
        public void LoadHeroesBuild(int?build)
        {
            if (build == null)
            {
                return;
            }
            else if (build < EarliestHeroesBuild)
            {
                build = EarliestHeroesBuild;
            }
            else if (build > LatestHeroesBuild)
            {
                build = LatestHeroesBuild;
            }

            try
            {
                // only load the build if it's not in memory already or in the in xmlHolder
                if (build != HeroBuildsXml.CurrentLoadedHeroesBuild)
                {
                    if (build != HeroBuildsXmlHolder.CurrentLoadedHeroesBuild)
                    {
                        HeroBuildsXml = HeroBuildsXml.Initialize("_AllHeroes.xml", "HeroBuilds", HeroesXml, Logger, build);
                    }
                    else
                    {
                        HeroBuildsXml = HeroBuildsXmlHolder;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ParseXmlException($"Error on loading heroes build {build}{Environment.NewLine}{ex}");
            }
        }
 public void LoadLatestHeroesBuild()
 {
     if (HeroBuildsXml.CurrentLoadedHeroesBuild != HeroBuildsXmlLatest.CurrentLoadedHeroesBuild)
     {
         HeroBuildsXmlHolder = HeroBuildsXml;       // hold the current
         HeroBuildsXml       = HeroBuildsXmlLatest; // switch to latest
     }
 }