Ejemplo n.º 1
0
        private Info.AnimeLoadInfo GetAnimeInfo(int group, int category, int no)
        {
            Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> > dictionary = null;

            if (!Info.Instance.dicFemaleAnimeLoadInfo.TryGetValue(group, out dictionary))
            {
                return(null);
            }

            Dictionary <int, Info.AnimeLoadInfo> dictionary2 = null;

            if (!dictionary.TryGetValue(category, out dictionary2))
            {
                return(null);
            }

            Info.AnimeLoadInfo animeLoadInfo = null;
            if (!dictionary2.TryGetValue(no, out animeLoadInfo))
            {
                return(null);
            }

            return(animeLoadInfo);
        }
Ejemplo n.º 2
0
        private void LoadAnim(AnimeGroupList.SEX sex, bool isH)
        {
            Dictionary <int, Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> > > dicInfo;
            Dictionary <string, List <string[]> > dicArgs;
            int    index;
            string pattern;

            switch (sex)
            {
            case AnimeGroupList.SEX.Female:
                dicInfo = info.dicFemaleAnimeLoadInfo;
                if (isH)
                {
                    pattern = fileSuffixHAnimF;
                }
                else
                {
                    pattern = fileSuffixAnimF;
                }
                break;

            case AnimeGroupList.SEX.Male:
                dicInfo = info.dicMaleAnimeLoadInfo;
                if (isH)
                {
                    pattern = fileSuffixHAnimM;
                }
                else
                {
                    pattern = fileSuffixAnimM;
                }
                break;

            default:
                return;
            }

            dicArgs = dicAllFileArgs[pattern];
            if (dicArgs == null)
            {
                return;
            }

            foreach (string fileName in dicArgs.Keys)
            {
                // 00_00_00 のはず。
                //または、各行からの方が良いか? <- でも無駄が多くなる?
                string[] ss = fileName.Replace(pattern, "").Split(new string[] { "_" }, 0);

                if (int.TryParse(ss[0], out int baseIndex) && int.TryParse(ss[1], out int catIndex))
                {
                    index = baseIndex + groupOffset;

                    foreach (string[] args in dicArgs[fileName])
                    {
                        //アニメの場合、グループもカテゴリーもインデックスがなければ追加
                        if (int.TryParse(args[0], out int clipIndex))
                        {
                            if (!dicInfo.ContainsKey(index))
                            {
                                dicInfo.Add(index, new Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> >());
                            }
                            if (!dicInfo[index].ContainsKey(catIndex))
                            {
                                dicInfo[index].Add(catIndex, new Dictionary <int, Info.AnimeLoadInfo>());
                            }

                            //アニメ情報入れる
                            //<0管理番号><1大きい項目><2中間項目><3表示名><4バンドルパス><5ファイル名><6クリップ名><7BreastLayerの有り無し><8揺れ制御左><9揺れ制御右><10><11アイテム有り無し><管理番号><バンドルパス><ファイル名><付ける場所><管理番号><バンドルパス><ファイル名><付ける場所>
                            Info.AnimeLoadInfo animInfo = null;
                            try
                            {
                                animInfo = new Info.AnimeLoadInfo()
                                {
                                    name          = args[3],
                                    bundlePath    = extDir + args[4],
                                    fileName      = args[5],
                                    clip          = args[6],
                                    isBreastLayer = args[7] == "True",
                                    isMotion      = true,
                                    isHAnime      = isH,
                                    isScale       = false
                                };
                            }
                            catch
                            {
                                animInfo = null;
                            }

                            if (dicInfo[index][catIndex].ContainsKey(clipIndex))
                            {
                                if (force)
                                {
                                    dicInfo[index][catIndex][clipIndex] = animInfo;
                                }
                            }
                            else
                            {
                                dicInfo[index][catIndex].Add(clipIndex, animInfo);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void LoadAnim(AnimeGroupList.SEX sex, bool isH)
        {
            Dictionary <int, Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> > > dictionary;
            string text;

            if (sex != null)
            {
                if (sex != AnimeGroupList.SEX.Female)
                {
                    return;
                }

                dictionary = info.dicAnimeLoadInfo;
                text       = isH ? "FemaleHAnime_" : "FemaleAnime_";
            }
            else
            {
                dictionary = info.dicAnimeLoadInfo;
                text       = isH ? "MaleHAnime_" : "MaleAnime_";
            }

            Dictionary <string, List <string[]> > dictionary2 = dicAllFileArgs[text];

            if (dictionary2 == null)
            {
                return;
            }

            foreach (string text2 in dictionary2.Keys)
            {
                string[] array = text2.Replace(text, "").Split(new string[] { "_" }, StringSplitOptions.None);

                if (int.TryParse(array[0], out int num) && int.TryParse(array[1], out int key))
                {
                    int key2 = num + groupOffset;
                    foreach (string[] array2 in dictionary2[text2])
                    {
                        if (int.TryParse(array2[0], out int key3))
                        {
                            if (!dictionary.ContainsKey(key2))
                            {
                                dictionary.Add(key2, new Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> >());
                            }

                            if (!dictionary[key2].ContainsKey(key))
                            {
                                dictionary[key2].Add(key, new Dictionary <int, Info.AnimeLoadInfo>());
                            }

                            Info.AnimeLoadInfo value = null;
                            try
                            {
                                value = new Info.AnimeLoadInfo
                                {
                                    name       = array2[3],
                                    bundlePath = Path.Combine(extDir, array2[4]),
                                    fileName   = array2[5],
                                    clip       = array2[6],
                                    //isBreastLayer = (array2[7] == "True"),
                                    //isMotion = true,
                                    //isHAnime = isH,
                                    //isScale = false
                                };
                            }
                            catch
                            {
                                value = null;
                            }

                            if (dictionary[key2][key].ContainsKey(key3))
                            {
                                if (force)
                                {
                                    dictionary[key2][key][key3] = value;
                                }
                            }
                            else
                            {
                                dictionary[key2][key].Add(key3, value);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
 public void LoadAnimeItem(
     Info.AnimeLoadInfo _info,
     string _clip,
     float _height,
     float _motion)
 {
     this.ReleaseAllItem();
     if (_info.option.IsNullOrEmpty <Info.OptionItemInfo>())
     {
         return;
     }
     for (int index1 = 0; index1 < _info.option.Count; ++index1)
     {
         Info.OptionItemInfo optionItemInfo = _info.option[index1];
         GameObject          gameObject1    = Utility.LoadAsset <GameObject>(optionItemInfo.bundlePath, optionItemInfo.fileName, optionItemInfo.manifest);
         if (!Object.op_Equality((Object)gameObject1, (Object)null))
         {
             OptionItemCtrl.ItemInfo itemInfo = new OptionItemCtrl.ItemInfo(_height);
             itemInfo.gameObject = gameObject1;
             itemInfo.scale      = gameObject1.get_transform().get_localScale();
             itemInfo.animator   = (Animator)gameObject1.GetComponentInChildren <Animator>();
             if (Object.op_Inequality((Object)itemInfo.animator, (Object)null))
             {
                 if (optionItemInfo.anmInfo.Check)
                 {
                     RuntimeAnimatorController animatorController = CommonLib.LoadAsset <RuntimeAnimatorController>(optionItemInfo.anmInfo.bundlePath, optionItemInfo.anmInfo.fileName, false, string.Empty);
                     if (Object.op_Inequality((Object)animatorController, (Object)null))
                     {
                         itemInfo.animator.set_runtimeAnimatorController(animatorController);
                     }
                     AssetBundleManager.UnloadAssetBundle(optionItemInfo.anmInfo.bundlePath, false, (string)null, false);
                     if (optionItemInfo.anmOveride.Check)
                     {
                         CommonLib.LoadAsset <RuntimeAnimatorController>(optionItemInfo.anmOveride.bundlePath, optionItemInfo.anmOveride.fileName, false, string.Empty).SafeProc <RuntimeAnimatorController>((Action <RuntimeAnimatorController>)(_rac => itemInfo.animator.set_runtimeAnimatorController((RuntimeAnimatorController)Illusion.Utils.Animator.SetupAnimatorOverrideController(itemInfo.animator.get_runtimeAnimatorController(), _rac))));
                         AssetBundleManager.UnloadAssetBundle(optionItemInfo.anmOveride.bundlePath, false, (string)null, false);
                     }
                     itemInfo.animator.Play(_clip);
                 }
                 itemInfo.animator.SetFloat("height", _height);
                 itemInfo.IsSync = optionItemInfo.isAnimeSync;
             }
             else
             {
                 itemInfo.IsSync = false;
             }
             if (((IList <Info.ParentageInfo>)optionItemInfo.parentageInfo).IsNullOrEmpty <Info.ParentageInfo>())
             {
                 GameObject gameObject2 = ((Component)this).get_gameObject();
                 GameObject gameObject3 = gameObject1;
                 gameObject3.get_transform().SetParent(gameObject2.get_transform());
                 gameObject3.get_transform().set_localPosition(Vector3.get_zero());
                 gameObject3.get_transform().set_localRotation(Quaternion.get_identity());
                 if (optionItemInfo.counterScale)
                 {
                     itemInfo.DefaultScaleOption = true;
                 }
                 else
                 {
                     gameObject3.get_transform().set_localScale(itemInfo.scale);
                 }
             }
             else
             {
                 for (int index2 = 0; index2 < optionItemInfo.parentageInfo.Length; ++index2)
                 {
                     GameObject loop        = ((Component)this).get_gameObject().get_transform().FindLoop(optionItemInfo.parentageInfo[index2].parent);
                     GameObject gameObject2 = gameObject1;
                     if (!optionItemInfo.parentageInfo[index2].child.IsNullOrEmpty())
                     {
                         gameObject2 = gameObject2.get_transform().FindLoop(optionItemInfo.parentageInfo[index2].child);
                         itemInfo.child.Add(new OptionItemCtrl.ChildInfo(gameObject2.get_transform().get_localScale(), gameObject2));
                     }
                     gameObject2.get_transform().SetParent(loop.get_transform());
                     gameObject2.get_transform().set_localPosition(Vector3.get_zero());
                     gameObject2.get_transform().set_localRotation(Quaternion.get_identity());
                     if (optionItemInfo.counterScale)
                     {
                         itemInfo.DefaultScaleOption = true;
                     }
                     else
                     {
                         gameObject2.get_transform().set_localScale(itemInfo.scale);
                     }
                 }
             }
             itemInfo.SetRender();
             this.hashItem.Add(itemInfo);
         }
     }
     this.SetVisible(this.visible);
 }