public TaeEditAnimList(TaeEditorScreen mainScreen)
        {
            MainScreen = mainScreen;

            //if (MainScreen.FileContainer.StandardTAE != null)
            //{
            //    foreach (var kvp in MainScreen.FileContainer.StandardTAE)
            //    {
            //        var taeSection = new TaeEditAnimListTaeSection();
            //        taeSection.Collapsed = MainScreen.Config.AutoCollapseAllTaeSections;
            //        taeSection.Tae = kvp.Value;
            //        taeSection.SectionName = System.IO.Path.GetFileName(kvp.Value.FilePath ?? kvp.Value.VirtualUri);
            //        foreach (var anim in kvp.Value.Animations)
            //        {
            //            var animID_Lower = anim.ID % 10000;
            //            var animID_Upper = anim.ID / 10000;
            //            var info = new TaeEditAnimInfo()
            //            {
            //                GetName = () => $"a{(kvp.Key + animID_Upper):D2}_{animID_Lower:D4}",
            //                Ref = anim,
            //                VerticalOffset = taeSection.HeightOfAllAnims,
            //                TaePrefix = kvp.Key,
            //            };

            //            taeSection.InfoMap.Add(anim, info);
            //            taeSection.HeightOfAllAnims += AnimHeight;
            //        }
            //        AnimTaeSections.Add(taeSection);
            //    }
            //}

            //if (MainScreen.FileContainer.PlayerTAE != null)
            //{
            //    foreach (var kvp in MainScreen.FileContainer.PlayerTAE)
            //    {
            //        var taeSection = new TaeEditAnimListTaeSection();
            //        taeSection.Collapsed = MainScreen.Config.AutoCollapseAllTaeSections;
            //        taeSection.Tae = kvp.Value;
            //        taeSection.SectionName = System.IO.Path.GetFileName(kvp.Value.FilePath ?? kvp.Value.VirtualUri);
            //        foreach (var anim in kvp.Value.Animations)
            //        {
            //            var animID_Lower = anim.ID % 10000;
            //            var animID_Upper = anim.ID / 10000;
            //            var info = new TaeEditAnimInfo()
            //            {
            //                GetName = () => $"a{(kvp.Key + animID_Upper):D2}_{animID_Lower:D4}",
            //                Ref = anim,
            //                VerticalOffset = taeSection.HeightOfAllAnims,
            //                TaePrefix = kvp.Key,
            //            };

            //            taeSection.InfoMap.Add(anim, info);
            //            taeSection.HeightOfAllAnims += AnimHeight;
            //        }
            //        AnimTaeSections.Add(taeSection);
            //    }
            //}

            foreach (var kvp in MainScreen.FileContainer.AllTAEDict)
            {
                var tae        = kvp.Value;
                var taeSection = new TaeEditAnimListTaeSection();
                taeSection.Collapsed   = MainScreen.Config.AutoCollapseAllTaeSections;
                taeSection.Tae         = tae;
                taeSection.SectionName = System.IO.Path.GetFileName(kvp.Key);
                foreach (var anim in tae.Animations)
                {
                    var animID_Lower = GameDataManager.GameTypeHasLongAnimIDs
                        ? (anim.ID % 1_000000) : (anim.ID % 1_0000);

                    var animID_Upper = taeSection.SectionName.StartsWith("a") ?
                                       long.Parse(Utils.GetFileNameWithoutAnyExtensions(taeSection.SectionName).Substring(1))
                        : ((GameDataManager.GameTypeHasLongAnimIDs
                            ? (anim.ID / 1_000000) : (anim.ID / 1_0000)));

                    var info = new TaeEditAnimInfo()
                    {
                        GetName = () => (GameDataManager.GameTypeHasLongAnimIDs
                          ? $"a{(animID_Upper):D3}_{animID_Lower:D6}" : $"a{(animID_Upper):D2}_{animID_Lower:D4}"),
                        Ref            = anim,
                        VerticalOffset = taeSection.HeightOfAllAnims,
                        TaePrefix      = animID_Upper,
                        IsLargeID      = GameDataManager.GameTypeHasLongAnimIDs
                    };

                    taeSection.InfoMap.Add(anim, info);
                    taeSection.HeightOfAllAnims += AnimHeight;
                }
                AnimTaeSections.Add(taeSection);
            }

            ScrollViewer = new TaeScrollViewer();

            UpdateScrollViewerRect();
        }
        public TaeEditAnimList(TaeEditorScreen mainScreen)
        {
            MainScreen = mainScreen;

            //if (MainScreen.FileContainer.StandardTAE != null)
            //{
            //    foreach (var kvp in MainScreen.FileContainer.StandardTAE)
            //    {
            //        var taeSection = new TaeEditAnimListTaeSection();
            //        taeSection.Collapsed = MainScreen.Config.AutoCollapseAllTaeSections;
            //        taeSection.Tae = kvp.Value;
            //        taeSection.SectionName = System.IO.Path.GetFileName(kvp.Value.FilePath ?? kvp.Value.VirtualUri);
            //        foreach (var anim in kvp.Value.Animations)
            //        {
            //            var animID_Lower = anim.ID % 10000;
            //            var animID_Upper = anim.ID / 10000;
            //            var info = new TaeEditAnimInfo()
            //            {
            //                GetName = () => $"a{(kvp.Key + animID_Upper):D2}_{animID_Lower:D4}",
            //                Ref = anim,
            //                VerticalOffset = taeSection.HeightOfAllAnims,
            //                TaePrefix = kvp.Key,
            //            };

            //            taeSection.InfoMap.Add(anim, info);
            //            taeSection.HeightOfAllAnims += AnimHeight;
            //        }
            //        AnimTaeSections.Add(taeSection);
            //    }
            //}

            //if (MainScreen.FileContainer.PlayerTAE != null)
            //{
            //    foreach (var kvp in MainScreen.FileContainer.PlayerTAE)
            //    {
            //        var taeSection = new TaeEditAnimListTaeSection();
            //        taeSection.Collapsed = MainScreen.Config.AutoCollapseAllTaeSections;
            //        taeSection.Tae = kvp.Value;
            //        taeSection.SectionName = System.IO.Path.GetFileName(kvp.Value.FilePath ?? kvp.Value.VirtualUri);
            //        foreach (var anim in kvp.Value.Animations)
            //        {
            //            var animID_Lower = anim.ID % 10000;
            //            var animID_Upper = anim.ID / 10000;
            //            var info = new TaeEditAnimInfo()
            //            {
            //                GetName = () => $"a{(kvp.Key + animID_Upper):D2}_{animID_Lower:D4}",
            //                Ref = anim,
            //                VerticalOffset = taeSection.HeightOfAllAnims,
            //                TaePrefix = kvp.Key,
            //            };

            //            taeSection.InfoMap.Add(anim, info);
            //            taeSection.HeightOfAllAnims += AnimHeight;
            //        }
            //        AnimTaeSections.Add(taeSection);
            //    }
            //}

            bool isMultiSectionTae = MainScreen.FileContainer.AllTAEDict.Count > 1;

            foreach (var kvp in MainScreen.FileContainer.AllTAEDict)
            {
                var tae        = kvp.Value;
                var taeSection = new TaeEditAnimListTaeSection();
                taeSection.Collapsed   = MainScreen.Config.AutoCollapseAllTaeSections;
                taeSection.Tae         = tae;
                taeSection.SectionName = System.IO.Path.GetFileName(kvp.Key);
                foreach (var anim in tae.Animations)
                {
                    var animID_Lower = isMultiSectionTae ? anim.ID : GameDataManager.GameTypeHasLongAnimIDs
                        ? (anim.ID % 1_000000) : (anim.ID % 1_0000);

                    var animID_Upper = taeSection.SectionName.StartsWith("a") ?
                                       long.Parse(Utils.GetFileNameWithoutAnyExtensions(taeSection.SectionName).Substring(1))
                        : ((GameDataManager.GameTypeHasLongAnimIDs
                            ? (anim.ID / 1_000000) : (anim.ID / 1_0000)));

                    var info = new TaeEditAnimInfo()
                    {
                        GetName = () =>
                        {
                            if (MainScreen?.Graph?.ViewportInteractor?.EntityType == TaeViewportInteractor.TaeEntityType.REMO)
                            {
                                return(anim.ID < 1_0000 ? $"cut{anim.ID:D4}" : $"[Entry {anim.ID}]");
                            }
                            else if (GameDataManager.GameTypeHasLongAnimIDs)
                            {
                                bool   ds2Meme = GameDataManager.CurrentAnimIDFormatType == GameDataManager.AnimIDFormattingType.aXX_YY_ZZZZ;
                                string res     = ds2Meme ? $"a{(animID_Upper):D2}_{animID_Lower:D6}" :
                                                 $"a{(animID_Upper):D3}_{animID_Lower:D6}";
                                if (ds2Meme)
                                {
                                    res = res.Insert(res.Length - 4, "_");
                                }
                                return(res);
                            }
                            else
                            {
                                return($"a{(animID_Upper):D2}_{animID_Lower:D4}");
                            }
                            //  (GameDataManager.GameTypeHasLongAnimIDs
                            //? $"a{(animID_Upper):D3}_{animID_Lower:D6}" : $"a{(animID_Upper):D2}_{animID_Lower:D4}"),
                        },
                        Ref              = anim,
                        VerticalOffset   = taeSection.HeightOfAllAnims,
                        TaePrefix        = MainScreen.FileContainer.AllTAEDict.Count == 1 ? 0 : animID_Upper,
                        IsLargeID        = GameDataManager.GameTypeHasLongAnimIDs,
                        IsRedErrorPrefix = isMultiSectionTae && ((anim.ID > (GameDataManager.GameTypeHasLongAnimIDs ? 999999 : 9999) || anim.ID < 0))
                    };



                    taeSection.InfoMap.Add(anim, info);
                    taeSection.HeightOfAllAnims += AnimHeight;
                }
                int taeKey = taeSection.SectionName.StartsWith("a") ?
                             int.Parse(Utils.GetFileNameWithoutAnyExtensions(taeSection.SectionName).Substring(1)) : 0;
                AnimTaeSections.Add(taeKey, taeSection);
            }

            ScrollViewer = new TaeScrollViewer();

            UpdateScrollViewerRect();
        }